From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSC9J-0006iT-M7 for guix-patches@gnu.org; Mon, 03 Jul 2017 20:57:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSC9G-0001Gw-Lz for guix-patches@gnu.org; Mon, 03 Jul 2017 20:57:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:48316) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dSC9G-0001Fv-IV for guix-patches@gnu.org; Mon, 03 Jul 2017 20:57:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dSC9G-0004jw-6E for guix-patches@gnu.org; Mon, 03 Jul 2017 20:57:02 -0400 Subject: [bug#27570] [PATCH v3] syscalls: Add network-interface-running? Resent-Message-ID: From: Danny Milosavljevic Date: Tue, 4 Jul 2017 02:56:02 +0200 Message-Id: <20170704005602.14932-1-dannym@scratchpost.org> In-Reply-To: <20170704003948.13966-1-dannym@scratchpost.org> References: <20170704003948.13966-1-dannym@scratchpost.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 27570@debbugs.gnu.org * guix/build/syscalls.scm (network-interface-running?): New variable. Export it. --- guix/build/syscalls.scm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 9c082b435..5a6662afe 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -88,6 +88,7 @@ PF_PACKET AF_PACKET + network-interface-running? all-network-interface-names network-interface-names network-interface-netmask @@ -1108,6 +1109,7 @@ bytes." (define-as-needed IFF_UP #x1) ;Interface is up (define-as-needed IFF_BROADCAST #x2) ;Broadcast address valid. (define-as-needed IFF_LOOPBACK #x8) ;Is a loopback net. +(define-as-needed IFF_RUNNING #x40) ;interface RFC2863 OPER_UP (define IF_NAMESIZE 16) ;maximum interface name size @@ -1282,6 +1284,13 @@ interface NAME." (close-port sock) (not (zero? (logand flags IFF_LOOPBACK))))) +(define (network-interface-running? name) + "Return true if NAME designates a running network interface." + (let* ((sock (socket SOCK_STREAM AF_INET 0)) + (flags (network-interface-flags sock name))) + (close-port sock) + (not (zero? (logand flags IFF_RUNNING))))) + (define-as-needed (set-network-interface-flags socket name flags) "Set the flag of network interface NAME to FLAGS." (let ((req (make-bytevector ifreq-struct-size)))