0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef _LINUX_IF_H
0021 #define _LINUX_IF_H
0022
0023 #include <linux/libc-compat.h> /* for compatibility with glibc */
0024 #include <linux/types.h> /* for "__kernel_caddr_t" et al */
0025 #include <linux/socket.h> /* for "struct sockaddr" et al */
0026 #include <linux/compiler.h> /* for "__user" et al */
0027
0028 #ifndef __KERNEL__
0029 #include <sys/socket.h> /* for struct sockaddr. */
0030 #endif
0031
0032 #if __UAPI_DEF_IF_IFNAMSIZ
0033 #define IFNAMSIZ 16
0034 #endif
0035 #define IFALIASZ 256
0036 #define ALTIFNAMSIZ 128
0037 #include <linux/hdlc/ioctl.h>
0038
0039
0040 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
0041 __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082 enum net_device_flags {
0083
0084 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS
0085 IFF_UP = 1<<0,
0086 IFF_BROADCAST = 1<<1,
0087 IFF_DEBUG = 1<<2,
0088 IFF_LOOPBACK = 1<<3,
0089 IFF_POINTOPOINT = 1<<4,
0090 IFF_NOTRAILERS = 1<<5,
0091 IFF_RUNNING = 1<<6,
0092 IFF_NOARP = 1<<7,
0093 IFF_PROMISC = 1<<8,
0094 IFF_ALLMULTI = 1<<9,
0095 IFF_MASTER = 1<<10,
0096 IFF_SLAVE = 1<<11,
0097 IFF_MULTICAST = 1<<12,
0098 IFF_PORTSEL = 1<<13,
0099 IFF_AUTOMEDIA = 1<<14,
0100 IFF_DYNAMIC = 1<<15,
0101 #endif
0102 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
0103 IFF_LOWER_UP = 1<<16,
0104 IFF_DORMANT = 1<<17,
0105 IFF_ECHO = 1<<18,
0106 #endif
0107 };
0108 #endif
0109
0110
0111 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS
0112 #define IFF_UP IFF_UP
0113 #define IFF_BROADCAST IFF_BROADCAST
0114 #define IFF_DEBUG IFF_DEBUG
0115 #define IFF_LOOPBACK IFF_LOOPBACK
0116 #define IFF_POINTOPOINT IFF_POINTOPOINT
0117 #define IFF_NOTRAILERS IFF_NOTRAILERS
0118 #define IFF_RUNNING IFF_RUNNING
0119 #define IFF_NOARP IFF_NOARP
0120 #define IFF_PROMISC IFF_PROMISC
0121 #define IFF_ALLMULTI IFF_ALLMULTI
0122 #define IFF_MASTER IFF_MASTER
0123 #define IFF_SLAVE IFF_SLAVE
0124 #define IFF_MULTICAST IFF_MULTICAST
0125 #define IFF_PORTSEL IFF_PORTSEL
0126 #define IFF_AUTOMEDIA IFF_AUTOMEDIA
0127 #define IFF_DYNAMIC IFF_DYNAMIC
0128 #endif
0129
0130 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
0131 #define IFF_LOWER_UP IFF_LOWER_UP
0132 #define IFF_DORMANT IFF_DORMANT
0133 #define IFF_ECHO IFF_ECHO
0134 #endif
0135
0136 #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
0137 IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
0138
0139 #define IF_GET_IFACE 0x0001
0140 #define IF_GET_PROTO 0x0002
0141
0142
0143 #define IF_IFACE_V35 0x1000
0144 #define IF_IFACE_V24 0x1001
0145 #define IF_IFACE_X21 0x1002
0146 #define IF_IFACE_T1 0x1003
0147 #define IF_IFACE_E1 0x1004
0148 #define IF_IFACE_SYNC_SERIAL 0x1005
0149 #define IF_IFACE_X21D 0x1006
0150
0151
0152 #define IF_PROTO_HDLC 0x2000
0153 #define IF_PROTO_PPP 0x2001
0154 #define IF_PROTO_CISCO 0x2002
0155 #define IF_PROTO_FR 0x2003
0156 #define IF_PROTO_FR_ADD_PVC 0x2004
0157 #define IF_PROTO_FR_DEL_PVC 0x2005
0158 #define IF_PROTO_X25 0x2006
0159 #define IF_PROTO_HDLC_ETH 0x2007
0160 #define IF_PROTO_FR_ADD_ETH_PVC 0x2008
0161 #define IF_PROTO_FR_DEL_ETH_PVC 0x2009
0162 #define IF_PROTO_FR_PVC 0x200A
0163 #define IF_PROTO_FR_ETH_PVC 0x200B
0164 #define IF_PROTO_RAW 0x200C
0165
0166
0167 enum {
0168 IF_OPER_UNKNOWN,
0169 IF_OPER_NOTPRESENT,
0170 IF_OPER_DOWN,
0171 IF_OPER_LOWERLAYERDOWN,
0172 IF_OPER_TESTING,
0173 IF_OPER_DORMANT,
0174 IF_OPER_UP,
0175 };
0176
0177
0178 enum {
0179 IF_LINK_MODE_DEFAULT,
0180 IF_LINK_MODE_DORMANT,
0181 IF_LINK_MODE_TESTING,
0182 };
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195 #if __UAPI_DEF_IF_IFMAP
0196 struct ifmap {
0197 unsigned long mem_start;
0198 unsigned long mem_end;
0199 unsigned short base_addr;
0200 unsigned char irq;
0201 unsigned char dma;
0202 unsigned char port;
0203
0204 };
0205 #endif
0206
0207 struct if_settings {
0208 unsigned int type;
0209 unsigned int size;
0210 union {
0211
0212 raw_hdlc_proto __user *raw_hdlc;
0213 cisco_proto __user *cisco;
0214 fr_proto __user *fr;
0215 fr_proto_pvc __user *fr_pvc;
0216 fr_proto_pvc_info __user *fr_pvc_info;
0217 x25_hdlc_proto __user *x25;
0218
0219
0220 sync_serial_settings __user *sync;
0221 te1_settings __user *te1;
0222 } ifs_ifsu;
0223 };
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233 #if __UAPI_DEF_IF_IFREQ
0234 struct ifreq {
0235 #define IFHWADDRLEN 6
0236 union
0237 {
0238 char ifrn_name[IFNAMSIZ];
0239 } ifr_ifrn;
0240
0241 union {
0242 struct sockaddr ifru_addr;
0243 struct sockaddr ifru_dstaddr;
0244 struct sockaddr ifru_broadaddr;
0245 struct sockaddr ifru_netmask;
0246 struct sockaddr ifru_hwaddr;
0247 short ifru_flags;
0248 int ifru_ivalue;
0249 int ifru_mtu;
0250 struct ifmap ifru_map;
0251 char ifru_slave[IFNAMSIZ];
0252 char ifru_newname[IFNAMSIZ];
0253 void __user * ifru_data;
0254 struct if_settings ifru_settings;
0255 } ifr_ifru;
0256 };
0257 #endif
0258
0259 #define ifr_name ifr_ifrn.ifrn_name
0260 #define ifr_hwaddr ifr_ifru.ifru_hwaddr
0261 #define ifr_addr ifr_ifru.ifru_addr
0262 #define ifr_dstaddr ifr_ifru.ifru_dstaddr
0263 #define ifr_broadaddr ifr_ifru.ifru_broadaddr
0264 #define ifr_netmask ifr_ifru.ifru_netmask
0265 #define ifr_flags ifr_ifru.ifru_flags
0266 #define ifr_metric ifr_ifru.ifru_ivalue
0267 #define ifr_mtu ifr_ifru.ifru_mtu
0268 #define ifr_map ifr_ifru.ifru_map
0269 #define ifr_slave ifr_ifru.ifru_slave
0270 #define ifr_data ifr_ifru.ifru_data
0271 #define ifr_ifindex ifr_ifru.ifru_ivalue
0272 #define ifr_bandwidth ifr_ifru.ifru_ivalue
0273 #define ifr_qlen ifr_ifru.ifru_ivalue
0274 #define ifr_newname ifr_ifru.ifru_newname
0275 #define ifr_settings ifr_ifru.ifru_settings
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285 #if __UAPI_DEF_IF_IFCONF
0286 struct ifconf {
0287 int ifc_len;
0288 union {
0289 char __user *ifcu_buf;
0290 struct ifreq __user *ifcu_req;
0291 } ifc_ifcu;
0292 };
0293 #endif
0294
0295 #define ifc_buf ifc_ifcu.ifcu_buf
0296 #define ifc_req ifc_ifcu.ifcu_req
0297
0298 #endif