~ruther/guix-local

6944fdbdbd2339ee66f30e416806da9c7e8b6e01 — Ludovic Courtès 11 years ago 152dd61
syscalls: Add 'set-network-interface-up'.

* guix/build/syscalls.scm (set-network-interface-up): New procedure.
1 files changed, 15 insertions(+), 1 deletions(-)

M guix/build/syscalls.scm
M guix/build/syscalls.scm => guix/build/syscalls.scm +15 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 46,6 46,7 @@
            network-interface-address
            set-network-interface-flags
            set-network-interface-address
            set-network-interface-up
            configure-network-interface))

;;; Commentary:


@@ 552,4 553,17 @@ the same type as that returned by 'make-socket-address'."
      (lambda ()
        (close-port sock)))))

(define* (set-network-interface-up name
                                   #:key (family AF_INET))
  "Turn up the interface NAME."
  (let ((sock (socket family SOCK_STREAM 0)))
    (dynamic-wind
      (const #t)
      (lambda ()
        (let ((flags (network-interface-flags sock name)))
          (set-network-interface-flags sock name
                                       (logior flags IFF_UP))))
      (lambda ()
        (close-port sock)))))

;;; syscalls.scm ends here