[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#51440] [PATCH 00/10] Declarative static networking interface
From: |
Julien Lepiller |
Subject: |
[bug#51440] [PATCH 00/10] Declarative static networking interface |
Date: |
Wed, 27 Oct 2021 11:29:47 -0400 |
User-agent: |
K-9 Mail for Android |
Le 27 octobre 2021 09:59:18 GMT-04:00, "Ludovic Courtès" <ludo@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)
- [bug#51440] [PATCH 06/10] services: secret-service: Turn into a Shepherd service., (continued)
- [bug#51440] [PATCH 03/10] doc: Add new "Networking Setup" node for the main setup options., Ludovic Courtès, 2021/10/27
- [bug#51440] [PATCH 08/10] services: Define '%qemu-static-networking'., Ludovic Courtès, 2021/10/27
- [bug#51440] [PATCH 09/10] services: Define '%loopback-static-networking'., Ludovic Courtès, 2021/10/27
- [bug#51440] [PATCH 02/10] tests: openvswitch: Check whether ovs0 is up., Ludovic Courtès, 2021/10/27
- [bug#51440] [PATCH 05/10] services: static-networking: Use Guile-Netlink on GNU/Linux., Ludovic Courtès, 2021/10/27
- [bug#51440] [PATCH 10/10] tests: Replace uses of deprecated 'static-networking-service'., Ludovic Courtès, 2021/10/27
[bug#51440] [PATCH 00/10] Declarative static networking interface,
Julien Lepiller <=