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