1 #ifndef included_vnet_mpls_packet_h 2 #define included_vnet_mpls_packet_h 40 #define MPLS_EOS_BITS { \ 41 [MPLS_NON_EOS] = "neos", \ 45 #define FOR_EACH_MPLS_EOS_BIT(_eos) \ 46 for (_eos = MPLS_NON_EOS; _eos <= MPLS_EOS; _eos++) 48 #define MPLS_ENTRY_LABEL_OFFSET 0 49 #define MPLS_ENTRY_LABEL_SHIFT 12 50 #define MPLS_ENTRY_LABEL_MASK 0x000fffff 51 #define MPLS_ENTRY_LABEL_BITS \ 52 (MPLS_ENTRY_LABEL_MASK << MPLS_ENTRY_LABEL_SHIFT) 54 #define MPLS_ENTRY_EXP_OFFSET 2 55 #define MPLS_ENTRY_EXP_SHIFT 9 56 #define MPLS_ENTRY_EXP_MASK 0x07 57 #define MPLS_ENTRY_EXP(mpls) \ 58 (((mpls)>>MPLS_ENTRY_EXP_SHIFT) & MPLS_ENTRY_EXP_MASK) 59 #define MPLS_ENTRY_EXP_BITS \ 60 (MPLS_ENTRY_EXP_MASK << MPLS_ENTRY_EXP_SHIFT) 62 #define MPLS_ENTRY_EOS_OFFSET 2 63 #define MPLS_ENTRY_EOS_SHIFT 8 64 #define MPLS_ENTRY_EOS_MASK 0x01 65 #define MPLS_ENTRY_EOS(mpls) \ 66 (((mpls) >> MPLS_ENTRY_EOS_SHIFT) & MPLS_ENTRY_EOS_MASK) 67 #define MPLS_ENTRY_EOS_BIT (MPLS_ENTRY_EOS_MASK << MPLS_ENTRY_EOS_SHIFT) 69 #define MPLS_ENTRY_TTL_OFFSET 3 70 #define MPLS_ENTRY_TTL_SHIFT 0 71 #define MPLS_ENTRY_TTL_MASK 0xff 72 #define MPLS_ENTRY_TTL(mpls) \ 73 (((mpls) >> MPLS_ENTRY_TTL_SHIFT) & MPLS_ENTRY_TTL_MASK) 74 #define MPLS_ENTRY_TTL_BITS \ 75 (MPLS_ENTRY_TTL_MASK << MPLS_ENTRY_TTL_SHIFT)
#define MPLS_ENTRY_LABEL_SHIFT
#define MPLS_ENTRY_EOS_MASK
#define MPLS_ENTRY_TTL_MASK
u32 mpls_label_t
A label value only, i.e.
#define MPLS_ENTRY_LABEL_BITS
#define MPLS_ENTRY_EXP_MASK
#define MPLS_ENTRY_EOS_SHIFT
static u32 vnet_mpls_uc_get_ttl(mpls_label_t label_exp_s_ttl)
static void vnet_mpls_uc_set_label(mpls_label_t *label_exp_s_ttl, u32 value)
static void vnet_mpls_uc_set_exp(mpls_label_t *label_exp_s_ttl, u32 exp)
#define MPLS_ENTRY_EOS_BIT
static u32 vnet_mpls_uc_get_label(mpls_label_t label_exp_s_ttl)
#define MPLS_ENTRY_LABEL_MASK
#define MPLS_ENTRY_EXP_BITS
#define MPLS_ENTRY_EOS(mpls)
#define MPLS_ENTRY_TTL(mpls)
static void vnet_mpls_uc_set_s(mpls_label_t *label_exp_s_ttl, u32 eos)
#define MPLS_ENTRY_EXP_SHIFT
static u32 vnet_mpls_uc_get_s(mpls_label_t label_exp_s_ttl)
static void vnet_mpls_uc_set_ttl(mpls_label_t *label_exp_s_ttl, u32 ttl)
static u32 vnet_mpls_uc_get_exp(mpls_label_t label_exp_s_ttl)
#define MPLS_ENTRY_EXP(mpls)
#define MPLS_ENTRY_TTL_BITS
enum mpls_eos_bit_t_ mpls_eos_bit_t