38 lines
1.1 KiB
Diff
38 lines
1.1 KiB
Diff
|
--- /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 */
|