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

Commit b2b17995 authored by Tianyi Gou's avatar Tianyi Gou Committed by Gerrit - the friendly Code Review server
Browse files

net/ipv6/addrconf: IPv6 tethering enhancement



Added new procfs flag to toggle the automatic addition of prefix
routes on a per device basis. The new flag is accept_ra_prefix_route.
Defaults to 1 as to not break existing behavior.

CRs-Fixed: 435320
Change-Id: If25493890c7531c27f5b2c4855afebbbbf5d072a
Acked-by: default avatarHarout S. Hedeshian <harouth@qti.qualcomm.com>
Signed-off-by: default avatarTianyi Gou <tgou@codeaurora.org>
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
parent 7d54fbdb
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1291,6 +1291,11 @@ accept_ra_rtr_pref - BOOLEAN
	Functional default: enabled if accept_ra is enabled.
			    disabled if accept_ra is disabled.

accept_ra_prefix_route - BOOLEAN
	Set the prefix route for the autoconfigured interface address

	Functional default: enabled

accept_redirects - BOOLEAN
	Accept Redirects.

+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ struct ipv6_devconf {
	__s32		force_tllao;
	__s32           ndisc_notify;
	__s32		suppress_frag_ndisc;
	__s32		accept_ra_prefix_route;
	void		*sysctl;
};

+1 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ enum {
	DEVCONF_SUPPRESS_FRAG_NDISC,
	DEVCONF_ACCEPT_RA_FROM_LOCAL,
	DEVCONF_USE_OPTIMISTIC,
	DEVCONF_ACCEPT_RA_PREFIX_ROUTE,
	DEVCONF_MAX
};

+1 −0
Original line number Diff line number Diff line
@@ -524,6 +524,7 @@ static const struct bin_table bin_net_ipv6_conf_var_table[] = {
	{ CTL_INT,	NET_IPV6_PROXY_NDP,			"proxy_ndp" },
	{ CTL_INT,	NET_IPV6_ACCEPT_SOURCE_ROUTE,		"accept_source_route" },
	{ CTL_INT,	NET_IPV6_ACCEPT_RA_FROM_LOCAL,		"accept_ra_from_local" },
	{ CTL_INT,	NET_IPV6_ACCEPT_RA_PREFIX_ROUTE,	"accept_ra_prefix_route" },
	{}
};

+14 −2
Original line number Diff line number Diff line
@@ -202,6 +202,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
	.disable_ipv6		= 0,
	.accept_dad		= 1,
	.suppress_frag_ndisc	= 1,
	.accept_ra_prefix_route = 1,
};

static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
@@ -240,6 +241,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
	.disable_ipv6		= 0,
	.accept_dad		= 1,
	.suppress_frag_ndisc	= 1,
	.accept_ra_prefix_route = 1,
};

/* Check if a valid qdisc is available */
@@ -2293,9 +2295,12 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len, bool sllao)
				flags |= RTF_EXPIRES;
				expires = jiffies_to_clock_t(rt_expires);
			}
			addrconf_prefix_route(&pinfo->prefix, pinfo->prefix_len,
			if (dev->ip6_ptr->cnf.accept_ra_prefix_route) {
				addrconf_prefix_route(&pinfo->prefix,
						      pinfo->prefix_len,
						      dev, expires, flags);
			}
		}
		ip6_rt_put(rt);
	}

@@ -5316,6 +5321,13 @@ static struct addrconf_sysctl_table
			.mode		= 0644,
			.proc_handler	= proc_dointvec,
		},
		{
			.procname	= "accept_ra_prefix_route",
			.data		= &ipv6_devconf.accept_ra_prefix_route,
			.maxlen		= sizeof(int),
			.mode		= 0644,
			.proc_handler	= proc_dointvec,
		},
		{
			/* sentinel */
		}