always_inline uword
nonip_in_out_node_fn (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame,
- int is_output, vlib_node_registration_t * fa_node)
+ int is_output)
{
acl_main_t *am = &acl_main;
u32 n_left, *from;
vlib_node_runtime_t *error_node;
from = vlib_frame_vector_args (frame);
- error_node = vlib_node_get_runtime (vm, fa_node->index);
+ error_node = vlib_node_get_runtime (vm, node->node_index);
vlib_get_buffers (vm, from, bufs, frame->n_vectors);
/* set the initial values for the current buffer the next pointers */
b = bufs;
return frame->n_vectors;
}
-vlib_node_registration_t acl_in_nonip_node;
VLIB_NODE_FN (acl_in_nonip_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return nonip_in_out_node_fn (vm, node, frame, 0, &acl_in_nonip_node);
+ return nonip_in_out_node_fn (vm, node, frame, 0);
}
-vlib_node_registration_t acl_out_nonip_node;
VLIB_NODE_FN (acl_out_nonip_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return nonip_in_out_node_fn (vm, node, frame, 1, &acl_in_nonip_node);
+ return nonip_in_out_node_fn (vm, node, frame, 1);
}
/* *INDENT-OFF* */
-VLIB_NODE_FUNCTION_MULTIARCH (acl_in_nonip_node, acl_in_nonip_node_fn)
-VLIB_NODE_FUNCTION_MULTIARCH (acl_out_nonip_node, acl_out_nonip_node_fn)
-
VLIB_REGISTER_NODE (acl_in_nonip_node) =
{
.name = "acl-plugin-in-nonip-l2",
always_inline uword
acl_fa_node_fn (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame, int is_ip6,
- int is_input, int is_l2_path,
- vlib_node_registration_t * acl_fa_node)
+ int is_input, int is_l2_path)
{
u32 n_left, *from;
u32 pkts_acl_checked = 0;
from = vlib_frame_vector_args (frame);
- error_node = vlib_node_get_runtime (vm, acl_fa_node->index);
+ error_node = vlib_node_get_runtime (vm, node->node_index);
vlib_get_buffers (vm, from, bufs, frame->n_vectors);
/* set the initial values for the current buffer the next pointers */
vlib_buffer_enqueue_to_next (vm, node, from, nexts, frame->n_vectors);
- vlib_node_increment_counter (vm, acl_fa_node->index,
+ vlib_node_increment_counter (vm, node->node_index,
ACL_FA_ERROR_ACL_CHECK, pkts_acl_checked);
- vlib_node_increment_counter (vm, acl_fa_node->index,
+ vlib_node_increment_counter (vm, node->node_index,
ACL_FA_ERROR_ACL_PERMIT, pkts_acl_permit);
- vlib_node_increment_counter (vm, acl_fa_node->index,
+ vlib_node_increment_counter (vm, node->node_index,
ACL_FA_ERROR_ACL_NEW_SESSION,
pkts_new_session);
- vlib_node_increment_counter (vm, acl_fa_node->index,
+ vlib_node_increment_counter (vm, node->node_index,
ACL_FA_ERROR_ACL_EXIST_SESSION,
pkts_exist_session);
- vlib_node_increment_counter (vm, acl_fa_node->index,
+ vlib_node_increment_counter (vm, node->node_index,
ACL_FA_ERROR_ACL_RESTART_SESSION_TIMER,
pkts_restart_session_timer);
return frame->n_vectors;
}
-vlib_node_registration_t acl_in_l2_ip6_node;
VLIB_NODE_FN (acl_in_l2_ip6_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 1, 1, 1, &acl_in_l2_ip6_node);
+ return acl_fa_node_fn (vm, node, frame, 1, 1, 1);
}
-vlib_node_registration_t acl_in_l2_ip4_node;
VLIB_NODE_FN (acl_in_l2_ip4_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 0, 1, 1, &acl_in_l2_ip4_node);
+ return acl_fa_node_fn (vm, node, frame, 0, 1, 1);
}
-vlib_node_registration_t acl_out_l2_ip6_node;
VLIB_NODE_FN (acl_out_l2_ip6_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 1, 0, 1, &acl_out_l2_ip6_node);
+ return acl_fa_node_fn (vm, node, frame, 1, 0, 1);
}
-vlib_node_registration_t acl_out_l2_ip4_node;
VLIB_NODE_FN (acl_out_l2_ip4_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 0, 0, 1, &acl_out_l2_ip4_node);
+ return acl_fa_node_fn (vm, node, frame, 0, 0, 1);
}
/**** L3 processing path nodes ****/
-vlib_node_registration_t acl_in_fa_ip6_node;
VLIB_NODE_FN (acl_in_fa_ip6_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 1, 1, 0, &acl_in_fa_ip6_node);
+ return acl_fa_node_fn (vm, node, frame, 1, 1, 0);
}
-vlib_node_registration_t acl_in_fa_ip4_node;
VLIB_NODE_FN (acl_in_fa_ip4_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 0, 1, 0, &acl_in_fa_ip4_node);
+ return acl_fa_node_fn (vm, node, frame, 0, 1, 0);
}
-vlib_node_registration_t acl_out_fa_ip6_node;
VLIB_NODE_FN (acl_out_fa_ip6_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 1, 0, 0, &acl_out_fa_ip6_node);
+ return acl_fa_node_fn (vm, node, frame, 1, 0, 0);
}
-vlib_node_registration_t acl_out_fa_ip4_node;
VLIB_NODE_FN (acl_out_fa_ip4_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
- return acl_fa_node_fn (vm, node, frame, 0, 0, 0, &acl_out_fa_ip4_node);
+ return acl_fa_node_fn (vm, node, frame, 0, 0, 0);
}
static u8 *
format_fa_5tuple (u8 * s, va_list * args)
{
fa_5tuple_t *p5t = va_arg (*args, fa_5tuple_t *);
+ void *paddr0;
+ void *paddr1;
+ void *format_address_func;
+ void *ip_af;
+ void *ip_frag_txt =
+ p5t->pkt.is_nonfirst_fragment ? " non-initial fragment" : "";
if (p5t->pkt.is_ip6)
- return format (s, "lc_index %d (lsb16 of sw_if_index %d) l3 %s%s %U -> %U"
- " l4 proto %d l4_valid %d port %d -> %d tcp flags (%s) %02x rsvd %x",
- p5t->pkt.lc_index, p5t->l4.lsb_of_sw_if_index,
- "ip6",
- p5t->
- pkt.is_nonfirst_fragment ? " non-initial fragment" : "",
- format_ip6_address, &p5t->ip6_addr[0], format_ip6_address,
- &p5t->ip6_addr[1], p5t->l4.proto, p5t->pkt.l4_valid,
- p5t->l4.port[0], p5t->l4.port[1],
- p5t->pkt.tcp_flags_valid ? "valid" : "invalid",
- p5t->pkt.tcp_flags, p5t->pkt.flags_reserved);
+ {
+ ip_af = "ip6";
+ format_address_func = format_ip6_address;
+ paddr0 = &p5t->ip6_addr[0];
+ paddr1 = &p5t->ip6_addr[1];
+ }
else
- return format (s, "lc_index %d (lsb16 of sw_if_index %d) l3 %s%s %U -> %U"
- " l4 proto %d l4_valid %d port %d -> %d tcp flags (%s) %02x rsvd %x",
- p5t->pkt.lc_index, p5t->l4.lsb_of_sw_if_index,
- "ip4",
- p5t->
- pkt.is_nonfirst_fragment ? " non-initial fragment" : "",
- format_ip4_address, &p5t->ip4_addr[0], format_ip4_address,
- &p5t->ip4_addr[1], p5t->l4.proto, p5t->pkt.l4_valid,
- p5t->l4.port[0], p5t->l4.port[1],
- p5t->pkt.tcp_flags_valid ? "valid" : "invalid",
- p5t->pkt.tcp_flags, p5t->pkt.flags_reserved);
+ {
+ ip_af = "ip4";
+ format_address_func = format_ip4_address;
+ paddr0 = &p5t->ip4_addr[0];
+ paddr1 = &p5t->ip4_addr[1];
+ }
+
+ s =
+ format (s, "lc_index %d l3 %s%s ", p5t->pkt.lc_index, ip_af, ip_frag_txt);
+ s =
+ format (s, "%U -> %U ", format_address_func, paddr0, format_address_func,
+ paddr1);
+ s = format (s, "%U ", format_fa_session_l4_key, &p5t->l4);
+ s = format (s, "tcp flags (%s) %02x rsvd %x",
+ p5t->pkt.tcp_flags_valid ? "valid" : "invalid",
+ p5t->pkt.tcp_flags, p5t->pkt.flags_reserved);
+ return s;
}
#ifndef CLIB_MARCH_VARIANT