#define CNAT_DEFAULT_TRANSLATION_MEMORY (256 << 10)
#define CNAT_DEFAULT_SNAT_MEMORY (64 << 20)
+/* Should be prime >~ 100 * numBackends */
+#define CNAT_DEFAULT_MAGLEV_LEN 1009
+
/* This should be strictly lower than FIB_SOURCE_INTERFACE
* from fib_source.h */
#define CNAT_FIB_SOURCE_PRIORITY 0x02
typedef enum
{
/* Endpoint addr has been resolved */
- CNAT_EP_FLAG_RESOLVED = 1,
+ CNAT_EP_FLAG_RESOLVED = (1 << 0),
} cnat_ep_flag_t;
typedef struct cnat_endpoint_t_
{
cnat_endpoint_t dst_ep;
cnat_endpoint_t src_ep;
+ u8 ep_flags; /* cnat_trk_flag_t */
} cnat_endpoint_tuple_t;
typedef struct
/* Enable or Disable the scanner on startup */
u8 default_scanner_state;
+
+ /* Number of buckets for maglev, should be a
+ * prime >= 100 * max num bakends */
+ u32 maglev_len;
} cnat_main_t;
typedef struct cnat_timestamp_t_
typedef struct cnat_node_ctx_
{
f64 now;
- u64 seed;
u32 thread_index;
ip_address_family_t af;
u8 do_trace;
extern cnat_timestamp_t *cnat_timestamps;
extern fib_source_t cnat_fib_source;
extern cnat_main_t cnat_main;
-extern throttle_t cnat_throttle;
extern char *cnat_error_strings[];