Fix mac handling in blind mode

This commit is contained in:
Joseph C. Lehner 2020-03-01 22:32:26 +01:00
parent ddebe8979e
commit 4c376a76f8

6
nmrp.c
View file

@ -492,8 +492,6 @@ int nmrp_do(struct nmrpd_args *args)
status = pkt_recv(sock, &rx);
if (status == 0) {
if (memcmp(rx.eh.ether_dhost, src, 6) == 0) {
// set the destination MAC for all subsequent packages
memcpy(tx.eh.ether_dhost, rx.eh.ether_shost, 6);
break;
} else if (verbosity) {
printf("\nIgnoring bogus response: %s -> %s.\n",
@ -512,7 +510,7 @@ int nmrp_do(struct nmrpd_args *args)
goto out;
} else {
// we're blind, so fake a response from the MAC specified by -m
memcpy(rx.eh.ether_dhost, dest, 6);
memcpy(rx.eh.ether_shost, dest, 6);
msg_init(&rx.msg, NMRP_C_CONF_REQ);
printf("Faking one.");
break;
@ -523,6 +521,8 @@ int nmrp_do(struct nmrpd_args *args)
printf("\n");
memcpy(tx.eh.ether_dhost, rx.eh.ether_shost, 6);
if (ethsock_arp_add(sock, rx.eh.ether_shost, ipaddr.s_addr, &arp_undo) != 0) {
goto out;
}