mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
[IPV4]: When possible test for IFF_LOOPBACK and not dev == loopback_dev
Now that multiple loopback devices are becoming possible it makes the code a little cleaner and more maintainable to test if a deivice is th a loopback device by testing dev->flags & IFF_LOOPBACK instead of dev == loopback_dev. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5967789dbc
commit
0cc217e16c
3 changed files with 10 additions and 6 deletions
|
@ -1059,7 +1059,7 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
|
||||||
in_dev = inetdev_init(dev);
|
in_dev = inetdev_init(dev);
|
||||||
if (!in_dev)
|
if (!in_dev)
|
||||||
return notifier_from_errno(-ENOMEM);
|
return notifier_from_errno(-ENOMEM);
|
||||||
if (dev == loopback_dev) {
|
if (dev->flags & IFF_LOOPBACK) {
|
||||||
IN_DEV_CONF_SET(in_dev, NOXFRM, 1);
|
IN_DEV_CONF_SET(in_dev, NOXFRM, 1);
|
||||||
IN_DEV_CONF_SET(in_dev, NOPOLICY, 1);
|
IN_DEV_CONF_SET(in_dev, NOPOLICY, 1);
|
||||||
}
|
}
|
||||||
|
@ -1075,7 +1075,7 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
|
||||||
case NETDEV_UP:
|
case NETDEV_UP:
|
||||||
if (dev->mtu < 68)
|
if (dev->mtu < 68)
|
||||||
break;
|
break;
|
||||||
if (dev == loopback_dev) {
|
if (dev->flags & IFF_LOOPBACK) {
|
||||||
struct in_ifaddr *ifa;
|
struct in_ifaddr *ifa;
|
||||||
if ((ifa = inet_alloc_ifa()) != NULL) {
|
if ((ifa = inet_alloc_ifa()) != NULL) {
|
||||||
ifa->ifa_local =
|
ifa->ifa_local =
|
||||||
|
|
|
@ -190,11 +190,15 @@ static int __init ic_open_devs(void)
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
|
|
||||||
/* bring loopback device up first */
|
/* bring loopback device up first */
|
||||||
if (dev_change_flags(loopback_dev, loopback_dev->flags | IFF_UP) < 0)
|
for_each_netdev(&init_net, dev) {
|
||||||
printk(KERN_ERR "IP-Config: Failed to open %s\n", loopback_dev->name);
|
if (!(dev->flags & IFF_LOOPBACK))
|
||||||
|
continue;
|
||||||
|
if (dev_change_flags(dev, dev->flags | IFF_UP) < 0)
|
||||||
|
printk(KERN_ERR "IP-Config: Failed to open %s\n", dev->name);
|
||||||
|
}
|
||||||
|
|
||||||
for_each_netdev(&init_net, dev) {
|
for_each_netdev(&init_net, dev) {
|
||||||
if (dev == loopback_dev)
|
if (dev->flags & IFF_LOOPBACK)
|
||||||
continue;
|
continue;
|
||||||
if (user_dev_name[0] ? !strcmp(dev->name, user_dev_name) :
|
if (user_dev_name[0] ? !strcmp(dev->name, user_dev_name) :
|
||||||
(!(dev->flags & IFF_LOOPBACK) &&
|
(!(dev->flags & IFF_LOOPBACK) &&
|
||||||
|
|
|
@ -961,7 +961,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff **pskb,
|
||||||
* ... don't know why 1st test DOES NOT include 2nd (?)
|
* ... don't know why 1st test DOES NOT include 2nd (?)
|
||||||
*/
|
*/
|
||||||
if (unlikely(skb->pkt_type != PACKET_HOST
|
if (unlikely(skb->pkt_type != PACKET_HOST
|
||||||
|| skb->dev == loopback_dev || skb->sk)) {
|
|| skb->dev->flags & IFF_LOOPBACK || skb->sk)) {
|
||||||
IP_VS_DBG(12, "packet type=%d proto=%d daddr=%d.%d.%d.%d ignored\n",
|
IP_VS_DBG(12, "packet type=%d proto=%d daddr=%d.%d.%d.%d ignored\n",
|
||||||
skb->pkt_type,
|
skb->pkt_type,
|
||||||
ip_hdr(skb)->protocol,
|
ip_hdr(skb)->protocol,
|
||||||
|
|
Loading…
Reference in a new issue