diff --git a/src/vnet/bonding/bond_api.c b/src/vnet/bonding/bond_api.c
index 958e594..50bae5d 100644
--- a/src/vnet/bonding/bond_api.c
+++ b/src/vnet/bonding/bond_api.c
@@ -63,7 +63,8 @@
   mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_EVENT);
   mp->sw_if_index = ntohl (sw_if_index);
 
-  mp->flags = 0;
+  mp->admin_up_down = 0;
+  mp->link_up_down = 0;
   mp->deleted = 1;
   vl_msg_api_send_shmem (q, (u8 *) & mp);
 }
diff --git a/src/vnet/devices/tap/tapv2_api.c b/src/vnet/devices/tap/tapv2_api.c
index 8f1633c..1260afd 100644
--- a/src/vnet/devices/tap/tapv2_api.c
+++ b/src/vnet/devices/tap/tapv2_api.c
@@ -148,7 +148,8 @@
   mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_EVENT);
   mp->sw_if_index = ntohl (sw_if_index);
 
-  mp->flags = 0;
+  mp->admin_up_down = 0;
+  mp->link_up_down = 0;
   mp->deleted = 1;
   vl_api_send_msg (reg, (u8 *) mp);
 }
diff --git a/src/vnet/devices/virtio/vhost_user_api.c b/src/vnet/devices/virtio/vhost_user_api.c
index 8f0b9d9..acfb3e0 100644
--- a/src/vnet/devices/virtio/vhost_user_api.c
+++ b/src/vnet/devices/virtio/vhost_user_api.c
@@ -62,7 +62,8 @@
   mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_EVENT);
   mp->sw_if_index = ntohl (sw_if_index);
 
-  mp->flags = 0;
+  mp->admin_up_down = 0;
+  mp->link_up_down = 0;
   mp->deleted = 1;
   vl_api_send_msg (reg, (u8 *) mp);
 }
diff --git a/src/vnet/devices/virtio/virtio_api.c b/src/vnet/devices/virtio/virtio_api.c
index b2ac471..5035799 100644
--- a/src/vnet/devices/virtio/virtio_api.c
+++ b/src/vnet/devices/virtio/virtio_api.c
@@ -97,7 +97,8 @@
   mp->_vl_msg_id = htons (VL_API_SW_INTERFACE_EVENT);
   mp->sw_if_index = htonl (sw_if_index);
 
-  mp->flags = 0;
+  mp->admin_up_down = 0;
+  mp->link_up_down = 0;
   mp->deleted = 1;
   vl_api_send_msg (reg, (u8 *) mp);
 }
diff --git a/src/vnet/ethernet/ethernet_types_api.h b/src/vnet/ethernet/ethernet_types_api.h
index 8bd8b7e..e2c638d 100644
--- a/src/vnet/ethernet/ethernet_types_api.h
+++ b/src/vnet/ethernet/ethernet_types_api.h
@@ -21,7 +21,6 @@
  */
 
 #include <vnet/ethernet/mac_address.h>
-#include <vlibapi/api_types.h>
 
 extern void mac_address_decode (const u8 * in, mac_address_t * out);
 extern void mac_address_encode (const mac_address_t * in, u8 * out);
diff --git a/src/vnet/interface.api b/src/vnet/interface.api
index cae2b65..1af323e 100644
--- a/src/vnet/interface.api
+++ b/src/vnet/interface.api
@@ -14,11 +14,9 @@
  * limitations under the License.
  */
 
-option version = "3.0.0";
+option version = "2.2.0";
 
 import "vnet/interface_types.api";
-import "vnet/ethernet/ethernet_types.api";
-import "vnet/ip/ip_types.api";
 
 service {
   rpc want_interface_events returns want_interface_events_reply
@@ -29,15 +27,16 @@
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param sw_if_index - index of the interface to set flags on
-    @param flags - interface_status flags
-        (only IF_STATUS_API_FLAG_ADMIN_UP used in config)
+    @param admin_up_down - set the admin state, 1 = up, 0 = down
+    @param link_up_down - Oper state sent on change event, not used in config.
 */
 autoreply define sw_interface_set_flags
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  vl_api_if_status_flags_t flags;
+  u32 sw_if_index;
+  /* 1 = up, 0 = down */
+  u8 admin_up_down;
 };
 
 /** \brief Set interface physical MTU
@@ -50,7 +49,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
   u16 mtu;
 };
 
@@ -59,8 +58,9 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
+  u32 sw_if_index;
+  /* $$$$ Replace with enum */
+  u32 mtu[4]; /* 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
 };
 
 /** \brief Set IP4 directed broadcast
@@ -73,8 +73,8 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool  enable;
+  u32 sw_if_index;
+  u8  enable;
 };
 
 
@@ -82,16 +82,18 @@
     @param client_index - opaque cookie to identify the sender
     @param pid - client pid registered to receive notification
     @param sw_if_index - index of the interface of the event
-    @param flags - interface_status flags
+    @param admin_up_down - The administrative state; 1 = up, 0 = down
+    @param link_up_down - The operational state; 1 = up, 0 = down
     @param deleted - interface was deleted
 */
 define sw_interface_event
 {
   u32 client_index;
   u32 pid;
-  vl_api_interface_index_t sw_if_index;
-  vl_api_if_status_flags_t flags;
-  bool deleted;
+  u32 sw_if_index;
+  u8 admin_up_down;
+  u8 link_up_down;
+  u8 deleted;
 };
 
 /** \brief Register for interface events
@@ -108,19 +110,25 @@
   u32 pid;
 };
 
-/** \brief Interface details structure (fix this)
+/** \brief Interface details structure (fix this) 
     @param sw_if_index - index of the interface
-    @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index
-    @param l2_address - the interface's l2 address
-    @param flags - interface_status flags
+    @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index  
+    @param l2_address_length - length of the interface's l2 address
+    @param pid - the interface's l2 address
+    @param interface_name - name of the interface
     @param link_duplex - 1 if half duplex, 2 if full duplex
     @param link_speed - value in kbps
     @param link_MTU - max. transmission unit
-    @param sub_id - A number 0-N to uniquely identify this subif on super if
+    @param sub_if_id - A number 0-N to uniquely identify this subif on super if
+    @param sub_dot1ad - 0 = dot1q, 1 = dot1ad
+    @param sub_dot1ah - 1 = dot1ah, 0 = otherwise
     @param sub_number_of_tags - Number of tags (0 - 2)
     @param sub_outer_vlan_id
     @param sub_inner_vlan_id
-    @param sub_if_flags - sub interface flags
+    @param sub_exact_match
+    @param sub_default
+    @param sub_outer_vlan_id_any
+    @param sub_inner_vlan_id_any
     @param vtr_op - vlan tag rewrite operation
     @param vtr_push_dot1q
     @param vtr_tag1
@@ -130,25 +138,29 @@
     @param pbb_b_smac[6] - B-tag local mac address
     @param pbb_b_vlanid - B-tag vlanid
     @param pbb_i_sid - I-tag service id
-    @param interface_name - name of the interface
-    @param tag - an ascii tag
 */
 define sw_interface_details
 {
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 
   /* index of sup interface (e.g. hw interface).
      equal to sw_if_index for super hw interface. */
   u32 sup_sw_if_index;
 
   /* Layer 2 address, if applicable */
-  vl_api_mac_address_t l2_address;
+  u32 l2_address_length;
+  u8 l2_address[8];
 
-  vl_api_if_status_flags_t flags;
+  /* Interface name */
+  u8 interface_name[64];
+
+  /* 1 = up, 0 = down */
+  u8 admin_up_down;
+  u8 link_up_down;
 
   /* 1 = half duplex, 2 = full duplex */
-  vl_api_link_duplex_t link_duplex;
+  u8 link_duplex;
 
   /* link speed in kbps */
   u32 link_speed;
@@ -157,34 +169,38 @@
   u16 link_mtu;
 
   /* Per protocol MTUs */
-  u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
+  u32 mtu[4]; /* 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
 
   /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
   u32 sub_id;
 
+  /* 0 = dot1q, 1=dot1ad */
+  u8 sub_dot1ad;
+  /* 1 = dot1h, 1=otherwise */
+  u8 sub_dot1ah;
+
   /* Number of tags 0-2 */
   u8 sub_number_of_tags;
   u16 sub_outer_vlan_id;
   u16 sub_inner_vlan_id;
-
-  vl_api_sub_if_flags_t sub_if_flags;
+  u8 sub_exact_match;
+  u8 sub_default;
+  u8 sub_outer_vlan_id_any;
+  u8 sub_inner_vlan_id_any;
 
   /* vlan tag rewrite state */
   u32 vtr_op;
   u32 vtr_push_dot1q;		// ethertype of first pushed tag is dot1q/dot1ad
   u32 vtr_tag1;			// first pushed tag
   u32 vtr_tag2;			// second pushed tag
-
+  u8 tag[64];
+  
   /* pbb tag rewrite info */
   u16 outer_tag;
-  vl_api_mac_address_t  b_dmac;
-  vl_api_mac_address_t  b_smac;
+  u8  b_dmac[6];
+  u8  b_smac[6];
   u16 b_vlanid;
   u32 i_sid;
-
-  /* Interface name */
-  string interface_name;
-  string tag;
 };
 
 /** \brief Request all or filtered subset of sw_interface_details
@@ -198,27 +214,30 @@
 {
   u32 client_index;
   u32 context;
-  bool name_filter_valid;
-  string name_filter;
+  u8 name_filter_valid;
+  u8 name_filter[49];
 };
 
 /** \brief Set or delete one or all ip addresses on a specified interface
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param sw_if_index - index of the interface to add/del addresses
+    @param sw_if_index - index of the interface to add/del addresses 
     @param is_add - add address if non-zero, else delete
+    @param is_ipv6 - if non-zero the address is ipv6, else ipv4
     @param del_all - if non-zero delete all addresses on the interface
-    @param prefix - address + a prefix length for the implied connected route
+    @param address_length - address length in bytes, 4 for ip4, 16 for ip6
+    @param address - array of address bytes
 */
 autoreply define sw_interface_add_del_address
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool is_add;
-
-  bool del_all;
-  vl_api_prefix_t prefix;
+  u32 sw_if_index;
+  u8 is_add;
+  u8 is_ipv6;
+  u8 del_all;
+  u8 address_length;
+  u8 address[16];
 };
 
 /** \brief Associate the specified interface with a fib table
@@ -232,8 +251,8 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool is_ipv6;
+  u32 sw_if_index;
+  u8 is_ipv6;
   u32 vrf_id;
 };
 
@@ -246,8 +265,8 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool is_ipv6;
+  u32 sw_if_index;
+  u8 is_ipv6;
 };
 
 /** \brief Reply to get_sw_interface_vrf
@@ -272,9 +291,9 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;		/* use this intfc address */
-  vl_api_interface_index_t unnumbered_sw_if_index;	/* on this interface */
-  bool is_add;
+  u32 sw_if_index;		/* use this intfc address */
+  u32 unnumbered_sw_if_index;	/* on this interface */
+  u8 is_add;
 };
 
 /** \brief Clear interface statistics
@@ -286,7 +305,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Set / clear software interface tag
@@ -296,13 +315,13 @@
     @param add_del - 1 = add, 0 = delete
     @param tag - an ascii tag
 */
-autoreply define sw_interface_tag_add_del
+autoreply define sw_interface_tag_add_del 
 {
-  u32 client_index;
-  u32 context;
-  bool is_add;
-  vl_api_interface_index_t sw_if_index;
-  string tag;
+    u32 client_index;
+    u32 context;
+    u8 is_add;
+    u32 sw_if_index;
+    u8 tag[64];
 };
 
 /** \brief Set an interface's MAC address
@@ -313,10 +332,10 @@
 */
 autoreply define sw_interface_set_mac_address
 {
-  u32 client_index;
-  u32 context;
-  vl_api_interface_index_t sw_if_index;
-  vl_api_mac_address_t mac_address;
+    u32 client_index;
+    u32 context;
+    u32 sw_if_index;
+    u8 mac_address[6];
 };
 
 /** \brief Get interface's MAC address
@@ -326,9 +345,9 @@
 */
 define sw_interface_get_mac_address
 {
-  u32 client_index;
-  u32 context;
-  vl_api_interface_index_t sw_if_index;
+    u32 client_index;
+    u32 context;
+    u32 sw_if_index;
 };
 
 /** \brief Reply for get interface's MAC address request
@@ -338,9 +357,9 @@
 */
 define sw_interface_get_mac_address_reply
 {
-  u32 context;
-  i32 retval;
-  vl_api_mac_address_t mac_address;
+    u32 context;
+    i32 retval;
+    u8 mac_address[6];
 };
 
 /** \brief Set an interface's rx-mode
@@ -355,12 +374,12 @@
 */
 autoreply define sw_interface_set_rx_mode
 {
-  u32 client_index;
-  u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool queue_id_valid;
-  u32 queue_id;
-  vl_api_rx_mode_t mode;
+    u32 client_index;
+    u32 context;
+    u32 sw_if_index;
+    u8 queue_id_valid;
+    u32 queue_id;
+    u8 mode;
 };
 
 /** \brief Set an interface's rx-placement
@@ -378,10 +397,10 @@
 {
     u32 client_index;
     u32 context;
-    vl_api_interface_index_t sw_if_index;
+    u32 sw_if_index;
     u32 queue_id;
     u32 worker_id;
-    bool is_main;
+    u8 is_main;
 };
 
 /** \brief dump the rx queue placement of interface(s)
@@ -394,7 +413,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief show the interface's queue - thread placement
@@ -416,10 +435,10 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
   u32 queue_id;
   u32 worker_id;
-  vl_api_rx_mode_t mode;
+  u8 mode;
 };
 
 /* Gross kludge, DGMS */
@@ -427,7 +446,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
   u32 new_show_dev_instance;
 };
 
@@ -435,10 +454,18 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
   u32 sub_id;
 
-  vl_api_sub_if_flags_t sub_if_flags;
+  /* These fields map directly onto the subif template */
+  u8 no_tags;
+  u8 one_tag;
+  u8 two_tags;
+  u8 dot1ad;			// 0 = dot1q, 1=dot1ad
+  u8 exact_match;
+  u8 default_sub;
+  u8 outer_vlan_id_any;
+  u8 inner_vlan_id_any;
   u16 outer_vlan_id;
   u16 inner_vlan_id;
 };
@@ -447,7 +474,7 @@
 {
   u32 context;
   i32 retval;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Create a new subinterface with the given vlan id
@@ -460,7 +487,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
   u32 vlan_id;
 };
 
@@ -473,7 +500,7 @@
 {
   u32 context;
   i32 retval;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Delete sub interface request
@@ -484,7 +511,7 @@
 autoreply define delete_subif {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Create loopback interface request
@@ -496,7 +523,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_mac_address_t mac_address;
+  u8 mac_address[6];
 };
 
 /** \brief Create loopback interface response
@@ -508,7 +535,7 @@
 {
   u32 context;
   i32 retval;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Create loopback interface instance request
@@ -522,8 +549,8 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_mac_address_t mac_address;
-  bool is_specified;
+  u8 mac_address[6];
+  u8 is_specified;
   u32 user_instance;
 };
 
@@ -536,7 +563,7 @@
 {
   u32 context;
   i32 retval;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Delete loopback interface request
@@ -548,7 +575,7 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
+  u32 sw_if_index;
 };
 
 /** \brief Enable or disable detailed interface stats
@@ -562,8 +589,8 @@
 {
   u32 client_index;
   u32 context;
-  vl_api_interface_index_t sw_if_index;
-  bool  enable_disable;
+  u32 sw_if_index;
+  u8  enable_disable;
 };
 
 /*
diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c
index eb5b573..bd5588e 100644
--- a/src/vnet/interface_api.c
+++ b/src/vnet/interface_api.c
@@ -31,11 +31,6 @@
 #include <vnet/fib/fib_api.h>
 #include <vnet/mfib/mfib_table.h>
 
-#include <vlibapi/api_types.h>
-
-#include <vnet/ip/ip_types_api.h>
-#include <vnet/ethernet/ethernet_types_api.h>
-
 #define vl_typedefs		/* define message structures */
 #include <vnet/vnet_all_api_h.h>
 #undef vl_typedefs
@@ -92,9 +87,7 @@
 
   VALIDATE_SW_IF_INDEX (mp);
 
-  flags =
-    ((ntohl (mp->flags)) & IF_STATUS_API_FLAG_ADMIN_UP) ?
-    VNET_SW_INTERFACE_FLAG_ADMIN_UP : 0;
+  flags = mp->admin_up_down ? VNET_SW_INTERFACE_FLAG_ADMIN_UP : 0;
 
   error = vnet_sw_interface_set_flags (vnm, ntohl (mp->sw_if_index), flags);
   if (error)
@@ -200,24 +193,13 @@
   vnet_hw_interface_t *hi =
     vnet_get_sup_hw_interface (am->vnet_main, swif->sw_if_index);
 
-  uint32_t if_name_len = strlen ((char *) interface_name);
-  u8 *tag = vnet_get_sw_interface_tag (vnet_get_main (), swif->sw_if_index);
-  uint32_t tag_len = 0;
-  if (tag != NULL)
-    tag_len = strlen ((char *) tag);
-  vl_api_sw_interface_details_t *mp =
-    vl_msg_api_alloc (sizeof (*mp) + if_name_len + tag_len);
-  clib_memset (mp, 0, sizeof (*mp) + if_name_len + tag_len);
+  vl_api_sw_interface_details_t *mp = vl_msg_api_alloc (sizeof (*mp));
+  clib_memset (mp, 0, sizeof (*mp));
   mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_DETAILS);
   mp->sw_if_index = ntohl (swif->sw_if_index);
   mp->sup_sw_if_index = ntohl (swif->sup_sw_if_index);
-
-  mp->flags |= (swif->flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) ?
-    IF_STATUS_API_FLAG_ADMIN_UP : 0;
-  mp->flags |= (hi->flags & VNET_HW_INTERFACE_FLAG_LINK_UP) ?
-    IF_STATUS_API_FLAG_LINK_UP : 0;
-  mp->flags = ntohl (mp->flags);
-
+  mp->admin_up_down = (swif->flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) ? 1 : 0;
+  mp->link_up_down = (hi->flags & VNET_HW_INTERFACE_FLAG_LINK_UP) ? 1 : 0;
   mp->link_duplex = ((hi->flags & VNET_HW_INTERFACE_FLAG_DUPLEX_MASK) >>
 		     VNET_HW_INTERFACE_FLAG_DUPLEX_SHIFT);
   mp->link_speed = ntohl (hi->link_speed);
@@ -229,6 +211,9 @@
 
   mp->context = context;
 
+  strncpy ((char *) mp->interface_name,
+	   (char *) interface_name, ARRAY_LEN (mp->interface_name) - 1);
+
   /* Send the L2 address for ethernet physical intfcs */
   if (swif->sup_sw_if_index == swif->sw_if_index
       && hi->hw_class_index == ethernet_hw_interface_class.index)
@@ -238,18 +223,22 @@
 
       ei = pool_elt_at_index (em->interfaces, hi->hw_instance);
       ASSERT (sizeof (mp->l2_address) >= sizeof (ei->address));
-      mac_address_encode ((mac_address_t *) ei->address, mp->l2_address);
+      clib_memcpy (mp->l2_address, ei->address, sizeof (ei->address));
+      mp->l2_address_length = ntohl (sizeof (ei->address));
     }
   else if (swif->sup_sw_if_index != swif->sw_if_index)
     {
       vnet_sub_interface_t *sub = &swif->sub;
       mp->sub_id = ntohl (sub->id);
+      mp->sub_dot1ad = sub->eth.flags.dot1ad;
       mp->sub_number_of_tags =
 	sub->eth.flags.one_tag + sub->eth.flags.two_tags * 2;
       mp->sub_outer_vlan_id = ntohs (sub->eth.outer_vlan_id);
       mp->sub_inner_vlan_id = ntohs (sub->eth.inner_vlan_id);
-      mp->sub_if_flags =
-	ntohl (sub->eth.raw_flags & SUB_IF_API_FLAG_MASK_VNET);
+      mp->sub_exact_match = sub->eth.flags.exact_match;
+      mp->sub_default = sub->eth.flags.default_sub;
+      mp->sub_outer_vlan_id_any = sub->eth.flags.outer_vlan_id_any;
+      mp->sub_inner_vlan_id_any = sub->eth.flags.inner_vlan_id_any;
 
       /* vlan tag rewrite data */
       u32 vtr_op = L2_VTR_DISABLED;
@@ -283,19 +272,18 @@
   if (!l2pbb_get (am->vlib_main, am->vnet_main, swif->sw_if_index,
 		  &vtr_op, &outer_tag, &eth_hdr, &b_vlanid, &i_sid))
     {
-      mp->sub_if_flags |= ntohl (SUB_IF_API_FLAG_DOT1AH);
-      mac_address_encode ((mac_address_t *) eth_hdr.dst_address, mp->b_dmac);
-      mac_address_encode ((mac_address_t *) eth_hdr.src_address, mp->b_smac);
+      mp->sub_dot1ah = 1;
+      clib_memcpy (mp->b_dmac, eth_hdr.dst_address,
+		   sizeof (eth_hdr.dst_address));
+      clib_memcpy (mp->b_smac, eth_hdr.src_address,
+		   sizeof (eth_hdr.src_address));
       mp->b_vlanid = b_vlanid;
       mp->i_sid = i_sid;
     }
 
-  char *p = (char *) &mp->interface_name;
-  p +=
-    vl_api_to_api_string (if_name_len, (char *) interface_name,
-			  (vl_api_string_t *) p);
-  if (tag != NULL)
-    vl_api_to_api_string (tag_len, (char *) tag, (vl_api_string_t *) p);
+  u8 *tag = vnet_get_sw_interface_tag (vnet_get_main (), swif->sw_if_index);
+  if (tag)
+    strncpy ((char *) mp->tag, (char *) tag, ARRAY_LEN (mp->tag) - 1);
 
   vl_api_send_msg (rp, (u8 *) mp);
 }
@@ -319,8 +307,8 @@
   u8 *filter = 0, *name = 0;
   if (mp->name_filter_valid)
     {
-      filter =
-	format (0, "%s%c", vl_api_from_api_string_c (&mp->name_filter), 0);
+      mp->name_filter[ARRAY_LEN (mp->name_filter) - 1] = 0;
+      filter = format (0, "%s%c", mp->name_filter, 0);
     }
 
   char *strcasestr (char *, char *);	/* lnx hdr file botch */
@@ -354,7 +342,6 @@
   int rv = 0;
   u32 is_del;
   clib_error_t *error = 0;
-  ip46_address_t address;
 
   VALIDATE_SW_IF_INDEX (mp);
 
@@ -363,14 +350,14 @@
 
   if (mp->del_all)
     ip_del_all_interface_addresses (vm, ntohl (mp->sw_if_index));
-  else if (ip_address_decode (&mp->prefix.address, &address) == IP46_TYPE_IP6)
+  else if (mp->is_ipv6)
     error = ip6_add_del_interface_address (vm, ntohl (mp->sw_if_index),
-					   (void *) &address.ip6,
-					   mp->prefix.address_length, is_del);
+					   (void *) mp->address,
+					   mp->address_length, is_del);
   else
     error = ip4_add_del_interface_address (vm, ntohl (mp->sw_if_index),
-					   (void *) &address.ip4,
-					   mp->prefix.address_length, is_del);
+					   (void *) mp->address,
+					   mp->address_length, is_del);
 
   if (error)
     {
@@ -737,13 +724,8 @@
   mp->client_index = reg->client_index;
   mp->pid = reg->client_pid;
 
-  mp->flags = 0;
-  mp->flags |= (swif->flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) ?
-    IF_STATUS_API_FLAG_ADMIN_UP : 0;
-  mp->flags |= (hi->flags & VNET_HW_INTERFACE_FLAG_LINK_UP) ?
-    IF_STATUS_API_FLAG_LINK_UP : 0;
-  mp->flags = ntohl (mp->flags);
-
+  mp->admin_up_down = (swif->flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP) ? 1 : 0;
+  mp->link_up_down = (hi->flags & VNET_HW_INTERFACE_FLAG_LINK_UP) ? 1 : 0;
   vl_api_send_msg (vl_reg, (u8 *) mp);
 }
 
@@ -866,13 +848,14 @@
 
   if (mp->is_add)
     {
-      if (vl_api_from_api_string_c (&mp->tag)[0] == 0)
+      if (mp->tag[0] == 0)
 	{
 	  rv = VNET_API_ERROR_INVALID_VALUE;
 	  goto out;
 	}
 
-      tag = format (0, "%s%c", vl_api_from_api_string_c (&mp->tag), 0);
+      mp->tag[ARRAY_LEN (mp->tag) - 1] = 0;
+      tag = format (0, "%s%c", mp->tag, 0);
       vnet_set_sw_interface_tag (vnm, tag, sw_if_index);
     }
   else
@@ -892,14 +875,12 @@
   vnet_sw_interface_t *si;
   clib_error_t *error;
   int rv = 0;
-  mac_address_t mac;
 
   VALIDATE_SW_IF_INDEX (mp);
 
   si = vnet_get_sw_interface (vnm, sw_if_index);
-  mac_address_decode (mp->mac_address, &mac);
-  error =
-    vnet_hw_interface_change_mac_address (vnm, si->hw_if_index, (u8 *) & mac);
+  error = vnet_hw_interface_change_mac_address (vnm, si->hw_if_index,
+						mp->mac_address);
   if (error)
     {
       rv = VNET_API_ERROR_UNIMPLEMENTED;
@@ -939,7 +920,7 @@
   rmp->context = mp->context;
   rmp->retval = htonl (rv);
   if (!rv && eth_if)
-    mac_address_encode ((mac_address_t *) eth_if->address, rmp->mac_address);
+    memcpy (rmp->mac_address, eth_if->address, 6);
   vl_api_send_msg (reg, (u8 *) rmp);
 }
 
@@ -1231,7 +1212,14 @@
   template.flood_class = VNET_FLOOD_CLASS_NORMAL;
   template.sup_sw_if_index = sw_if_index;
   template.sub.id = sub_id;
-  template.sub.eth.raw_flags = ntohl (mp->sub_if_flags);
+  template.sub.eth.flags.no_tags = mp->no_tags;
+  template.sub.eth.flags.one_tag = mp->one_tag;
+  template.sub.eth.flags.two_tags = mp->two_tags;
+  template.sub.eth.flags.dot1ad = mp->dot1ad;
+  template.sub.eth.flags.exact_match = mp->exact_match;
+  template.sub.eth.flags.default_sub = mp->default_sub;
+  template.sub.eth.flags.outer_vlan_id_any = mp->outer_vlan_id_any;
+  template.sub.eth.flags.inner_vlan_id_any = mp->inner_vlan_id_any;
   template.sub.eth.outer_vlan_id = ntohs (mp->outer_vlan_id);
   template.sub.eth.inner_vlan_id = ntohs (mp->inner_vlan_id);
 
@@ -1295,10 +1283,8 @@
   vl_api_create_loopback_reply_t *rmp;
   u32 sw_if_index;
   int rv;
-  mac_address_t mac;
 
-  mac_address_decode (mp->mac_address, &mac);
-  rv = vnet_create_loopback_interface (&sw_if_index, (u8 *) & mac, 0, 0);
+  rv = vnet_create_loopback_interface (&sw_if_index, mp->mac_address, 0, 0);
 
   /* *INDENT-OFF* */
   REPLY_MACRO2(VL_API_CREATE_LOOPBACK_REPLY,
@@ -1316,10 +1302,8 @@
   u8 is_specified = mp->is_specified;
   u32 user_instance = ntohl (mp->user_instance);
   int rv;
-  mac_address_t mac;
 
-  mac_address_decode (mp->mac_address, &mac);
-  rv = vnet_create_loopback_interface (&sw_if_index, (u8 *) & mac,
+  rv = vnet_create_loopback_interface (&sw_if_index, mp->mac_address,
 				       is_specified, user_instance);
 
   /* *INDENT-OFF* */
diff --git a/src/vnet/interface_types.api b/src/vnet/interface_types.api
index 6e79044..f6fb421 100644
--- a/src/vnet/interface_types.api
+++ b/src/vnet/interface_types.api
@@ -16,48 +16,3 @@
 
 typedef u32 interface_index;
 
-enum if_status_flags
-{
-  IF_STATUS_API_FLAG_ADMIN_UP = 1,
-  IF_STATUS_API_FLAG_LINK_UP = 2,
-};
-
-/* Per protocol MTU */
-enum mtu_proto
-{
-  MTU_PROTO_API_L3,			/* Default payload MTU (without L2 headers) */
-  MTU_PROTO_API_IP4,			/* Per-protocol MTUs overriding default */
-  MTU_PROTO_API_IP6,
-  MTU_PROTO_API_MPLS,
-  MTU_PROTO_API_N,
-};
-
-enum link_duplex
-{
-  LINK_DUPLEX_API_UNKNOWN = 0,
-  LINK_DUPLEX_API_HALF = 1,
-  LINK_DUPLEX_API_FULL = 2,
-};
-
-enum sub_if_flags
-{
-  SUB_IF_API_FLAG_NO_TAGS = 1,
-  SUB_IF_API_FLAG_ONE_TAG = 2,
-  SUB_IF_API_FLAG_TWO_TAGS = 4,
-  SUB_IF_API_FLAG_DOT1AD = 8,
-  SUB_IF_API_FLAG_EXACT_MATCH = 16,
-  SUB_IF_API_FLAG_DEFAULT = 32,
-  SUB_IF_API_FLAG_OUTER_VLAN_ID_ANY = 64,
-  SUB_IF_API_FLAG_INNER_VLAN_ID_ANY = 128,
-  SUB_IF_API_FLAG_MASK_VNET = 254, /* use with vnet_sub_interface_t raw_flags */
-  SUB_IF_API_FLAG_DOT1AH = 256,
-};
-
-enum rx_mode
-{
-  RX_MODE_API_UNKNOWN = 0,
-  RX_MODE_API_POLLING,
-  RX_MODE_API_INTERRUPT,
-  RX_MODE_API_ADAPTIVE,
-  RX_MODE_API_DEFAULT,
-};
diff --git a/src/vnet/ip/ip_types_api.h b/src/vnet/ip/ip_types_api.h
index 53a9b59..a67134c 100644
--- a/src/vnet/ip/ip_types_api.h
+++ b/src/vnet/ip/ip_types_api.h
@@ -23,7 +23,6 @@
 #include <vnet/ip/ip.h>
 #include <vnet/fib/fib_types.h>
 #include <vnet/mfib/mfib_types.h>
-#include <vlibapi/api_types.h>
 
 /**
  * Forward declarations so we need not #include the API definitions here
