Fix tracking of pending outgoing packets when handling ARP replies
pending_pkt.pkt_pending is never read, thus setting it to 0 in handle_arp() does not make much sense. On the other hand, arp_table[i].pkt_pending is never set back to 0, but it is checked for tracking which packets still have to be sent in handle_arp(), thus we might send out the same queued packet multiple times when receiving more than one ARP packet from the other side. So setting "pending_pkt.pkt_pending = 0" seems to be a typo, and "arp_table[i].pkt_pending = 0" should be right instead. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
This commit is contained in:
parent
b4c93802a5
commit
a2e7a5c2be
|
@ -758,7 +758,7 @@ handle_arp(int fd, uint8_t * packet, int32_t packetsize)
|
|||
memcpy(ethh -> dest_mac, arp_table[i].mac_addr, 6);
|
||||
|
||||
send_ether(fd, pending_pkt.eth_frame, pending_pkt.eth_len);
|
||||
pending_pkt.pkt_pending = 0;
|
||||
arp_table[i].pkt_pending = 0;
|
||||
arp_table[i].eth_len = 0;
|
||||
}
|
||||
return 0; // no error
|
||||
|
|
Loading…
Reference in New Issue