|
|
@@ -0,0 +1,37 @@
|
|
|
+--- /dev/null
|
|
|
++++ b/include/uapi/linux/mpls.h
|
|
|
+@@ -0,0 +1,34 @@
|
|
|
++#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 */
|