Annotation of sys/net/if_vlan_var.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: if_vlan_var.h,v 1.18 2006/02/09 00:05:55 reyk Exp $ */
2:
3: /*
4: * Copyright 1998 Massachusetts Institute of Technology
5: *
6: * Permission to use, copy, modify, and distribute this software and
7: * its documentation for any purpose and without fee is hereby
8: * granted, provided that both the above copyright notice and this
9: * permission notice appear in all copies, that both the above
10: * copyright notice and this permission notice appear in all
11: * supporting documentation, and that the name of M.I.T. not be used
12: * in advertising or publicity pertaining to distribution of the
13: * software without specific, written prior permission. M.I.T. makes
14: * no representations about the suitability of this software for any
15: * purpose. It is provided "as is" without express or implied
16: * warranty.
17: *
18: * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
19: * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
20: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
22: * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29: * SUCH DAMAGE.
30: *
31: * $FreeBSD: src/sys/net/if_vlan_var.h,v 1.3 1999/08/28 00:48:24 peter Exp $
32: */
33:
34: #ifndef _NET_IF_VLAN_VAR_H_
35: #define _NET_IF_VLAN_VAR_H_
36:
37: #ifdef _KERNEL
38: #define mc_enm mc_u.mcu_enm
39:
40: struct vlan_mc_entry {
41: LIST_ENTRY(vlan_mc_entry) mc_entries;
42: union {
43: struct ether_multi *mcu_enm;
44: } mc_u;
45: struct sockaddr_storage mc_addr;
46: };
47:
48: struct ifvlan {
49: struct arpcom ifv_ac; /* make this an interface */
50: struct ifnet *ifv_p; /* parent interface of this vlan */
51: struct ifv_linkmib {
52: int ifvm_parent;
53: u_int16_t ifvm_proto; /* encapsulation ethertype */
54: u_int16_t ifvm_tag; /* tag to apply on packets leaving if */
55: u_int16_t ifvm_prio; /* prio to apply on packet leaving if */
56: } ifv_mib;
57: LIST_HEAD(__vlan_mchead, vlan_mc_entry) vlan_mc_listhead;
58: LIST_ENTRY(ifvlan) ifv_list;
59: int ifv_flags;
60: void *lh_cookie;
61: void *dh_cookie;
62: };
63:
64: #define ifv_if ifv_ac.ac_if
65: #define ifv_tag ifv_mib.ifvm_tag
66: #define ifv_prio ifv_mib.ifvm_prio
67: #define IFVF_PROMISC 0x01
68: #endif /* _KERNEL */
69:
70: struct ether_vlan_header {
71: u_char evl_dhost[ETHER_ADDR_LEN];
72: u_char evl_shost[ETHER_ADDR_LEN];
73: u_int16_t evl_encap_proto;
74: u_int16_t evl_tag;
75: u_int16_t evl_proto;
76: };
77:
78: #define EVL_VLID_MASK 0x0FFF
79: #define EVL_VLANOFTAG(tag) ((tag) & EVL_VLID_MASK)
80: #define EVL_PRIOFTAG(tag) (((tag) >> 13) & 7)
81: #define EVL_ENCAPLEN 4 /* length in octets of encapsulation */
82: #define EVL_PRIO_MAX 7
83: #define EVL_PRIO_BITS 13
84:
85: /* sysctl(3) tags, for compatibility purposes */
86: #define VLANCTL_PROTO 1
87: #define VLANCTL_MAX 2
88:
89: /*
90: * Configuration structure for SIOCSETVLAN and SIOCGETVLAN ioctls.
91: */
92: struct vlanreq {
93: char vlr_parent[IFNAMSIZ];
94: u_short vlr_tag;
95: };
96: #define SIOCSETVLAN SIOCSIFGENERIC
97: #define SIOCGETVLAN SIOCGIFGENERIC
98:
99: #ifdef _KERNEL
100: extern int vlan_input(struct ether_header *eh, struct mbuf *m);
101: #endif /* _KERNEL */
102: #endif /* _NET_IF_VLAN_VAR_H_ */
CVSweb