GNU bug report logs - #51440
[PATCH 00/10] Declarative static networking interface

Previous Next

Package: guix-patches;

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

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#51440: closed ([PATCH 00/10] Declarative static networking
 interface)
Date: Sun, 12 Dec 2021 23:12:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Mon, 13 Dec 2021 00:11:41 +0100
with message-id <87mtl52zbm.fsf_-_ <at> gnu.org>
and subject line Re: bug#51440: [PATCH 00/10] Declarative static networking interface
has caused the debbugs.gnu.org bug report #51440,
regarding [PATCH 00/10] Declarative static networking interface
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
51440: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=51440
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: guix-patches <at> gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH 00/10] Declarative static networking interface
Date: Wed, 27 Oct 2021 15:59:18 +0200
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
-- 
2.33.0



[Message part 3 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: Vivien Kraus <vivien <at> planete-kraus.eu>
Cc: Julien Lepiller <julien <at> lepiller.eu>, 51440-done <at> debbugs.gnu.org
Subject: Re: bug#51440: [PATCH 00/10] Declarative static networking interface
Date: Mon, 13 Dec 2021 00:11:41 +0100
I went ahead and pushed this series:

  c8609493ba news: Add entry about 'static-networking-service-type'.
  f73ba627ab tests: Replace uses of deprecated 'static-networking-service'.
  5967aee398 services: Define '%loopback-static-networking'.
  1644f4f1f8 services: Define '%qemu-static-networking'.
  223f1b1eb3 services: static-networking: Change interface to mimic netlink.
  39e3b4b7ce services: secret-service: Turn into a Shepherd service.
  0cc742b261 services: static-networking: Use Guile-Netlink on GNU/Linux.
  1759292c8b gnu: guile-netlink: Allow cross-compilation.
  a4d33fef31 doc: Add new "Networking Setup" node for the main setup options.
  33c498b9ee tests: openvswitch: Check whether ovs0 is up.
  72f140c253 tests: Add 'static-networking' test.

Let me know if anything’s amiss!

Thanks,
Ludo’.


This bug report was last modified 3 years and 155 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.