nat: add maximum configured sessions to stat segment
[vpp.git] / src / plugins / nat / nat44-ed / nat44_ed.c
index 58aade5..d42d303 100644 (file)
@@ -36,6 +36,8 @@
 #include <nat/nat44-ed/nat44_ed_affinity.h>
 #include <nat/nat44-ed/nat44_ed_inlines.h>
 
+#include <vpp/stats/stat_segment.h>
+
 snat_main_t snat_main;
 
 static_always_inline void nat_validate_interface_counters (snat_main_t *sm,
@@ -2025,6 +2027,8 @@ nat_init (vlib_main_t * vm)
 
   nat_init_simple_counter (sm->total_sessions, "total-sessions",
                           "/nat44-ed/total-sessions");
+  sm->max_cfg_sessions_gauge = stat_segment_new_entry (
+    (u8 *) "/nat44-ed/max-cfg-sessions", STAT_DIR_TYPE_SCALAR_INDEX);
 
 #define _(x)                                                                  \
   nat_init_simple_counter (sm->counters.fastpath.in2out.x, #x,                \
@@ -2123,6 +2127,8 @@ nat44_plugin_enable (nat44_config_t c)
     c.sessions = 63 * 1024;
 
   sm->max_translations_per_thread = c.sessions;
+  stat_segment_set_state_counter (sm->max_cfg_sessions_gauge,
+                                 sm->max_translations_per_thread);
   sm->translation_buckets = nat_calc_bihash_buckets (c.sessions);
 
   // ED only feature
@@ -2788,6 +2794,9 @@ nat44_update_session_limit (u32 session_limit, u32 vrf_id)
     return 1;
   sm->max_translations_per_thread = nat44_get_max_session_limit ();
 
+  stat_segment_set_state_counter (sm->max_cfg_sessions_gauge,
+                                 sm->max_translations_per_thread);
+
   sm->translation_buckets =
     nat_calc_bihash_buckets (sm->max_translations_per_thread);