From 06923b33a9507ee6a92facb770650fff93d89dff Mon Sep 17 00:00:00 2001 From: Huawei LI Date: Thu, 29 Sep 2022 11:28:12 +0800 Subject: fib: fix crash when create vxlan/vxlan-gpe/geneve/gtpu tunnel. Fix vpp crash when create vxlan/vxlan-gpe/geneve/gtpu tunnel with 0.0.0.0 dst ip in debug build. The ASSERT should be move out of fib_prefix_from_ip46_addr, which may be called when create vxlan/vxlan-gpe/geneve/gtpu tunnel with 0.0.0.0 dst ip. How to reproduce: 1. build debug vpp and run vpp 2. create vxlan t src 192.168.0.2 dst 0.0.0.0 vni 1 instance 1 create vxlan-gpe tunnel local 192.168.0.2 remote 0.0.0.0 vni 1 create geneve tunnel local 192.168.0.2 remote 0.0.0.0 vni 1 create gtpu tunnel src 192.168.0.2 dst 0.0.0.0 teid 1 Type: fix Change-Id: I19972f6af588f4ff7fd17de1b16b9301e43d596f Signed-off-by: Huawei LI --- src/vnet/fib/fib_types.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/vnet/fib/fib_types.c') diff --git a/src/vnet/fib/fib_types.c b/src/vnet/fib/fib_types.c index 7eeb79fffa5..5c5fd0b9823 100644 --- a/src/vnet/fib/fib_types.c +++ b/src/vnet/fib/fib_types.c @@ -78,16 +78,15 @@ format_fib_mpls_label (u8 *s, va_list *ap) } void -fib_prefix_from_ip46_addr (const ip46_address_t *addr, +fib_prefix_from_ip46_addr (fib_protocol_t fproto, + const ip46_address_t *addr, fib_prefix_t *pfx) { - ASSERT(!ip46_address_is_zero(addr)); + ASSERT(FIB_PROTOCOL_MPLS != fproto); - pfx->fp_proto = ((ip46_address_is_ip4(addr) ? - FIB_PROTOCOL_IP4 : - FIB_PROTOCOL_IP6)); - pfx->fp_len = ((ip46_address_is_ip4(addr) ? - 32 : 128)); + pfx->fp_proto = fproto; + pfx->fp_len = ((FIB_PROTOCOL_IP4 == fproto) ? + 32 : 128); pfx->fp_addr = *addr; pfx->___fp___pad = 0; } -- cgit 1.2.3-korg