diff --git a/src/vat/api_format.c b/src/vat/api_format.c
index da64a81..404f904 100644
--- a/src/vat/api_format.c
+++ b/src/vat/api_format.c
@@ -18593,17 +18593,15 @@
 	}
     }
 
-  u32 name_len = vec_len (pcap_file);
   /* Construct the API message */
   M (PG_CAPTURE, mp);
   mp->context = 0;
   mp->interface_id = ntohl (if_id);
   mp->is_enabled = enable;
   mp->count = ntohl (count);
-  mp->pcap_name_length = ntohl (name_len);
   if (pcap_file_set != 0)
     {
-      clib_memcpy (mp->pcap_file_name, pcap_file, name_len);
+      vl_api_vec_to_api_string (pcap_file, &mp->pcap_file_name);
     }
   vec_free (pcap_file);
 
@@ -18641,15 +18639,13 @@
 	}
     }
 
-  u32 name_len = vec_len (stream_name);
   /* Construct the API message */
   M (PG_ENABLE_DISABLE, mp);
   mp->context = 0;
   mp->is_enabled = enable;
   if (stream_name_set != 0)
     {
-      mp->stream_name_length = ntohl (name_len);
-      clib_memcpy (mp->stream_name, stream_name, name_len);
+      vl_api_vec_to_api_string (stream_name, &mp->stream_name);
     }
   vec_free (stream_name);
 
diff --git a/src/vnet/pg/cli.c b/src/vnet/pg/cli.c
index f78bb37..9336ca4 100644
--- a/src/vnet/pg/cli.c
+++ b/src/vnet/pg/cli.c
@@ -86,7 +86,7 @@
   if (a->is_enabled == 1)
     {
       struct stat sb;
-      if (stat ((char *) a->pcap_file_name, &sb) != -1)
+      if (stat (a->pcap_file_name, &sb) != -1)
 	return clib_error_return (0, "pcap file '%s' already exists.",
 				  a->pcap_file_name);
     }
@@ -632,7 +632,7 @@
   a->hw_if_index = hw_if_index;
   a->dev_instance = hi->dev_instance;
   a->is_enabled = !is_disable;
-  a->pcap_file_name = pcap_file_name;
+  a->pcap_file_name = (char *) pcap_file_name;
   a->count = count;
 
   error = pg_capture (a);
diff --git a/src/vnet/pg/pg.api b/src/vnet/pg/pg.api
index 6a421e4..ad44bee 100644
--- a/src/vnet/pg/pg.api
+++ b/src/vnet/pg/pg.api
@@ -18,7 +18,9 @@
     This file defines packet-generator interface APIs.
 */
 
-option version = "1.1.0";
+option version = "2.0.0";
+
+import "vnet/interface_types.api";
 
 /** \brief PacketGenerator create interface request
     @param client_index - opaque cookie to identify the sender
@@ -31,8 +33,8 @@
 {
   u32 client_index;
   u32 context;
-  u32 interface_id;
-  u8 gso_enabled;
+  vl_api_interface_index_t interface_id;
+  bool gso_enabled;
   u32 gso_size;
 };
 
@@ -44,7 +46,7 @@
 {
   u32 context;
   i32 retval;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
 };
 
 /** \brief PacketGenerator capture packets on given interface request
@@ -53,32 +55,30 @@
     @param interface_id - pg interface index
     @param is_enabled - 1 if enabling streams, 0 if disabling
     @param count - number of packets to be captured
-    @param pcap_file - pacp file name to store captured packets
+    @param pcap_file_name - pacp file name to store captured packets
 */
 autoreply define pg_capture
 {
   u32 client_index;
   u32 context;
-  u32 interface_id;
-  u8 is_enabled;
+  vl_api_interface_index_t interface_id;
+  bool is_enabled [default=true];
   u32 count;
-  u32 pcap_name_length;
-  u8 pcap_file_name[pcap_name_length];
+  string pcap_file_name[];
 };
 
 /** \brief Enable / disable packet generator request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param is_enabled - 1 if enabling streams, 0 if disabling
-    @param stream - stream name to be enable/disabled, if not specified handle all streams
+    @param stream_name - stream name to be enable/disabled, if not specified handle all streams
 */
 autoreply define pg_enable_disable
 {
   u32 client_index;
   u32 context;
-  u8 is_enabled;
-  u32 stream_name_length;
-  u8 stream_name[stream_name_length];
+  bool is_enabled [default=true];
+  string stream_name[];
 };
 
 /*
diff --git a/src/vnet/pg/pg.h b/src/vnet/pg/pg.h
index c73634f..55bc75d 100644
--- a/src/vnet/pg/pg.h
+++ b/src/vnet/pg/pg.h
@@ -305,7 +305,7 @@
   u8 gso_enabled;
   u32 gso_size;
   pcap_main_t pcap_main;
-  u8 *pcap_file_name;
+  char *pcap_file_name;
 } pg_interface_t;
 
 /* Per VLIB node data. */
@@ -379,7 +379,7 @@
   u32 hw_if_index;
   u32 dev_instance;
   u8 is_enabled;
-  u8 *pcap_file_name;
+  char *pcap_file_name;
   u32 count;
 } pg_capture_args_t;
 
diff --git a/src/vnet/pg/pg_api.c b/src/vnet/pg/pg_api.c
index 5b64a77..18de1e9 100644
--- a/src/vnet/pg/pg_api.c
+++ b/src/vnet/pg/pg_api.c
@@ -87,10 +87,8 @@
   if (hw_if_index != ~0)
     {
       pg_capture_args_t _a, *a = &_a;
-
-      u32 len = ntohl (mp->pcap_name_length);
-      u8 *pcap_file_name = vec_new (u8, len);
-      clib_memcpy (pcap_file_name, mp->pcap_file_name, len);
+      char *pcap_file_name =
+	vl_api_from_api_to_new_c_string (&mp->pcap_file_name);
 
       hi = vnet_get_sup_hw_interface (vnm, hw_if_index);
       a->hw_if_index = hw_if_index;
@@ -121,12 +119,10 @@
   u32 stream_index = ~0;
 
   int is_enable = mp->is_enabled != 0;
-  u32 len = ntohl (mp->stream_name_length) - 1;
 
-  if (len > 0)
+  if (vl_api_string_len (&mp->stream_name) > 0)
     {
-      u8 *stream_name = vec_new (u8, len);
-      clib_memcpy (stream_name, mp->stream_name, len);
+      u8 *stream_name = vl_api_from_api_to_new_vec (&mp->stream_name);
       uword *p = hash_get_mem (pg->stream_index_by_name, stream_name);
       if (p)
 	stream_index = *p;
diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c
index 2a66031..9156104 100644
--- a/src/vpp/api/custom_dump.c
+++ b/src/vpp/api/custom_dump.c
@@ -2531,8 +2531,10 @@
   u8 *s;
 
   s = format (0, "SCRIPT: pg_enable_disable ");
-  if ((mp->stream_name_length) > 0)
-    s = format (s, "stream %s", mp->stream_name);
+  if (vl_api_string_len (&mp->stream_name) > 0)
+    s =
+      format (s, "stream %s",
+	      vl_api_from_api_to_new_c_string (&mp->stream_name));
   if (!mp->is_enabled)
     s = format (s, "disable");
 
