|
Denis Kirjanov |
0a2458 |
From f7c4b49fcf5dc1858f52589d5c7c3815e8e97b95 Mon Sep 17 00:00:00 2001
|
|
Denis Kirjanov |
0a2458 |
From: Denis Kirjanov <denis.kirjanov@suse.com>
|
|
Denis Kirjanov |
0a2458 |
Date: Wed, 27 Jul 2022 11:23:59 +0300
|
|
Denis Kirjanov |
0a2458 |
Subject: [PATCH 4/8] vrf: Fix IPv6 with qdisc and xfrm
|
|
Denis Kirjanov |
0a2458 |
Git-commit: a53c102872ad6e34e1518e25899dc9498c27f8b1
|
|
Denis Kirjanov |
0a2458 |
Patch-mainline: v5.7-rc3
|
|
Denis Kirjanov |
0a2458 |
References: git-fixes
|
|
Denis Kirjanov |
0a2458 |
|
|
Denis Kirjanov |
0a2458 |
When a qdisc is attached to the VRF device, the packet goes down the ndo
|
|
Denis Kirjanov |
0a2458 |
xmit function which is setup to send the packet back to the VRF driver
|
|
Denis Kirjanov |
0a2458 |
which does a lookup to send the packet out. The lookup in the VRF driver
|
|
Denis Kirjanov |
0a2458 |
is not considering xfrm policies. Change it to use ip6_dst_lookup_flow
|
|
Denis Kirjanov |
0a2458 |
rather than ip6_route_output.
|
|
Denis Kirjanov |
0a2458 |
|
|
Denis Kirjanov |
0a2458 |
Fixes: 35402e313663 ("net: Add IPv6 support to VRF device")
|
|
Denis Kirjanov |
0a2458 |
Signed-off-by: David Ahern <dsahern@gmail.com>
|
|
Denis Kirjanov |
0a2458 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Denis Kirjanov |
0a2458 |
Signed-off-by: Denis Kirjanov <denis.kirjanov@suse.com>
|
|
Denis Kirjanov |
0a2458 |
---
|
|
Denis Kirjanov |
0a2458 |
drivers/net/vrf.c | 4 ++--
|
|
Denis Kirjanov |
0a2458 |
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
Denis Kirjanov |
0a2458 |
|
|
Denis Kirjanov |
0a2458 |
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
|
|
Denis Kirjanov |
0a2458 |
index 50139b8a6f4e..8a91e6480e6a 100644
|
|
Denis Kirjanov |
0a2458 |
--- a/drivers/net/vrf.c
|
|
Denis Kirjanov |
0a2458 |
+++ b/drivers/net/vrf.c
|
|
Denis Kirjanov |
0a2458 |
@@ -192,8 +192,8 @@ static netdev_tx_t vrf_process_v6_outbound(struct sk_buff *skb,
|
|
Denis Kirjanov |
0a2458 |
fl6.flowi6_proto = iph->nexthdr;
|
|
Denis Kirjanov |
0a2458 |
fl6.flowi6_flags = FLOWI_FLAG_SKIP_NH_OIF;
|
|
Denis Kirjanov |
0a2458 |
|
|
Denis Kirjanov |
0a2458 |
- dst = ip6_route_output(net, NULL, &fl6;;
|
|
Denis Kirjanov |
0a2458 |
- if (dst == dst_null)
|
|
Denis Kirjanov |
0a2458 |
+ dst = ip6_dst_lookup_flow__net(net, NULL, &fl6, NULL);
|
|
Denis Kirjanov |
0a2458 |
+ if (IS_ERR(dst) || dst == dst_null)
|
|
Denis Kirjanov |
0a2458 |
goto err;
|
|
Denis Kirjanov |
0a2458 |
|
|
Denis Kirjanov |
0a2458 |
skb_dst_drop(skb);
|
|
Denis Kirjanov |
0a2458 |
--
|
|
Denis Kirjanov |
0a2458 |
2.16.4
|
|
Denis Kirjanov |
0a2458 |
|