]> git.proxmox.com Git - mirror_iproute2.git/blob - include/linux/mpls.h
Merge branch 'master' into net-next
[mirror_iproute2.git] / include / linux / mpls.h
1 #ifndef _MPLS_H
2 #define _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 /* _MPLS_H */