if.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012: <waltje@uWalt.NL.Mugnet.ORG>
013:
014:
015:
016:
017:
018:
019: #ifndef _LINUX_IF_H
020: #define _LINUX_IF_H
021:
022: #include <linux/types.h>
023: #include <linux/socket.h>
024:
025:
026: #define IFNAMSIZ 16
027: #define IFALIASZ 256
028: #include <linux/hdlc/ioctl.h>
029:
030:
031: #define IFF_UP 0x1
032: #define IFF_BROADCAST 0x2
033: #define IFF_DEBUG 0x4
034: #define IFF_LOOPBACK 0x8
035: #define IFF_POINTOPOINT 0x10
036: #define IFF_NOTRAILERS 0x20
037: #define IFF_RUNNING 0x40
038: #define IFF_NOARP 0x80
039: #define IFF_PROMISC 0x100
040: #define IFF_ALLMULTI 0x200
041:
042: #define IFF_MASTER 0x400
043: #define IFF_SLAVE 0x800
044:
045: #define IFF_MULTICAST 0x1000
046:
047: #define IFF_PORTSEL 0x2000
048: #define IFF_AUTOMEDIA 0x4000
049: #define IFF_DYNAMIC 0x8000
050:
051: #define IFF_LOWER_UP 0x10000
052: #define IFF_DORMANT 0x20000
053:
054: #define IFF_ECHO 0x40000
055:
056: #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
057: IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
058:
059:
060: #define IFF_802_1Q_VLAN 0x1
061: #define IFF_EBRIDGE 0x2
062: #define IFF_SLAVE_INACTIVE 0x4
063: #define IFF_MASTER_8023AD 0x8
064: #define IFF_MASTER_ALB 0x10
065: #define IFF_BONDING 0x20
066: #define IFF_SLAVE_NEEDARP 0x40
067: #define IFF_ISATAP 0x80
068: #define IFF_MASTER_ARPMON 0x100
069: #define IFF_WAN_HDLC 0x200
070: #define IFF_XMIT_DST_RELEASE 0x400
071:
072:
073: #define IFF_DONT_BRIDGE 0x800
074: #define IFF_DISABLE_NETPOLL 0x1000
075: #define IFF_MACVLAN_PORT 0x2000
076: #define IFF_BRIDGE_PORT 0x4000
077: #define IFF_OVS_DATAPATH 0x8000
078:
079: #define IFF_TX_SKB_SHARING 0x10000
080:
081: #define IFF_UNICAST_FLT 0x20000
082:
083: #define IF_GET_IFACE 0x0001
084: #define IF_GET_PROTO 0x0002
085:
086:
087: #define IF_IFACE_V35 0x1000
088: #define IF_IFACE_V24 0x1001
089: #define IF_IFACE_X21 0x1002
090: #define IF_IFACE_T1 0x1003
091: #define IF_IFACE_E1 0x1004
092: #define IF_IFACE_SYNC_SERIAL 0x1005
093: #define IF_IFACE_X21D 0x1006
094:
095:
096: #define IF_PROTO_HDLC 0x2000
097: #define IF_PROTO_PPP 0x2001
098: #define IF_PROTO_CISCO 0x2002
099: #define IF_PROTO_FR 0x2003
100: #define IF_PROTO_FR_ADD_PVC 0x2004
101: #define IF_PROTO_FR_DEL_PVC 0x2005
102: #define IF_PROTO_X25 0x2006
103: #define IF_PROTO_HDLC_ETH 0x2007
104: #define IF_PROTO_FR_ADD_ETH_PVC 0x2008
105: #define IF_PROTO_FR_DEL_ETH_PVC 0x2009
106: #define IF_PROTO_FR_PVC 0x200A
107: #define IF_PROTO_FR_ETH_PVC 0x200B
108: #define IF_PROTO_RAW 0x200C
109:
110:
111: enum {
112: IF_OPER_UNKNOWN,
113: IF_OPER_NOTPRESENT,
114: IF_OPER_DOWN,
115: IF_OPER_LOWERLAYERDOWN,
116: IF_OPER_TESTING,
117: IF_OPER_DORMANT,
118: IF_OPER_UP,
119: };
120:
121:
122: enum {
123: IF_LINK_MODE_DEFAULT,
124: IF_LINK_MODE_DORMANT,
125: };
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137: struct ifmap {
138: unsigned long mem_start;
139: unsigned long mem_end;
140: unsigned short base_addr;
141: unsigned char irq;
142: unsigned char dma;
143: unsigned char port;
144:
145: };
146:
147: struct if_settings {
148: unsigned int type;
149: unsigned int size;
150: union {
151:
152: raw_hdlc_proto *raw_hdlc;
153: cisco_proto *cisco;
154: fr_proto *fr;
155: fr_proto_pvc *fr_pvc;
156: fr_proto_pvc_info *fr_pvc_info;
157:
158:
159: sync_serial_settings *sync;
160: te1_settings *te1;
161: } ifs_ifsu;
162: };
163:
164:
165:
166:
167:
168:
169:
170:
171: struct ifreq {
172: #define IFHWADDRLEN 6
173: union
174: {
175: char ifrn_name[IFNAMSIZ];
176: } ifr_ifrn;
177:
178: union {
179: struct sockaddr ifru_addr;
180: struct sockaddr ifru_dstaddr;
181: struct sockaddr ifru_broadaddr;
182: struct sockaddr ifru_netmask;
183: struct sockaddr ifru_hwaddr;
184: short ifru_flags;
185: int ifru_ivalue;
186: int ifru_mtu;
187: struct ifmap ifru_map;
188: char ifru_slave[IFNAMSIZ];
189: char ifru_newname[IFNAMSIZ];
190: void * ifru_data;
191: struct if_settings ifru_settings;
192: } ifr_ifru;
193: };
194:
195: #define ifr_name ifr_ifrn.ifrn_name
196: #define ifr_hwaddr ifr_ifru.ifru_hwaddr
197: #define ifr_addr ifr_ifru.ifru_addr
198: #define ifr_dstaddr ifr_ifru.ifru_dstaddr
199: #define ifr_broadaddr ifr_ifru.ifru_broadaddr
200: #define ifr_netmask ifr_ifru.ifru_netmask
201: #define ifr_flags ifr_ifru.ifru_flags
202: #define ifr_metric ifr_ifru.ifru_ivalue
203: #define ifr_mtu ifr_ifru.ifru_mtu
204: #define ifr_map ifr_ifru.ifru_map
205: #define ifr_slave ifr_ifru.ifru_slave
206: #define ifr_data ifr_ifru.ifru_data
207: #define ifr_ifindex ifr_ifru.ifru_ivalue
208: #define ifr_bandwidth ifr_ifru.ifru_ivalue
209: #define ifr_qlen ifr_ifru.ifru_ivalue
210: #define ifr_newname ifr_ifru.ifru_newname
211: #define ifr_settings ifr_ifru.ifru_settings
212:
213:
214:
215:
216:
217:
218:
219:
220: struct ifconf {
221: int ifc_len;
222: union {
223: char *ifcu_buf;
224: struct ifreq *ifcu_req;
225: } ifc_ifcu;
226: };
227: #define ifc_buf ifc_ifcu.ifcu_buf
228: #define ifc_req ifc_ifcu.ifcu_req
229:
230: #endif
231:
© Andrew Scott 2006 -
2025,
All Rights Reserved