78 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef _UAPI_MPLS_H3#define _UAPI_MPLS_H4 5#include <linux/types.h>6#include <asm/byteorder.h>7 8/* Reference: RFC 5462, RFC 30329 *10 * 0 1 2 311 * 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 112 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+13 * | Label | TC |S| TTL |14 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+15 *16 * Label: Label Value, 20 bits17 * TC: Traffic Class field, 3 bits18 * S: Bottom of Stack, 1 bit19 * TTL: Time to Live, 8 bits20 */21 22struct mpls_label {23 __be32 entry;24};25 26#define MPLS_LS_LABEL_MASK 0xFFFFF00027#define MPLS_LS_LABEL_SHIFT 1228#define MPLS_LS_TC_MASK 0x00000E0029#define MPLS_LS_TC_SHIFT 930#define MPLS_LS_S_MASK 0x0000010031#define MPLS_LS_S_SHIFT 832#define MPLS_LS_TTL_MASK 0x000000FF33#define MPLS_LS_TTL_SHIFT 034 35/* Reserved labels */36#define MPLS_LABEL_IPV4NULL 0 /* RFC3032 */37#define MPLS_LABEL_RTALERT 1 /* RFC3032 */38#define MPLS_LABEL_IPV6NULL 2 /* RFC3032 */39#define MPLS_LABEL_IMPLNULL 3 /* RFC3032 */40#define MPLS_LABEL_ENTROPY 7 /* RFC6790 */41#define MPLS_LABEL_GAL 13 /* RFC5586 */42#define MPLS_LABEL_OAMALERT 14 /* RFC3429 */43#define MPLS_LABEL_EXTENSION 15 /* RFC7274 */44 45#define MPLS_LABEL_FIRST_UNRESERVED 16 /* RFC3032 */46 47/* These are embedded into IFLA_STATS_AF_SPEC:48 * [IFLA_STATS_AF_SPEC]49 * -> [AF_MPLS]50 * -> [MPLS_STATS_xxx]51 *52 * Attributes:53 * [MPLS_STATS_LINK] = {54 * struct mpls_link_stats55 * }56 */57enum {58 MPLS_STATS_UNSPEC, /* also used as 64bit pad attribute */59 MPLS_STATS_LINK,60 __MPLS_STATS_MAX,61};62 63#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)64 65struct mpls_link_stats {66 __u64 rx_packets; /* total packets received */67 __u64 tx_packets; /* total packets transmitted */68 __u64 rx_bytes; /* total bytes received */69 __u64 tx_bytes; /* total bytes transmitted */70 __u64 rx_errors; /* bad packets received */71 __u64 tx_errors; /* packet transmit problems */72 __u64 rx_dropped; /* packet dropped on receive */73 __u64 tx_dropped; /* packet dropped on transmit */74 __u64 rx_noroute; /* no route for packet dest */75};76 77#endif /* _UAPI_MPLS_H */78