Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

UAPI: add MPLS label stack definition

Labels for the Multiprotocol Label Switching are defined in RFC 3032
which was superseded by RFC 5462. Add the definition to UAPI and a stub
header for include/linux.

Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Simon Wunderlich and committed by
David S. Miller
f3baa393 b62faf3c

+40
+6
include/linux/mpls.h
··· 1 + #ifndef _LINUX_MPLS_H 2 + #define _LINUX_MPLS_H 3 + 4 + #include <uapi/linux/mpls.h> 5 + 6 + #endif /* _LINUX_MPLS_H */
+34
include/uapi/linux/mpls.h
··· 1 + #ifndef _UAPI_MPLS_H 2 + #define _UAPI_MPLS_H 3 + 4 + #include <linux/types.h> 5 + #include <asm/byteorder.h> 6 + 7 + /* Reference: RFC 5462, RFC 3032 8 + * 9 + * 0 1 2 3 10 + * 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 11 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 + * | Label | TC |S| TTL | 13 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 14 + * 15 + * Label: Label Value, 20 bits 16 + * TC: Traffic Class field, 3 bits 17 + * S: Bottom of Stack, 1 bit 18 + * TTL: Time to Live, 8 bits 19 + */ 20 + 21 + struct mpls_label { 22 + __be32 entry; 23 + }; 24 + 25 + #define MPLS_LS_LABEL_MASK 0xFFFFF000 26 + #define MPLS_LS_LABEL_SHIFT 12 27 + #define MPLS_LS_TC_MASK 0x00000E00 28 + #define MPLS_LS_TC_SHIFT 9 29 + #define MPLS_LS_S_MASK 0x00000100 30 + #define MPLS_LS_S_SHIFT 8 31 + #define MPLS_LS_TTL_MASK 0x000000FF 32 + #define MPLS_LS_TTL_SHIFT 0 33 + 34 + #endif /* _UAPI_MPLS_H */