diff options
Diffstat (limited to 'net/ipv4/devinet.c')
| -rw-r--r-- | net/ipv4/devinet.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index c6b5092f29a..65f01dc4756 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -1490,7 +1490,9 @@ static int devinet_conf_proc(ctl_table *ctl, int write,  			     void __user *buffer,  			     size_t *lenp, loff_t *ppos)  { +	int old_value = *(int *)ctl->data;  	int ret = proc_dointvec(ctl, write, buffer, lenp, ppos); +	int new_value = *(int *)ctl->data;  	if (write) {  		struct ipv4_devconf *cnf = ctl->extra1; @@ -1501,6 +1503,9 @@ static int devinet_conf_proc(ctl_table *ctl, int write,  		if (cnf == net->ipv4.devconf_dflt)  			devinet_copy_dflt_conf(net, i); +		if (i == IPV4_DEVCONF_ACCEPT_LOCAL - 1) +			if ((new_value == 0) && (old_value != 0)) +				rt_cache_flush(net, 0);  	}  	return ret;  |