Subject: Re: bug#52511: service networking provided more than once

From: Mathieu Othacehe <[email-masked]>
Date: Wed, 15 Dec 2021 14:50:35 +0100

Hey,

> In this particular case, you could/should have a single
> ‘static-networking’ with multiple addresses:
>
>   (static-networking
>     (addresses
>       (list (network-address …)
>             (network-address …)))
>     (routes …))

Oh, I see. There's still something problematic:

--8<---------------cut here---------------start------------->8---
;; Connection to the DMZ for public access
;; This is a 10G port.
(static-networking-service "eno2"
                           "141.80.181.40"
                           #:netmask "255.255.255.0"
                           #:gateway "141.80.181.1")
;; Connection to build nodes
(static-networking-service "eno1"
                           "141.80.167.131"
                           #:netmask "255.255.255.192")
--8<---------------cut here---------------end--------------->8---

The above configuration used to create two distinct shepherd services:
networking-eno1 and networking-eno2.

We now have the aforementioned error because those two interfaces are
now provisioning 'networking, breaking compatibility.

Browsing the code, I also found:

--8<---------------cut here---------------start------------->8---
(service static-networking-service-type
         (list %loopback-static-networking

               ;; QEMU user-mode networking.  To get "eth0", you need
               ;; QEMU to emulate a device for which Mach has an
               ;; in-kernel driver, for instance with:
               ;; --device rtl8139,netdev=net0 --netdev user,id=net0
               %qemu-static-networking))
--8<---------------cut here---------------end--------------->8---

which made me think that creating a distinct static-networking record
per interface was the way to go.

Thanks,

Mathieu