diff options
Diffstat (limited to 'src/vnet/dpo')
-rw-r--r-- | src/vnet/dpo/load_balance.c | 22 | ||||
-rw-r--r-- | src/vnet/dpo/load_balance.h | 1 |
2 files changed, 23 insertions, 0 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, |