X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip_packet.h;h=9a55d5f644e317115438eb6a2076593f376b7675;hp=63a59f87668beff01850b6bdc195143fa08fe6c5;hb=9534696b4;hpb=c8972fe506c78530a3e4085453e86a0b85b245ef diff --git a/src/vnet/ip/ip_packet.h b/src/vnet/ip/ip_packet.h index 63a59f87668..9a55d5f644e 100644 --- a/src/vnet/ip/ip_packet.h +++ b/src/vnet/ip/ip_packet.h @@ -118,10 +118,35 @@ typedef enum ip_dscp_t_ #undef _ } __clib_packed ip_dscp_t; -STATIC_ASSERT_SIZEOF (ip_dscp_t, 1); - extern u8 *format_ip_dscp (u8 * s, va_list * va); +/** + * IP DSCP bit shift + * The ECN occupies the 2 least significant bits of the TC field + */ +#define IP_PACKET_TC_FIELD_DSCP_BIT_SHIFT 2 +#define IP_PACKET_TC_FIELD_ECN_MASK 0x03 + +/** + * The set of RFC defined DSCP values. + */ +#define foreach_ip_ecn \ + _(0, NON_ECN) \ + _(1, ECT_0) \ + _(2, ECT_1) \ + _(3, CE) + +typedef enum ip_ecn_t_ +{ +#define _(n,f) IP_ECN_##f = n, + foreach_ip_ecn +#undef _ +} __clib_packed ip_ecn_t; + +STATIC_ASSERT_SIZEOF (ip_ecn_t, 1); + +extern u8 *format_ip_ecn (u8 * s, va_list * va); + /* IP checksum support. */ static_always_inline u16