root/net/if_vlan_var.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */