net: Make sure the ethaddr is updated in net_init()
authorJoe Hershberger <joe.hershberger@ni.com>
Mon, 23 Jul 2012 13:11:16 +0000 (13:11 +0000)
committerJoe Hershberger <joe.hershberger@ni.com>
Tue, 24 Jul 2012 19:09:40 +0000 (14:09 -0500)
NetConsole may call NetSendUDPPacket before NetLoop is called.  This
will cause the source MAC address (NetOurEther) to be wrong.  Instead
of only changing it in NetLoop, move it to NetLoopInit so that it is
also updated when net_init() is called (especially by nc_start()).

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reported-by: Michael Walle <michael@walle.cc>
Acked-by: Michael Walle <michael@walle.cc>
net/net.c

index 9de7d92643e04163ee504a75a63f01ec8b2e666e..e8ff0662b8858f313f769e26c134c1e93d5bd10e 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -256,6 +256,7 @@ static void NetInitLoop(void)
 #endif
                env_changed_id = env_id;
        }
+       memcpy(NetOurEther, eth_get_dev()->enetaddr, 6);
 
        return;
 }
@@ -322,8 +323,6 @@ int NetLoop(enum proto_t protocol)
        }
 
 restart:
-       memcpy(NetOurEther, eth_get_dev()->enetaddr, 6);
-
        net_set_state(NETLOOP_CONTINUE);
 
        /*