aboutsummaryrefslogtreecommitdiffstats
path: root/src/dpi.c
diff options
context:
space:
mode:
authorJunfeng Wang <drenfong.wang@intel.com>2019-10-21 15:15:24 +0800
committerJunfeng Wang <drenfong.wang@intel.com>2019-10-22 12:56:06 +0800
commitcac2bd1cefb29e7cc7a6602c7a0780a8c0d2fd86 (patch)
tree8719cbac4f7d165401080e5cdce4bc0b9a0be2c7 /src/dpi.c
parent6e5bd265d4f8444eba5b181ece713227fafd1934 (diff)
enable dpi hw-offload basic feature
Change-Id: Id715d39be418471838feaa2e14f6ad805650b177 Signed-off-by: Junfeng Wang <drenfong.wang@intel.com>
Diffstat (limited to 'src/dpi.c')
-rw-r--r--src/dpi.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dpi.c b/src/dpi.c
index c91a78a..aabd763 100644
--- a/src/dpi.c
+++ b/src/dpi.c
@@ -323,6 +323,7 @@ dpi_flow_add_del (dpi_add_del_flow_args_t * a, u32 * flow_idp)
int add_failed;
if (is_ip6)
{
+ flow->next_index = DPI_INPUT_NEXT_IP6_LOOKUP;
key6.value = (u64) flow_id;
add_failed = clib_bihash_add_del_48_8 (&dm->dpi6_flow_by_key,
&key6, 1 /*add */ );
@@ -530,7 +531,7 @@ dpi_add_del_rx_flow (u32 hw_if_index, u32 flow_id, int is_add, u32 is_ipv6)
.actions =
VNET_FLOW_ACTION_REDIRECT_TO_NODE | VNET_FLOW_ACTION_MARK,
.mark_flow_id = flow_id + dm->flow_id_start,
- .redirect_node_index = 0,
+ .redirect_node_index = dpi4_flow_input_node.index,
.type = VNET_FLOW_TYPE_IP4_N_TUPLE,
.ip4_n_tuple = {
.src_addr = src_addr4,
@@ -560,7 +561,7 @@ dpi_add_del_rx_flow (u32 hw_if_index, u32 flow_id, int is_add, u32 is_ipv6)
.actions =
VNET_FLOW_ACTION_REDIRECT_TO_NODE | VNET_FLOW_ACTION_MARK,
.mark_flow_id = flow_id + dm->flow_id_start,
- .redirect_node_index = 0,
+ .redirect_node_index = dpi6_flow_input_node.index,
.type = VNET_FLOW_TYPE_IP6_N_TUPLE,
.ip6_n_tuple = {
.src_addr = src_addr6,
@@ -593,6 +594,17 @@ dpi_flow_bypass_mode (u32 sw_if_index, u8 is_ip6, u8 is_enable)
sw_if_index, is_enable, 0, 0);
}
+void
+dpi_flow_offload_mode (u32 hw_if_index, u8 is_ip6, u8 is_enable)
+{
+ if (is_ip6)
+ vnet_feature_enable_disable ("ip4-unicast", "dpi6-flow-input",
+ hw_if_index, is_enable, 0, 0);
+ else
+ vnet_feature_enable_disable ("ip6-unicast", "dpi4-flow-input",
+ hw_if_index, is_enable, 0, 0);
+}
+
int
dpi_init_hs_database (dpi_entry_t * entry)
{