~ruther/guix-local

e9ff8d9ff15db2917d7200cda2bb68a52a9b19b0 — Ludovic Courtès 9 years ago 175c910
syscalls: 'configure-network-interface' has a #:netmask parameter.

* guix/build/syscalls.scm (configure-network-interface): Add #:netmask
keyword parameter and honor it.
1 files changed, 7 insertions(+), 3 deletions(-)

M guix/build/syscalls.scm
M guix/build/syscalls.scm => guix/build/syscalls.scm +7 -3
@@ 1028,15 1028,19 @@ the same type as that returned by 'make-socket-address'."
                 (list name (strerror err))
                 (list err))))))

(define (configure-network-interface name sockaddr flags)
(define* (configure-network-interface name sockaddr flags
                                      #:key netmask)
  "Configure network interface NAME to use SOCKADDR, an address as returned by
'make-socket-address', and FLAGS, a bitwise-or of IFF_* constants."
'make-socket-address', and FLAGS, a bitwise-or of IFF_* constants.  If NETMASK
is true, it must be a socket address to use as the network mask."
  (let ((sock (socket (sockaddr:fam sockaddr) SOCK_STREAM 0)))
    (dynamic-wind
      (const #t)
      (lambda ()
        (set-network-interface-address sock name sockaddr)
        (set-network-interface-flags sock name flags))
        (set-network-interface-flags sock name flags)
        (when netmask
          (set-network-interface-netmask sock name netmask)))
      (lambda ()
        (close-port sock)))))