u32 per_user_index;
u32 per_user_list_head_index;
+ /* index in global LRU list */
+ u32 global_lru_index;
+ f64 last_lru_update;
+
/* Last heard timer */
f64 last_heard;
u32 sessions_per_user_list_head_index;
u32 nsessions;
u32 nstaticsessions;
- /* discovered minimum session timeout time */
- u64 min_session_timeout;
} snat_user_t;
typedef struct
/* Pool of doubly-linked list elements */
dlist_elt_t *list_pool;
+ /* LRU session list - head is stale, tail is fresh */
+ dlist_elt_t *global_lru_pool;
+ u32 global_lru_head_index;
+
/* NAT thread index */
u32 snat_thread_index;
/* real thread index */
u32 thread_index;
- /* discovered minimum session timeout time */
- u64 min_session_timeout;
-
- /* session scavenging */
- u32 cleared;
- u32 cleanup_runs;
- f64 cleanup_timeout;
-
} snat_main_per_thread_data_t;
struct snat_main_s;
u8 out2in_dpo;
u8 endpoint_dependent;
u32 translation_buckets;
- u32 translation_memory_size;
+ uword translation_memory_size;
u32 max_translations;
u32 user_buckets;
- u32 user_memory_size;
+ uword user_memory_size;
u32 max_translations_per_user;
u32 outside_vrf_id;
u32 outside_fib_index;
u32 inside_fib_index;
/* values of various timeouts */
-
- // min timeout of all proto timeouts
- u32 min_timeout;
// proto timeouts
u32 udp_timeout;
u32 tcp_transitory_timeout;