X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fip%2Fip4.h;h=f005522bb7a9e3b3c0739051d2994412c5e2561b;hb=d076f19b5e119265d995a031707c8d78608c439f;hp=c01006ea590c8e132e9157bc9d201e97c2bafca1;hpb=5b7a563ff0a39b74a0f037572b7709e3c9aa5cf2;p=vpp.git diff --git a/vnet/vnet/ip/ip4.h b/vnet/vnet/ip/ip4.h index c01006ea590..f005522bb7a 100644 --- a/vnet/vnet/ip/ip4.h +++ b/vnet/vnet/ip/ip4.h @@ -237,13 +237,16 @@ ip4_unaligned_destination_matches_route (ip4_main_t * im, uword dest_length) { return 0 == ((clib_mem_unaligned (&key->data_u32, u32) ^ dest->data_u32) & im->fib_masks[dest_length]); } -always_inline void +always_inline int ip4_src_address_for_packet (ip4_main_t * im, vlib_buffer_t * p, ip4_address_t * src, u32 sw_if_index) { ip_lookup_main_t * lm = &im->lookup_main; ip_interface_address_t * ia = ip_interface_address_for_packet (lm, p, sw_if_index); + if (ia == NULL) + return -1; ip4_address_t * a = ip_interface_address_get_address (lm, ia); *src = a[0]; + return 0; } /* Find interface address which matches destination. */