From: Michael Brown Date: Thu, 16 May 2013 14:40:44 +0000 (+0100) Subject: [netdevice] Reset MAC address when asked to clear the "mac" setting X-Git-Tag: v1.20.1~1505 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4bce43c3c4d3c5ebb2d926b58ad16dc9642c19d;p=thirdparty%2Fipxe.git [netdevice] Reset MAC address when asked to clear the "mac" setting Signed-off-by: Michael Brown --- diff --git a/src/net/netdev_settings.c b/src/net/netdev_settings.c index 8f66c5538..028a62ca8 100644 --- a/src/net/netdev_settings.c +++ b/src/net/netdev_settings.c @@ -61,10 +61,18 @@ struct setting chip_setting __setting ( SETTING_NETDEV ) = { */ static int netdev_store_mac ( struct net_device *netdev, const void *data, size_t len ) { + struct ll_protocol *ll_protocol = netdev->ll_protocol; + + /* Record new MAC address */ + if ( data ) { + if ( len != netdev->ll_protocol->ll_addr_len ) + return -EINVAL; + memcpy ( netdev->ll_addr, data, len ); + } else { + /* Reset MAC address if clearing setting */ + ll_protocol->init_addr ( netdev->hw_addr, netdev->ll_addr ); + } - if ( len != netdev->ll_protocol->ll_addr_len ) - return -EINVAL; - memcpy ( netdev->ll_addr, data, len ); return 0; }