All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roland Dreier <roland@topspin.com>
To: "David S. Miller" <davem@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fix up RTM_SETLINK handling
Date: 15 Jan 2003 17:24:39 -0800	[thread overview]
Message-ID: <52adi1999k.fsf@topspin.com> (raw)
In-Reply-To: <20030115.161337.14085475.davem@redhat.com>

OK, here's a new version of my RTM_SETLINK fixups.  I added a function
call_netdevice_notifiers() instead of making netdev_chain not static.

Thanks,
  Roland


 include/linux/netdevice.h |    1 +
 net/core/dev.c            |   12 ++++++++++++
 net/core/rtnetlink.c      |   17 +++++++++++++++--
 3 files changed, 28 insertions(+), 2 deletions(-)


===== include/linux/netdevice.h 1.27 vs edited =====
--- 1.27/include/linux/netdevice.h	Tue Jan  7 14:33:37 2003
+++ edited/include/linux/netdevice.h	Wed Jan 15 17:07:08 2003
@@ -480,6 +480,7 @@
 extern int		unregister_netdevice(struct net_device *dev);
 extern int 		register_netdevice_notifier(struct notifier_block *nb);
 extern int		unregister_netdevice_notifier(struct notifier_block *nb);
+extern int		call_netdevice_notifiers(unsigned long val, void *v);
 extern int		dev_new_index(void);
 extern struct net_device	*dev_get_by_index(int ifindex);
 extern struct net_device	*__dev_get_by_index(int ifindex);
===== net/core/dev.c 1.52 vs edited =====
--- 1.52/net/core/dev.c	Tue Jan  7 14:33:37 2003
+++ edited/net/core/dev.c	Wed Jan 15 17:19:13 2003
@@ -877,6 +877,18 @@
 	return notifier_chain_unregister(&netdev_chain, nb);
 }
 
+/**
+ *	call_netdevice_notifiers - call all network notifier blocks
+ *
+ *	Call all network notifier blocks.  Parameters and return value
+ *	are as for notifier_call_chain().
+ */
+
+int call_netdevice_notifiers(unsigned long val, void *v)
+{
+	return notifier_call_chain(&netdev_chain, val, v);
+}
+
 /*
  *	Support routine. Sends outgoing frames to any network
  *	taps currently in use.
===== net/core/rtnetlink.c 1.6 vs edited =====
--- 1.6/net/core/rtnetlink.c	Tue Jan  7 01:05:42 2003
+++ edited/net/core/rtnetlink.c	Wed Jan 15 17:10:37 2003
@@ -234,10 +234,20 @@
 	err = -EINVAL;
 
 	if (ida[IFLA_ADDRESS - 1]) {
+		if (!dev->set_mac_address) {
+			err = -EOPNOTSUPP;
+			goto out;
+		}
+		if (!netif_device_present(dev)) {
+			err = -ENODEV;
+			goto out;
+		}
 		if (ida[IFLA_ADDRESS - 1]->rta_len != RTA_LENGTH(dev->addr_len))
 			goto out;
-		memcpy(dev->dev_addr, RTA_DATA(ida[IFLA_ADDRESS - 1]),
-		       dev->addr_len);
+
+		err = dev->set_mac_address(dev, RTA_DATA(ida[IFLA_ADDRESS - 1]));
+		if (err)
+			goto out;
 	}
 
 	if (ida[IFLA_BROADCAST - 1]) {
@@ -250,6 +260,9 @@
 	err = 0;
 
 out:
+	if (!err)
+		call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
+
 	dev_put(dev);
 	return err;
 }

  reply	other threads:[~2003-01-16  1:15 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-15  7:01 [PATCH] fix up RTM_SETLINK handling Roland Dreier
2003-01-16  0:07 ` David S. Miller
2003-01-16  0:22   ` Roland Dreier
2003-01-16  0:13     ` David S. Miller
2003-01-16  1:24       ` Roland Dreier [this message]
2003-01-16  1:23         ` David S. Miller
2003-01-16  1:39           ` Roland Dreier
2003-01-16  7:37             ` David S. Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52adi1999k.fsf@topspin.com \
    --to=roland@topspin.com \
    --cc=davem@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.