aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cnat/cnat_node_vip.c
diff options
context:
space:
mode:
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>2020-12-04 10:23:34 +0100
committerBeno�t Ganne <bganne@cisco.com>2021-01-28 13:35:49 +0000
commit0c1792e983425216588e93cd98286ea61b5cbd02 (patch)
tree65f97a931059febfd179e663c93eb5c56313e929 /src/plugins/cnat/cnat_node_vip.c
parent208891c093468b753830d1e7ebdb4a69d4c192bf (diff)
cnat: Fix session with deleted tr
Type: fix When a translation gets deleted, hiting a session pointing to it sefaults. We're better off directly storing the next node index. Change-Id: I4f0716d775202b4ecf54d6cdb827bbeebd23056c Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/plugins/cnat/cnat_node_vip.c')
-rw-r--r--src/plugins/cnat/cnat_node_vip.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/plugins/cnat/cnat_node_vip.c b/src/plugins/cnat/cnat_node_vip.c
index ffe5899c0cf..02e6da4c2e9 100644
--- a/src/plugins/cnat/cnat_node_vip.c
+++ b/src/plugins/cnat/cnat_node_vip.c
@@ -114,8 +114,7 @@ cnat_vip_node_fn (vlib_main_t * vm,
if (INDEX_INVALID != session->value.cs_lbi)
{
/* Translate & follow the translation given LB */
- ct = cnat_translation_get (session->value.ct_index);
- next0 = ct->ct_lb.dpoi_next_node;
+ next0 = session->value.dpoi_next_node;
vnet_buffer (b)->ip.adj_index[VLIB_TX] = session->value.cs_lbi;
}
else if (session->value.flags & CNAT_SESSION_FLAG_HAS_SNAT)
@@ -193,7 +192,7 @@ cnat_vip_node_fn (vlib_main_t * vm,
session->value.cs_port[VLIB_RX] =
clib_host_to_net_u16 (trk0->ct_ep[VLIB_RX].ce_port);
- session->value.ct_index = ct - cnat_translation_pool;
+ session->value.dpoi_next_node = ct->ct_lb.dpoi_next_node;
session->value.cs_lbi = dpo0->dpoi_index;
rv = cspm->vip_policy (vm, b, session, &rsession_flags, ct, ctx);