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