u32 chain_hits = 0;
input_acl_table_id_t tid;
vlib_node_runtime_t * error_node;
+ u32 n_next_nodes;
+
+ n_next_nodes = node->n_next_nodes;
if (is_ip4)
{
table_index0 = vnet_buffer(b0)->l2_classify.table_index;
e0 = 0;
t0 = 0;
-
vnet_get_config_data (am->vnet_config_main[tid],
- &vnet_buffer(b0)->ip.current_config_index,
+ &b0->current_config_index,
&next0,
/* # bytes of config data */ 0);
+ vnet_buffer(b0)->l2_classify.opaque_index = ~0;
+
if (PREDICT_TRUE(table_index0 != ~0))
{
hash0 = vnet_buffer(b0)->l2_classify.hash;
now);
if (e0)
{
+ vnet_buffer(b0)->l2_classify.opaque_index
+ = e0->opaque_index;
vlib_buffer_advance (b0, e0->advance);
- next0 = (e0->next_index < ACL_NEXT_INDEX_N_NEXT)?
+ next0 = (e0->next_index < n_next_nodes)?
e0->next_index:next0;
hits++;
t0->next_table_index);
else
{
- next0 = (t0->miss_next_index < ACL_NEXT_INDEX_N_NEXT)?
+ next0 = (t0->miss_next_index < n_next_nodes)?
t0->miss_next_index:next0;
misses++;
(t0, (u8 *) h0, hash0, now);
if (e0)
{
+ vnet_buffer(b0)->l2_classify.opaque_index
+ = e0->opaque_index;
vlib_buffer_advance (b0, e0->advance);
- next0 = (e0->next_index < ACL_NEXT_INDEX_N_NEXT)?
+ next0 = (e0->next_index < n_next_nodes)?
e0->next_index:next0;
hits++;
chain_hits++;
},
};
+VLIB_NODE_FUNCTION_MULTIARCH (ip4_inacl_node, ip4_inacl)
+
static uword
ip6_inacl (vlib_main_t * vm,
vlib_node_runtime_t * node,
},
};
+VLIB_NODE_FUNCTION_MULTIARCH (ip6_inacl_node, ip6_inacl)
+
static clib_error_t *
ip_inacl_init (vlib_main_t * vm)
{