From d9bec9f42ab34383737c8a94429aa02fe76d7946 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 18 Jul 2009 21:04:08 -0400 Subject: net: rename NetRxPkt to NetRxPacket The net code is mostly consistent in using 'Packet' rather than 'Pkt', so rename the minor detractor to follow suite. Signed-off-by: Mike Frysinger Signed-off-by: Ben Warren --- net/net.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'net/net.c') diff --git a/net/net.c b/net/net.c index 5637cf54f6d..e215fd8d9a9 100644 --- a/net/net.c +++ b/net/net.c @@ -139,8 +139,8 @@ uchar NetServerEther[6] = /* Boot server enet address */ { 0, 0, 0, 0, 0, 0 }; IPaddr_t NetOurIP; /* Our IP addr (0 = unknown) */ IPaddr_t NetServerIP; /* Server IP addr (0 = unknown) */ -volatile uchar *NetRxPkt; /* Current receive packet */ -int NetRxPktLen; /* Current rx packet length */ +volatile uchar *NetRxPacket; /* Current receive packet */ +int NetRxPacketLen; /* Current rx packet length */ unsigned NetIPID; /* IP packet ID */ uchar NetBcastAddr[6] = /* Ethernet bcast address */ { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; @@ -1122,8 +1122,8 @@ NetReceive(volatile uchar * inpkt, int len) printf("packet received\n"); #endif - NetRxPkt = inpkt; - NetRxPktLen = len; + NetRxPacket = inpkt; + NetRxPacketLen = len; et = (Ethernet_t *)inpkt; /* too small packet? */ -- cgit v1.2.3 From 1a32bf41881b5dbe3119cb77a33572b4d462cabf Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Mon, 20 Jul 2009 14:53:54 -0400 Subject: 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 Signed-off-by: Pieter Voorthuijsen Signed-off-by: Ben Warren --- net/net.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'net/net.c') diff --git a/net/net.c b/net/net.c index e215fd8d9a9..4bbe5313c3e 100644 --- a/net/net.c +++ b/net/net.c @@ -92,6 +92,9 @@ #if defined(CONFIG_CDP_VERSION) #include #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); -- cgit v1.2.3 From 09133f8580f0106429ba3600f1855bd3577ae58b Mon Sep 17 00:00:00 2001 From: Michael Zaidman Date: Tue, 14 Jul 2009 23:37:12 +0300 Subject: DHCP regression on 2009-06 Fixed the DHCP/BOOTP/RARP regression introduced in u-boot-2009.06 by initializing our IP addr to 0 in order to accept any IP addr assigned to us by the DHCP/BOOTP/RARP server. Ack-by: Robin Getz Signed-off-by: Michael Zaidman Signed-off-by: Ben Warren --- net/net.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'net/net.c') diff --git a/net/net.c b/net/net.c index 4bbe5313c3e..7ce947db300 100644 --- a/net/net.c +++ b/net/net.c @@ -394,17 +394,20 @@ restart: #if defined(CONFIG_CMD_DHCP) case DHCP: BootpTry = 0; + NetOurIP = 0; DhcpRequest(); /* Basically same as BOOTP */ break; #endif case BOOTP: BootpTry = 0; + NetOurIP = 0; BootpRequest (); break; case RARP: RarpTry = 0; + NetOurIP = 0; RarpRequest (); break; #if defined(CONFIG_CMD_PING) -- cgit v1.2.3 From 97cfe86163505ea18e7ff7b71e78df5bb03dad57 Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Tue, 21 Jul 2009 12:15:28 -0400 Subject: Save server's MAC address in environment Linux's netconsole works much better when you can pass it the MAC address of the server. (otherwise it just uses broadcast, which everyone else on my network complains about :) This sets the env var "serveraddr" (to match ethaddr), so that you can pass it to linux with whatever bootargs you want to.... addnetconsole=set bootargs $(bootargs) netconsole=@$(ipaddr)/eth0,@$(serverip)/$(serveraddr) Signed-of-by: Robin Getz Signed-off-by: Ben Warren --- net/net.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'net/net.c') diff --git a/net/net.c b/net/net.c index 7ce947db300..641c37cb8f3 100644 --- a/net/net.c +++ b/net/net.c @@ -1287,6 +1287,15 @@ NetReceive(volatile uchar * inpkt, int len) /* are we waiting for a reply */ if (!NetArpWaitPacketIP || !NetArpWaitPacketMAC) break; + +#ifdef CONFIG_KEEP_SERVERADDR + if (NetServerIP == NetArpWaitPacketIP) { + char buf[20]; + sprintf(buf, "%pM", arp->ar_data); + setenv("serveraddr", buf); + } +#endif + #ifdef ET_DEBUG printf("Got ARP REPLY, set server/gtwy eth addr (%pM)\n", arp->ar_data); -- cgit v1.2.3