aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
authorMatthew Smith <mgsmith@netgate.com>2021-05-14 17:00:15 -0500
committerNeale Ranns <neale@graphiant.com>2021-05-20 10:16:21 +0000
commita0455ffdbe9c2765d61d8c8efb7bb73f998ffb5b (patch)
treeee1e5f2712515b7f1c25d1a5f013f189b08129eb /src/vnet
parent733a26e787a789fa5d7ebdafd9826071a5270855 (diff)
gre: Walk IPv6 adjacencies during restack
Type: fix If a GRE tunnel is created and the peer is not resolved yet and an IPv6 route is added which points to the tunnel, packets matching the route will be dropped. When the tunnel peer is resolved, adjacencies on the tunnel interface should be restacked and packets matching the route can be encapsulated and sent.. There is a loop that is intended to do this for both IPv4 and IPv6. The call to walk adjacencies is invoked in a "return" statement though. So the loop is exited and the function returns before IPv6 adjacencies are walked. Remove the return so the loop finishes. Change-Id: Ia4f695681713020209ea490ae4142857cea49c41 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/gre/interface.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/vnet/gre/interface.c b/src/vnet/gre/interface.c
index 30dfa3057b1..f2c679cb9b5 100644
--- a/src/vnet/gre/interface.c
+++ b/src/vnet/gre/interface.c
@@ -225,9 +225,11 @@ gre_tunnel_restack (gre_tunnel_t * gt)
switch (gt->mode)
{
case TUNNEL_MODE_P2P:
- return (adj_nbr_walk (gt->sw_if_index, proto, gre_adj_walk_cb, NULL));
+ adj_nbr_walk (gt->sw_if_index, proto, gre_adj_walk_cb, NULL);
+ break;
case TUNNEL_MODE_MP:
- return (adj_nbr_walk (gt->sw_if_index, proto, mgre_adj_walk_cb, NULL));
+ adj_nbr_walk (gt->sw_if_index, proto, mgre_adj_walk_cb, NULL);
+ break;
}
}
}