{
u32 matched;
- matched = eth_identify_subint (hi, b0, match_flags,
- main_intf, vlan_intf, qinq_intf,
- new_sw_if_index, error0, is_l2);
+ matched = eth_identify_subint (hi, match_flags, main_intf, vlan_intf,
+ qinq_intf, new_sw_if_index, error0, is_l2);
if (matched)
{
u32x8_scatter_one ((u32x8) r, 4, &vnet_buffer (b[2])->l2_hdr_offset);
u32x8_scatter_one ((u32x8) r, 6, &vnet_buffer (b[3])->l2_hdr_offset);
- ASSERT (b[0]->current_data == vnet_buffer (b[0])->l3_hdr_offset);
- ASSERT (b[1]->current_data == vnet_buffer (b[1])->l3_hdr_offset);
- ASSERT (b[2]->current_data == vnet_buffer (b[2])->l3_hdr_offset);
- ASSERT (b[3]->current_data == vnet_buffer (b[3])->l3_hdr_offset);
-
- ASSERT (b[0]->current_data - vnet_buffer (b[0])->l2_hdr_offset == adv);
- ASSERT (b[1]->current_data - vnet_buffer (b[1])->l2_hdr_offset == adv);
- ASSERT (b[2]->current_data - vnet_buffer (b[2])->l2_hdr_offset == adv);
- ASSERT (b[3]->current_data - vnet_buffer (b[3])->l2_hdr_offset == adv);
+ if (is_l3)
+ {
+ ASSERT (b[0]->current_data == vnet_buffer (b[0])->l3_hdr_offset);
+ ASSERT (b[1]->current_data == vnet_buffer (b[1])->l3_hdr_offset);
+ ASSERT (b[2]->current_data == vnet_buffer (b[2])->l3_hdr_offset);
+ ASSERT (b[3]->current_data == vnet_buffer (b[3])->l3_hdr_offset);
+
+ ASSERT (b[0]->current_data - vnet_buffer (b[0])->l2_hdr_offset == adv);
+ ASSERT (b[1]->current_data - vnet_buffer (b[1])->l2_hdr_offset == adv);
+ ASSERT (b[2]->current_data - vnet_buffer (b[2])->l2_hdr_offset == adv);
+ ASSERT (b[3]->current_data - vnet_buffer (b[3])->l2_hdr_offset == adv);
+ }
+ else
+ {
+ ASSERT (b[0]->current_data == vnet_buffer (b[0])->l2_hdr_offset);
+ ASSERT (b[1]->current_data == vnet_buffer (b[1])->l2_hdr_offset);
+ ASSERT (b[2]->current_data == vnet_buffer (b[2])->l2_hdr_offset);
+ ASSERT (b[3]->current_data == vnet_buffer (b[3])->l2_hdr_offset);
+
+ ASSERT (b[0]->current_data - vnet_buffer (b[0])->l3_hdr_offset == -adv);
+ ASSERT (b[1]->current_data - vnet_buffer (b[1])->l3_hdr_offset == -adv);
+ ASSERT (b[2]->current_data - vnet_buffer (b[2])->l3_hdr_offset == -adv);
+ ASSERT (b[3]->current_data - vnet_buffer (b[3])->l3_hdr_offset == -adv);
+ }
#else
vnet_buffer (b[0])->l2_hdr_offset = b[0]->current_data;