From: Joseph C. Lehner Date: Sun, 1 Mar 2020 21:32:26 +0000 (+0100) Subject: Fix mac handling in blind mode X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4c376a76f86779b7f8e98871f9a864fc8aea2b60;p=oweals%2Fnmrpflash.git Fix mac handling in blind mode --- diff --git a/nmrp.c b/nmrp.c index 1f17fd8..d85d5ae 100644 --- a/nmrp.c +++ b/nmrp.c @@ -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; }