diff --git a/src/vnet/ip/punt.api b/src/vnet/ip/punt.api
index c8b222a..cedddc5 100644
--- a/src/vnet/ip/punt.api
+++ b/src/vnet/ip/punt.api
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Cisco and/or its affiliates.
+ * Copyright (c) 2015-2019 Cisco and/or its affiliates.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at:
@@ -13,18 +13,55 @@
  * limitations under the License.
  */
 
-option version = "2.0.0";
+option version = "2.1.0";
+import "vnet/ip/ip_types.api";
 
-/** \brief Punt definition
-    @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
-    @param l4_protocol - L4 protocol to be punted
-    @param l4_port - TCP/UDP port to be punted
+/** \brief The types of packets to be punted
 */
-typeonly define punt
+enum punt_type
 {
-    u8 ipv;
-    u8 l4_protocol;
-    u16 l4_port;
+    /* L4 (UDP) packets */
+    PUNT_API_TYPE_L4,
+    /* Exception packets handled by the VLIB punt infra */
+    PUNT_API_TYPE_EXCEPTION,
+};
+
+/** \brief Punt L4 traffic definition
+    @param af - Address Family, IPv4 or IPV6
+    @param protocol - L4 protocol to be punted
+    @param port - TCP/UDP port to be punted
+*/
+typedef punt_l4
+{
+    vl_api_address_family_t af;
+    vl_api_ip_proto_t protocol;
+    u16 port;
+};
+
+/** \brief The ID of the punt exception reason
+           Dump all the reasons to obtain this
+*/
+typedef punt_exception
+{
+    u32 id;
+};
+
+/** \brief Union of the different punt packet descriptions
+*/
+union punt_union
+{
+    vl_api_punt_exception_t exception;
+    vl_api_punt_l4_t l4;
+};
+
+/** \brief Full description of which packets are requested to be punted
+    @param type - Which packet type
+    @param punt - Description corresponding to the type
+*/
+typedef punt
+{
+    vl_api_punt_type_t type;
+    vl_api_punt_union_t punt; 
 };
 
 /** \brief Punt traffic to the host
@@ -40,19 +77,6 @@
     vl_api_punt_t punt;
 };
 
-define punt_dump
-{
-    u32 client_index;
-    u32 context;
-    u8 is_ipv6;
-};
-
-define punt_details
-{
-    u32 context;
-    vl_api_punt_t punt;
-};
-
 /** \brief Punt traffic to the host via socket
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -78,7 +102,7 @@
 {
     u32 client_index;
     u32 context;
-    u8 is_ipv6;
+    vl_api_punt_type_t type;
 };
 
 define punt_socket_details
@@ -94,6 +118,26 @@
     vl_api_punt_t punt;
 };
 
+/** \brief Dump all of the excpetion punt reasons
+*/
+define punt_reason_dump
+{
+    u32 client_index;
+    u32 context;
+};
+
+typedef punt_reason
+{
+    u32 id;
+    string name;
+};
+
+define punt_reason_details
+{
+    u32 context;
+    vl_api_punt_reason_t reason;
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")
