diff options
Diffstat (limited to 'src/plugins/acl/dataplane_node.c')
-rw-r--r-- | src/plugins/acl/dataplane_node.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/acl/dataplane_node.c b/src/plugins/acl/dataplane_node.c index 351cbbd8fb2..f1ed4c28b99 100644 --- a/src/plugins/acl/dataplane_node.c +++ b/src/plugins/acl/dataplane_node.c @@ -153,7 +153,8 @@ acl_fa_node_fn (vlib_main_t * vm, if (acl_fa_ifc_has_sessions (am, sw_if_index0)) { - if (acl_fa_find_session (am, sw_if_index0, &fa_5tuple, &value_sess)) + if (acl_fa_find_session (am, sw_if_index0, &fa_5tuple, &value_sess) + && (value_sess.value != ~0ULL)) { trace_bitmap |= 0x80000000; error0 = ACL_FA_ERROR_ACL_EXIST_SESSION; @@ -215,10 +216,12 @@ acl_fa_node_fn (vlib_main_t * vm, sw_if_index0); vec_elt (pw->fa_session_epoch_change_by_sw_if_index, sw_if_index0)++; - if (acl_fa_conn_list_delete_session (am, f_sess_id)) + if (acl_fa_conn_list_delete_session + (am, f_sess_id, now)) { /* delete the session only if we were able to unlink it */ - acl_fa_delete_session (am, sw_if_index0, f_sess_id); + acl_fa_two_stage_delete_session (am, sw_if_index0, + f_sess_id, now); } acl_check_needed = 1; trace_bitmap |= 0x40000000; @@ -243,7 +246,7 @@ acl_fa_node_fn (vlib_main_t * vm, { if (!acl_fa_can_add_session (am, is_input, sw_if_index0)) acl_fa_try_recycle_session (am, is_input, thread_index, - sw_if_index0); + sw_if_index0, now); if (acl_fa_can_add_session (am, is_input, sw_if_index0)) { |