diff --git a/src/vnet/devices/af_packet/af_packet.api b/src/vnet/devices/af_packet/af_packet.api
index c7a81c5..4a5cfb0 100644
--- a/src/vnet/devices/af_packet/af_packet.api
+++ b/src/vnet/devices/af_packet/af_packet.api
@@ -86,6 +86,60 @@
   vl_api_interface_index_t sw_if_index;
 };
 
+enum af_packet_mode {
+  AF_PACKET_API_MODE_ETHERNET = 1, /* mode ethernet */
+  AF_PACKET_API_MODE_IP = 2, /* mode ip */
+};
+
+enum af_packet_flags {
+  AF_PACKET_API_FLAG_QDISC_BYPASS = 1, /* enable the qdisc bypass */
+  AF_PACKET_API_FLAG_CKSUM_GSO = 2, /* enable checksum/gso */
+};
+
+/** \brief Create host-interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param mode - 1 - Ethernet, 2 - IP
+    @param hw_addr - interface MAC
+    @param use_random_hw_addr - use random generated MAC
+    @param host_if_name - interface name
+    @param rx_frame_size - frame size for RX
+    @param tx_frame_size - frame size for TX
+    @param rx_frames_per_block - frames per block for RX
+    @param tx_frames_per_block - frames per block for TX
+    @param flags - flags for the af_packet interface creation
+    @param num_rx_queues - number of rx queues
+    @param num_tx_queues - number of tx queues
+*/
+define af_packet_create_v3
+{
+  u32 client_index;
+  u32 context;
+
+  vl_api_af_packet_mode_t mode;
+  vl_api_mac_address_t hw_addr;
+  bool use_random_hw_addr;
+  string host_if_name[64];
+  u32 rx_frame_size;
+  u32 tx_frame_size;
+  u32 rx_frames_per_block;
+  u32 tx_frames_per_block;
+  vl_api_af_packet_flags_t flags;
+  u16 num_rx_queues [default=1];
+  u16 num_tx_queues [default=1];
+};
+
+/** \brief Create host-interface response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define af_packet_create_v3_reply
+{
+  u32 context;
+  i32 retval;
+  vl_api_interface_index_t sw_if_index;
+};
+
 /** \brief Delete host-interface
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
diff --git a/src/vnet/devices/af_packet/af_packet_api.c b/src/vnet/devices/af_packet/af_packet_api.c
index d991a2e..21f2c38 100644
--- a/src/vnet/devices/af_packet/af_packet_api.c
+++ b/src/vnet/devices/af_packet/af_packet_api.c
@@ -94,6 +94,66 @@
 }
 
 static void
+vl_api_af_packet_create_v3_t_handler (vl_api_af_packet_create_v3_t *mp)
+{
+  af_packet_create_if_arg_t _arg, *arg = &_arg;
+  vl_api_af_packet_create_v3_reply_t *rmp;
+  int rv = 0;
+
+  clib_memset (arg, 0, sizeof (*arg));
+
+  arg->host_if_name = format (0, "%s", mp->host_if_name);
+  vec_add1 (arg->host_if_name, 0);
+
+  // Default number of rx/tx queue(s)
+  arg->num_rxqs = 1;
+  arg->num_txqs = 1;
+  arg->rx_frame_size = clib_net_to_host_u32 (mp->rx_frame_size);
+  arg->tx_frame_size = clib_net_to_host_u32 (mp->tx_frame_size);
+  arg->rx_frames_per_block = clib_net_to_host_u32 (mp->rx_frames_per_block);
+  arg->tx_frames_per_block = clib_net_to_host_u32 (mp->tx_frames_per_block);
+  arg->hw_addr = mp->use_random_hw_addr ? 0 : mp->hw_addr;
+
+  switch (clib_net_to_host_u32 (mp->mode))
+    {
+    case AF_PACKET_API_MODE_ETHERNET:
+      arg->mode = AF_PACKET_IF_MODE_ETHERNET;
+      break;
+    case AF_PACKET_API_MODE_IP:
+      arg->mode = AF_PACKET_IF_MODE_IP;
+      break;
+    default:
+      arg->sw_if_index = ~0;
+      rv = VNET_ERR_INVALID_VALUE;
+      goto error;
+    }
+
+  STATIC_ASSERT (((int) AF_PACKET_API_FLAG_QDISC_BYPASS ==
+		  (int) AF_PACKET_IF_FLAGS_QDISC_BYPASS),
+		 "af-packet qdisc-bypass api flag mismatch");
+  STATIC_ASSERT (
+    ((int) AF_PACKET_API_FLAG_CKSUM_GSO == (int) AF_PACKET_IF_FLAGS_CKSUM_GSO),
+    "af-packet checksum/gso offload api flag mismatch");
+
+  // Default flags
+  arg->flags = clib_net_to_host_u32 (mp->flags);
+
+  if (clib_net_to_host_u16 (mp->num_rx_queues) > 1)
+    arg->num_rxqs = clib_net_to_host_u16 (mp->num_rx_queues);
+
+  if (clib_net_to_host_u16 (mp->num_tx_queues) > 1)
+    arg->num_txqs = clib_net_to_host_u16 (mp->num_tx_queues);
+
+  rv = af_packet_create_if (arg);
+
+error:
+  vec_free (arg->host_if_name);
+  REPLY_MACRO2 (VL_API_AF_PACKET_CREATE_V3_REPLY, ({
+		  rmp->sw_if_index = clib_host_to_net_u32 (arg->sw_if_index);
+		}));
+}
+
+static void
 vl_api_af_packet_delete_t_handler (vl_api_af_packet_delete_t * mp)
 {
   vl_api_af_packet_delete_reply_t *rmp;
