diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2010-06-11 14:12:12 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-06-22 15:44:44 +0200 |
commit | e7048e1862a16866766a3584fe946012a206c110 (patch) | |
tree | 3950cfb49bcdb3b062224f94b49f93f94aa4c73a /net/net.c | |
parent | 7867ceb8dc5c4d2c64d337aa130c57a05d9b556a (diff) | |
download | barebox-e7048e1862a16866766a3584fe946012a206c110.tar.gz barebox-e7048e1862a16866766a3584fe946012a206c110.tar.xz |
net: use a random mac address if the current device does not have a valid address
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net/net.c')
-rw-r--r-- | net/net.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -345,12 +345,21 @@ static LIST_HEAD(connection_list); static struct net_connection *net_new(IPaddr_t dest, rx_handler_f *handler) { + struct eth_device *edev = eth_get_current(); struct net_connection *con; int ret; - if (!is_valid_ether_addr(net_ether)) + if (!edev) return ERR_PTR(-ENETDOWN); + if (!is_valid_ether_addr(net_ether)) { + char str[sizeof("xx:xx:xx:xx:xx:xx")]; + random_ether_addr(net_ether); + ethaddr_to_string(net_ether, str); + printf("warning: No MAC address set. Using random address %s\n", str); + dev_set_param(&edev->dev, "ethaddr", str); + } + /* If we don't have an ip only broadcast is allowed */ if (!net_ip && dest != 0xffffffff) return ERR_PTR(-ENETDOWN); |