aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 01497b7d1bdf..ed9aa4a91f1f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -7757,6 +7757,27 @@ void dev_set_group(struct net_device *dev, int new_group)
7757EXPORT_SYMBOL(dev_set_group); 7757EXPORT_SYMBOL(dev_set_group);
7758 7758
7759/** 7759/**
7760 * dev_pre_changeaddr_notify - Call NETDEV_PRE_CHANGEADDR.
7761 * @dev: device
7762 * @addr: new address
7763 * @extack: netlink extended ack
7764 */
7765int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
7766 struct netlink_ext_ack *extack)
7767{
7768 struct netdev_notifier_pre_changeaddr_info info = {
7769 .info.dev = dev,
7770 .info.extack = extack,
7771 .dev_addr = addr,
7772 };
7773 int rc;
7774
7775 rc = call_netdevice_notifiers_info(NETDEV_PRE_CHANGEADDR, &info.info);
7776 return notifier_to_errno(rc);
7777}
7778EXPORT_SYMBOL(dev_pre_changeaddr_notify);
7779
7780/**
7760 * dev_set_mac_address - Change Media Access Control Address 7781 * dev_set_mac_address - Change Media Access Control Address
7761 * @dev: device 7782 * @dev: device
7762 * @sa: new address 7783 * @sa: new address
@@ -7776,6 +7797,9 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
7776 return -EINVAL; 7797 return -EINVAL;
7777 if (!netif_device_present(dev)) 7798 if (!netif_device_present(dev))
7778 return -ENODEV; 7799 return -ENODEV;
7800 err = dev_pre_changeaddr_notify(dev, sa->sa_data, extack);
7801 if (err)
7802 return err;
7779 err = ops->ndo_set_mac_address(dev, sa); 7803 err = ops->ndo_set_mac_address(dev, sa);
7780 if (err) 7804 if (err)
7781 return err; 7805 return err;