diff --git a/src/vnet/l2tp/l2tp.api b/src/vnet/l2tp/l2tp.api
index f679b75..618c412 100644
--- a/src/vnet/l2tp/l2tp.api
+++ b/src/vnet/l2tp/l2tp.api
@@ -13,7 +13,11 @@
  * limitations under the License.
  */
 
-option version = "1.0.0";
+option version = "2.0.0";
+
+import "vnet/interface_types.api";
+import "vnet/ethernet/ethernet_types.api";
+import "vnet/ip/ip_types.api";
 
 /** \brief l2tpv3 tunnel interface create request
     @param client_index - opaque cookie to identify the sender
@@ -31,14 +35,13 @@
 {
   u32 client_index;
   u32 context;
-  u8 client_address[16];
-  u8 our_address[16];
-  u8 is_ipv6;
+  vl_api_address_t client_address;
+  vl_api_address_t our_address;
   u32 local_session_id;
   u32 remote_session_id;
   u64 local_cookie;
   u64 remote_cookie;
-  u8 l2_sublayer_present;
+  bool l2_sublayer_present;
   u32 encap_vrf_id;
 };
 
@@ -51,14 +54,14 @@
 {
   u32 context;
   i32 retval;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
 };
 
 autoreply define l2tpv3_set_tunnel_cookies
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u64 new_local_cookie;
   u64 new_remote_cookie;
 };
@@ -66,15 +69,15 @@
 define sw_if_l2tpv3_tunnel_details
 {
   u32 context;
-  u32 sw_if_index;
-  u8 interface_name[64];
-  u8 client_address[16];
-  u8 our_address[16];
+  vl_api_interface_index_t sw_if_index;
+  string interface_name[64];
+  vl_api_address_t client_address;
+  vl_api_address_t our_address;
   u32 local_session_id;
   u32 remote_session_id;
   u64 local_cookie[2];
   u64 remote_cookie;
-  u8 l2_sublayer_present;
+  bool l2_sublayer_present;
 };
 
 define sw_if_l2tpv3_tunnel_dump
@@ -87,16 +90,22 @@
 {
   u32 client_index;
   u32 context;
-  u8 enable_disable;
-  u32 sw_if_index;
+  bool enable_disable;
+  vl_api_interface_index_t sw_if_index;
+};
+
+enum l2t_lookup_key : u8
+{
+	L2T_LOOKUP_KEY_API_SRC_ADDR = 0,
+	L2T_LOOKUP_KEY_API_DST_ADDR = 1,
+	L2T_LOOKUP_KEY_API_SESSION_ID = 2,
 };
 
 autoreply define l2tpv3_set_lookup_key
 {
   u32 client_index;
   u32 context;
-  /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
-  u8 key;
+  vl_api_l2t_lookup_key_t key;
 };
 
 /*
diff --git a/src/vnet/l2tp/l2tp_api.c b/src/vnet/l2tp/l2tp_api.c
index 6b48c14..ba1f7c6 100644
--- a/src/vnet/l2tp/l2tp_api.c
+++ b/src/vnet/l2tp/l2tp_api.c
@@ -23,6 +23,7 @@
 #include <vnet/interface.h>
 #include <vnet/api_errno.h>
 #include <vnet/l2tp/l2tp.h>
+#include <vnet/ip/ip_types_api.h>
 
 #include <vnet/vnet_msg_enum.h>
 
@@ -75,9 +76,10 @@
   mp->local_cookie[0] = s->local_cookie[0];
   mp->local_cookie[1] = s->local_cookie[1];
   mp->remote_cookie = s->remote_cookie;
-  clib_memcpy (mp->client_address, &s->client_address,
-	       sizeof (s->client_address));
-  clib_memcpy (mp->our_address, &s->our_address, sizeof (s->our_address));
+  ip_address_encode ((ip46_address_t *) & s->client_address, IP46_TYPE_IP6,
+		     &mp->client_address);
+  ip_address_encode ((ip46_address_t *) & s->our_address, IP46_TYPE_IP6,
+		     &mp->our_address);
   mp->l2_sublayer_present = s->l2_sublayer_present;
   mp->context = context;
 
@@ -113,8 +115,9 @@
   l2t_main_t *lm = &l2t_main;
   u32 sw_if_index = (u32) ~ 0;
   int rv;
+  ip46_address_t client, our;
 
-  if (mp->is_ipv6 != 1)
+  if (mp->our_address.af == ADDRESS_IP4)
     {
       rv = VNET_API_ERROR_UNIMPLEMENTED;
       goto out;
@@ -140,9 +143,12 @@
       encap_fib_index = ~0;
     }
 
+  ip_address_decode (&mp->client_address, &client);
+  ip_address_decode (&mp->our_address, &our);
+
   rv = create_l2tpv3_ipv6_tunnel (lm,
-				  (ip6_address_t *) mp->client_address,
-				  (ip6_address_t *) mp->our_address,
+				  &client.ip6,
+				  &our.ip6,
 				  ntohl (mp->local_session_id),
 				  ntohl (mp->remote_session_id),
 				  clib_net_to_host_u64 (mp->local_cookie),
@@ -202,13 +208,13 @@
   l2t_main_t *lm = &l2t_main;
   vl_api_l2tpv3_set_lookup_key_reply_t *rmp;
 
-  if (mp->key > L2T_LOOKUP_SESSION_ID)
+  if (mp->key > L2T_LOOKUP_KEY_API_SESSION_ID)
     {
       rv = VNET_API_ERROR_INVALID_VALUE;
       goto out;
     }
 
-  lm->lookup_type = mp->key;
+  lm->lookup_type = (ip6_to_l2_lookup_t) mp->key;
 
 out:
   REPLY_MACRO (VL_API_L2TPV3_SET_LOOKUP_KEY_REPLY);
