diff mbox

[bug#51440,00/10] Declarative static networking interface

Message ID 878rxufiqg.fsf_-_@gnu.org
State Accepted
Headers show

Commit Message

Ludovic Courtès Nov. 11, 2021, 10:08 p.m. UTC
Hi David,

David Aaron Fendley <tricon@triconium.com> 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’.

Comments

Ludovic Courtès Nov. 14, 2021, 8:52 p.m. UTC | #1
Ludovic Courtès <ludo@gnu.org> skribis:

> David Aaron Fendley <tricon@triconium.com> 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”.

Julien has just fixed that:

  https://git.lepiller.eu/guile-netlink/commit/f5867cc920ea3703b11e257a63043ac29153e34c

Hopefully we’ll have a new Guile-Netlink release soon with this fix.
:-)

Ludo’.
diff mbox

Patch

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)