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:
Thomas Huth 2015-11-26 23:06:21 +01:00 committed by Alexey Kardashevskiy
parent b4c93802a5
commit a2e7a5c2be
1 changed files with 1 additions and 1 deletions

View File

@ -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