Hi! I'm proud to announce the first release of Guile Netlink!
git clone https://git.lepiller.eu/git/guile-netlink cd guile-netlink git checkout 1.0 # or 29ff43368f1cc2d10a7e5f09dc9f80f85582d6ee git tag -v 1.0 The 'git tag -v' command check the authenticity of your checkout. You may need to retrieve the signing key first: gpg --keyserver pool.sks-keyservers.net \ --recv-keys 1EFB09091F17D28CCBF9B13A53D457B2D636EE82 Guile Netlink provides three components: - A helper library for implementing netlink protocols - An implementation of rtnetlink, one of the netlink protocols. It is used to query and alter the state of the network stack in Linux. - A high-level API implemented on top of rtnetlink and inspired by iproute2's commands Here are a few examples (most of which will only work as root and will really modify your network), extracted from the manual: ;; same as "ip l add v0p0 type veth peer v0p1" (link-add "v0p0" "veth" #:type-args '((peer . "v0p1"))) ;; same as "ip a add 192.0.2.15/24 dev enp1s0 (addr-add "enp1s0" "192.0.2.15/24") (addr-add "enp1s0" "2001:db8::1a4c/64" #:ipv6? #t) ;; removing the previous addresses, as in "ip a del 192.0.2.15/24 dev ;; enp1s0" (addr-del "enp1s0" "192.0.2.15/24") (addr-del "enp1s0" "2001:db8::1a4c/64" #:ipv6? #t) ;; same as "ip a" or "ip addr show" (addr-show) ;; same as "ip r add default via 192.0.2.1 dev enp1s0" (route-add "default" #:device "enp1s0" #:via "192.0.2.1") ;; same as "ip r add 192.0.2.0/24 dev enp1s0 src 192.0.2.15" (route-add "192.0.2.0/24" #:device "enp1s0" #:src "192.0.2.15") Hopefully, the high-level API can be used on Linux to replace our current implementation of container networking and static networking service type. You will find the complete documentation online at https://git.lepiller.eu/guile-netlink/manual, the code is available at https://git.lepiller.eu/guile-netlink (note that the clone URL is different, see above) and you can report any issue, patch and ideas to me, by email. Hope you'll enjoy! Julien
