summaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/dpo/load_balance.c22
-rw-r--r--src/vnet/dpo/load_balance.h1
-rw-r--r--src/vnet/fib/fib_path_list.c3
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));