Message ID | 1410504495-13118-1-git-send-email-gsi@denx.de |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On Fri, Sep 12, 2014 at 08:48:15AM +0200, Gerhard Sittig wrote: > When a DNS query is sent out, the ethernet packet can get directed to > the MAC address of a server that was communicated to before. This is > wrong when the previously stored MAC address corresponds to a different > server's IP address, i.e. when the IP address of the previous and the > current communication are different. > > The error can get reproduced by running a sequence of e.g. a TFTP > download and a DNS query, where the TFTP and DNS servers reside on > individual machines. > > The fix is to clear the server's MAC address that might be left from a > previous operation, and to fetch the peer's MAC address in a new ARP > lookup, before the DNS query is sent. This is the approach taken in > other network services, like 8e52533d1095 ("net: tftpsrv: Get correct > client MAC address"). > > Reported-by: Dirk Zimoch <dirk.zimoch@psi.ch> > Signed-off-by: Gerhard Sittig <gsi@denx.de> Applied to u-boot/master, thanks!
diff --git a/net/dns.c b/net/dns.c index ff9ddffc9d0a..dd4532015045 100644 --- a/net/dns.c +++ b/net/dns.c @@ -202,5 +202,8 @@ DnsStart(void) NetSetTimeout(DNS_TIMEOUT, DnsTimeout); net_set_udp_handler(DnsHandler); + /* Clear a previous MAC address, the server IP might have changed. */ + memset(NetServerEther, 0, sizeof(NetServerEther)); + DnsSend(); }
When a DNS query is sent out, the ethernet packet can get directed to the MAC address of a server that was communicated to before. This is wrong when the previously stored MAC address corresponds to a different server's IP address, i.e. when the IP address of the previous and the current communication are different. The error can get reproduced by running a sequence of e.g. a TFTP download and a DNS query, where the TFTP and DNS servers reside on individual machines. The fix is to clear the server's MAC address that might be left from a previous operation, and to fetch the peer's MAC address in a new ARP lookup, before the DNS query is sent. This is the approach taken in other network services, like 8e52533d1095 ("net: tftpsrv: Get correct client MAC address"). Reported-by: Dirk Zimoch <dirk.zimoch@psi.ch> Signed-off-by: Gerhard Sittig <gsi@denx.de> --- This patch suffers from a checkpatch warning about CamelCase, which cannot get resolved, as it is a consequence of established identifier names in the network part of the code base. changes in v2: - adjust the recipients lists to include the network custodian - drop an obvious/redundant comment as recommended by Joe Hershberger --- net/dns.c | 3 +++ 1 file changed, 3 insertions(+)