35 lines
		
	
	
	
		
			993 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
	
		
			993 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef _UAPI_MPLS_H
 | ||
|  | #define _UAPI_MPLS_H
 | ||
|  | 
 | ||
|  | #include <linux/types.h>
 | ||
|  | #include <asm/byteorder.h>
 | ||
|  | 
 | ||
|  | /* Reference: RFC 5462, RFC 3032
 | ||
|  |  * | ||
|  |  *  0                   1                   2                   3 | ||
|  |  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||
|  |  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
|  |  * |                Label                  | TC  |S|       TTL     | | ||
|  |  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
|  |  * | ||
|  |  *	Label:  Label Value, 20 bits | ||
|  |  *	TC:     Traffic Class field, 3 bits | ||
|  |  *	S:      Bottom of Stack, 1 bit | ||
|  |  *	TTL:    Time to Live, 8 bits | ||
|  |  */ | ||
|  | 
 | ||
|  | struct mpls_label { | ||
|  | 	__be32 entry; | ||
|  | }; | ||
|  | 
 | ||
|  | #define MPLS_LS_LABEL_MASK      0xFFFFF000
 | ||
|  | #define MPLS_LS_LABEL_SHIFT     12
 | ||
|  | #define MPLS_LS_TC_MASK         0x00000E00
 | ||
|  | #define MPLS_LS_TC_SHIFT        9
 | ||
|  | #define MPLS_LS_S_MASK          0x00000100
 | ||
|  | #define MPLS_LS_S_SHIFT         8
 | ||
|  | #define MPLS_LS_TTL_MASK        0x000000FF
 | ||
|  | #define MPLS_LS_TTL_SHIFT       0
 | ||
|  | 
 | ||
|  | #endif /* _UAPI_MPLS_H */
 |