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",
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;
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;
}