NAT: VPP-1537 IPFIX per worker processing
[vpp.git] / src / plugins / nat / nat_reass.h
index 5b18d1b..e58db44 100644 (file)
@@ -31,6 +31,8 @@
 #define NAT_REASS_HT_LOAD_FACTOR (0.75)
 
 #define NAT_REASS_FLAG_MAX_FRAG_DROP 1
+#define NAT_REASS_FLAG_CLASSIFY_ED_CONTINUE 2
+#define NAT_REASS_FLAG_ED_DONT_TRANSLATE 4
 
 typedef struct
 {
@@ -49,6 +51,13 @@ typedef struct
   };
 } nat_reass_ip4_key_t;
 
+enum
+{
+  NAT_REASS_IP4_CLASSIFY_NONE,
+  NAT_REASS_IP4_CLASSIFY_NEXT_IN2OUT,
+  NAT_REASS_IP4_CLASSIFY_NEXT_OUT2IN
+};
+
 /* *INDENT-OFF* */
 typedef CLIB_PACKED(struct
 {
@@ -60,6 +69,7 @@ typedef CLIB_PACKED(struct
   u32 frags_per_reass_list_head_index;
   u8 frag_n;
   u8 flags;
+  u8 classify_next;
 }) nat_reass_ip4_t;
 /* *INDENT-ON* */
 
@@ -230,8 +240,8 @@ nat_reass_ip4_t *nat_ip4_reass_find_or_create (ip4_address_t src,
  *
  * @returns 0 on success, non-zero value otherwise.
  */
-int nat_ip4_reass_add_fragment (nat_reass_ip4_t * reass, u32 bi,
-                               u32 ** bi_to_drop);
+int nat_ip4_reass_add_fragment (u32 thread_index, nat_reass_ip4_t * reass,
+                               u32 bi, u32 ** bi_to_drop);
 
 /**
  * @brief Get cached fragments.
@@ -281,8 +291,8 @@ nat_reass_ip6_t *nat_ip6_reass_find_or_create (ip6_address_t src,
  *
  * @returns 0 on success, non-zero value otherwise.
  */
-int nat_ip6_reass_add_fragment (nat_reass_ip6_t * reass, u32 bi,
-                               u32 ** bi_to_drop);
+int nat_ip6_reass_add_fragment (u32 thread_index, nat_reass_ip6_t * reass,
+                               u32 bi, u32 ** bi_to_drop);
 
 /**
  * @brief Get cached fragments.