Thread (1 message) 1 message, 1 author, 2008-01-24
DORMANTno replies

[PATCH] Re: Loopback address to eth0 interface and rooting goes wrong

From: Bjørn Mork <bjorn@mork.no>
Date: 2008-01-24 08:30:17

Hello

Gary < gary.manchon (at) gmail.com > found a problem where he was unable
to recover from a bad network interface configuration 
(ifconfig eth0 127.0.0.1), ref 
http://www.uwsg.iu.edu/hypermail/linux/net/0801.2/0009.html

This was confirmed by several people.

I suspect that the problem might be this code in net/ipv4/devinet.c ,
which sets ifa_scope to RT_SCOPE_HOST if you configure a loopback
address (127/8) on any interface.  I guess it's there to protect us from
sending packets with a loopback source address, which woulnd't look too
good:

static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa)
{
	struct in_device *in_dev = __in_dev_get_rtnl(dev);

	ASSERT_RTNL();

	if (!in_dev) {
		inet_free_ifa(ifa);
		return -ENOBUFS;
	}
	ipv4_devconf_setall(in_dev);
	if (ifa->ifa_dev != in_dev) {
		BUG_TRAP(!ifa->ifa_dev);
		in_dev_hold(in_dev);
		ifa->ifa_dev = in_dev;
	}
	if (LOOPBACK(ifa->ifa_local))
		ifa->ifa_scope = RT_SCOPE_HOST;
	return inet_insert_ifa(ifa);
}



The real problem is that there's never anything resetting this scope if
you change the address later.  This patch adds scope reset when changing
the address.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help