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

Commit 61e4d01e authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller
Browse files

ipv6: fib: Add offload indication to routes



Allow user space applications to see which routes are offloaded and
which aren't by setting the RTNH_F_OFFLOAD flag when dumping them.

To be consistent with IPv4, offload indication is provided on a
per-nexthop basis.

Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e1ee0a5b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#define RTF_PREF(pref)	((pref) << 27)
#define RTF_PREF_MASK	0x18000000

#define RTF_OFFLOAD	0x20000000	/* offloaded route		*/
#define RTF_PCPU	0x40000000	/* read-only: can not be set by user */
#define RTF_LOCAL	0x80000000

+8 −0
Original line number Diff line number Diff line
@@ -1820,6 +1820,11 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg,
		goto out;
	}

	if (cfg->fc_flags & RTF_OFFLOAD) {
		NL_SET_ERR_MSG(extack, "Userspace can not set RTF_OFFLOAD");
		goto out;
	}

	if (cfg->fc_dst_len > 128) {
		NL_SET_ERR_MSG(extack, "Invalid prefix length");
		goto out;
@@ -3327,6 +3332,9 @@ static int rt6_nexthop_info(struct sk_buff *skb, struct rt6_info *rt,
			goto nla_put_failure;
	}

	if (rt->rt6i_flags & RTF_OFFLOAD)
		*flags |= RTNH_F_OFFLOAD;

	/* not needed for multipath encoding b/c it has a rtnexthop struct */
	if (!skip_oif && rt->dst.dev &&
	    nla_put_u32(skb, RTA_OIF, rt->dst.dev->ifindex))