services: static-networking-service: Switch to (guix build syscalls).
* gnu/services/networking.scm (static-networking-service): Remove #:inetutils parameter. Rewrite using 'configure-network-interface' and 'set-network-interface-flags'.
This commit is contained in:
parent
c9bf64d6d7
commit
7f5c2a9cc1
|
@ -80,34 +80,35 @@ fe80::1%lo0 apps.facebook.com\n")
|
|||
gateway
|
||||
(provision '(networking))
|
||||
(name-servers '())
|
||||
(inetutils inetutils)
|
||||
(net-tools net-tools))
|
||||
"Return a service that starts @var{interface} with address @var{ip}. If
|
||||
@var{gateway} is true, it must be a string specifying the default network
|
||||
gateway."
|
||||
(define loopback?
|
||||
(memq 'loopback provision))
|
||||
|
||||
;; TODO: Eventually we should do this using Guile's networking procedures,
|
||||
;; like 'configure-qemu-networking' does, but the patch that does this is
|
||||
;; not yet in stock Guile.
|
||||
;; TODO: Eventually replace 'route' with bindings for the appropriate
|
||||
;; ioctls.
|
||||
(with-monad %store-monad
|
||||
(return
|
||||
(service
|
||||
|
||||
;; Unless we're providing the loopback interface, wait for udev to be up
|
||||
;; and running so that INTERFACE is actually usable.
|
||||
(requirement (if (memq 'loopback provision)
|
||||
'()
|
||||
'(udev)))
|
||||
(requirement (if loopback? '() '(udev)))
|
||||
|
||||
(documentation
|
||||
"Bring up the networking interface using a static IP address.")
|
||||
(provision provision)
|
||||
(start #~(lambda _
|
||||
;; Return #t if successfully started.
|
||||
(and (zero? (system* (string-append #$inetutils
|
||||
"/bin/ifconfig")
|
||||
"-i" #$interface "-A" #$ip
|
||||
"-i" #$interface "--up"))
|
||||
(let* ((addr (inet-pton AF_INET #$ip))
|
||||
(sockaddr (make-socket-address AF_INET addr 0)))
|
||||
(configure-network-interface #$interface sockaddr
|
||||
(logior IFF_UP
|
||||
#$(if loopback?
|
||||
#~IFF_LOOPBACK
|
||||
0))))
|
||||
#$(if gateway
|
||||
#~(zero? (system* (string-append #$net-tools
|
||||
"/sbin/route")
|
||||
|
@ -124,16 +125,17 @@ gateway."
|
|||
(format port "nameserver ~a~%"
|
||||
server))
|
||||
'#$name-servers)))
|
||||
#t))))
|
||||
#t)))
|
||||
(stop #~(lambda _
|
||||
;; Return #f is successfully stopped.
|
||||
(not (and (system* (string-append #$inetutils "/bin/ifconfig")
|
||||
#$interface "down")
|
||||
#$(if gateway
|
||||
(let ((sock (socket AF_INET SOCK_STREAM 0)))
|
||||
(set-network-interface-flags sock #$interface 0)
|
||||
(close-port sock))
|
||||
(not #$(if gateway
|
||||
#~(system* (string-append #$net-tools
|
||||
"/sbin/route")
|
||||
"del" "-net" "default")
|
||||
#t)))))
|
||||
#t))))
|
||||
(respawn? #f)))))
|
||||
|
||||
(define* (dhcp-client-service #:key (dhcp isc-dhcp))
|
||||
|
|
Loading…
Reference in New Issue