/* BIB lookup */
clib_bihash_24_8_t in2out;
clib_bihash_24_8_t out2in;
+
+ u32 limit;
+ u32 bib_entries_num;
} nat64_db_bib_t;
typedef struct
/* session lookup */
clib_bihash_48_8_t in2out;
clib_bihash_48_8_t out2in;
+
+ u32 limit;
+ u32 st_entries_num;
} nat64_db_st_t;
struct nat64_db_s;
nat64_db_bib_t bib;
nat64_db_st_t st;
nat64_db_free_addr_port_function_t free_addr_port_cb;
+ u8 addr_free;
} nat64_db_t;
/**
/**
* @brief Create new NAT64 BIB entry.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param in_addr Inside IPv6 address.
* @param out_addr Outside IPv4 address.
*
* @returns BIB entry on success, 0 otherwise.
*/
-nat64_db_bib_entry_t *nat64_db_bib_entry_create (nat64_db_t * db,
+nat64_db_bib_entry_t *nat64_db_bib_entry_create (u32 thread_index,
+ nat64_db_t * db,
ip6_address_t * in_addr,
ip4_address_t * out_addr,
u16 in_port, u16 out_port,
- u32 fib_index,
- u8 proto, u8 is_static);
+ u32 fib_index, u8 proto,
+ u8 is_static);
/**
* @brief Free NAT64 BIB entry.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param bibe BIB entry.
*/
-void nat64_db_bib_entry_free (nat64_db_t * db, nat64_db_bib_entry_t * bibe);
+void nat64_db_bib_entry_free (u32 thread_index, nat64_db_t * db,
+ nat64_db_bib_entry_t * bibe);
/**
* @brief Call back function when walking NAT64 BIB, non-zero
* - 6 TCP BIB
* - 17 UDP BIB
* - 1/58 ICMP BIB
- * - otherwise "unknown" protocol BIB
+ *
+ * u - otherwise "unknown" protocol BIB
* @param fn The function to invoke on each entry visited.
* @param ctx A context passed in the visit function.
*/
/**
* @brief Create new NAT64 session table entry.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param bibe Corresponding BIB entry.
* @param in_r_addr Inside IPv6 address of the remote host.
*
* @returns BIB entry on success, 0 otherwise.
*/
-nat64_db_st_entry_t *nat64_db_st_entry_create (nat64_db_t * db,
+nat64_db_st_entry_t *nat64_db_st_entry_create (u32 thread_index,
+ nat64_db_t * db,
nat64_db_bib_entry_t * bibe,
ip6_address_t * in_r_addr,
ip4_address_t * out_r_addr,
/**
* @brief Free NAT64 session table entry.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param ste Session table entry.
*/
-void nat64_db_st_entry_free (nat64_db_t * db, nat64_db_st_entry_t * ste);
+void nat64_db_st_entry_free (u32 thread_index, nat64_db_t * db,
+ nat64_db_st_entry_t * ste);
/**
* @brief Find NAT64 session table entry.
/**
* @brief Free expired session entries in session tables.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param now Current time.
*/
-void nad64_db_st_free_expired (nat64_db_t * db, u32 now);
+void nad64_db_st_free_expired (u32 thread_index, nat64_db_t * db, u32 now);
/**
* @brief Free sessions using specific outside address.
*
+ * @param thread_index thread index.
* @param db NAT64 DB.
* @param out_addr Outside address to match.
*/
-void nat64_db_free_out_addr (nat64_db_t * db, ip4_address_t * out_addr);
+void nat64_db_free_out_addr (u32 thread_index, nat64_db_t * db,
+ ip4_address_t * out_addr);
/*
* @brief Get ST entry index.