X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fip6_forward.c;h=588cd0675a4bac8a79b566db61043f8b0bda4b91;hb=fe7d4a2;hp=2c0011152622b1f028f8feb59a8b31f6ab57fa9c;hpb=4c53313cd7e9b866412ad3e04b2d91ac098c1398;p=vpp.git diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index 2c001115262..588cd0675a4 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -975,12 +975,15 @@ ip6_urpf_loose_check (ip6_main_t * im, vlib_buffer_t * b, ip6_header_t * i) { const load_balance_t *lb0; index_t lbi; + u32 fib_index; - lbi = ip6_fib_table_fwding_lookup_with_if_index (im, - vnet_buffer - (b)->sw_if_index[VLIB_RX], - &i->src_address); + fib_index = vec_elt (im->fib_index_by_sw_if_index, + vnet_buffer (b)->sw_if_index[VLIB_RX]); + fib_index = + (vnet_buffer (b)->sw_if_index[VLIB_TX] == (u32) ~ 0) ? + fib_index : vnet_buffer (b)->sw_if_index[VLIB_TX]; + lbi = ip6_fib_table_fwding_lookup (im, fib_index, &i->src_address); lb0 = load_balance_get (lbi); return (fib_urpf_check_size (lb0->lb_urpf)); @@ -2696,7 +2699,7 @@ ip6_hbh_register_option (u8 option, ip6_main_t *im = &ip6_main; ip6_hop_by_hop_main_t *hm = &ip6_hop_by_hop_main; - ASSERT (option < ARRAY_LEN (hm->options)); + ASSERT ((u32) option < ARRAY_LEN (hm->options)); /* Already registered */ if (hm->options[option]) @@ -2717,7 +2720,7 @@ ip6_hbh_unregister_option (u8 option) ip6_main_t *im = &ip6_main; ip6_hop_by_hop_main_t *hm = &ip6_hop_by_hop_main; - ASSERT (option < ARRAY_LEN (hm->options)); + ASSERT ((u32) option < ARRAY_LEN (hm->options)); /* Not registered */ if (!hm->options[option])