From: Igor Mikhailov (imichail) Date: Wed, 9 Nov 2016 20:38:33 +0000 (-0800) Subject: Fix DHCP proxy when used for non-default FIB tables X-Git-Tag: v17.01-rc1~258 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=2138b351dbd53dd8fb05541d215458931c188ede Fix DHCP proxy when used for non-default FIB tables An issue is that the server->server_fib_index is overwritten by some incorrect value on subsequent calls to the function - e.g. when setting DHCP proxy for the same FIB table several times. Change-Id: I2e129b47f5c8fe3a0b924a7d71bb83e6fc53e9b5 Signed-off-by: Igor Mikhailov (imichail) --- diff --git a/vnet/vnet/dhcp/proxy_node.c b/vnet/vnet/dhcp/proxy_node.c index 7018fc3958b..d0d99d7e03b 100644 --- a/vnet/vnet/dhcp/proxy_node.c +++ b/vnet/vnet/dhcp/proxy_node.c @@ -712,8 +712,6 @@ int dhcp_proxy_set_server_2 (ip4_address_t *addr, ip4_address_t *src_address, rx_fib_index = fib_table_find_or_create_and_lock(FIB_PROTOCOL_IP4, rx_fib_id); - server_index = fib_table_find_or_create_and_lock(FIB_PROTOCOL_IP4, - server_fib_id); if (rx_fib_id == 0) { @@ -758,7 +756,9 @@ int dhcp_proxy_set_server_2 (ip4_address_t *addr, ip4_address_t *src_address, initialize_it: server->dhcp_server.as_u32 = addr->as_u32; - server->server_fib_index = server_index; + server->server_fib_index = + fib_table_find_or_create_and_lock(FIB_PROTOCOL_IP4, + server_fib_id); server->dhcp_src_address.as_u32 = src_address->as_u32; server->insert_option_82 = insert_option_82; server->valid = 1;