Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 586f1211 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by David S. Miller
Browse files

[IPV4]: Switch users of ipv4_devconf(_all) to use the pernet one



These are scattered over the code, but almost all the
"critical" places already have the proper struct net
at hand except for snmp proc showing function and routing
rtnl handler.

Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9355bbd6
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -44,7 +44,8 @@ struct in_device
};

#define IPV4_DEVCONF(cnf, attr) ((cnf).data[NET_IPV4_CONF_ ## attr - 1])
#define IPV4_DEVCONF_ALL(attr) IPV4_DEVCONF(ipv4_devconf, attr)
#define IPV4_DEVCONF_ALL(net, attr) \
	IPV4_DEVCONF((*(net)->ipv4.devconf_all), attr)

static inline int ipv4_devconf_get(struct in_device *in_dev, int index)
{
@@ -71,11 +72,14 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
	ipv4_devconf_set((in_dev), NET_IPV4_CONF_ ## attr, (val))

#define IN_DEV_ANDCONF(in_dev, attr) \
	(IPV4_DEVCONF_ALL(attr) && IN_DEV_CONF_GET((in_dev), attr))
	(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr) && \
	 IN_DEV_CONF_GET((in_dev), attr))
#define IN_DEV_ORCONF(in_dev, attr) \
	(IPV4_DEVCONF_ALL(attr) || IN_DEV_CONF_GET((in_dev), attr))
	(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr) || \
	 IN_DEV_CONF_GET((in_dev), attr))
#define IN_DEV_MAXCONF(in_dev, attr) \
	(max(IPV4_DEVCONF_ALL(attr), IN_DEV_CONF_GET((in_dev), attr)))
	(max(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, attr), \
	     IN_DEV_CONF_GET((in_dev), attr)))

#define IN_DEV_FORWARD(in_dev)		IN_DEV_CONF_GET((in_dev), FORWARDING)
#define IN_DEV_MFORWARD(in_dev)		IN_DEV_ANDCONF((in_dev), MC_FORWARDING)
+2 −2
Original line number Diff line number Diff line
@@ -860,7 +860,7 @@ static int arp_process(struct sk_buff *skb)

	n = __neigh_lookup(&arp_tbl, &sip, dev, 0);

	if (IPV4_DEVCONF_ALL(ARP_ACCEPT)) {
	if (IPV4_DEVCONF_ALL(dev->nd_net, ARP_ACCEPT)) {
		/* Unsolicited ARP is not accepted by default.
		   It is possible, that this option should be enabled for some
		   devices (strip is candidate)
@@ -955,7 +955,7 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
static int arp_req_set_proxy(struct net *net, struct net_device *dev, int on)
{
	if (dev == NULL) {
		IPV4_DEVCONF_ALL(PROXY_ARP) = on;
		IPV4_DEVCONF_ALL(net, PROXY_ARP) = on;
		return 0;
	}
	if (__in_dev_get_rtnl(dev)) {
+3 −3
Original line number Diff line number Diff line
@@ -1258,9 +1258,9 @@ static void devinet_copy_dflt_conf(struct net *net, int i)
static void inet_forward_change(struct net *net)
{
	struct net_device *dev;
	int on = IPV4_DEVCONF_ALL(FORWARDING);
	int on = IPV4_DEVCONF_ALL(net, FORWARDING);

	IPV4_DEVCONF_ALL(ACCEPT_REDIRECTS) = !on;
	IPV4_DEVCONF_ALL(net, ACCEPT_REDIRECTS) = !on;
	IPV4_DEVCONF_DFLT(net, FORWARDING) = on;

	read_lock(&dev_base_lock);
@@ -1360,7 +1360,7 @@ static int devinet_sysctl_forward(ctl_table *ctl, int write,
	if (write && *valp != val) {
		struct net *net = ctl->extra2;

		if (valp == &IPV4_DEVCONF_ALL(FORWARDING))
		if (valp == &IPV4_DEVCONF_ALL(net, FORWARDING))
			inet_forward_change(net);
		else if (valp != &IPV4_DEVCONF_DFLT(net, FORWARDING))
			rt_cache_flush(0);
+2 −2
Original line number Diff line number Diff line
@@ -130,12 +130,12 @@
 */

#define IGMP_V1_SEEN(in_dev) \
	(IPV4_DEVCONF_ALL(FORCE_IGMP_VERSION) == 1 || \
	(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, FORCE_IGMP_VERSION) == 1 || \
	 IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 1 || \
	 ((in_dev)->mr_v1_seen && \
	  time_before(jiffies, (in_dev)->mr_v1_seen)))
#define IGMP_V2_SEEN(in_dev) \
	(IPV4_DEVCONF_ALL(FORCE_IGMP_VERSION) == 2 || \
	(IPV4_DEVCONF_ALL(in_dev->dev->nd_net, FORCE_IGMP_VERSION) == 2 || \
	 IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 2 || \
	 ((in_dev)->mr_v2_seen && \
	  time_before(jiffies, (in_dev)->mr_v2_seen)))
+2 −2
Original line number Diff line number Diff line
@@ -849,7 +849,7 @@ static void mrtsock_destruct(struct sock *sk)
{
	rtnl_lock();
	if (sk == mroute_socket) {
		IPV4_DEVCONF_ALL(MC_FORWARDING)--;
		IPV4_DEVCONF_ALL(sk->sk_net, MC_FORWARDING)--;

		write_lock_bh(&mrt_lock);
		mroute_socket=NULL;
@@ -898,7 +898,7 @@ int ip_mroute_setsockopt(struct sock *sk,int optname,char __user *optval,int opt
			mroute_socket=sk;
			write_unlock_bh(&mrt_lock);

			IPV4_DEVCONF_ALL(MC_FORWARDING)++;
			IPV4_DEVCONF_ALL(sk->sk_net, MC_FORWARDING)++;
		}
		rtnl_unlock();
		return ret;
Loading