/******************************************************************************* Binding for Mac OSX's , expose network interface addresses The following functions are present as of Mac OSX 10.15: - getifaddrs(3): get interface addresses - freeifaddrs(3): deallocates the return value of `getifaddrs` - getifmaddrs(3): get multicast group membership - freeifmaddrs(3): deallocates the return value of `getifmaddrs` Copyright: Copyright © 2020, The D Language Foundation License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Daniel Graczer *******************************************************************************/ module core.sys.darwin.ifaddrs; version (OSX) version = Darwin; else version (iOS) version = Darwin; else version (TVOS) version = Darwin; else version (WatchOS) version = Darwin; version (Darwin): extern (C): nothrow: @nogc: @system: import core.sys.posix.sys.socket; /// struct ifaddrs { /// Next item in the list ifaddrs* ifa_next; /// Name of the interface char* ifa_name; /// Flags from SIOCGIFFLAGS uint ifa_flags; /// Address of interface sockaddr* ifa_addr; /// Netmask of interface sockaddr* ifa_netmask; /// Point-to-point destination addresss sockaddr* if_dstaddr; /// Address specific data void* ifa_data; } /// Returns: linked list of ifaddrs structures describing interfaces int getifaddrs(ifaddrs**); /// Frees the linked list returned by getifaddrs void freeifaddrs(ifaddrs*); /// struct ifmaddrs { /// Pointer to next struct ifmaddrs* ifma_next; /// Interface name (AF_LINK) sockaddr* ifma_name; /// Multicast address sockaddr* ifma_addr; /// Link-layer translation, if any sockaddr* ifma_lladdr; } /// Stores a reference to a linked list of the multicast memberships /// on the local machine in the memory referenced by ifmaddrs int getifmaddrs(ifmaddrs**); /// Frees the list allocated by getifmaddrs void freeifmaddrs(ifmaddrs*);