build: Add FreeBSD as a supported platform for cmake
[vpp.git] / src / plugins / cnat / cnat_types.c
index b6c6628..084a03d 100644 (file)
@@ -16,8 +16,7 @@
 #include <cnat/cnat_types.h>
 
 cnat_main_t cnat_main;
-fib_source_t cnat_fib_source;
-cnat_timestamp_t *cnat_timestamps;
+cnat_timestamp_mpool_t cnat_timestamps;
 
 char *cnat_error_strings[] = {
 #define cnat_error(n,s) s,
@@ -102,17 +101,29 @@ unformat_cnat_ep (unformat_input_t * input, va_list * args)
   return 1;
 }
 
+uword
+unformat_cnat_ep_flags (unformat_input_t *input, va_list *args)
+{
+  int *a = va_arg (*args, int *);
+  if (unformat (input, ":nonat"))
+    *a = CNAT_TRK_FLAG_NO_NAT;
+  return 1;
+}
+
 uword
 unformat_cnat_ep_tuple (unformat_input_t * input, va_list * args)
 {
   cnat_endpoint_tuple_t *a = va_arg (*args, cnat_endpoint_tuple_t *);
-  if (unformat (input, "%U->%U", unformat_cnat_ep, &a->src_ep,
-               unformat_cnat_ep, &a->dst_ep))
-    ;
-  else if (unformat (input, "->%U", unformat_cnat_ep, &a->dst_ep))
-    ;
-  else if (unformat (input, "%U->", unformat_cnat_ep, &a->src_ep))
-    ;
+  int flgs = 0;
+  if (unformat (input, "%U->%U%U", unformat_cnat_ep, &a->src_ep,
+               unformat_cnat_ep, &a->dst_ep, unformat_cnat_ep_flags, &flgs))
+    a->ep_flags = flgs;
+  else if (unformat (input, "->%U%U", unformat_cnat_ep, &a->dst_ep,
+                    unformat_cnat_ep_flags, &flgs))
+    a->ep_flags = flgs;
+  else if (unformat (input, "%U->%U", unformat_cnat_ep, &a->src_ep,
+                    unformat_cnat_ep_flags, &flgs))
+    a->ep_flags = flgs;
   else
     return 0;
   return 1;
@@ -140,19 +151,6 @@ format_cnat_endpoint (u8 * s, va_list * args)
   return (s);
 }
 
-static clib_error_t *
-cnat_types_init (vlib_main_t * vm)
-{
-  cnat_fib_source = fib_source_allocate ("cnat",
-                                        CNAT_FIB_SOURCE_PRIORITY,
-                                        FIB_SOURCE_BH_SIMPLE);
-
-
-  clib_rwlock_init (&cnat_main.ts_lock);
-
-  return (NULL);
-}
-
 void
 cnat_enable_disable_scanner (cnat_scanner_cmd_t event_type)
 {
@@ -179,12 +177,16 @@ cnat_config (vlib_main_t * vm, unformat_input_t * input)
   cm->session_hash_buckets = CNAT_DEFAULT_SESSION_BUCKETS;
   cm->translation_hash_memory = CNAT_DEFAULT_TRANSLATION_MEMORY;
   cm->translation_hash_buckets = CNAT_DEFAULT_TRANSLATION_BUCKETS;
+  cm->client_hash_memory = CNAT_DEFAULT_CLIENT_MEMORY;
+  cm->client_hash_buckets = CNAT_DEFAULT_CLIENT_BUCKETS;
   cm->snat_hash_memory = CNAT_DEFAULT_SNAT_MEMORY;
   cm->snat_hash_buckets = CNAT_DEFAULT_SNAT_BUCKETS;
+  cm->snat_if_map_length = CNAT_DEFAULT_SNAT_IF_MAP_LEN;
   cm->scanner_timeout = CNAT_DEFAULT_SCANNER_TIMEOUT;
   cm->session_max_age = CNAT_DEFAULT_SESSION_MAX_AGE;
   cm->tcp_max_age = CNAT_DEFAULT_TCP_MAX_AGE;
   cm->default_scanner_state = CNAT_SCANNER_ON;
+  cm->maglev_len = CNAT_DEFAULT_MAGLEV_LEN;
   cm->lazy_init_done = 0;
 
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
@@ -201,8 +203,16 @@ cnat_config (vlib_main_t * vm, unformat_input_t * input)
       else if (unformat (input, "translation-db-memory %U",
                         unformat_memory_size, &cm->translation_hash_memory))
        ;
+      else if (unformat (input, "client-db-buckets %u",
+                        &cm->client_hash_buckets))
+       ;
+      else if (unformat (input, "client-db-memory %U", unformat_memory_size,
+                        &cm->client_hash_memory))
+       ;
       else if (unformat (input, "snat-db-buckets %u", &cm->snat_hash_buckets))
        ;
+      else if (unformat (input, "snat-if-map-len %u", &cm->snat_if_map_length))
+       ;
       else if (unformat (input, "snat-db-memory %U",
                         unformat_memory_size, &cm->snat_hash_memory))
        ;
@@ -217,6 +227,8 @@ cnat_config (vlib_main_t * vm, unformat_input_t * input)
        ;
       else if (unformat (input, "tcp-max-age %u", &cm->tcp_max_age))
        ;
+      else if (unformat (input, "maglev-len %u", &cm->maglev_len))
+       ;
       else
        return clib_error_return (0, "unknown input '%U'",
                                  format_unformat_error, input);
@@ -232,7 +244,6 @@ cnat_get_main ()
 }
 
 VLIB_EARLY_CONFIG_FUNCTION (cnat_config, "cnat");
-VLIB_INIT_FUNCTION (cnat_types_init);
 
 /*
  * fd.io coding-style-patch-verification: ON