Procházet zdrojové kódy

[netdevice] Reset MAC address when asked to clear the "mac" setting

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown před 13 roky
rodič
revize
c4bce43c3c
1 změnil soubory, kde provedl 11 přidání a 3 odebrání
  1. 11
    3
      src/net/netdev_settings.c

+ 11
- 3
src/net/netdev_settings.c Zobrazit soubor

61
  */
61
  */
62
 static int netdev_store_mac ( struct net_device *netdev,
62
 static int netdev_store_mac ( struct net_device *netdev,
63
 			      const void *data, size_t len ) {
63
 			      const void *data, size_t len ) {
64
+	struct ll_protocol *ll_protocol = netdev->ll_protocol;
65
+
66
+	/* Record new MAC address */
67
+	if ( data ) {
68
+		if ( len != netdev->ll_protocol->ll_addr_len )
69
+			return -EINVAL;
70
+		memcpy ( netdev->ll_addr, data, len );
71
+	} else {
72
+		/* Reset MAC address if clearing setting */
73
+		ll_protocol->init_addr ( netdev->hw_addr, netdev->ll_addr );
74
+	}
64
 
75
 
65
-	if ( len != netdev->ll_protocol->ll_addr_len )
66
-		return -EINVAL;
67
-	memcpy ( netdev->ll_addr, data, len );
68
 	return 0;
76
 	return 0;
69
 }
77
 }
70
 
78
 

Načítá se…
Zrušit
Uložit