mirror of
https://xff.cz/git/u-boot/
synced 2025-10-22 10:31:56 +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:
@@ -353,3 +353,52 @@ U_BOOT_CMD(
|
||||
"[NTP server IP]\n"
|
||||
);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
int do_dns(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
if (argc == 1) {
|
||||
cmd_usage(cmdtp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* We should check for a valid hostname:
|
||||
* - Each label must be between 1 and 63 characters long
|
||||
* - the entire hostname has a maximum of 255 characters
|
||||
* - only the ASCII letters 'a' through 'z' (case-insensitive),
|
||||
* the digits '0' through '9', and the hyphen
|
||||
* - cannot begin or end with a hyphen
|
||||
* - no other symbols, punctuation characters, or blank spaces are
|
||||
* permitted
|
||||
* but hey - this is a minimalist implmentation, so only check length
|
||||
* and let the name server deal with things.
|
||||
*/
|
||||
if (strlen(argv[1]) >= 255) {
|
||||
printf("dns error: hostname too long\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
NetDNSResolve = argv[1];
|
||||
|
||||
if (argc == 3)
|
||||
NetDNSenvvar = argv[2];
|
||||
else
|
||||
NetDNSenvvar = NULL;
|
||||
|
||||
if (NetLoop(DNS) < 0) {
|
||||
printf("dns lookup of %s failed, check setup\n", argv[1]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
dns, 3, 1, do_dns,
|
||||
"lookup the IP of a hostname",
|
||||
"hostname [envvar]"
|
||||
);
|
||||
|
||||
#endif /* CONFIG_CMD_DNS */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user