l2: skip arp term for locally originated packets
Mark arp packet as locally originated when probing/replying and don't apply any arp-term logic against it. Type: fix Signed-off-by: Stanislav Zaikin <zstaseg@gmail.com> Change-Id: I305ff5cac8cac456decf92f21b961aa4ce286079
This commit is contained in:

committed by
John Lo

parent
c37ce79076
commit
7dc351f689
@ -68,6 +68,8 @@ arp_mk_reply (vnet_main_t * vnm,
|
||||
clib_mem_unaligned (&arp0->ip4_over_ethernet[0].ip4.data_u32, u32) =
|
||||
if_addr0->data_u32;
|
||||
|
||||
p0->flags |= VNET_BUFFER_F_LOCALLY_ORIGINATED;
|
||||
|
||||
/* Hardware must be ethernet-like. */
|
||||
ASSERT (vec_len (hw_if0->hw_address) == 6);
|
||||
|
||||
|
@ -61,6 +61,7 @@ ip4_neighbor_probe (vlib_main_t *vm, vnet_main_t *vnm,
|
||||
h0->ip4_over_ethernet[1].ip4 = *dst;
|
||||
|
||||
vnet_buffer (b0)->sw_if_index[VLIB_TX] = adj0->rewrite_header.sw_if_index;
|
||||
b0->flags |= VNET_BUFFER_F_LOCALLY_ORIGINATED;
|
||||
|
||||
vlib_buffer_advance (b0, -adj0->rewrite_header.data_bytes);
|
||||
|
||||
|
@ -290,6 +290,9 @@ arp_term_l2bd (vlib_main_t * vm,
|
||||
ethertype0 = clib_net_to_host_u16 (*(u16 *) (l3h0 - 2));
|
||||
arp0 = (ethernet_arp_header_t *) l3h0;
|
||||
|
||||
if (p0->flags & VNET_BUFFER_F_LOCALLY_ORIGINATED)
|
||||
goto next_l2_feature;
|
||||
|
||||
if (ethertype0 != ETHERNET_TYPE_ARP)
|
||||
goto check_ip6_nd;
|
||||
|
||||
|
Reference in New Issue
Block a user