nat: make usage of vnet_buffer2 transparent 90/26690/3
authorKlement Sekera <ksekera@cisco.com>
Fri, 24 Apr 2020 12:24:41 +0000 (12:24 +0000)
committerOle Trøan <otroan@employees.org>
Fri, 24 Apr 2020 15:21:44 +0000 (15:21 +0000)
Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I50df248afb3f6b46c49e6695b3f124cfd584f016

src/plugins/nat/in2out_ed.c
src/plugins/nat/nat.h
src/plugins/nat/nat44_classify.c
src/plugins/nat/nat_inlines.h
src/plugins/nat/out2in_ed.c
src/vnet/buffer.h

index 2959589..ca1d0cd 100644 (file)
@@ -1027,11 +1027,11 @@ nat44_ed_in2out_fast_path_node_fn_inline (vlib_main_t * vm,
 
          if (is_output_feature)
            {
-             vnet_feature_next (&nat_buffer_opaque (b0)->arc_next, b0);
+             vnet_feature_next (&vnet_buffer2 (b0)->nat.arc_next, b0);
              iph_offset0 = vnet_buffer (b0)->ip.reass.save_rewrite_length;
            }
 
-         next0 = nat_buffer_opaque (b0)->arc_next;
+         next0 = vnet_buffer2 (b0)->nat.arc_next;
 
          ip0 = (ip4_header_t *) ((u8 *) vlib_buffer_get_current (b0) +
                                  iph_offset0);
@@ -1232,7 +1232,7 @@ nat44_ed_in2out_fast_path_node_fn_inline (vlib_main_t * vm,
                t->session_index = ~0;
            }
 
-         pkts_processed += next0 == nat_buffer_opaque (b0)->arc_next;
+         pkts_processed += next0 == vnet_buffer2 (b0)->nat.arc_next;
          /* verify speculative enqueue, maybe switch current next frame */
          vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
                                           to_next, n_left_to_next,
@@ -1312,7 +1312,7 @@ nat44_ed_in2out_slow_path_node_fn_inline (vlib_main_t * vm,
          if (is_output_feature)
            iph_offset0 = vnet_buffer (b0)->ip.reass.save_rewrite_length;
 
-         next0 = nat_buffer_opaque (b0)->arc_next;
+         next0 = vnet_buffer2 (b0)->nat.arc_next;
 
          ip0 = (ip4_header_t *) ((u8 *) vlib_buffer_get_current (b0) +
                                  iph_offset0);
@@ -1536,7 +1536,7 @@ nat44_ed_in2out_slow_path_node_fn_inline (vlib_main_t * vm,
                t->session_index = ~0;
            }
 
-         pkts_processed += next0 == nat_buffer_opaque (b0)->arc_next;
+         pkts_processed += next0 == vnet_buffer2 (b0)->nat.arc_next;
 
          /* verify speculative enqueue, maybe switch current next frame */
          vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
index 4b9f243..0fc174d 100644 (file)
 /* NAT buffer flags */
 #define SNAT_FLAG_HAIRPINNING (1 << 0)
 
-typedef struct
-{
-  u32 arc_next;
-} nat_buffer_opaque_t;
-
 typedef enum
 {
   NAT_NEXT_DROP,
@@ -69,9 +64,6 @@ typedef struct
   u32 next_index;
 } nat_pre_trace_t;
 
-#define nat_buffer_opaque(b) \
-  ((nat_buffer_opaque_t *)((vnet_buffer_opaque2_t *)b->opaque2)->__unused2)
-
 /*
 STATIC_ASSERT (sizeof (nat_buffer_opaque_t) <=
                STRUCT_SIZE_OF (vnet_buffer_opaque_t, unused),
index f1c80aa..2afc479 100644 (file)
@@ -248,7 +248,7 @@ nat44_ed_classify_node_fn_inline (vlib_main_t * vm,
              u32 arc_next = 0;
 
              vnet_feature_next (&arc_next, b0);
-             nat_buffer_opaque (b0)->arc_next = arc_next;
+             vnet_buffer2 (b0)->nat.arc_next = arc_next;
            }
 
          if (ip0->protocol != IP_PROTOCOL_ICMP)
index e5f2d96..01b4359 100644 (file)
@@ -79,8 +79,8 @@ nat_pre_node_fn_inline (vlib_main_t * vm,
          vnet_feature_next (&arc_next0, b0);
          vnet_feature_next (&arc_next1, b1);
 
-         nat_buffer_opaque (b0)->arc_next = arc_next0;
-         nat_buffer_opaque (b1)->arc_next = arc_next1;
+         vnet_buffer2 (b0)->nat.arc_next = arc_next0;
+         vnet_buffer2 (b1)->nat.arc_next = arc_next1;
 
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)))
            {
@@ -122,7 +122,7 @@ nat_pre_node_fn_inline (vlib_main_t * vm,
          b0 = vlib_get_buffer (vm, bi0);
          next0 = def_next;
          vnet_feature_next (&arc_next0, b0);
-         nat_buffer_opaque (b0)->arc_next = arc_next0;
+         vnet_buffer2 (b0)->nat.arc_next = arc_next0;
 
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
                             && (b0->flags & VLIB_BUFFER_IS_TRACED)))
index e4f0130..e5adef4 100644 (file)
@@ -719,7 +719,7 @@ nat44_ed_out2in_fast_path_node_fn_inline (vlib_main_t * vm,
          n_left_to_next -= 1;
 
          b0 = vlib_get_buffer (vm, bi0);
-         next0 = nat_buffer_opaque (b0)->arc_next;
+         next0 = vnet_buffer2 (b0)->nat.arc_next;
 
          vnet_buffer (b0)->snat.flags = 0;
          ip0 = vlib_buffer_get_current (b0);
@@ -910,7 +910,7 @@ nat44_ed_out2in_fast_path_node_fn_inline (vlib_main_t * vm,
                t->session_index = ~0;
            }
 
-         pkts_processed += next0 == nat_buffer_opaque (b0)->arc_next;
+         pkts_processed += next0 == vnet_buffer2 (b0)->nat.arc_next;
          /* verify speculative enqueue, maybe switch current next frame */
          vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
                                           to_next, n_left_to_next,
@@ -992,7 +992,7 @@ nat44_ed_out2in_slow_path_node_fn_inline (vlib_main_t * vm,
          n_left_to_next -= 1;
 
          b0 = vlib_get_buffer (vm, bi0);
-         next0 = nat_buffer_opaque (b0)->arc_next;
+         next0 = vnet_buffer2 (b0)->nat.arc_next;
 
          vnet_buffer (b0)->snat.flags = 0;
          ip0 = vlib_buffer_get_current (b0);
@@ -1251,7 +1251,7 @@ nat44_ed_out2in_slow_path_node_fn_inline (vlib_main_t * vm,
                t->session_index = ~0;
            }
 
-         pkts_processed += next0 == nat_buffer_opaque (b0)->arc_next;
+         pkts_processed += next0 == vnet_buffer2 (b0)->nat.arc_next;
          /* verify speculative enqueue, maybe switch current next frame */
          vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
                                           to_next, n_left_to_next,
index 5293561..bdb5892 100644 (file)
@@ -455,6 +455,12 @@ typedef struct
   /* The union below has a u64 alignment, so this space is unused */
   u32 __unused2[1];
 
+  struct
+  {
+    u32 arc_next;
+    u32 unused;
+  } nat;
+
   union
   {
     struct