From: Chris Luke Date: Fri, 6 May 2016 15:51:54 +0000 (-0400) Subject: VPP-45 Fix crash when GRE packet received on new i/f X-Git-Tag: v16.06-rc1~39 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F21%2F1021%2F2;p=vpp.git 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 --- 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;