Annotation of sys/net/if_vlan_var.h, Revision 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