summaryrefslogtreecommitdiff
path: root/net/net.c
diff options
context:
space:
mode:
authorRobin Getz <rgetz@blackfin.uclinux.org>2009-07-21 12:15:28 -0400
committerBen Warren <biggerbadderben@gmail.com>2009-07-22 23:17:01 -0700
commit97cfe86163505ea18e7ff7b71e78df5bb03dad57 (patch)
treed4b32be4b5765ba9de50864a3b17af7286ba2cc0 /net/net.c
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>
Diffstat (limited to 'net/net.c')
-rw-r--r--net/net.c9
1 files changed, 9 insertions, 0 deletions
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);