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

ipv6: Add "offload" and "trap" indications to routes



In a similar fashion to previous patch, add "offload" and "trap"
indication to IPv6 routes.

This is done by using two unused bits in 'struct fib6_info' to hold
these indications. Capable drivers are expected to set these when
processing the various in-kernel route notifications.

Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
Acked-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 90b93f1b
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -192,7 +192,9 @@ struct fib6_info {
					dst_nopolicy:1,
					dst_host:1,
					fib6_destroying:1,
					unused:3;
					offload:1,
					trap:1,
					unused:1;

	struct rcu_head			rcu;
	struct nexthop			*nh;
@@ -329,6 +331,13 @@ static inline void fib6_info_release(struct fib6_info *f6i)
		call_rcu(&f6i->rcu, fib6_info_destroy_rcu);
}

static inline void fib6_info_hw_flags_set(struct fib6_info *f6i, bool offload,
					  bool trap)
{
	f6i->offload = offload;
	f6i->trap = trap;
}

enum fib6_walk_state {
#ifdef CONFIG_IPV6_SUBTREES
	FWS_S,
+7 −0
Original line number Diff line number Diff line
@@ -5576,6 +5576,13 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb,
		expires -= jiffies;
	}

	if (!dst) {
		if (rt->offload)
			rtm->rtm_flags |= RTM_F_OFFLOAD;
		if (rt->trap)
			rtm->rtm_flags |= RTM_F_TRAP;
	}

	if (rtnl_put_cacheinfo(skb, dst, 0, expires, dst ? dst->error : 0) < 0)
		goto nla_put_failure;