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

Commit 12a4bbd1 authored by Subash Abhinov Kasiviswanathan's avatar Subash Abhinov Kasiviswanathan
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: 2197954
Change-Id: If25493890c7531c27f5b2c4855afebbbbf5d072a
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
parent 17eb0120
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1531,6 +1531,11 @@ accept_ra_mtu - 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 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ struct ipv6_devconf {
	__u32		enhanced_dad;
	__u32		addr_gen_mode;
	__s32		disable_policy;

	__s32		accept_ra_prefix_route;
	struct ctl_table_header *sysctl_header;
};

+1 −0
Original line number Diff line number Diff line
@@ -187,6 +187,7 @@ enum {
	DEVCONF_ADDR_GEN_MODE,
	DEVCONF_DISABLE_POLICY,
	DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
	DEVCONF_ACCEPT_RA_PREFIX_ROUTE,
	DEVCONF_MAX
};

+1 −0
Original line number Diff line number Diff line
@@ -528,6 +528,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
@@ -249,6 +249,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
	.enhanced_dad           = 1,
	.addr_gen_mode		= IN6_ADDR_GEN_MODE_EUI64,
	.disable_policy		= 0,
	.accept_ra_prefix_route = 1,
};

static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
@@ -304,6 +305,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
	.enhanced_dad           = 1,
	.addr_gen_mode		= IN6_ADDR_GEN_MODE_EUI64,
	.disable_policy		= 0,
	.accept_ra_prefix_route = 1,
};

/* Check if link is ready: is it up and is a valid qdisc available */
@@ -2680,9 +2682,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);
	}

@@ -6386,6 +6391,13 @@ static const struct ctl_table addrconf_sysctl[] = {
		.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,
	},
#ifdef CONFIG_IPV6_SEG6_HMAC
	{
		.procname	= "seg6_require_hmac",