github.com/afumu/libc@v0.0.6/musl/include/net/if.h (about)

     1  #ifndef _NET_IF_H
     2  #define _NET_IF_H
     3  
     4  #ifdef __cplusplus
     5  extern "C" {
     6  #endif
     7  
     8  #include <features.h>
     9  
    10  #define IF_NAMESIZE 16
    11  
    12  struct if_nameindex {
    13  	unsigned int if_index;
    14  	char *if_name;
    15  };
    16  
    17  unsigned int if_nametoindex (const char *);
    18  char *if_indextoname (unsigned int, char *);
    19  struct if_nameindex *if_nameindex (void);
    20  void if_freenameindex (struct if_nameindex *);
    21  
    22  
    23  
    24  
    25  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
    26  
    27  #include <sys/socket.h>
    28  
    29  #define IFF_UP	0x1
    30  #define IFF_BROADCAST 0x2
    31  #define IFF_DEBUG 0x4
    32  #define IFF_LOOPBACK 0x8
    33  #define IFF_POINTOPOINT 0x10
    34  #define IFF_NOTRAILERS 0x20
    35  #define IFF_RUNNING 0x40
    36  #define IFF_NOARP 0x80
    37  #define IFF_PROMISC 0x100
    38  #define IFF_ALLMULTI 0x200
    39  #define IFF_MASTER 0x400
    40  #define IFF_SLAVE 0x800
    41  #define IFF_MULTICAST 0x1000
    42  #define IFF_PORTSEL 0x2000
    43  #define IFF_AUTOMEDIA 0x4000
    44  #define IFF_DYNAMIC 0x8000
    45  #define IFF_LOWER_UP 0x10000
    46  #define IFF_DORMANT 0x20000
    47  #define IFF_ECHO 0x40000
    48  #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \
    49          IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
    50  
    51  struct ifaddr {
    52  	struct sockaddr ifa_addr;
    53  	union {
    54  		struct sockaddr	ifu_broadaddr;
    55  		struct sockaddr	ifu_dstaddr;
    56  	} ifa_ifu;
    57  	struct iface *ifa_ifp;
    58  	struct ifaddr *ifa_next;
    59  };
    60  
    61  #define ifa_broadaddr	ifa_ifu.ifu_broadaddr
    62  #define ifa_dstaddr	ifa_ifu.ifu_dstaddr
    63  
    64  struct ifmap {
    65  	unsigned long int mem_start;
    66  	unsigned long int mem_end;
    67  	unsigned short int base_addr;
    68  	unsigned char irq;
    69  	unsigned char dma;
    70  	unsigned char port;
    71  };
    72  
    73  #define IFHWADDRLEN	6
    74  #define IFNAMSIZ	IF_NAMESIZE
    75  
    76  struct ifreq {
    77  	union {
    78  		char ifrn_name[IFNAMSIZ];
    79  	} ifr_ifrn;
    80  	union {
    81  		struct sockaddr ifru_addr;
    82  		struct sockaddr ifru_dstaddr;
    83  		struct sockaddr ifru_broadaddr;
    84  		struct sockaddr ifru_netmask;
    85  		struct sockaddr ifru_hwaddr;
    86  		short int ifru_flags;
    87  		int ifru_ivalue;
    88  		int ifru_mtu;
    89  		struct ifmap ifru_map;
    90  		char ifru_slave[IFNAMSIZ];
    91  		char ifru_newname[IFNAMSIZ];
    92  		char *ifru_data;
    93  	} ifr_ifru;
    94  };
    95  
    96  #define ifr_name	ifr_ifrn.ifrn_name
    97  #define ifr_hwaddr	ifr_ifru.ifru_hwaddr
    98  #define ifr_addr	ifr_ifru.ifru_addr
    99  #define ifr_dstaddr	ifr_ifru.ifru_dstaddr
   100  #define ifr_broadaddr	ifr_ifru.ifru_broadaddr
   101  #define ifr_netmask	ifr_ifru.ifru_netmask
   102  #define ifr_flags	ifr_ifru.ifru_flags
   103  #define ifr_metric	ifr_ifru.ifru_ivalue
   104  #define ifr_mtu		ifr_ifru.ifru_mtu
   105  #define ifr_map		ifr_ifru.ifru_map
   106  #define ifr_slave	ifr_ifru.ifru_slave
   107  #define ifr_data	ifr_ifru.ifru_data
   108  #define ifr_ifindex	ifr_ifru.ifru_ivalue
   109  #define ifr_bandwidth	ifr_ifru.ifru_ivalue
   110  #define ifr_qlen	ifr_ifru.ifru_ivalue
   111  #define ifr_newname	ifr_ifru.ifru_newname
   112  #define _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
   113  #define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
   114  #define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
   115  
   116  struct ifconf {
   117  	int ifc_len;		
   118  	union {
   119  		char *ifcu_buf;
   120  		struct ifreq *ifcu_req;
   121  	} ifc_ifcu;
   122  };
   123  
   124  #define ifc_buf		ifc_ifcu.ifcu_buf
   125  #define ifc_req		ifc_ifcu.ifcu_req
   126  #define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0)
   127  
   128  #define __UAPI_DEF_IF_IFCONF                                    0
   129  #define __UAPI_DEF_IF_IFMAP                                     0
   130  #define __UAPI_DEF_IF_IFNAMSIZ                                  0
   131  #define __UAPI_DEF_IF_IFREQ                                     0
   132  #define __UAPI_DEF_IF_NET_DEVICE_FLAGS                          0
   133  #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO    0
   134  
   135  #endif
   136  
   137  #ifdef __cplusplus
   138  }
   139  #endif
   140  
   141  #endif