1
2 #ifndef _UAPI_MPLS_H
3 #define _UAPI_MPLS_H
4
5 #include <linux/types.h>
6 #include <asm/byteorder.h>
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 struct mpls_label {
23 __be32 entry;
24 };
25
26 #define MPLS_LS_LABEL_MASK 0xFFFFF000
27 #define MPLS_LS_LABEL_SHIFT 12
28 #define MPLS_LS_TC_MASK 0x00000E00
29 #define MPLS_LS_TC_SHIFT 9
30 #define MPLS_LS_S_MASK 0x00000100
31 #define MPLS_LS_S_SHIFT 8
32 #define MPLS_LS_TTL_MASK 0x000000FF
33 #define MPLS_LS_TTL_SHIFT 0
34
35
36 #define MPLS_LABEL_IPV4NULL 0
37 #define MPLS_LABEL_RTALERT 1
38 #define MPLS_LABEL_IPV6NULL 2
39 #define MPLS_LABEL_IMPLNULL 3
40 #define MPLS_LABEL_ENTROPY 7
41 #define MPLS_LABEL_GAL 13
42 #define MPLS_LABEL_OAMALERT 14
43 #define MPLS_LABEL_EXTENSION 15
44
45 #define MPLS_LABEL_FIRST_UNRESERVED 16
46
47
48
49
50
51
52
53
54
55
56
57 enum {
58 MPLS_STATS_UNSPEC,
59 MPLS_STATS_LINK,
60 __MPLS_STATS_MAX,
61 };
62
63 #define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
64
65 struct mpls_link_stats {
66 __u64 rx_packets;
67 __u64 tx_packets;
68 __u64 rx_bytes;
69 __u64 tx_bytes;
70 __u64 rx_errors;
71 __u64 tx_errors;
72 __u64 rx_dropped;
73 __u64 tx_dropped;
74 __u64 rx_noroute;
75 };
76
77 #endif