Punt: socket register for exception dispatched/punted packets based on reason

- add to the Punt API to allow different descriptions of the desired packets: UDP or exceptions
- move the punt nodes into punt_node.c
- improve tests (test that the correct packets are punted to the registered socket)

Change-Id: I1a133dec88106874993cba1f5a439cd26b2fef72
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vnet/ip/ip.c b/src/vnet/ip/ip.c
index cab0cd0..6e8ac7c 100644
--- a/src/vnet/ip/ip.c
+++ b/src/vnet/ip/ip.c
@@ -278,6 +278,22 @@
     return 64 - first0;
 }
 
+u8 *
+format_ip_address_family (u8 * s, va_list * args)
+{
+  ip_address_family_t af = va_arg (*args, ip_address_family_t);
+
+  switch (af)
+    {
+    case AF_IP4:
+      return (format (s, "ip4"));
+    case AF_IP6:
+      return (format (s, "ip6"));
+    }
+
+  return (format (s, "unknown"));
+}
+
 /*
  * fd.io coding-style-patch-verification: ON
  *