liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 032d0f8aca159cae22ed57a275491e8e160e06a4
parent b8ac9e5279ecbb2829e46b3883b78db2210c7924
Author: Daniel Barlow <dan@telent.net>
Date:   Tue, 23 Apr 2024 23:34:25 +0100

add netlink socket

it's not hooked up to anything yet, but it proves we can
do this with lualinux

Diffstat:
Mpkgs/devout/devout.fnl | 13++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/pkgs/devout/devout.fnl b/pkgs/devout/devout.fnl @@ -103,6 +103,13 @@ true) (nil err) (do (print err) false))) +(fn open-netlink [groups] + (match (ll.socket AF_NETLINK SOCK_RAW NETLINK_KOBJECT_UEVENT) + fd (doto fd (ll.bind (string.pack "I2I2I4I4" ; family pad pid groups + AF_NETLINK 0 0 groups))) + (nil errno) (values nil errno))) + + (fn event-loop [] (let [fds {}] { @@ -117,9 +124,10 @@ })) (fn run [] - (let [[sockname] arg + (let [[sockname nl-groups] arg s (unix-socket sockname) db (database) + nl (open-netlink nl-groups) loop (event-loop)] (loop:register s @@ -128,6 +136,9 @@ (do (loop:register client (partial handle-client db)) true))) + (loop:register + nl + #(do (print :netlink (ll.read nl)) true)) (while true (let [pollfds (pollfds-for (loop:fds))] (ll.poll pollfds 5000)