64 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * VLAN		An implementation of 802.1Q VLAN tagging.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Authors:	Ben Greear <greearb@candelatech.com>
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *		This program is free software; you can redistribute it and/or
							 | 
						||
| 
								 | 
							
								 *		modify it under the terms of the GNU General Public License
							 | 
						||
| 
								 | 
							
								 *		as published by the Free Software Foundation; either version
							 | 
						||
| 
								 | 
							
								 *		2 of the License, or (at your option) any later version.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _UAPI_LINUX_IF_VLAN_H_
							 | 
						||
| 
								 | 
							
								#define _UAPI_LINUX_IF_VLAN_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* VLAN IOCTLs are found in sockios.h */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Passed in vlan_ioctl_args structure to determine behaviour. */
							 | 
						||
| 
								 | 
							
								enum vlan_ioctl_cmds {
							 | 
						||
| 
								 | 
							
									ADD_VLAN_CMD,
							 | 
						||
| 
								 | 
							
									DEL_VLAN_CMD,
							 | 
						||
| 
								 | 
							
									SET_VLAN_INGRESS_PRIORITY_CMD,
							 | 
						||
| 
								 | 
							
									SET_VLAN_EGRESS_PRIORITY_CMD,
							 | 
						||
| 
								 | 
							
									GET_VLAN_INGRESS_PRIORITY_CMD,
							 | 
						||
| 
								 | 
							
									GET_VLAN_EGRESS_PRIORITY_CMD,
							 | 
						||
| 
								 | 
							
									SET_VLAN_NAME_TYPE_CMD,
							 | 
						||
| 
								 | 
							
									SET_VLAN_FLAG_CMD,
							 | 
						||
| 
								 | 
							
									GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
							 | 
						||
| 
								 | 
							
									GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum vlan_flags {
							 | 
						||
| 
								 | 
							
									VLAN_FLAG_REORDER_HDR	= 0x1,
							 | 
						||
| 
								 | 
							
									VLAN_FLAG_GVRP		= 0x2,
							 | 
						||
| 
								 | 
							
									VLAN_FLAG_LOOSE_BINDING	= 0x4,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum vlan_name_types {
							 | 
						||
| 
								 | 
							
									VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
							 | 
						||
| 
								 | 
							
									VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
							 | 
						||
| 
								 | 
							
									VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
							 | 
						||
| 
								 | 
							
									VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
							 | 
						||
| 
								 | 
							
									VLAN_NAME_TYPE_HIGHEST
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct vlan_ioctl_args {
							 | 
						||
| 
								 | 
							
									int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
							 | 
						||
| 
								 | 
							
									char device1[24];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        union {
							 | 
						||
| 
								 | 
							
										char device2[24];
							 | 
						||
| 
								 | 
							
										int VID;
							 | 
						||
| 
								 | 
							
										unsigned int skb_priority;
							 | 
						||
| 
								 | 
							
										unsigned int name_type;
							 | 
						||
| 
								 | 
							
										unsigned int bind_type;
							 | 
						||
| 
								 | 
							
										unsigned int flag; /* Matches vlan_dev_priv flags */
							 | 
						||
| 
								 | 
							
								        } u;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									short vlan_qos;   
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _UAPI_LINUX_IF_VLAN_H_ */
							 |