linux/include/uapi/linux/mpls.h
<<
>>
Prefs
   1#ifndef _UAPI_MPLS_H
   2#define _UAPI_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
  21struct 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/* Reserved labels */
  35#define MPLS_LABEL_IPV4NULL             0 /* RFC3032 */
  36#define MPLS_LABEL_RTALERT              1 /* RFC3032 */
  37#define MPLS_LABEL_IPV6NULL             2 /* RFC3032 */
  38#define MPLS_LABEL_IMPLNULL             3 /* RFC3032 */
  39#define MPLS_LABEL_ENTROPY              7 /* RFC6790 */
  40#define MPLS_LABEL_GAL                  13 /* RFC5586 */
  41#define MPLS_LABEL_OAMALERT             14 /* RFC3429 */
  42#define MPLS_LABEL_EXTENSION            15 /* RFC7274 */
  43
  44#define MPLS_LABEL_FIRST_UNRESERVED     16 /* RFC3032 */
  45
  46#endif /* _UAPI_MPLS_H */
  47