X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip_flow_hash.h;h=82e0efb0d08cac24dd822188611f3552d53f0fa9;hp=04777320f38a65828d38de4572388f9a1d84555f;hb=f2984bbb0;hpb=03fabbd22215d306fb66c51f952480631d67c9dc diff --git a/src/vnet/ip/ip_flow_hash.h b/src/vnet/ip/ip_flow_hash.h index 04777320f38..82e0efb0d08 100644 --- a/src/vnet/ip/ip_flow_hash.h +++ b/src/vnet/ip/ip_flow_hash.h @@ -16,31 +16,37 @@ #ifndef __IP_FLOW_HASH_H__ #define __IP_FLOW_HASH_H__ -/** Flow hash configuration */ -#define IP_FLOW_HASH_SRC_ADDR (1<<0) -#define IP_FLOW_HASH_DST_ADDR (1<<1) -#define IP_FLOW_HASH_PROTO (1<<2) -#define IP_FLOW_HASH_SRC_PORT (1<<3) -#define IP_FLOW_HASH_DST_PORT (1<<4) -#define IP_FLOW_HASH_REVERSE_SRC_DST (1<<5) -#define IP_FLOW_HASH_SYMMETRIC (1<<6) +/** Default: 5-tuple + flowlabel without the "reverse" bit */ +#define IP_FLOW_HASH_DEFAULT (0x9F) -/** Default: 5-tuple without the "reverse" bit */ -#define IP_FLOW_HASH_DEFAULT (0x1F) +#define foreach_flow_hash_bit_v1 \ + _ (src, IP_FLOW_HASH_SRC_ADDR) \ + _ (dst, IP_FLOW_HASH_DST_ADDR) \ + _ (sport, IP_FLOW_HASH_SRC_PORT) \ + _ (dport, IP_FLOW_HASH_DST_PORT) \ + _ (proto, IP_FLOW_HASH_PROTO) \ + _ (reverse, IP_FLOW_HASH_REVERSE_SRC_DST) \ + _ (symmetric, IP_FLOW_HASH_SYMMETRIC) -#define foreach_flow_hash_bit \ -_(src, IP_FLOW_HASH_SRC_ADDR) \ -_(dst, IP_FLOW_HASH_DST_ADDR) \ -_(sport, IP_FLOW_HASH_SRC_PORT) \ -_(dport, IP_FLOW_HASH_DST_PORT) \ -_(proto, IP_FLOW_HASH_PROTO) \ -_(reverse, IP_FLOW_HASH_REVERSE_SRC_DST) \ -_(symmetric, IP_FLOW_HASH_SYMMETRIC) +#define foreach_flow_hash_bit \ + _ (src, 0, IP_FLOW_HASH_SRC_ADDR) \ + _ (dst, 1, IP_FLOW_HASH_DST_ADDR) \ + _ (sport, 2, IP_FLOW_HASH_SRC_PORT) \ + _ (dport, 3, IP_FLOW_HASH_DST_PORT) \ + _ (proto, 4, IP_FLOW_HASH_PROTO) \ + _ (reverse, 5, IP_FLOW_HASH_REVERSE_SRC_DST) \ + _ (symmetric, 6, IP_FLOW_HASH_SYMMETRIC) \ + _ (flowlabel, 7, IP_FLOW_HASH_FL) /** * A flow hash configuration is a mask of the flow hash options */ -typedef u32 flow_hash_config_t; +typedef enum flow_hash_config_t_ +{ +#define _(a, b, c) c = (1 << b), + foreach_flow_hash_bit +#undef _ +} flow_hash_config_t; #endif /* __IP_TYPES_H__ */