/* * 802.1Q VLAN protocol definitions * * Copyright 2007, Broadcom Corporation * All Rights Reserved. * * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. * */ #ifndef _vlan_h_ #define _vlan_h_ /* enable structure packing */ #if defined(__GNUC__) #define PACKED __attribute__((packed)) #else #pragma pack(1) #define PACKED #endif #define VLAN_VID_MASK 0xfff /* low 12 bits are vlan id */ #define VLAN_CFI_SHIFT 12 /* canonical format indicator bit */ #define VLAN_PRI_SHIFT 13 /* user priority */ #define VLAN_PRI_MASK 7 /* 3 bits of priority */ #define VLAN_TAG_LEN 4 #define VLAN_TAG_OFFSET (2 * ETHER_ADDR_LEN) /* offset in Ethernet II packet only */ #define VLAN_TPID 0x8100 /* VLAN ethertype/Tag Protocol ID */ struct ethervlan_header { uint8 ether_dhost[ETHER_ADDR_LEN]; uint8 ether_shost[ETHER_ADDR_LEN]; uint16 vlan_type; /* 0x8100 */ uint16 vlan_tag; /* priority, cfi and vid */ uint16 ether_type; }; #define ETHERVLAN_HDR_LEN (ETHER_HDR_LEN + VLAN_TAG_LEN) #undef PACKED #if !defined(__GNUC__) #pragma pack() #endif #endif /* _vlan_h_ */