* miss:
* move on down the feature arc
*/
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
}
if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
if (is_l2_path)
next0 = vnet_l2_feature_next (b[0], l2_feat_next_node_index, 0);
else
- vnet_feature_next (sw_if_index0, &next0, b[0]);
+ vnet_feature_next (&next0, b[0]);
}
#ifdef FA_NODE_VERBOSE_DEBUG
clib_warning
b0 = vlib_get_buffer (vm, bi0);
b1 = vlib_get_buffer (vm, bi1);
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_TX],
- &next0, b0);
- vnet_feature_next (vnet_buffer (b1)->sw_if_index[VLIB_TX],
- &next1, b1);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
len0 = vlib_buffer_length_in_chain (vm, b0);
ethernet_header_t *eh0 = vlib_buffer_get_current (b0);
b0 = vlib_get_buffer (vm, bi0);
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_TX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
len0 = vlib_buffer_length_in_chain (vm, b0);
ethernet_header_t *eh0 = vlib_buffer_get_current (b0);
{
gpd0 = gbp_policy_dpo_get_i (dpo0->dpoi_index);
src_epg0 = gpd0->gpd_epg;
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
}
else
{
}
/* Setup packet for next IP feature */
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_RX], &next0, b0);
- vnet_feature_next(vnet_buffer(b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next(&next0, b0);
+ vnet_feature_next(&next1, b1);
if (is_ip4)
{
ip60 = vlib_buffer_get_current (b0);
/* Setup packet for next IP feature */
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next(&next0, b0);
if (is_ip4)
/* Treat IP4 frag packets as "experimental" protocol for now
ip61->dst_address.as_u64[0] = ila_address1->as_u64[0];
ip61->dst_address.as_u64[1] = ila_address1->as_u64[1];
- vnet_feature_next (vnet_buffer (p0)->sw_if_index[VLIB_RX], &next0, p0);
- vnet_feature_next (vnet_buffer (p1)->sw_if_index[VLIB_RX], &next1, p1);
+ vnet_feature_next (&next0, p0);
+ vnet_feature_next (&next1, p1);
vlib_validate_buffer_enqueue_x2 (vm, node, next_index, to_next,
n_left_to_next, pi0, pi1, next0,
ip60->dst_address.as_u64[0] = ila_address0->as_u64[0];
ip60->dst_address.as_u64[1] = ila_address0->as_u64[1];
- vnet_feature_next (vnet_buffer (p0)->sw_if_index[VLIB_RX], &next0, p0);
+ vnet_feature_next (&next0, p0);
vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
n_left_to_next, pi0, next0);
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
&& (udp1->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next (&next1, b1);
goto trace1;
}
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace00;
}
&& (udp0->dst_port
== clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace00;
}
&& (udp1->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next (&next1, b1);
goto trace01;
}
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
sw_if_index0 = vnet_buffer(b0)->sw_if_index[VLIB_RX];
rx_fib_index0 = ip4_fib_table_get_index_for_sw_if_index(sw_if_index0);
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
if (PREDICT_FALSE(ip0->ttl == 1))
{
}
else
{
- vnet_feature_next (0, &next0, p0);
+ vnet_feature_next (&next0, p0);
}
if (PREDICT_FALSE (p0->flags & VLIB_BUFFER_IS_TRACED))
*bond_sw_if_index = bif->sw_if_index;
*error = 0;
- vnet_feature_next ( /* not used */ 0, next_index, b);
+ vnet_feature_next (next_index, b);
}
VLIB_NODE_FN (bond_input_node) (vlib_main_t * vm,
ip2 = vlib_buffer_get_current (b2);
ip3 = vlib_buffer_get_current (b2);
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_TX],
- &next0, b0);
- vnet_feature_next (vnet_buffer (b1)->sw_if_index[VLIB_TX],
- &next1, b1);
- vnet_feature_next (vnet_buffer (b2)->sw_if_index[VLIB_TX],
- &next2, b2);
- vnet_feature_next (vnet_buffer (b3)->sw_if_index[VLIB_TX],
- &next3, b3);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
+ vnet_feature_next (&next2, b2);
+ vnet_feature_next (&next3, b3);
if (ip0->protocol == IP_PROTOCOL_UDP)
{
* assigned) we are looking for the preverbial needle in the haystack
* so assume the packet is not the one we are looking for.
*/
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_TX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
/*
* all we are looking for here is DHCP/BOOTP packet-to-client
if (b0->flags & VNET_BUFFER_F_IS_DVR)
next0 = DVR_REINJECT_OUTPUT;
else
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_TX],
- &next0, b0);
+ vnet_feature_next( &next0, b0);
if (b1->flags & VNET_BUFFER_F_IS_DVR)
next1 = DVR_REINJECT_OUTPUT;
else
- vnet_feature_next(vnet_buffer(b1)->sw_if_index[VLIB_TX],
- &next1, b1);
+ vnet_feature_next( &next1, b1);
if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED))
{
if (b0->flags & VNET_BUFFER_F_IS_DVR)
next0 = DVR_REINJECT_OUTPUT;
else
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_TX],
- &next0, b0);
+ vnet_feature_next( &next0, b0);
if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED))
{
en1 = vlib_buffer_get_current (b1);
sw_if_index1 = vnet_buffer (b1)->sw_if_index[VLIB_RX];
- vnet_feature_next (sw_if_index0, &next0, b0);
- vnet_feature_next (sw_if_index1, &next1, b1);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
rx0 = p2p_ethernet_lookup (sw_if_index0, en0->src_address);
rx1 = p2p_ethernet_lookup (sw_if_index1, en1->src_address);
en0 = vlib_buffer_get_current (b0);
sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX];
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
rx0 = p2p_ethernet_lookup (sw_if_index0, en0->src_address);
if (rx0 != ~0)
}
static_always_inline void *
-vnet_feature_next_with_data (u32 sw_if_index, u32 * next0,
- vlib_buffer_t * b0, u32 n_data_bytes)
+vnet_feature_next_with_data (u32 * next0, vlib_buffer_t * b0,
+ u32 n_data_bytes)
{
vnet_feature_main_t *fm = &feature_main;
u8 arc = vnet_buffer (b0)->feature_arc_index;
}
static_always_inline void
-vnet_feature_next (u32 sw_if_index, u32 * next0, vlib_buffer_t * b0)
+vnet_feature_next (u32 * next0, vlib_buffer_t * b0)
{
- vnet_feature_next_with_data (sw_if_index, next0, b0, 0);
+ vnet_feature_next_with_data (next0, b0, 0);
}
static_always_inline int
}
/* Setup packet for next IP feature */
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0,
- b0);
- vnet_feature_next (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1,
- b1);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
if (is_ip4)
{
ip60 = vlib_buffer_get_current (b0);
/* Setup packet for next IP feature */
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0,
- b0);
+ vnet_feature_next (&next0, b0);
if (is_ip4)
/* Treat IP4 frag packets as "experimental" protocol for now
stats_n_bytes[b0_ctype] += vlib_buffer_length_in_chain (vm, b0);
stats_n_packets[b0_ctype] += 1;
- vnet_feature_next (sw_if_index, &next0, b0);
+ vnet_feature_next (&next0, b0);
vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
n_left_to_next, bi0, next0);
n_left_to_next -= 1;
if (is_feature && IP4_ERROR_NONE == error0)
{
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
}
vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
n_left_to_next, bi0, next0);
ip0 = vlib_buffer_get_current (b0);
- c0 = vnet_feature_next_with_data (sw_if_index0, &next0,
- b0, sizeof (c0[0]));
+ c0 = vnet_feature_next_with_data (&next0, b0, sizeof (c0[0]));
/* we can't use the default VRF here... */
for (i = 0; i < IP_SOURCE_AND_PORT_RANGE_CHECK_N_PROTOCOLS; i++)
ip0 = vlib_buffer_get_current (p0);
ip1 = vlib_buffer_get_current (p1);
- c0 =
- vnet_feature_next_with_data (vnet_buffer (p0)->sw_if_index
- [VLIB_RX], &next0, p0,
- sizeof (c0[0]));
- c1 =
- vnet_feature_next_with_data (vnet_buffer (p1)->sw_if_index
- [VLIB_RX], &next1, p1,
- sizeof (c1[0]));
+ c0 = vnet_feature_next_with_data (&next0, p0, sizeof (c0[0]));
+ c1 = vnet_feature_next_with_data (&next1, p1, sizeof (c1[0]));
mtrie0 = &ip4_fib_get (c0->fib_index)->mtrie;
mtrie1 = &ip4_fib_get (c1->fib_index)->mtrie;
p0 = vlib_get_buffer (vm, pi0);
ip0 = vlib_buffer_get_current (p0);
- c0 =
- vnet_feature_next_with_data (vnet_buffer (p0)->sw_if_index
- [VLIB_RX], &next0, p0,
- sizeof (c0[0]));
+ c0 = vnet_feature_next_with_data (&next0, p0, sizeof (c0[0]));
mtrie0 = &ip4_fib_get (c0->fib_index)->mtrie;
n_left_to_next -= 1;
if (is_feature && IP6_ERROR_NONE == error0)
{
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
}
vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
n_left_to_next, bi0, next0);
vlib_node_runtime_t * nr)
{
u32 next;
- u32 sw_if_index = vnet_buffer (b)->sw_if_index[VLIB_TX];
vlib_main_t *vm = vlib_get_main ();
vlib_node_t *node = vlib_get_node (vm, nr->node_index);
- vnet_feature_next (sw_if_index, &next, b);
+ vnet_feature_next (&next, b);
return node->next_nodes[next];
}
b0 = vlib_get_buffer (vm, bi0);
b0->flags |= VNET_BUFFER_F_IS_IP4;
b0->flags &= ~VNET_BUFFER_F_IS_IP6;
- c0 =
- vnet_feature_next_with_data (vnet_buffer (b0)->sw_if_index
- [VLIB_RX], &next0, b0,
- sizeof (c0[0]));
+ c0 = vnet_feature_next_with_data (&next0, b0, sizeof (c0[0]));
spd0 = pool_elt_at_index (im->spds, c0->spd_index);
b0 = vlib_get_buffer (vm, bi0);
b0->flags |= VNET_BUFFER_F_IS_IP6;
b0->flags &= ~VNET_BUFFER_F_IS_IP4;
- c0 =
- vnet_feature_next_with_data (vnet_buffer (b0)->sw_if_index
- [VLIB_RX], &next0, b0,
- sizeof (c0[0]));
+ c0 = vnet_feature_next_with_data (&next0, b0, sizeof (c0[0]));
spd0 = pool_elt_at_index (im->spds, c0->spd_index);
{
/* Go to next node on the ip6 configuration chain */
if (PREDICT_TRUE (session != 0))
- vnet_feature_next (session->sw_if_index, &next_index, b);
+ vnet_feature_next (&next_index, b);
}
}
ethernet_vlan_header_set_priority_net_order (vlan0, qos0);
}
}
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
{
ip4_header_t *ip4_0;
ip6_header_t *ip6_0;
vlib_buffer_t *b0;
- u32 sw_if_index0, next0, bi0;
+ u32 next0, bi0;
qos_bits_t qos0;
u8 l2_len;
vnet_buffer2 (b0)->qos.bits = qos0;
vnet_buffer2 (b0)->qos.source = QOS_SOURCE_IP;
b0->flags |= VNET_BUFFER_F_QOS_DATA_VALID;
- sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX];
if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE) &&
(b0->flags & VLIB_BUFFER_IS_TRACED)))
L2INPUT_FEAT_L2_IP_QOS_RECORD);
}
else
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
/* verify speculative enqueue, maybe switch current next frame */
vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
break;
case SPAN_FEAT_DEVICE:
default:
- vnet_feature_next (sw_if_index0, &next0, b0);
- vnet_feature_next (sw_if_index1, &next1, b1);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
break;
}
break;
case SPAN_FEAT_DEVICE:
default:
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
break;
}
}
/* Setup packet for next IP feature */
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0,
- b0);
- vnet_feature_next (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1,
- b1);
+ vnet_feature_next (&next0, b0);
+ vnet_feature_next (&next1, b1);
if (is_ip4)
{
ip60 = vlib_buffer_get_current (b0);
/* Setup packet for next IP feature */
- vnet_feature_next (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0,
- b0);
+ vnet_feature_next (&next0, b0);
if (is_ip4)
proto0 = ip40->protocol;
}
/* Setup packet for next IP feature */
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_RX], &next0, b0);
- vnet_feature_next(vnet_buffer(b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next(&next0, b0);
+ vnet_feature_next(&next1, b1);
if (is_ip4)
{
ip60 = vlib_buffer_get_current (b0);
/* Setup packet for next IP feature */
- vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next(&next0, b0);
if (is_ip4)
/* Treat IP4 frag packets as "experimental" protocol for now