vlans are a standard part of ethernet now, it makes sense to me to keep all the protocol level stuff in a single place.
ok? Index: net/if_vlan_var.h =================================================================== RCS file: /cvs/src/sys/net/if_vlan_var.h,v retrieving revision 1.32 diff -u -p -r1.32 if_vlan_var.h --- net/if_vlan_var.h 3 Mar 2016 09:27:51 -0000 1.32 +++ net/if_vlan_var.h 13 Mar 2016 07:18:16 -0000 @@ -34,21 +34,6 @@ #ifndef _NET_IF_VLAN_VAR_H_ #define _NET_IF_VLAN_VAR_H_ -struct ether_vlan_header { - u_char evl_dhost[ETHER_ADDR_LEN]; - u_char evl_shost[ETHER_ADDR_LEN]; - u_int16_t evl_encap_proto; - u_int16_t evl_tag; - u_int16_t evl_proto; -}; - -#define EVL_VLID_MASK 0x0FFF -#define EVL_VLANOFTAG(tag) ((tag) & EVL_VLID_MASK) -#define EVL_PRIOFTAG(tag) (((tag) >> EVL_PRIO_BITS) & 7) -#define EVL_ENCAPLEN 4 /* length in octets of encapsulation */ -#define EVL_PRIO_MAX 7 -#define EVL_PRIO_BITS 13 - /* sysctl(3) tags, for compatibility purposes */ #define VLANCTL_PROTO 1 #define VLANCTL_MAX 2 Index: netinet/if_ether.h =================================================================== RCS file: /cvs/src/sys/netinet/if_ether.h,v retrieving revision 1.67 diff -u -p -r1.67 if_ether.h --- netinet/if_ether.h 1 Mar 2016 01:48:14 -0000 1.67 +++ netinet/if_ether.h 13 Mar 2016 07:18:16 -0000 @@ -75,6 +75,27 @@ struct ether_header { u_int16_t ether_type; }; +/* + * VLAN headers. + */ + +struct ether_vlan_header { + u_char evl_dhost[ETHER_ADDR_LEN]; + u_char evl_shost[ETHER_ADDR_LEN]; + u_int16_t evl_encap_proto; + u_int16_t evl_tag; + u_int16_t evl_proto; +}; + +#define EVL_VLID_MASK 0x0FFF +#define EVL_VLANOFTAG(tag) ((tag) & EVL_VLID_MASK) + +#define EVL_PRIO_MAX 7 +#define EVL_PRIO_BITS 13 +#define EVL_PRIOFTAG(tag) (((tag) >> EVL_PRIO_BITS) & 7) + +#define EVL_ENCAPLEN 4 /* length in octets of encapsulation */ + #include <net/ethertypes.h> #define ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) /* is address mcast/bcast? */