dev.c (dc9d87581d464e7b7d38853d6904b70b6c920d99) dev.c (3b23a32a63219f51a5298bc55a65ecee866e79d0)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * NET3 Protocol independent device support routines.
4 *
5 * Derived from the non IP parts of dev.c 1.0.19
6 * Authors: Ross Biro
7 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
8 * Mark Evans, <evansmp@uhura.aston.ac.uk>

--- 8923 unchanged lines hidden (view full) ---

8932 return err;
8933 dev->addr_assign_type = NET_ADDR_SET;
8934 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
8935 add_device_randomness(dev->dev_addr, dev->addr_len);
8936 return 0;
8937}
8938EXPORT_SYMBOL(dev_set_mac_address);
8939
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * NET3 Protocol independent device support routines.
4 *
5 * Derived from the non IP parts of dev.c 1.0.19
6 * Authors: Ross Biro
7 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
8 * Mark Evans, <evansmp@uhura.aston.ac.uk>

--- 8923 unchanged lines hidden (view full) ---

8932 return err;
8933 dev->addr_assign_type = NET_ADDR_SET;
8934 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
8935 add_device_randomness(dev->dev_addr, dev->addr_len);
8936 return 0;
8937}
8938EXPORT_SYMBOL(dev_set_mac_address);
8939
8940static DECLARE_RWSEM(dev_addr_sem);
8941
8942int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
8943 struct netlink_ext_ack *extack)
8944{
8945 int ret;
8946
8947 down_write(&dev_addr_sem);
8948 ret = dev_set_mac_address(dev, sa, extack);
8949 up_write(&dev_addr_sem);
8950 return ret;
8951}
8952EXPORT_SYMBOL(dev_set_mac_address_user);
8953
8954int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
8955{
8956 size_t size = sizeof(sa->sa_data);
8957 struct net_device *dev;
8958 int ret = 0;
8959
8960 down_read(&dev_addr_sem);
8961 rcu_read_lock();
8962
8963 dev = dev_get_by_name_rcu(net, dev_name);
8964 if (!dev) {
8965 ret = -ENODEV;
8966 goto unlock;
8967 }
8968 if (!dev->addr_len)
8969 memset(sa->sa_data, 0, size);
8970 else
8971 memcpy(sa->sa_data, dev->dev_addr,
8972 min_t(size_t, size, dev->addr_len));
8973 sa->sa_family = dev->type;
8974
8975unlock:
8976 rcu_read_unlock();
8977 up_read(&dev_addr_sem);
8978 return ret;
8979}
8980EXPORT_SYMBOL(dev_get_mac_address);
8981
8940/**
8941 * dev_change_carrier - Change device carrier
8942 * @dev: device
8943 * @new_carrier: new value
8944 *
8945 * Change device carrier
8946 */
8947int dev_change_carrier(struct net_device *dev, bool new_carrier)

--- 2548 unchanged lines hidden ---
8982/**
8983 * dev_change_carrier - Change device carrier
8984 * @dev: device
8985 * @new_carrier: new value
8986 *
8987 * Change device carrier
8988 */
8989int dev_change_carrier(struct net_device *dev, bool new_carrier)

--- 2548 unchanged lines hidden ---