|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright 1998 Massachusetts Institute of Technology
24: *
25: * Permission to use, copy, modify, and distribute this software and
26: * its documentation for any purpose and without fee is hereby
27: * granted, provided that both the above copyright notice and this
28: * permission notice appear in all copies, that both the above
29: * copyright notice and this permission notice appear in all
30: * supporting documentation, and that the name of M.I.T. not be used
31: * in advertising or publicity pertaining to distribution of the
32: * software without specific, written prior permission. M.I.T. makes
33: * no representations about the suitability of this software for any
34: * purpose. It is provided "as is" without express or implied
35: * warranty.
36: *
37: * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
38: * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
39: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
40: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
41: * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48: * SUCH DAMAGE.
49: *
50: */
51:
52: #ifndef _NET_IF_VLAN_VAR_H_
53: #define _NET_IF_VLAN_VAR_H_ 1
54:
55: #ifdef KERNEL
56: struct ifvlan {
57: struct arpcom ifv_ac; /* make this an interface */
58: struct ifnet *ifv_p; /* parent inteface of this vlan */
59: struct ifv_linkmib {
60: int ifvm_parent;
61: u_int16_t ifvm_proto; /* encapsulation ethertype */
62: u_int16_t ifvm_tag; /* tag to apply on packets leaving if */
63: } ifv_mib;
64: };
65: #define ifv_if ifv_ac.ac_if
66: #define ifv_tag ifv_mib.ifvm_tag
67: #endif /* KERNEL */
68:
69: struct ether_vlan_header {
70: u_char evl_dhost[ETHER_ADDR_LEN];
71: u_char evl_shost[ETHER_ADDR_LEN];
72: u_int16_t evl_encap_proto;
73: u_int16_t evl_tag;
74: u_int16_t evl_proto;
75: };
76:
77: #define EVL_VLANOFTAG(tag) ((tag) & 4095)
78: #define EVL_PRIOFTAG(tag) (((tag) >> 13) & 7)
79: #define EVL_ENCAPLEN 4 /* length in octets of encapsulation */
80:
81: /* When these sorts of interfaces get their own identifier... */
82: #define IFT_8021_VLAN IFT_PROPVIRTUAL
83:
84: /* sysctl(3) tags, for compatibility purposes */
85: #define VLANCTL_PROTO 1
86: #define VLANCTL_MAX 2
87:
88: /*
89: * Configuration structure for SIOCSETVLAN and SIOCGETVLAN ioctls.
90: */
91: struct vlanreq {
92: char vlr_parent[IFNAMSIZ];
93: u_short vlr_tag;
94: };
95: #define SIOCSETVLAN SIOCSIFGENERIC
96: #define SIOCGETVLAN SIOCGIFGENERIC
97:
98: #ifdef KERNEL
99: /* shared with if_ethersubr.c: */
100: extern u_int vlan_proto;
101: extern int vlan_input(struct ether_header *eh, struct mbuf *m);
102: #endif
103:
104: #endif /* _NET_IF_VLAN_VAR_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.