1/*
2 * Linux VLAN configuration kernel interface
3 * Copyright (c) 2016, Jouni Malinen <j@w1.fi>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8
9#ifndef LINUX_VLAN_H
10#define LINUX_VLAN_H
11
12/* This ioctl is defined in linux/sockios.h */
13
14#ifndef SIOCSIFVLAN
15#define SIOCSIFVLAN 0x8983
16#endif /* SIOCSIFVLAN */
17
18/* This interface is defined in linux/if_vlan.h */
19
20#define ADD_VLAN_CMD 0
21#define DEL_VLAN_CMD 1
22#define SET_VLAN_INGRESS_PRIORITY_CMD 2
23#define SET_VLAN_EGRESS_PRIORITY_CMD 3
24#define GET_VLAN_INGRESS_PRIORITY_CMD 4
25#define GET_VLAN_EGRESS_PRIORITY_CMD 5
26#define SET_VLAN_NAME_TYPE_CMD 6
27#define SET_VLAN_FLAG_CMD 7
28#define GET_VLAN_REALDEV_NAME_CMD 8
29#define GET_VLAN_VID_CMD 9
30
31#define VLAN_NAME_TYPE_PLUS_VID 0
32#define VLAN_NAME_TYPE_RAW_PLUS_VID 1
33#define VLAN_NAME_TYPE_PLUS_VID_NO_PAD 2
34#define VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD 3
35
36struct vlan_ioctl_args {
37	int cmd;
38	char device1[24];
39
40	union {
41		char device2[24];
42		int VID;
43		unsigned int skb_priority;
44		unsigned int name_type;
45		unsigned int bind_type;
46		unsigned int flag;
47	} u;
48
49	short vlan_qos;
50};
51
52#endif /* LINUX_VLAN_H */
53