session: rules tables
[vpp.git] / src / vnet / dhcp / dhcp_api.c
index e9c757e..d6984f2 100644 (file)
@@ -187,11 +187,12 @@ dhcp_send_details (fib_protocol_t proto,
 
 void
 dhcp_compl_event_callback (u32 client_index, u32 pid, u8 * hostname,
-                          u8 is_ipv6, u8 * host_address, u8 * router_address,
-                          u8 * host_mac)
+                          u8 mask_width, u8 is_ipv6, u8 * host_address,
+                          u8 * router_address, u8 * host_mac)
 {
   unix_shared_memory_queue_t *q;
   vl_api_dhcp_compl_event_t *mp;
+  u32 len;
 
   q = vl_api_client_index_to_input_queue (client_index);
   if (!q)
@@ -201,8 +202,10 @@ dhcp_compl_event_callback (u32 client_index, u32 pid, u8 * hostname,
   mp->client_index = client_index;
   mp->pid = pid;
   mp->is_ipv6 = is_ipv6;
-  clib_memcpy (&mp->hostname, hostname, vec_len (hostname));
-  mp->hostname[vec_len (hostname) + 1] = '\n';
+  len = (vec_len (hostname) < 63) ? vec_len (hostname) : 63;
+  clib_memcpy (&mp->hostname, hostname, len);
+  mp->hostname[len] = 0;
+  mp->mask_width = mask_width;
   clib_memcpy (&mp->host_address[0], host_address, 16);
   clib_memcpy (&mp->router_address[0], router_address, 16);
 
@@ -224,7 +227,8 @@ static void vl_api_dhcp_client_config_t_handler
   VALIDATE_SW_IF_INDEX (mp);
 
   rv = dhcp_client_config (vm, ntohl (mp->sw_if_index),
-                          mp->hostname, mp->is_add, mp->client_index,
+                          mp->hostname, mp->client_id,
+                          mp->is_add, mp->client_index,
                           mp->want_dhcp_event ? dhcp_compl_event_callback :
                           NULL, mp->pid);