add anoia.nl, a convenience wrapper on netlink

This commit is contained in:
Daniel Barlow
2024-03-04 23:01:19 +00:00
parent 35909c9a23
commit 5184ff63f7
3 changed files with 40 additions and 22 deletions

View File

@@ -1,5 +1,4 @@
(local netlink (require :netlink))
(local sock (netlink.socket))
(local nl (require :anoia.nl))
; (local { : view} (require :fennel))
@@ -22,31 +21,28 @@
(parse-args arg)
(assert false (.. "Usage: " (. arg 0) " [-v] ifname [present|up|running]"))))
(fn run-events [evs]
(each [_ v (ipairs evs)]
(let [got
(match v
;; - up: Reflects the administrative state of the interface (IFF_UP)
;; - running: Reflects the operational state (IFF_RUNNING).
{:event "newlink" :name parameters.link :up :yes :running :yes}
{:present true :up true :running true}
(fn run-event [v]
(let [got
(match v
;; - up: Reflects the administrative state of the interface (IFF_UP)
;; - running: Reflects the operational state (IFF_RUNNING).
{:event "newlink" :name parameters.link :up :yes :running :yes}
{:present true :up true :running true}
{:event "newlink" :name parameters.link :up :yes}
{:present :true :up true}
{:event "newlink" :name parameters.link :up :yes}
{:present :true :up true}
{:event "newlink" :name parameters.link}
{:present true }
_
{})]
(when (. got parameters.expecting)
(os.exit 0)))))
{:event "newlink" :name parameters.link}
{:present true }
_
{})]
(when (. got parameters.expecting)
(os.exit 0))))
(when parameters.verbose
(print (.. (. arg 0) ": waiting for "
parameters.link " to be " parameters.expecting)))
(run-events (sock:query {:link true}))
(while (sock:poll) (run-events (sock:event)))
(each [event (nl.events {:link true})]
(run-event event))