Deleted Added
full compact
if.h (21259) if.h (21666)
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)if.h 8.1 (Berkeley) 6/10/93
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)if.h 8.1 (Berkeley) 6/10/93
34 * $Id: if.h,v 1.41 1996/12/13 21:28:37 wollman Exp $
34 * $Id: if.h,v 1.42 1997/01/03 19:50:25 wollman Exp $
35 */
36
37#ifndef _NET_IF_H_
38#define _NET_IF_H_
39
40/*
41 * Structure describing information about an interface
42 * which may be of interest to management entities.
43 */
44struct if_data {
45 /* generic interface information */
46 u_char ifi_type; /* ethernet, tokenring, etc */
47 u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
48 u_char ifi_addrlen; /* media address length */
49 u_char ifi_hdrlen; /* media header length */
50 u_char ifi_recvquota; /* polling quota for receive intrs */
51 u_char ifi_xmitquota; /* polling quota for xmit intrs */
52 u_long ifi_mtu; /* maximum transmission unit */
53 u_long ifi_metric; /* routing metric (external only) */
54 u_long ifi_baudrate; /* linespeed */
55 /* volatile statistics */
56 u_long ifi_ipackets; /* packets received on interface */
57 u_long ifi_ierrors; /* input errors on interface */
58 u_long ifi_opackets; /* packets sent on interface */
59 u_long ifi_oerrors; /* output errors on interface */
60 u_long ifi_collisions; /* collisions on csma interfaces */
61 u_long ifi_ibytes; /* total number of octets received */
62 u_long ifi_obytes; /* total number of octets sent */
63 u_long ifi_imcasts; /* packets received via multicast */
64 u_long ifi_omcasts; /* packets sent via multicast */
65 u_long ifi_iqdrops; /* dropped on input, this interface */
66 u_long ifi_noproto; /* destined for unsupported protocol */
67 u_long ifi_recvtiming; /* usec spent receiving when timing */
68 u_long ifi_xmittiming; /* usec spent xmitting when timing */
69 struct timeval ifi_lastchange; /* time of last administrative change */
70};
71
72#define IFF_UP 0x1 /* interface is up */
73#define IFF_BROADCAST 0x2 /* broadcast address valid */
74#define IFF_DEBUG 0x4 /* turn on debugging */
75#define IFF_LOOPBACK 0x8 /* is a loopback net */
76#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
77/*#define IFF_NOTRAILERS 0x20 * obsolete: avoid use of trailers */
78#define IFF_RUNNING 0x40 /* resources allocated */
79#define IFF_NOARP 0x80 /* no address resolution protocol */
80#define IFF_PROMISC 0x100 /* receive all packets */
81#define IFF_ALLMULTI 0x200 /* receive all multicast packets */
82#define IFF_OACTIVE 0x400 /* transmission in progress */
83#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */
84#define IFF_LINK0 0x1000 /* per link layer defined bit */
85#define IFF_LINK1 0x2000 /* per link layer defined bit */
86#define IFF_LINK2 0x4000 /* per link layer defined bit */
87#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */
88#define IFF_MULTICAST 0x8000 /* supports multicast */
89
90/* flags set internally only: */
91#define IFF_CANTCHANGE \
92 (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\
93 IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI)
94
95#define IFQ_MAXLEN 50
96#define IFNET_SLOWHZ 1 /* granularity is 1 second */
97
98/*
99 * Message format for use in obtaining information about interfaces
100 * from getkerninfo and the routing socket
101 */
102struct if_msghdr {
103 u_short ifm_msglen; /* to skip over non-understood messages */
104 u_char ifm_version; /* future binary compatability */
105 u_char ifm_type; /* message type */
106 int ifm_addrs; /* like rtm_addrs */
107 int ifm_flags; /* value of if_flags */
108 u_short ifm_index; /* index for associated ifp */
109 struct if_data ifm_data;/* statistics and other data about if */
110};
111
112/*
113 * Message format for use in obtaining information about interface addresses
114 * from getkerninfo and the routing socket
115 */
116struct ifa_msghdr {
117 u_short ifam_msglen; /* to skip over non-understood messages */
118 u_char ifam_version; /* future binary compatability */
119 u_char ifam_type; /* message type */
120 int ifam_addrs; /* like rtm_addrs */
121 int ifam_flags; /* value of ifa_flags */
122 u_short ifam_index; /* index for associated ifp */
123 int ifam_metric; /* value of ifa_metric */
124};
125
126/*
35 */
36
37#ifndef _NET_IF_H_
38#define _NET_IF_H_
39
40/*
41 * Structure describing information about an interface
42 * which may be of interest to management entities.
43 */
44struct if_data {
45 /* generic interface information */
46 u_char ifi_type; /* ethernet, tokenring, etc */
47 u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
48 u_char ifi_addrlen; /* media address length */
49 u_char ifi_hdrlen; /* media header length */
50 u_char ifi_recvquota; /* polling quota for receive intrs */
51 u_char ifi_xmitquota; /* polling quota for xmit intrs */
52 u_long ifi_mtu; /* maximum transmission unit */
53 u_long ifi_metric; /* routing metric (external only) */
54 u_long ifi_baudrate; /* linespeed */
55 /* volatile statistics */
56 u_long ifi_ipackets; /* packets received on interface */
57 u_long ifi_ierrors; /* input errors on interface */
58 u_long ifi_opackets; /* packets sent on interface */
59 u_long ifi_oerrors; /* output errors on interface */
60 u_long ifi_collisions; /* collisions on csma interfaces */
61 u_long ifi_ibytes; /* total number of octets received */
62 u_long ifi_obytes; /* total number of octets sent */
63 u_long ifi_imcasts; /* packets received via multicast */
64 u_long ifi_omcasts; /* packets sent via multicast */
65 u_long ifi_iqdrops; /* dropped on input, this interface */
66 u_long ifi_noproto; /* destined for unsupported protocol */
67 u_long ifi_recvtiming; /* usec spent receiving when timing */
68 u_long ifi_xmittiming; /* usec spent xmitting when timing */
69 struct timeval ifi_lastchange; /* time of last administrative change */
70};
71
72#define IFF_UP 0x1 /* interface is up */
73#define IFF_BROADCAST 0x2 /* broadcast address valid */
74#define IFF_DEBUG 0x4 /* turn on debugging */
75#define IFF_LOOPBACK 0x8 /* is a loopback net */
76#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
77/*#define IFF_NOTRAILERS 0x20 * obsolete: avoid use of trailers */
78#define IFF_RUNNING 0x40 /* resources allocated */
79#define IFF_NOARP 0x80 /* no address resolution protocol */
80#define IFF_PROMISC 0x100 /* receive all packets */
81#define IFF_ALLMULTI 0x200 /* receive all multicast packets */
82#define IFF_OACTIVE 0x400 /* transmission in progress */
83#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */
84#define IFF_LINK0 0x1000 /* per link layer defined bit */
85#define IFF_LINK1 0x2000 /* per link layer defined bit */
86#define IFF_LINK2 0x4000 /* per link layer defined bit */
87#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */
88#define IFF_MULTICAST 0x8000 /* supports multicast */
89
90/* flags set internally only: */
91#define IFF_CANTCHANGE \
92 (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\
93 IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI)
94
95#define IFQ_MAXLEN 50
96#define IFNET_SLOWHZ 1 /* granularity is 1 second */
97
98/*
99 * Message format for use in obtaining information about interfaces
100 * from getkerninfo and the routing socket
101 */
102struct if_msghdr {
103 u_short ifm_msglen; /* to skip over non-understood messages */
104 u_char ifm_version; /* future binary compatability */
105 u_char ifm_type; /* message type */
106 int ifm_addrs; /* like rtm_addrs */
107 int ifm_flags; /* value of if_flags */
108 u_short ifm_index; /* index for associated ifp */
109 struct if_data ifm_data;/* statistics and other data about if */
110};
111
112/*
113 * Message format for use in obtaining information about interface addresses
114 * from getkerninfo and the routing socket
115 */
116struct ifa_msghdr {
117 u_short ifam_msglen; /* to skip over non-understood messages */
118 u_char ifam_version; /* future binary compatability */
119 u_char ifam_type; /* message type */
120 int ifam_addrs; /* like rtm_addrs */
121 int ifam_flags; /* value of ifa_flags */
122 u_short ifam_index; /* index for associated ifp */
123 int ifam_metric; /* value of ifa_metric */
124};
125
126/*
127 * Message format for use in obtaining information about multicast addresses
128 * from the routing socket
129 */
130struct ifma_msghdr {
131 u_short ifmam_msglen; /* to skip over non-understood messages */
132 u_char ifmam_version; /* future binary compatability */
133 u_char ifmam_type; /* message type */
134 int ifmam_addrs; /* like rtm_addrs */
135 int ifmam_flags; /* value of ifa_flags */
136 u_short ifmam_index; /* index for associated ifp */
137};
138
139/*
127 * Interface request structure used for socket
128 * ioctl's. All interface ioctl's must have parameter
129 * definitions which begin with ifr_name. The
130 * remainder may be interface specific.
131 */
132struct ifreq {
133#define IFNAMSIZ 16
134 char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
135 union {
136 struct sockaddr ifru_addr;
137 struct sockaddr ifru_dstaddr;
138 struct sockaddr ifru_broadaddr;
139 short ifru_flags;
140 int ifru_metric;
141 int ifru_mtu;
142 int ifru_phys;
143 caddr_t ifru_data;
144 } ifr_ifru;
145#define ifr_addr ifr_ifru.ifru_addr /* address */
146#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
147#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
148#define ifr_flags ifr_ifru.ifru_flags /* flags */
149#define ifr_metric ifr_ifru.ifru_metric /* metric */
150#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
151#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
152#define ifr_data ifr_ifru.ifru_data /* for use by interface */
153};
154
155struct ifaliasreq {
156 char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
157 struct sockaddr ifra_addr;
158 struct sockaddr ifra_broadaddr;
159 struct sockaddr ifra_mask;
160};
161
162/*
163 * Structure used in SIOCGIFCONF request.
164 * Used to retrieve interface configuration
165 * for machine (useful for programs which
166 * must know all networks accessible).
167 */
168struct ifconf {
169 int ifc_len; /* size of associated buffer */
170 union {
171 caddr_t ifcu_buf;
172 struct ifreq *ifcu_req;
173 } ifc_ifcu;
174#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
175#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
176};
177
178/* XXX - this should go away soon */
179#ifdef KERNEL
180#include <net/if_var.h>
181#endif
182
183#endif /* !_NET_IF_H_ */
140 * Interface request structure used for socket
141 * ioctl's. All interface ioctl's must have parameter
142 * definitions which begin with ifr_name. The
143 * remainder may be interface specific.
144 */
145struct ifreq {
146#define IFNAMSIZ 16
147 char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
148 union {
149 struct sockaddr ifru_addr;
150 struct sockaddr ifru_dstaddr;
151 struct sockaddr ifru_broadaddr;
152 short ifru_flags;
153 int ifru_metric;
154 int ifru_mtu;
155 int ifru_phys;
156 caddr_t ifru_data;
157 } ifr_ifru;
158#define ifr_addr ifr_ifru.ifru_addr /* address */
159#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
160#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
161#define ifr_flags ifr_ifru.ifru_flags /* flags */
162#define ifr_metric ifr_ifru.ifru_metric /* metric */
163#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
164#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
165#define ifr_data ifr_ifru.ifru_data /* for use by interface */
166};
167
168struct ifaliasreq {
169 char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
170 struct sockaddr ifra_addr;
171 struct sockaddr ifra_broadaddr;
172 struct sockaddr ifra_mask;
173};
174
175/*
176 * Structure used in SIOCGIFCONF request.
177 * Used to retrieve interface configuration
178 * for machine (useful for programs which
179 * must know all networks accessible).
180 */
181struct ifconf {
182 int ifc_len; /* size of associated buffer */
183 union {
184 caddr_t ifcu_buf;
185 struct ifreq *ifcu_req;
186 } ifc_ifcu;
187#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
188#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
189};
190
191/* XXX - this should go away soon */
192#ifdef KERNEL
193#include <net/if_var.h>
194#endif
195
196#endif /* !_NET_IF_H_ */