1/*
2 * 802.1Q VLAN protocol definitions
3 *
4 * Copyright 2007, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11 *
12 * $Id: vlan.h,v 1.1.1.1 2008/10/15 03:25:54 james26_jang Exp $
13 */
14
15#ifndef _vlan_h_
16#define _vlan_h_
17
18/* enable structure packing */
19#if defined(__GNUC__)
20#define	PACKED	__attribute__((packed))
21#else
22#pragma pack(1)
23#define	PACKED
24#endif
25
26#define VLAN_VID_MASK		0xfff	/* low 12 bits are vlan id */
27#define	VLAN_CFI_SHIFT		12	/* canonical format indicator bit */
28#define VLAN_PRI_SHIFT		13	/* user priority */
29
30#define VLAN_PRI_MASK		7	/* 3 bits of priority */
31
32#define	VLAN_TAG_LEN		4
33#define	VLAN_TAG_OFFSET		(2 * ETHER_ADDR_LEN)	/* offset in Ethernet II packet only */
34
35#define VLAN_TPID		0x8100	/* VLAN ethertype/Tag Protocol ID */
36
37struct ethervlan_header {
38	uint8	ether_dhost[ETHER_ADDR_LEN];
39	uint8	ether_shost[ETHER_ADDR_LEN];
40	uint16	vlan_type;		/* 0x8100 */
41	uint16	vlan_tag;		/* priority, cfi and vid */
42	uint16	ether_type;
43};
44
45#define	ETHERVLAN_HDR_LEN	(ETHER_HDR_LEN + VLAN_TAG_LEN)
46
47#undef PACKED
48#if !defined(__GNUC__)
49#pragma pack()
50#endif
51
52#endif /* _vlan_h_ */
53