aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Getz2009-07-21 12:15:28 -0400
committerBen Warren2009-07-22 23:17:01 -0700
commit97cfe86163505ea18e7ff7b71e78df5bb03dad57 (patch)
treed4b32be4b5765ba9de50864a3b17af7286ba2cc0
parent0b23fb368d08c9669fac647971ff249c3f9fee8f (diff)
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 <rgetz@blackfin.uclinux.org> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
-rw-r--r--README5
-rw-r--r--net/net.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/README b/README
index 4c74cb79347..90714727cde 100644
--- a/README
+++ b/README
@@ -1184,6 +1184,11 @@ The following options need to be configured:
Defines a default value for the IP address of a TFTP
server to contact when using the "tftboot" command.
+ CONFIG_KEEP_SERVERADDR
+
+ Keeps the server's MAC address, in the env 'serveraddr'
+ for passing to bootargs (like Linux's netconsole option)
+
- Multicast TFTP Mode:
CONFIG_MCAST_TFTP
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);