mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 01:02:19 +02:00
Add DNS support
On 04 Oct 2008 Pieter posted a dns implementation for U-Boot. http://www.mail-archive.com/u-boot-users@lists.sourceforge.net/msg10216.html > > DNS can be enabled by setting CFG_CMD_DNS. After performing a query, > the serverip environment var is updated. > > Probably there are some cosmetic issues with the patch. Unfortunatly I > do not have the time to correct these. So if anybody else likes DNS > support in U-Boot and has the time, feel free to patch it in the main tree. Here it is again - slightly modified & smaller: - update to 2009-06 (Pieter's patch was for U-Boot 1.2.0) - README.dns is added - syntax is changed (now takes a third option, the env var to store the result in) - add a random port() function in net.c - sort Makefile in ./net/Makefile - dns just returns unless a env var is given - run through checkpatch, and clean up style issues - remove packet from stack - cleaned up some comments - failure returns much faster (if server responds, don't wait for timeout) - use built in functions (memcpy) rather than byte copy. Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org> Signed-off-by: Pieter Voorthuijsen <pieter.voorthuijsen@prodrive.nl> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
This commit is contained in:
29
net/net.c
29
net/net.c
@@ -92,6 +92,9 @@
|
||||
#if defined(CONFIG_CDP_VERSION)
|
||||
#include <timestamp.h>
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
#include "dns.h"
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CMD_NET)
|
||||
|
||||
@@ -291,6 +294,9 @@ NetInitLoop(proto_t protocol)
|
||||
NetServerIP = getenv_IPaddr ("serverip");
|
||||
NetOurNativeVLAN = getenv_VLAN("nvlan");
|
||||
NetOurVLAN = getenv_VLAN("vlan");
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
NetOurDNSIP = getenv_IPaddr("dnsip");
|
||||
#endif
|
||||
env_changed_id = env_id;
|
||||
}
|
||||
|
||||
@@ -425,6 +431,11 @@ restart:
|
||||
case SNTP:
|
||||
SntpStart();
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
case DNS:
|
||||
DnsStart();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
@@ -1518,6 +1529,14 @@ static int net_check_prereq (proto_t protocol)
|
||||
}
|
||||
goto common;
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
case DNS:
|
||||
if (NetOurDNSIP == 0) {
|
||||
puts("*** ERROR: DNS server address not given\n");
|
||||
return 1;
|
||||
}
|
||||
goto common;
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_NFS)
|
||||
case NFS:
|
||||
#endif
|
||||
@@ -1681,6 +1700,16 @@ void copy_filename (char *dst, char *src, int size)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CMD_NFS) || defined(CONFIG_CMD_SNTP) || defined(CONFIG_CMD_DNS)
|
||||
/*
|
||||
* make port a little random, but use something trivial to compute
|
||||
*/
|
||||
unsigned int random_port(void)
|
||||
{
|
||||
return 1024 + (get_timer(0) % 0x8000);;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ip_to_string (IPaddr_t x, char *s)
|
||||
{
|
||||
x = ntohl (x);
|
||||
|
Reference in New Issue
Block a user