ifaddrs: get interface-names on unix.

locals-and-roots
John Benediktsson 2016-03-20 21:00:18 -07:00
parent 12628c5a95
commit 2f371a83a0
3 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1 @@
John Benediktsson

View File

@ -0,0 +1,34 @@
! Copyright (C) 2016 John Benediktsson
! See http://factorcode.org/license.txt for BSD license
USING: accessors alien.c-types alien.data alien.destructors
alien.syntax classes.struct destructors libc sequences sets
sorting ;
IN: ifaddrs
STRUCT: sockaddr
{ sa_len uint8_t }
{ sa_family uint8_t }
{ sa_data char[14] } ;
STRUCT: ifaddrs
{ ifa_next ifaddrs* }
{ ifa_name c-string }
{ ifa_flags uint }
{ ifa_addr sockaddr* }
{ ifa_netmask sockaddr* }
{ ifa_dstaddr sockaddr* }
{ ifa_data void* } ;
FUNCTION: int getifaddrs ( ifaddrs** ifap )
FUNCTION: void freeifaddrs ( ifaddrs* ifp )
DESTRUCTOR: freeifaddrs
: interface-names ( -- ifaddrs )
[
{ void* } [ getifaddrs io-error ] with-out-parameters
&freeifaddrs ifaddrs deref
[ ifa_next>> ] follow
[ ifa_name>> ] map members natural-sort
] with-destructors ;

View File

@ -0,0 +1 @@
unix