summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Luke <chrisy@flirble.org>2016-05-06 11:51:54 -0400
committerDave Barach <openvpp@barachs.net>2016-05-07 13:01:23 +0000
commit716490069ed21c23f51b928a35d3f6ba9e3e7de9 (patch)
tree1602c022ed36edf06cdad31e6b6324ebea7409f9
parent30aff24e10610923d419c8f905e545f2c31d9c8c (diff)
VPP-45 Fix crash when GRE packet received on new i/f
If a GRE tunnel is created, no other interface added and the GRE tunnel is not set "up" then a crash occurs on the first packet for this tunnel because fib_index_by_sw_if_index[] does not yet have a mapping to the fib the new interface is in. The code to set this is missing from gre/interface.c Change-Id: I567ad74a2af3ea5afe4a40ed39a1d4395642f77c Signed-off-by: Chris Luke <chrisy@flirble.org>
-rw-r--r--vnet/vnet/gre/interface.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/vnet/vnet/gre/interface.c b/vnet/vnet/gre/interface.c
index c1b9ddd72bc..1e442bc94eb 100644
--- a/vnet/vnet/gre/interface.c
+++ b/vnet/vnet/gre/interface.c
@@ -102,6 +102,9 @@ int vnet_gre_add_del_tunnel
vec_validate_init_empty (gm->tunnel_index_by_sw_if_index, sw_if_index, ~0);
gm->tunnel_index_by_sw_if_index[sw_if_index] = t - gm->tunnels;
+ vec_validate (im->fib_index_by_sw_if_index, sw_if_index);
+ im->fib_index_by_sw_if_index[sw_if_index] = t->outer_fib_index;
+
hi->min_packet_bytes = 64 + sizeof (gre_header_t) + sizeof (ip4_header_t);
hi->per_packet_overhead_bytes =
/* preamble */ 8 + /* inter frame gap */ 12;