all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Julien Lepiller <julien@lepiller.eu>
To: 51440@debbugs.gnu.org, ludo@gnu.org
Subject: [bug#51440] [PATCH 00/10] Declarative static networking interface
Date: Wed, 27 Oct 2021 11:29:47 -0400	[thread overview]
Message-ID: <98B14704-7A97-4D5A-80CD-6A44DBAEFBC7@lepiller.eu> (raw)
In-Reply-To: <20211027135918.18833-1-ludo@gnu.org>

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)




  parent reply	other threads:[~2021-10-27 16:11 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-27 13:59 [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-10-27 14:02 ` [bug#51440] [PATCH 01/10] tests: Add 'static-networking' test Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 02/10] tests: openvswitch: Check whether ovs0 is up Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 03/10] doc: Add new "Networking Setup" node for the main setup options Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 04/10] gnu: guile-netlink: Allow cross-compilation Ludovic Courtès
2021-10-28  0:58     ` Julien Lepiller
2021-10-29 21:38       ` [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 05/10] services: static-networking: Use Guile-Netlink on GNU/Linux Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 06/10] services: secret-service: Turn into a Shepherd service Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 07/10] services: static-networking: Change interface to mimic netlink Ludovic Courtès
2021-10-28  1:17     ` Julien Lepiller
2021-10-29 21:43       ` [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 08/10] services: Define '%qemu-static-networking' Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 09/10] services: Define '%loopback-static-networking' Ludovic Courtès
2021-10-27 14:02   ` [bug#51440] [PATCH 10/10] tests: Replace uses of deprecated 'static-networking-service' Ludovic Courtès
2021-10-27 15:29 ` Julien Lepiller [this message]
2021-10-29 21:44   ` [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-11-03 13:27 ` David Aaron Fendley
2021-11-11 22:08   ` Ludovic Courtès
2021-11-14 20:52     ` Ludovic Courtès
2021-11-15 22:30 ` [bug#51440] [PATCH v2 " Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 01/10] tests: Add 'static-networking' test Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 02/10] tests: openvswitch: Check whether ovs0 is up Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 03/10] doc: Add new "Networking Setup" node for the main setup options Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 04/10] gnu: guile-netlink: Allow cross-compilation Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 05/10] services: static-networking: Use Guile-Netlink on GNU/Linux Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 06/10] services: secret-service: Turn into a Shepherd service Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 07/10] services: static-networking: Change interface to mimic netlink Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 08/10] services: Define '%qemu-static-networking' Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 09/10] services: Define '%loopback-static-networking' Ludovic Courtès
2021-11-15 22:30   ` [bug#51440] [PATCH v2 10/10] tests: Replace uses of deprecated 'static-networking-service' Ludovic Courtès
2021-11-17 17:13   ` [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-11-17 19:36     ` Jonathan Brielmaier
2021-11-17 19:36 ` [bug#51440] Static IPv6 address is reversed! Vivien Kraus via Guix-patches via
2021-12-10 10:51   ` [bug#51440] [PATCH 00/10] Declarative static networking interface Ludovic Courtès
2021-12-11 12:56     ` Vivien Kraus via Guix-patches via
2021-12-11 21:39       ` Ludovic Courtès
2021-12-11 22:19         ` Julien Lepiller
2021-12-11 23:32         ` Vivien Kraus via Guix-patches via
2021-12-12 22:00           ` Ludovic Courtès
2021-12-12 22:26             ` Vivien Kraus via Guix-patches via
2021-12-12 23:11             ` bug#51440: " Ludovic Courtès
2021-12-13 17:29               ` [bug#51440] " Mathieu Othacehe
2021-12-14 11:17             ` Vivien Kraus via Guix-patches via
2021-12-14 15:03               ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=98B14704-7A97-4D5A-80CD-6A44DBAEFBC7@lepiller.eu \
    --to=julien@lepiller.eu \
    --cc=51440@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.