diff options
Diffstat (limited to 'src')
-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 |
3 files changed, 24 insertions, 2 deletions
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)); |