1/******************************************************************************* 2 3 D binding for the interface addresses querying 4 5 Defines functions getifaddrs/freeifaddrs and the structure 6 they operate on. 7 8 getifaddrs(3) get interface addresses 9 freeifaddrs(3) deallocates the structure returned from getifaddrs 10 11 Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. 12 License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 13 Authors: Nemanja Boric 14 15*******************************************************************************/ 16 17module core.sys.linux.ifaddrs; 18 19import core.sys.posix.sys.socket; 20 21version (linux): 22extern (C): 23nothrow: 24@nogc: 25@system: 26 27struct ifaddrs 28{ 29 /// Next item in the list 30 ifaddrs* ifa_next; 31 /// Name of the interface 32 char* ifa_name; 33 /// Flags from SIOCGIFFLAGS 34 uint ifa_flags; 35 /// Address of interface 36 sockaddr* ifa_addr; 37 /// Netmask of interface 38 sockaddr* ifa_netmask; 39 40 union 41 { 42 /// Broadcast address of the interface 43 sockaddr* ifu_broadaddr; 44 /// Point-to-point destination addresss 45 sockaddr* if_dstaddr; 46 } 47 48 /// Address specific data 49 void* ifa_data; 50} 51 52/// Returns: linked list of ifaddrs structures describing interfaces 53int getifaddrs(ifaddrs** ); 54/// Frees the linked list returned by getifaddrs 55void freeifaddrs(ifaddrs* ); 56