123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #ifndef _NET_IF_H
- #define _NET_IF_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <features.h>
- #define IF_NAMESIZE 16
- struct if_nameindex {
- unsigned int if_index;
- char *if_name;
- };
- unsigned int if_nametoindex (const char *);
- char *if_indextoname (unsigned int, char *);
- struct if_nameindex *if_nameindex (void);
- void if_freenameindex (struct if_nameindex *);
- #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
- #include <sys/socket.h>
- #define IFF_UP 0x1
- #define IFF_BROADCAST 0x2
- #define IFF_DEBUG 0x4
- #define IFF_LOOPBACK 0x8
- #define IFF_POINTOPOINT 0x10
- #define IFF_NOTRAILERS 0x20
- #define IFF_RUNNING 0x40
- #define IFF_NOARP 0x80
- #define IFF_PROMISC 0x100
- #define IFF_ALLMULTI 0x200
- #define IFF_MASTER 0x400
- #define IFF_SLAVE 0x800
- #define IFF_MULTICAST 0x1000
- #define IFF_PORTSEL 0x2000
- #define IFF_AUTOMEDIA 0x4000
- #define IFF_DYNAMIC 0x8000
- #define IFF_LOWER_UP 0x10000
- #define IFF_DORMANT 0x20000
- #define IFF_ECHO 0x40000
- #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \
- IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
- struct ifaddr {
- struct sockaddr ifa_addr;
- union {
- struct sockaddr ifu_broadaddr;
- struct sockaddr ifu_dstaddr;
- } ifa_ifu;
- struct iface *ifa_ifp;
- struct ifaddr *ifa_next;
- };
- #define ifa_broadaddr ifa_ifu.ifu_broadaddr
- #define ifa_dstaddr ifa_ifu.ifu_dstaddr
- struct ifmap {
- unsigned long int mem_start;
- unsigned long int mem_end;
- unsigned short int base_addr;
- unsigned char irq;
- unsigned char dma;
- unsigned char port;
- };
- #define IFHWADDRLEN 6
- #define IFNAMSIZ IF_NAMESIZE
- struct ifreq {
- union {
- char ifrn_name[IFNAMSIZ];
- } ifr_ifrn;
- union {
- struct sockaddr ifru_addr;
- struct sockaddr ifru_dstaddr;
- struct sockaddr ifru_broadaddr;
- struct sockaddr ifru_netmask;
- struct sockaddr ifru_hwaddr;
- short int ifru_flags;
- int ifru_ivalue;
- int ifru_mtu;
- struct ifmap ifru_map;
- char ifru_slave[IFNAMSIZ];
- char ifru_newname[IFNAMSIZ];
- void *ifru_data;
- } ifr_ifru;
- };
- #define ifr_name ifr_ifrn.ifrn_name
- #define ifr_hwaddr ifr_ifru.ifru_hwaddr
- #define ifr_addr ifr_ifru.ifru_addr
- #define ifr_dstaddr ifr_ifru.ifru_dstaddr
- #define ifr_broadaddr ifr_ifru.ifru_broadaddr
- #define ifr_netmask ifr_ifru.ifru_netmask
- #define ifr_flags ifr_ifru.ifru_flags
- #define ifr_metric ifr_ifru.ifru_ivalue
- #define ifr_mtu ifr_ifru.ifru_mtu
- #define ifr_map ifr_ifru.ifru_map
- #define ifr_slave ifr_ifru.ifru_slave
- #define ifr_data ifr_ifru.ifru_data
- #define ifr_ifindex ifr_ifru.ifru_ivalue
- #define ifr_bandwidth ifr_ifru.ifru_ivalue
- #define ifr_qlen ifr_ifru.ifru_ivalue
- #define ifr_newname ifr_ifru.ifru_newname
- #define _IOT_ifreq _IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
- #define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
- #define _IOT_ifreq_int _IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
- struct ifconf {
- int ifc_len;
- union {
- void *ifcu_buf;
- struct ifreq *ifcu_req;
- } ifc_ifcu;
- };
- #define ifc_buf ifc_ifcu.ifcu_buf
- #define ifc_req ifc_ifcu.ifcu_req
- #define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0)
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|