Fix DHCP proxy when used for non-default FIB tables 53/3753/1
authorIgor Mikhailov (imichail) <imichail@cisco.com>
Wed, 9 Nov 2016 20:38:33 +0000 (12:38 -0800)
committerIgor Mikhailov (imichail) <imichail@cisco.com>
Wed, 9 Nov 2016 20:38:33 +0000 (12:38 -0800)
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) <imichail@cisco.com>
vnet/vnet/dhcp/proxy_node.c

index 7018fc3..d0d99d7 100644 (file)
@@ -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;