[PATCH net-next 06/22] ipv4: redirect dst output to lwtunnel output

2015-07-21 Thread Thomas Graf
From: Roopa Prabhu ro...@cumulusnetworks.com

For input routes with tunnel encap state this patch redirects
dst output functions to lwtunnel_output which later resolves to
the corresponding lwtunnel output function.

This has been tested to work with mpls ip tunnels.

Signed-off-by: Roopa Prabhu ro...@cumulusnetworks.com
---
 net/ipv4/route.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 226570b..cd3157c 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1633,6 +1633,8 @@ static int __mkroute_input(struct sk_buff *skb,
rth-dst.output = ip_output;
 
rt_set_nexthop(rth, daddr, res, fnhe, res-fi, res-type, itag);
+   if (lwtunnel_output_redirect(rth-rt_lwtstate))
+   rth-dst.output = lwtunnel_output;
skb_dst_set(skb, rth-dst);
 out:
err = 0;
-- 
2.4.3

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH net-next 06/22] ipv4: redirect dst output to lwtunnel output

2015-07-17 Thread Thomas Graf
From: Roopa Prabhu ro...@cumulusnetworks.com

For input routes with tunnel encap state this patch redirects
dst output functions to lwtunnel_output which later resolves to
the corresponding lwtunnel output function.

This has been tested to work with mpls ip tunnels.

Open items: Support for tunnel mtu, pmtu, fragmentation can be
added by hooking into the corresponding (ipv4, ipv6) dst ops.
We may do this differently when lwtstate moves to dst or dst_metadata
as per upstream discussions.

Signed-off-by: Roopa Prabhu ro...@cumulusnetworks.com
---
 net/ipv4/route.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 226570b..cd3157c 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1633,6 +1633,8 @@ static int __mkroute_input(struct sk_buff *skb,
rth-dst.output = ip_output;
 
rt_set_nexthop(rth, daddr, res, fnhe, res-fi, res-type, itag);
+   if (lwtunnel_output_redirect(rth-rt_lwtstate))
+   rth-dst.output = lwtunnel_output;
skb_dst_set(skb, rth-dst);
 out:
err = 0;
-- 
2.4.3

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html