Subject: Re: bug#51440: [PATCH 00/10] Declarative static networking interface

From: Ludovic Courtès <[email-masked]>
Date: Thu, 11 Nov 2021 23:08:39 +0100

Hi David,

David Aaron Fendley <[email-masked]> skribis:

> If I have:
>
>   (service static-networking-service-type
>   	   (list (static-networking
>   		  (addresses (list (network-address
>   				    (device "eno33559296")
>   				    (value "10.7.99.99/24"))
>   				   (network-address
>   				    (device "eno16780032")
>   				    (value "10.10.199.98/24"))))
>   		  (routes (list (network-route
>   				 (destination "default")
>   				 (gateway "10.10.199.1"))
>   				(network-route
>   				 (destination "192.168.0.1/32")
>   				 (gateway "10.10.199.1"))))
>   		  (name-servers '("10.10.199.17" "10.10.101.2")))))
>
> After reconfigure and restart of the networking service, no routes
> listed are created. Only the standard routes for each network:

Hmm right, I need to investigate this one some more.  Apparently the
‘route-add’ call leads to “Network is unreachable”.

[...]

> If I then change the config to:
>
>   (service static-networking-service-type
>   	   (list (static-networking
>   		  (addresses (list (network-address
>   				    (device "eno33559296")
>   				    (value "10.0.7.15/24"))
>   				   (network-address
>   				    (device "eno16780032")
>   				    (value "10.10.2.15/24"))))
>   		  (routes (list (network-route
>   				 (destination "default")
>   				 (gateway "10.0.2.2"))))
>   		  (name-servers '("10.0.2.3")))))
>
>
>
> After reconfigure and restart of the networking service, routes
> specified are still not created, and the addresses and routes are
> appended:

This one is fixed by the patch below: the ‘stop’ method of the service
would not actually load the “tear-down-network” file, oops!

Thanks a lot for testing and reporting!

To be continued…

Ludo’.

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 66683f153f..3123122200 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -2511,7 +2511,7 @@ (define network-set-up/linux
                                 addresses)
                         #$@(map (match-lambda
                                   (($ <network-link> name type arguments)
-                                   #~(link-add #:device #$name #$type
+                                   #~(link-add #$name #$type
                                                #:type-args '#$arguments)))
                                 links)
                         #$@(map (lambda (route)
@@ -2530,7 +2530,7 @@ (define network-set-up/linux
 (define network-tear-down/linux
   (match-lambda
     (($ <static-networking> addresses links routes)
-     (scheme-file "set-up-network"
+     (scheme-file "tear-down-network"
                   (with-extensions (list guile-netlink)
                     #~(begin
                         (use-modules (ip addr) (ip link) (ip route))
@@ -2579,10 +2579,10 @@ (define (static-networking-shepherd-service config)
                                  (network-set-up/hurd config))))))
         (stop #~(lambda _
                   ;; Return #f is successfully stopped.
-                  #$(let-system (system target)
-                      (if (string-contains (or target system) "-linux")
-                          (network-tear-down/linux config)
-                          (network-tear-down/hurd config)))))
+                  (load #$(let-system (system target)
+                            (if (string-contains (or target system) "-linux")
+                                (network-tear-down/linux config)
+                                (network-tear-down/hurd config))))))
         (respawn? #f))))))
 
 (define (static-networking-shepherd-services networks)