1e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy/*
2e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy * VLAN		An implementation of 802.1Q VLAN tagging.
3e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *
4e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy * Authors:	Ben Greear <greearb@candelatech.com>
5e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *
6e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *		This program is free software; you can redistribute it and/or
7e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *		modify it under the terms of the GNU General Public License
8e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *		as published by the Free Software Foundation; either version
9e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *		2 of the License, or (at your option) any later version.
10e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy *
11e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy */
12e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
13e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy#ifndef _LINUX_IF_VLAN_H_
14e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy#define _LINUX_IF_VLAN_H_
15e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
16e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
17e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy/* VLAN IOCTLs are found in sockios.h */
18e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
19e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy/* Passed in vlan_ioctl_args structure to determine behaviour. */
20e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardyenum vlan_ioctl_cmds {
21e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	ADD_VLAN_CMD,
22e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	DEL_VLAN_CMD,
23e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	SET_VLAN_INGRESS_PRIORITY_CMD,
24e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	SET_VLAN_EGRESS_PRIORITY_CMD,
25e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	GET_VLAN_INGRESS_PRIORITY_CMD,
26e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	GET_VLAN_EGRESS_PRIORITY_CMD,
27e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	SET_VLAN_NAME_TYPE_CMD,
28e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	SET_VLAN_FLAG_CMD,
29e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
30e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
31e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy};
32e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
33e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardyenum vlan_flags {
34e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_FLAG_REORDER_HDR	= 0x1,
35e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy};
36e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
37e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardyenum vlan_name_types {
38e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
39e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
40e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
41e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
42e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	VLAN_NAME_TYPE_HIGHEST
43e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy};
44e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
45e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardystruct vlan_ioctl_args {
46e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
47e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	char device1[24];
48e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
49e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy        union {
50e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		char device2[24];
51e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		int VID;
52e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		unsigned int skb_priority;
53e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		unsigned int name_type;
54e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		unsigned int bind_type;
55e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy		unsigned int flag; /* Matches vlan_dev_info flags */
56e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy        } u;
57e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
58e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy	short vlan_qos;
59e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy};
60e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy
61e91bb2ffb090955d443e643a25b250bf3d33534aPatrick McHardy#endif /* !(_LINUX_IF_VLAN_H_) */
62