ipsec ip tcp l2: multiarch nodes cannot be declared as static 88/21688/2
authorDamjan Marion <damarion@cisco.com>
Mon, 2 Sep 2019 17:00:33 +0000 (19:00 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Mon, 2 Sep 2019 18:26:43 +0000 (18:26 +0000)
Credits to ray.kinsella@intel.com who spotted the issue and identified
root cause.

Type: fix

Change-Id: I4afe74c47769484309f6aebca2de56ad32c8041f
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/node.h
src/vnet/interface_output.c
src/vnet/ip/ip4_reassembly.c
src/vnet/ip/ip6_reassembly.c
src/vnet/ipsec/ipsec_input.c
src/vnet/l2/l2_fwd.c
src/vnet/l2/l2_learn.c
src/vnet/l2/l2_patch.c
src/vnet/tcp/tcp_syn_filter4.c

index 40d0165..2db31c6 100644 (file)
@@ -187,6 +187,7 @@ static void __vlib_rm_node_registration_##x (void)                      \
 __VA_ARGS__ vlib_node_registration_t x
 #else
 #define VLIB_REGISTER_NODE(x,...)                                       \
+STATIC_ASSERT (sizeof(# __VA_ARGS__) != 7,"node " #x " must not be declared as static"); \
 static __clib_unused vlib_node_registration_t __clib_unused_##x
 #endif
 
index 9702a9e..e1c66ec 100644 (file)
@@ -1317,7 +1317,7 @@ interface_tx_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (interface_tx, static) = {
+VLIB_REGISTER_NODE (interface_tx) = {
   .function = interface_tx_node_fn,
   .name = "interface-tx",
   .vector_size = sizeof (u32),
index 5917035..682cad9 100644 (file)
@@ -1526,7 +1526,7 @@ ip4_reass_walk_expired (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (ip4_reass_expire_node, static) = {
+VLIB_REGISTER_NODE (ip4_reass_expire_node) = {
     .function = ip4_reass_walk_expired,
     .type = VLIB_NODE_TYPE_PROCESS,
     .name = "ip4-reassembly-expire-walk",
index a5e106a..4f27304 100644 (file)
@@ -1530,7 +1530,7 @@ ip6_reass_walk_expired (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (ip6_reass_expire_node, static) = {
+VLIB_REGISTER_NODE (ip6_reass_expire_node) = {
     .function = ip6_reass_walk_expired,
     .format_trace = format_ip6_reass_trace,
     .type = VLIB_NODE_TYPE_PROCESS,
index 47220db..9fdbff5 100644 (file)
@@ -162,7 +162,7 @@ ipsec6_input_protect_policy_match (ipsec_spd_t * spd,
   return 0;
 }
 
-static vlib_node_registration_t ipsec4_input_node;
+extern vlib_node_registration_t ipsec4_input_node;
 
 VLIB_NODE_FN (ipsec4_input_node) (vlib_main_t * vm,
                                  vlib_node_runtime_t * node,
@@ -351,7 +351,7 @@ VLIB_NODE_FN (ipsec4_input_node) (vlib_main_t * vm,
 
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (ipsec4_input_node,static) = {
+VLIB_REGISTER_NODE (ipsec4_input_node) = {
   .name = "ipsec4-input-feature",
   .vector_size = sizeof (u32),
   .format_trace = format_ipsec_input_trace,
@@ -367,7 +367,7 @@ VLIB_REGISTER_NODE (ipsec4_input_node,static) = {
 };
 /* *INDENT-ON* */
 
-static vlib_node_registration_t ipsec6_input_node;
+extern vlib_node_registration_t ipsec6_input_node;
 
 
 VLIB_NODE_FN (ipsec6_input_node) (vlib_main_t * vm,
@@ -523,7 +523,7 @@ VLIB_NODE_FN (ipsec6_input_node) (vlib_main_t * vm,
 
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (ipsec6_input_node,static) = {
+VLIB_REGISTER_NODE (ipsec6_input_node) = {
   .name = "ipsec6-input-feature",
   .vector_size = sizeof (u32),
   .format_trace = format_ipsec_input_trace,
index dfc1a74..93e69db 100644 (file)
@@ -92,7 +92,7 @@ l2fwd_main_t l2fwd_main;
 extern l2fwd_main_t l2fwd_main;
 #endif
 
-static vlib_node_registration_t l2fwd_node;
+extern vlib_node_registration_t l2fwd_node;
 
 #define foreach_l2fwd_error                            \
 _(L2FWD,         "L2 forward packets")                 \
@@ -412,7 +412,7 @@ VLIB_NODE_FN (l2fwd_node) (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (l2fwd_node,static) = {
+VLIB_REGISTER_NODE (l2fwd_node) = {
   .name = "l2-fwd",
   .vector_size = sizeof (u32),
   .format_trace = format_l2fwd_trace,
index e473657..db76f80 100644 (file)
@@ -74,7 +74,7 @@ format_l2learn_trace (u8 * s, va_list * args)
   return s;
 }
 
-static vlib_node_registration_t l2learn_node;
+extern vlib_node_registration_t l2learn_node;
 
 #define foreach_l2learn_error                          \
 _(L2LEARN,           "L2 learn packets")               \
@@ -427,7 +427,7 @@ VLIB_NODE_FN (l2learn_node) (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (l2learn_node,static) = {
+VLIB_REGISTER_NODE (l2learn_node) = {
   .name = "l2-learn",
   .vector_size = sizeof (u32),
   .format_trace = format_l2learn_trace,
index 54286c2..6109228 100644 (file)
@@ -51,7 +51,7 @@ format_l2_patch_trace (u8 * s, va_list * args)
 
 static l2_patch_main_t l2_patch_main;
 
-static vlib_node_registration_t l2_patch_node;
+extern vlib_node_registration_t l2_patch_node;
 
 #define foreach_l2_patch_error                 \
 _(PATCHED, "L2 patch packets")                 \
@@ -204,7 +204,7 @@ VLIB_NODE_FN (l2_patch_node) (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (l2_patch_node, static) = {
+VLIB_REGISTER_NODE (l2_patch_node) = {
   .name = "l2-patch",
   .vector_size = sizeof (u32),
   .format_trace = format_l2_patch_trace,
index ffcd596..d151eb7 100644 (file)
@@ -52,7 +52,7 @@ format_syn_filter4_trace (u8 * s, va_list * args)
   return s;
 }
 
-static vlib_node_registration_t syn_filter4_node;
+extern vlib_node_registration_t syn_filter4_node;
 
 #define foreach_syn_filter_error                \
 _(THROTTLED, "TCP SYN packet throttle drops")   \
@@ -400,7 +400,7 @@ VLIB_NODE_FN (syn_filter4_node) (vlib_main_t * vm,
 }
 
 /* *INDENT-OFF* */
-VLIB_REGISTER_NODE (syn_filter4_node, static) =
+VLIB_REGISTER_NODE (syn_filter4_node) =
 {
   .name = "syn-filter-4",
   .vector_size = sizeof (u32),