diff mbox series

[v2] IPv6: RTM_GETROUTE: Add RTA_ENCAP to result

Message ID 20201117091938.GA562664@tws
State Superseded
Headers show
Series [v2] IPv6: RTM_GETROUTE: Add RTA_ENCAP to result | expand

Commit Message

Oliver Herms Nov. 17, 2020, 9:19 a.m. UTC
This patch adds an IPv6 routes encapsulation attribute
to the result of netlink RTM_GETROUTE requests
(i.e. ip route get 2001:db8::).

Signed-off-by: Oliver Herms <oliver.peter.herms@gmail.com>
---
 net/ipv6/route.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

David Ahern Nov. 17, 2020, 4:47 p.m. UTC | #1
On 11/17/20 2:19 AM, Oliver Herms wrote:
> This patch adds an IPv6 routes encapsulation attribute

> to the result of netlink RTM_GETROUTE requests

> (i.e. ip route get 2001:db8::).

> 

> Signed-off-by: Oliver Herms <oliver.peter.herms@gmail.com>

> ---

>  net/ipv6/route.c | 4 ++++

>  1 file changed, 4 insertions(+)

> 

> diff --git a/net/ipv6/route.c b/net/ipv6/route.c

> index 82cbb46a2a4f..d7e94eac3136 100644

> --- a/net/ipv6/route.c

> +++ b/net/ipv6/route.c

> @@ -5489,6 +5489,10 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb,

>  	rtm->rtm_scope = RT_SCOPE_UNIVERSE;

>  	rtm->rtm_protocol = rt->fib6_protocol;

>  

> +	if (dst && dst->lwtstate && lwtunnel_fill_encap(skb, dst->lwtstate,

> +	    RTA_ENCAP, RTA_ENCAP_TYPE) < 0)

> +		goto nla_put_failure;

> +

>  	if (rt6_flags & RTF_CACHE)

>  		rtm->rtm_flags |= RTM_F_CLONED;

>  

> 


That needs to be moved down to this section:

       if (rt6) {
                if (rt6_flags & RTF_GATEWAY &&
                    nla_put_in6_addr(skb, RTA_GATEWAY, &rt6->rt6i_gateway))
                        goto nla_put_failure;

                if (dst->dev && nla_put_u32(skb, RTA_OIF,
dst->dev->ifindex))
                        goto nla_put_failure;

   --> add ENCAP here
diff mbox series

Patch

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 82cbb46a2a4f..d7e94eac3136 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -5489,6 +5489,10 @@  static int rt6_fill_node(struct net *net, struct sk_buff *skb,
 	rtm->rtm_scope = RT_SCOPE_UNIVERSE;
 	rtm->rtm_protocol = rt->fib6_protocol;
 
+	if (dst && dst->lwtstate && lwtunnel_fill_encap(skb, dst->lwtstate,
+	    RTA_ENCAP, RTA_ENCAP_TYPE) < 0)
+		goto nla_put_failure;
+
 	if (rt6_flags & RTF_CACHE)
 		rtm->rtm_flags |= RTM_F_CLONED;