#define foreach_ip6_hbyh_ioam_input_next \
_(IP6_REWRITE, "ip6-rewrite") \
_(IP6_LOOKUP, "ip6-lookup") \
- _(DROP, "error-drop")
+ _(DROP, "ip6-drop")
typedef enum
{
IP6_HBYH_IOAM_INPUT_N_NEXT,
} ip6_hbyh_ioam_input_next_t;
-
-u32
-ioam_flow_add (u8 encap, u8 * flow_name)
-{
- ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- flow_data_t *flow = 0;
- u32 index = 0;
- u8 i;
-
- pool_get (hm->flows, flow);
- memset (flow, 0, sizeof (flow_data_t));
-
- index = flow - hm->flows;
- strncpy ((char *) flow->flow_name, (char *) flow_name, 31);
-
- if (!encap)
- IOAM_SET_DECAP (index);
-
- for (i = 0; i < 255; i++)
- {
- if (hm->flow_handler[i])
- flow->ctx[i] = hm->flow_handler[i] (index, 1);
- }
- return (index);
-}
-
static uword
unformat_opaque_ioam (unformat_input_t * input, va_list * args)
{
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->add_options));
+ ASSERT ((u32) option < ARRAY_LEN (hm->add_options));
/* Already registered */
if (hm->add_options[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->add_options));
+ ASSERT ((u32) option < ARRAY_LEN (hm->add_options));
/* Not registered */
if (!hm->add_options[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->config_handler));
+ ASSERT ((u32) option < ARRAY_LEN (hm->config_handler));
/* Already registered */
if (hm->config_handler[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->config_handler));
+ ASSERT ((u32) option < ARRAY_LEN (hm->config_handler));
/* Not registered */
if (!hm->config_handler[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->flow_handler));
+ ASSERT ((u32) option < ARRAY_LEN (hm->flow_handler));
/* Already registered */
if (hm->flow_handler[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->flow_handler));
+ ASSERT ((u32) option < ARRAY_LEN (hm->flow_handler));
/* Not registered */
if (!hm->flow_handler[option])
hbh0 = (ip6_hop_by_hop_header_t *) (ip0 + 1);
hbh1 = (ip6_hop_by_hop_header_t *) (ip1 + 1);
/* $$$ tune, rewrite_length is a multiple of 8 */
- clib_memcpy (hbh0, rewrite, rewrite_length);
- clib_memcpy (hbh1, rewrite, rewrite_length);
+ clib_memcpy_fast (hbh0, rewrite, rewrite_length);
+ clib_memcpy_fast (hbh1, rewrite, rewrite_length);
/* Patch the protocol chain, insert the h-b-h (type 0) header */
hbh0->protocol = ip0->protocol;
hbh1->protocol = ip1->protocol;
hbh0 = (ip6_hop_by_hop_header_t *) (ip0 + 1);
/* $$$ tune, rewrite_length is a multiple of 8 */
- clib_memcpy (hbh0, rewrite, rewrite_length);
+ clib_memcpy_fast (hbh0, rewrite, rewrite_length);
/* Patch the protocol chain, insert the h-b-h (type 0) header */
hbh0->protocol = ip0->protocol;
ip0->protocol = 0;
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->pop_options));
+ ASSERT ((u32) option < ARRAY_LEN (hm->pop_options));
/* Already registered */
if (hm->pop_options[option])
{
ip6_hop_by_hop_ioam_main_t *hm = &ip6_hop_by_hop_ioam_main;
- ASSERT (option < ARRAY_LEN (hm->pop_options));
+ ASSERT ((u32) option < ARRAY_LEN (hm->pop_options));
/* Not registered */
if (!hm->pop_options[option])
ip6_pop_hop_by_hop_node_fn (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- ip6_main_t *im = &ip6_main;
- ip_lookup_main_t *lm = &im->lookup_main;
u32 n_left_from, *from, *to_next;
ip_lookup_next_t next_index;
u32 processed = 0;
ip1 = vlib_buffer_get_current (b1);
adj_index0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX];
adj_index1 = vnet_buffer (b1)->ip.adj_index[VLIB_TX];
- adj0 = ip_get_adjacency (lm, adj_index0);
- adj1 = ip_get_adjacency (lm, adj_index1);
+ adj0 = adj_get (adj_index0);
+ adj1 = adj_get (adj_index1);
next0 = adj0->lookup_next_index;
next1 = adj1->lookup_next_index;
ip0 = vlib_buffer_get_current (b0);
adj_index0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX];
- adj0 = ip_get_adjacency (lm, adj_index0);
+ adj0 = adj_get (adj_index0);
/* Default use the next_index from the adjacency. */
next0 = adj0->lookup_next_index;
hm->unix_time_0 = (u32) time (0); /* Store starting time */
hm->vlib_time_0 = vlib_time_now (vm);
hm->ioam_flag = IOAM_HBYH_MOD;
- memset (hm->add_options, 0, sizeof (hm->add_options));
- memset (hm->pop_options, 0, sizeof (hm->pop_options));
- memset (hm->options_size, 0, sizeof (hm->options_size));
+ clib_memset (hm->add_options, 0, sizeof (hm->add_options));
+ clib_memset (hm->pop_options, 0, sizeof (hm->pop_options));
+ clib_memset (hm->options_size, 0, sizeof (hm->options_size));
vnet_classify_register_unformat_opaque_index_fn (unformat_opaque_ioam);