dhcp: fix dhcp_compl_event
This patch fixes two problems: 1. The lease field in the dhcp_compl_event message can include a list of vl_api_domain_server_t structs, but no memory is allocated for it. 2. The DNS server address is not copied properly, resulting in wrong IP4 addresses in the event message. Type: fix Signed-off-by: Jing Peng <pj.hades@gmail.com> Change-Id: I42c533e7af697568c69714011d983f88368a7e15
This commit is contained in:
@ -279,8 +279,8 @@ dhcp_client_lease_encode (vl_api_dhcp_lease_t * lease,
|
|||||||
|
|
||||||
lease->count = vec_len (client->domain_server_address);
|
lease->count = vec_len (client->domain_server_address);
|
||||||
for (i = 0; i < lease->count; i++)
|
for (i = 0; i < lease->count; i++)
|
||||||
clib_memcpy (&lease->domain_server[i].address,
|
clib_memcpy (&lease->domain_server[i].address.un.ip4,
|
||||||
(u8 *) & client->domain_server_address[i],
|
(u8 *) &client->domain_server_address[i],
|
||||||
sizeof (ip4_address_t));
|
sizeof (ip4_address_t));
|
||||||
|
|
||||||
clib_memcpy (&lease->host_mac[0], client->client_hardware_address, 6);
|
clib_memcpy (&lease->host_mac[0], client->client_hardware_address, 6);
|
||||||
@ -321,7 +321,9 @@ dhcp_compl_event_callback (u32 client_index, const dhcp_client_t * client)
|
|||||||
if (!reg)
|
if (!reg)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mp = vl_msg_api_alloc (sizeof (*mp));
|
mp = vl_msg_api_alloc (sizeof (*mp) +
|
||||||
|
sizeof (vl_api_domain_server_t) *
|
||||||
|
vec_len (client->domain_server_address));
|
||||||
mp->client_index = client_index;
|
mp->client_index = client_index;
|
||||||
mp->pid = client->pid;
|
mp->pid = client->pid;
|
||||||
dhcp_client_lease_encode (&mp->lease, client);
|
dhcp_client_lease_encode (&mp->lease, client);
|
||||||
|
Reference in New Issue
Block a user