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: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
90b93f1b31
commit
bb3c4ab93e
@ -192,7 +192,9 @@ struct fib6_info {
|
|||||||
dst_nopolicy:1,
|
dst_nopolicy:1,
|
||||||
dst_host:1,
|
dst_host:1,
|
||||||
fib6_destroying:1,
|
fib6_destroying:1,
|
||||||
unused:3;
|
offload:1,
|
||||||
|
trap:1,
|
||||||
|
unused:1;
|
||||||
|
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
struct nexthop *nh;
|
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);
|
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 {
|
enum fib6_walk_state {
|
||||||
#ifdef CONFIG_IPV6_SUBTREES
|
#ifdef CONFIG_IPV6_SUBTREES
|
||||||
FWS_S,
|
FWS_S,
|
||||||
|
@ -5576,6 +5576,13 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb,
|
|||||||
expires -= jiffies;
|
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)
|
if (rtnl_put_cacheinfo(skb, dst, 0, expires, dst ? dst->error : 0) < 0)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user