NAT44: endpoint-dependent mode session timeout improvement (VPP-1423)
[vpp.git] / src / plugins / nat / out2in_ed.c
index 1a9f897..dce6c56 100644 (file)
@@ -112,6 +112,8 @@ icmp_out2in_ed_slow_path (snat_main_t * sm, vlib_buffer_t * b0,
       nat44_session_update_counters (s0, now,
                                     vlib_buffer_length_in_chain
                                     (sm->vlib_main, b0));
+      /* Per-user LRU list maintenance */
+      nat44_session_update_lru (sm, s0, thread_index);
     }
   return next0;
 }
@@ -453,6 +455,8 @@ create_bypass_for_fwd (snat_main_t * sm, ip4_header_t * ip, u32 rx_fib_index,
 
   /* Accounting */
   nat44_session_update_counters (s, now, 0);
+  /* Per-user LRU list maintenance */
+  nat44_session_update_lru (sm, s, thread_index);
 }
 
 u32
@@ -663,6 +667,8 @@ nat44_ed_out2in_unknown_proto (snat_main_t * sm,
 
   /* Accounting */
   nat44_session_update_counters (s, now, vlib_buffer_length_in_chain (vm, b));
+  /* Per-user LRU list maintenance */
+  nat44_session_update_lru (sm, s, thread_index);
 
   return s;
 }
@@ -936,6 +942,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace00:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1152,6 +1160,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s1, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b1));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s1, thread_index);
 
        trace01:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1401,6 +1411,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1769,6 +1781,8 @@ nat44_ed_out2in_reass_node_fn (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)