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  
36  struct 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