#ifndef _NET_IF_H #define _NET_IF_H 1 // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html #include #include #define IF_NAMESIZE 16 __BEGIN_DECLS struct if_nameindex { unsigned if_index; /* Numeric index of the interface. */ char* if_name; /* Null-terminated name of the interface. */ }; struct ifreq { union { struct sockaddr ifru_addr; struct sockaddr ifru_netmask; struct sockaddr ifru_gwaddr; struct sockaddr ifru_hwaddr; unsigned char __min_storage[sizeof(sockaddr) + 6]; } ifr_ifru; }; #define SIOCGIFADDR 1 /* Get interface address */ #define SIOCSIFADDR 2 /* Set interface address */ #define SIOCGIFNETMASK 3 /* Get network mask */ #define SIOCSIFNETMASK 4 /* Set network mask */ #define SIOCGIFGWADDR 5 /* Get gateway address */ #define SIOCSIFGWADDR 6 /* Set gateway address */ #define SIOCGIFHWADDR 7 /* Get hardware address */ void if_freenameindex(struct if_nameindex* ptr); char* if_indextoname(unsigned ifindex, char* ifname); struct if_nameindex* if_nameindex(void); unsigned if_nametoindex(const char* ifname); __END_DECLS #endif