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