GNU bug report logs -
#51440
[PATCH 00/10] Declarative static networking interface
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Wed, 27 Oct 2021 14:00:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Le 27 octobre 2021 09:59:18 GMT-04:00, "Ludovic Courtès" <ludo <at> gnu.org> a écrit :
>Hi!
>
>This patch set builds on Julien’s neat Guile-Netlink to finally
>provide a proper static networking configuration interface. One
>can now write things like:
>
> (service static-networking-service-type
> ;; Network configuration for one NIC, IPv4 + IPv6.
> (static-networking
> (addresses (list (network-address
> (device "eno1")
> (value "10.0.2.15/24"))
> (network-address
> (device "eno1")
> (value "2001:123:4567:101::1"))))
> (routes (list (network-route
> (destination "default")
> (gateway "10.0.2.2"))
> (network-route
> (destination "default")
> (gateway "2020:321:4567:42::1"))))
> (name-servers '("10.0.2.3"))))
>
>For the record, the ‘static-networking-service’ procedure currently
>in ‘master’ is IPv4-only and would not allow you to assign more
>than one address to an interface anyway, among other limitations.
>These long-overdue patches close an embarrassing gap.
>
>The interface provided here is a direct mapping of that of Guile-Netlink,
>which is the same as that of the ‘ip’ command, itself closely
>modeled after Linux’s internal interfaces AIUI. Thus, it should be
>roughly as expressive as ‘ip’, but declarative.
>
>I’m not a network person though, so I’d appreciate if more
>knowledgeable people would take a look at the interface. In particular,
>I’d like to have examples of ‘links’ to include in the manual—I’m not
>quite sure how to use that. Ideas?
>
>This patches preserve backward-compatibility: the
>‘static-networking-service’ procedure still works the same. There’s
>one observable difference though: there’s only one ‘networking’
>Shepherd service now; you no longer get ‘networking-eno1’ and similar.
>The ‘static-networking’ constructor was public since commit
>c9436025a90b86047ba2203d58bbf238f8f9b2f9 but undocumented; thus I
>changed the fields of <static-networking> without worrying about
>compatibility.
>
>I tested this with:
>
> make check-system \
> TESTS="static-networking openvswitch ganeti-kvm dhcpd childhurd"
>
>I would appreciate more testing, including tests on the bare metal
>for IPv6 support.
>
>Ensuring portability to GNU/Hurd took me more time than I’d have
>thought, but it works. “Links” are not supported there, and only
>“default” routes are supported.
>
>I took a detour in commit “Use Guile-Netlink on GNU/Linux”: that
>patch shows that I was blissfully hoping to use good’ol ioctls
>on GNU/Hurd, but that turned out to be a dead end because they
>don’t support IPv6 (which really isn’t a surprise but I don’t know,
>I must have been lacking focus at that point of my journey!).
>
>With all this I think we should be able to do “cool things with
>containers”, but again, that’s not my area of expertise so please
>do chime in if you container networking is your thing.
>
>Feedback welcome!
>
>Ludo’.
>
>Ludovic Courtès (10):
> tests: Add 'static-networking' test.
> tests: openvswitch: Check whether ovs0 is up.
> doc: Add new "Networking Setup" node for the main setup options.
> gnu: guile-netlink: Allow cross-compilation.
> services: static-networking: Use Guile-Netlink on GNU/Linux.
> services: secret-service: Turn into a Shepherd service.
> services: static-networking: Change interface to mimic netlink.
> services: Define '%qemu-static-networking'.
> services: Define '%loopback-static-networking'.
> tests: Replace uses of deprecated 'static-networking-service'.
>
> doc/guix.texi | 505 ++++++++++++++++++++++----------
> gnu/build/hurd-boot.scm | 10 +-
> gnu/build/secret-service.scm | 17 +-
> gnu/packages/guile-xyz.scm | 11 +-
> gnu/services/base.scm | 391 +++++++++++++++++++------
> gnu/services/virtualization.scm | 45 ++-
> gnu/system/hurd.scm | 12 +-
> gnu/system/install.scm | 5 +-
> gnu/tests/ganeti.scm | 7 +-
> gnu/tests/networking.scm | 141 ++++++++-
> 10 files changed, 851 insertions(+), 293 deletions(-)
>
>
>base-commit: 0a42998a50e8bbe9e49142b21a570db00efe7491
Looks good at first glance. I noticed a few typos in the manual, so I'll send you more details after I read it more carefully. I'll try that on my hardware, although again I'm not sure how I can run reconfigure from my checkout exactly? (Where do I use sudo, and what options do I need)
This bug report was last modified 3 years and 154 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.