aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/ioam
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/ioam')
-rw-r--r--src/plugins/ioam/CMakeLists.txt4
-rw-r--r--src/plugins/ioam/ip6/ioam_cache.c7
-rw-r--r--src/plugins/ioam/ip6/ioam_cache.h3
-rw-r--r--src/plugins/ioam/ip6/ioam_cache_node.c14
-rw-r--r--src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c18
5 files changed, 27 insertions, 19 deletions
diff --git a/src/plugins/ioam/CMakeLists.txt b/src/plugins/ioam/CMakeLists.txt
index 3f465591e44..145c156619e 100644
--- a/src/plugins/ioam/CMakeLists.txt
+++ b/src/plugins/ioam/CMakeLists.txt
@@ -65,6 +65,10 @@ add_vpp_plugin(ioam
udp-ping/udp_ping_export.c
udp-ping/udp_ping_api.c
+ MULTIARCH_SOURCES
+ ip6/ioam_cache_node.c
+ ip6/ioam_cache_tunnel_select_node.c
+
API_FILES
lib-pot/pot.api
export/ioam_export.api
diff --git a/src/plugins/ioam/ip6/ioam_cache.c b/src/plugins/ioam/ip6/ioam_cache.c
index fcacae0cf2c..d315bc6c61c 100644
--- a/src/plugins/ioam/ip6/ioam_cache.c
+++ b/src/plugins/ioam/ip6/ioam_cache.c
@@ -371,6 +371,7 @@ VLIB_CLI_COMMAND (show_ioam_cache_command, static) =
static clib_error_t *
ioam_cache_init (vlib_main_t * vm)
{
+ vlib_node_t *node;
ioam_cache_main_t *em = &ioam_cache_main;
clib_error_t *error = 0;
u8 *name;
@@ -405,6 +406,12 @@ ioam_cache_init (vlib_main_t * vm)
em->error_node_index = error_node->index;
em->vlib_main = vm;
+ node = vlib_get_node_by_name (vm, (u8 *) "ip6-add-from-cache-hop-by-hop");
+ em->ip6_add_from_cache_hbh_node_index = node->index;
+
+ node = vlib_get_node_by_name (vm, (u8 *) "ip6-add-syn-hop-by-hop");
+ em->ip6_reset_ts_hbh_node_index = node->index;
+
vec_free (name);
return error;
diff --git a/src/plugins/ioam/ip6/ioam_cache.h b/src/plugins/ioam/ip6/ioam_cache.h
index e75deba73f7..dc4ae0053fa 100644
--- a/src/plugins/ioam/ip6/ioam_cache.h
+++ b/src/plugins/ioam/ip6/ioam_cache.h
@@ -205,6 +205,9 @@ typedef struct
u32 ip6_hbh_pop_node_index;
u32 error_node_index;
u32 cleanup_process_node_index;
+
+ u32 ip6_add_from_cache_hbh_node_index;
+ u32 ip6_reset_ts_hbh_node_index;
} ioam_cache_main_t;
extern ioam_cache_main_t ioam_cache_main;
diff --git a/src/plugins/ioam/ip6/ioam_cache_node.c b/src/plugins/ioam/ip6/ioam_cache_node.c
index 59bc1a64811..018077f3934 100644
--- a/src/plugins/ioam/ip6/ioam_cache_node.c
+++ b/src/plugins/ioam/ip6/ioam_cache_node.c
@@ -217,8 +217,6 @@ format_ip6_add_from_cache_hbh_trace (u8 * s, va_list * args)
return s;
}
-vlib_node_registration_t ip6_add_from_cache_hbh_node;
-
#define foreach_ip6_add_from_cache_hbh_error \
_(PROCESSED, "Pkts w/ added ip6 hop-by-hop options")
@@ -249,10 +247,9 @@ typedef enum
} ip6_ioam_cache_input_next_t;
-static uword
-ip6_add_from_cache_hbh_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node,
- vlib_frame_t * frame)
+VLIB_NODE_FN (ip6_add_from_cache_hbh_node) (vlib_main_t * vm,
+ vlib_node_runtime_t * node,
+ vlib_frame_t * frame)
{
ioam_cache_main_t *cm = &ioam_cache_main;
u32 n_left_from, *from, *to_next;
@@ -384,7 +381,7 @@ ip6_add_from_cache_hbh_node_fn (vlib_main_t * vm,
vlib_put_next_frame (vm, node, next_index, n_left_to_next);
}
- vlib_node_increment_counter (vm, ip6_add_from_cache_hbh_node.index,
+ vlib_node_increment_counter (vm, cm->ip6_add_from_cache_hbh_node_index,
IP6_ADD_FROM_CACHE_HBH_ERROR_PROCESSED,
processed);
return frame->n_vectors;
@@ -392,7 +389,6 @@ ip6_add_from_cache_hbh_node_fn (vlib_main_t * vm,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (ip6_add_from_cache_hbh_node) =
{
- .function = ip6_add_from_cache_hbh_node_fn,
.name = "ip6-add-from-cache-hop-by-hop",
.vector_size = sizeof (u32),
.format_trace = format_ip6_add_from_cache_hbh_trace,
@@ -410,8 +406,6 @@ VLIB_REGISTER_NODE (ip6_add_from_cache_hbh_node) =
};
/* *INDENT-ON* */
-VLIB_NODE_FUNCTION_MULTIARCH (ip6_add_from_cache_hbh_node,
- ip6_add_from_cache_hbh_node_fn)
/*
* fd.io coding-style-patch-verification: ON
*
diff --git a/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c b/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
index 63bcaff14b2..17016e27100 100644
--- a/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
+++ b/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
@@ -275,8 +275,6 @@ format_ip6_reset_ts_hbh_trace (u8 * s, va_list * args)
return s;
}
-vlib_node_registration_t ip6_reset_ts_hbh_node;
-
#define foreach_ip6_reset_ts_hbh_error \
_(PROCESSED, "iOAM Syn/Ack Pkts processed") \
_(SAVED, "iOAM Syn Pkts state saved") \
@@ -309,9 +307,9 @@ typedef enum
} ip6_ioam_cache_ts_input_next_t;
-static uword
-ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node, vlib_frame_t * frame)
+VLIB_NODE_FN (ip6_reset_ts_hbh_node) (vlib_main_t * vm,
+ vlib_node_runtime_t * node,
+ vlib_frame_t * frame)
{
ioam_cache_main_t *cm = &ioam_cache_main;
u32 n_left_from, *from, *to_next;
@@ -617,9 +615,9 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
vlib_put_next_frame (vm, node, next_index, n_left_to_next);
}
- vlib_node_increment_counter (vm, ip6_reset_ts_hbh_node.index,
+ vlib_node_increment_counter (vm, cm->ip6_reset_ts_hbh_node_index,
IP6_RESET_TS_HBH_ERROR_PROCESSED, processed);
- vlib_node_increment_counter (vm, ip6_reset_ts_hbh_node.index,
+ vlib_node_increment_counter (vm, cm->ip6_reset_ts_hbh_node_index,
IP6_RESET_TS_HBH_ERROR_SAVED, cache_ts_added);
return frame->n_vectors;
@@ -628,7 +626,6 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (ip6_reset_ts_hbh_node) =
{
- .function = ip6_reset_ts_hbh_node_fn,
.name = "ip6-add-syn-hop-by-hop",
.vector_size = sizeof (u32),
.format_trace = format_ip6_reset_ts_hbh_trace,
@@ -645,10 +642,11 @@ VLIB_REGISTER_NODE (ip6_reset_ts_hbh_node) =
},
};
-VLIB_NODE_FUNCTION_MULTIARCH (ip6_reset_ts_hbh_node, ip6_reset_ts_hbh_node_fn)
/* *INDENT-ON* */
+#ifndef CLIB_MARCH_VARIANT
vlib_node_registration_t ioam_cache_ts_timer_tick_node;
+#endif /* CLIB_MARCH_VARIANT */
typedef struct
{
@@ -686,6 +684,7 @@ static char *ioam_cache_ts_timer_tick_error_strings[] = {
#undef _
};
+#ifndef CLIB_MARCH_VARIANT
void
ioam_cache_ts_timer_node_enable (vlib_main_t * vm, u8 enable)
{
@@ -717,6 +716,7 @@ expired_cache_ts_timer_callback (u32 * expired_timers)
ioam_cache_ts_timer_tick_node.index,
IOAM_CACHE_TS_TIMER_TICK_ERROR_TIMER, count);
}
+#endif /* CLIB_MARCH_VARIANT */
static uword
ioam_cache_ts_timer_tick_node_fn (vlib_main_t * vm,