home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / net / if_vlan_var.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  3.7 KB  |  105 lines

  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_ */
  105.