diff options
author | Neale Ranns <nranns@cisco.com> | 2019-06-26 02:16:50 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2019-06-26 11:46:18 +0000 |
commit | 023d23ad89ca36966a7268890b7c1115f7477bde (patch) | |
tree | 55fe6975575a19d2fa286beb8e609964f8f03a5c | |
parent | 0f9845120afb1dde120e2dac1ee0f280801307a4 (diff) |
fib: default flow hash config for each DPO protocol type
Type: fix
Fixes: 59fa121f
Change-Id: I9eb4fe1612734e54932228527c37bf33b705dbdb
Signed-off-by: Neale Ranns <nranns@cisco.com>
-rw-r--r-- | MAINTAINERS | 5 | ||||
-rw-r--r-- | src/vnet/dpo/load_balance.c | 22 | ||||
-rw-r--r-- | src/vnet/dpo/load_balance.h | 1 | ||||
-rw-r--r-- | src/vnet/fib/fib_path_list.c | 3 |
4 files changed, 29 insertions, 2 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index a50c3da8602..d2af18aa16f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -172,6 +172,11 @@ I: mpls M: Neale Ranns <nranns@cisco.com> F: src/vnet/mpls/ +VNET BIER +I: bier +M: Neale Ranns <nranns@cisco.com> +F: src/vnet/bier/ + VNET Session Layer I: session M: Florin Coras <fcoras@cisco.com> diff --git a/src/vnet/dpo/load_balance.c b/src/vnet/dpo/load_balance.c index 939e25c08fa..f244498a077 100644 --- a/src/vnet/dpo/load_balance.c +++ b/src/vnet/dpo/load_balance.c @@ -22,6 +22,7 @@ #include <vnet/adj/adj_internal.h> #include <vnet/fib/fib_urpf_list.h> #include <vnet/bier/bier_fwd.h> +#include <vnet/fib/mpls_fib.h> /* * distribution error tolerance for load-balancing @@ -188,6 +189,27 @@ format_load_balance_dpo (u8 * s, va_list * args) return (load_balance_format(lbi, LOAD_BALANCE_FORMAT_DETAIL, indent, s)); } +flow_hash_config_t +load_balance_get_default_flow_hash (dpo_proto_t lb_proto) +{ + switch (lb_proto) + { + case DPO_PROTO_IP4: + case DPO_PROTO_IP6: + return (IP_FLOW_HASH_DEFAULT); + + case DPO_PROTO_MPLS: + return (MPLS_FLOW_HASH_DEFAULT); + + case DPO_PROTO_ETHERNET: + case DPO_PROTO_BIER: + case DPO_PROTO_NSH: + break; + } + + return (0); +} + static load_balance_t * load_balance_create_i (u32 num_buckets, dpo_proto_t lb_proto, diff --git a/src/vnet/dpo/load_balance.h b/src/vnet/dpo/load_balance.h index 3f0d5ac2acb..a204b7fdc58 100644 --- a/src/vnet/dpo/load_balance.h +++ b/src/vnet/dpo/load_balance.h @@ -188,6 +188,7 @@ typedef enum load_balance_format_flags_t_ { extern index_t load_balance_create(u32 num_buckets, dpo_proto_t lb_proto, flow_hash_config_t fhc); +extern flow_hash_config_t load_balance_get_default_flow_hash(dpo_proto_t lb_proto); extern void load_balance_multipath_update( const dpo_id_t *dpo, const load_balance_path_t * raw_next_hops, diff --git a/src/vnet/fib/fib_path_list.c b/src/vnet/fib/fib_path_list.c index 7c57c807327..d3543836424 100644 --- a/src/vnet/fib/fib_path_list.c +++ b/src/vnet/fib/fib_path_list.c @@ -394,8 +394,7 @@ fib_path_list_mk_lb (fib_path_list_t *path_list, dproto, load_balance_create(vec_len(nhs), dproto, - fib_table_get_default_flow_hash_config( - dpo_proto_to_fib(dproto)))); + load_balance_get_default_flow_hash(dproto))); load_balance_multipath_update(dpo, nhs, fib_path_list_fwd_flags_2_load_balance(flags)); |