lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: 21 May 2007 20:20:51 +0200 From: Urs Thuermann <urs@...ogud.escape.de> To: YOSHIFUJI Hideaki <yoshfuji@...ux-ipv6.org> Cc: Oliver Hartkopp <socketcan@...tkopp.net>, davem@...emloft.net, netdev@...r.kernel.org Subject: Re: [FIX][PATCH] ipv6 addrconf.c REMOVED #if patch Oliver Hartkopp <socketcan@...tkopp.net> writes: > Yep - you were right. It looks better like this as ARPHRD_SIT is > defined in if_arp.h in any CONFIG_* case ... Oliver asked me to resend the patch with a sane mailer that doesn't mangle white-space and line breaks. So here it is. This patch makes the netdevice notifier for IPv6 ignore all events on non-IPv6 capable devices. Signed-off-by: Oliver Hartkopp <socketcan@...tkopp.net> Signed-off-by: Urs Thuermann <urs@...ogud.escape.de> urs --- /usr/src/linux-2.6.21/net/ipv6/addrconf.c.orig 2007-05-21 19:47:36.000000000 +0200 +++ /usr/src/linux-2.6.21/net/ipv6/addrconf.c 2007-05-21 19:54:30.000000000 +0200 @@ -2076,15 +2076,6 @@ ASSERT_RTNL(); - if ((dev->type != ARPHRD_ETHER) && - (dev->type != ARPHRD_FDDI) && - (dev->type != ARPHRD_IEEE802_TR) && - (dev->type != ARPHRD_ARCNET) && - (dev->type != ARPHRD_INFINIBAND)) { - /* Alas, we support only Ethernet autoconfiguration. */ - return; - } - idev = addrconf_add_dev(dev); if (idev == NULL) return; @@ -2172,13 +2163,33 @@ ip6_tnl_add_linklocal(idev); } +static int ipv6_hwtype(struct net_device *dev) +{ + if ((dev->type == ARPHRD_ETHER) || + (dev->type == ARPHRD_LOOPBACK) || + (dev->type == ARPHRD_SIT) || + (dev->type == ARPHRD_TUNNEL6) || + (dev->type == ARPHRD_FDDI) || + (dev->type == ARPHRD_IEEE802_TR) || + (dev->type == ARPHRD_ARCNET) || + (dev->type == ARPHRD_INFINIBAND)) + return 1; + + return 0; +} + static int addrconf_notify(struct notifier_block *this, unsigned long event, void * data) { struct net_device *dev = (struct net_device *) data; - struct inet6_dev *idev = __in6_dev_get(dev); + struct inet6_dev *idev; int run_pending = 0; + if (!ipv6_hwtype(dev)) + return NOTIFY_OK; + + idev = __in6_dev_get(dev); + switch(event) { case NETDEV_REGISTER: if (!idev) { - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists