diff --git a/Makefile.am b/Makefile.am
index 854cce1..b9b213f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,8 +31,9 @@
   ndn-cpp/c/encoding/BinaryXMLName.c ndn-cpp/c/encoding/BinaryXMLName.h \
   ndn-cpp/c/encoding/BinaryXMLPublisherPublicKeyDigest.c ndn-cpp/c/encoding/BinaryXMLPublisherPublicKeyDigest.h \
   ndn-cpp/c/encoding/BinaryXMLStructureDecoder.c ndn-cpp/c/encoding/BinaryXMLStructureDecoder.h \
-  ndn-cpp/c/transport/TcpTransport.c ndn-cpp/c/transport/TcpTransport.h \
-  ndn-cpp/c/transport/UdpTransport.c ndn-cpp/c/transport/UdpTransport.h \
+  ndn-cpp/c/transport/SocketTransport.c ndn-cpp/c/transport/SocketTransport.h \
+  ndn-cpp/c/transport/TcpTransport.h \
+  ndn-cpp/c/transport/UdpTransport.h \
   ndn-cpp/c/util/DynamicUCharArray.c ndn-cpp/c/util/DynamicUCharArray.h \
   ndn-cpp/c/util/ndn_memory.c ndn-cpp/c/util/ndn_memory.h \
   ndn-cpp/c/util/ndn_realloc.c ndn-cpp/c/util/ndn_realloc.h
@@ -53,9 +54,9 @@
   ndn-cpp/c/encoding/BinaryXMLStructureDecoder.h ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp \
   ndn-cpp/encoding/BinaryXMLWireFormat.cpp ndn-cpp/c/encoding/BinaryXMLName.h ndn-cpp/encoding/BinaryXMLWireFormat.hpp \
   ndn-cpp/encoding/WireFormat.cpp ndn-cpp/encoding/WireFormat.hpp \
-  ndn-cpp/c/transport/TcpTransport.h ndn-cpp/transport/TcpTransport.cpp ndn-cpp/transport/TcpTransport.hpp \
+  ndn-cpp/c/transport/SocketTransport.h ndn-cpp/c/transport/TcpTransport.h ndn-cpp/transport/TcpTransport.cpp ndn-cpp/transport/TcpTransport.hpp \
   ndn-cpp/transport/Transport.cpp ndn-cpp/transport/Transport.hpp \
-  ndn-cpp/c/transport/UdpTransport.h ndn-cpp/transport/UdpTransport.cpp ndn-cpp/transport/UdpTransport.hpp
+  ndn-cpp/c/transport/SocketTransport.h ndn-cpp/c/transport/UdpTransport.h ndn-cpp/transport/UdpTransport.cpp ndn-cpp/transport/UdpTransport.hpp
 
 bin_test_encode_decode_Interest_SOURCES = tests/test-encode-decode-Interest.cpp
 bin_test_encode_decode_Interest_LDADD = libndn-c.a libndn-cpp.a
diff --git a/Makefile.in b/Makefile.in
index fad2be9..634aa7c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -146,8 +146,7 @@
 	ndn-cpp/c/encoding/BinaryXMLName.$(OBJEXT) \
 	ndn-cpp/c/encoding/BinaryXMLPublisherPublicKeyDigest.$(OBJEXT) \
 	ndn-cpp/c/encoding/BinaryXMLStructureDecoder.$(OBJEXT) \
-	ndn-cpp/c/transport/TcpTransport.$(OBJEXT) \
-	ndn-cpp/c/transport/UdpTransport.$(OBJEXT) \
+	ndn-cpp/c/transport/SocketTransport.$(OBJEXT) \
 	ndn-cpp/c/util/DynamicUCharArray.$(OBJEXT) \
 	ndn-cpp/c/util/ndn_memory.$(OBJEXT) \
 	ndn-cpp/c/util/ndn_realloc.$(OBJEXT)
@@ -434,8 +433,9 @@
   ndn-cpp/c/encoding/BinaryXMLName.c ndn-cpp/c/encoding/BinaryXMLName.h \
   ndn-cpp/c/encoding/BinaryXMLPublisherPublicKeyDigest.c ndn-cpp/c/encoding/BinaryXMLPublisherPublicKeyDigest.h \
   ndn-cpp/c/encoding/BinaryXMLStructureDecoder.c ndn-cpp/c/encoding/BinaryXMLStructureDecoder.h \
-  ndn-cpp/c/transport/TcpTransport.c ndn-cpp/c/transport/TcpTransport.h \
-  ndn-cpp/c/transport/UdpTransport.c ndn-cpp/c/transport/UdpTransport.h \
+  ndn-cpp/c/transport/SocketTransport.c ndn-cpp/c/transport/SocketTransport.h \
+  ndn-cpp/c/transport/TcpTransport.h \
+  ndn-cpp/c/transport/UdpTransport.h \
   ndn-cpp/c/util/DynamicUCharArray.c ndn-cpp/c/util/DynamicUCharArray.h \
   ndn-cpp/c/util/ndn_memory.c ndn-cpp/c/util/ndn_memory.h \
   ndn-cpp/c/util/ndn_realloc.c ndn-cpp/c/util/ndn_realloc.h
@@ -456,9 +456,9 @@
   ndn-cpp/c/encoding/BinaryXMLStructureDecoder.h ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp \
   ndn-cpp/encoding/BinaryXMLWireFormat.cpp ndn-cpp/c/encoding/BinaryXMLName.h ndn-cpp/encoding/BinaryXMLWireFormat.hpp \
   ndn-cpp/encoding/WireFormat.cpp ndn-cpp/encoding/WireFormat.hpp \
-  ndn-cpp/c/transport/TcpTransport.h ndn-cpp/transport/TcpTransport.cpp ndn-cpp/transport/TcpTransport.hpp \
+  ndn-cpp/c/transport/SocketTransport.h ndn-cpp/c/transport/TcpTransport.h ndn-cpp/transport/TcpTransport.cpp ndn-cpp/transport/TcpTransport.hpp \
   ndn-cpp/transport/Transport.cpp ndn-cpp/transport/Transport.hpp \
-  ndn-cpp/c/transport/UdpTransport.h ndn-cpp/transport/UdpTransport.cpp ndn-cpp/transport/UdpTransport.hpp
+  ndn-cpp/c/transport/SocketTransport.h ndn-cpp/c/transport/UdpTransport.h ndn-cpp/transport/UdpTransport.cpp ndn-cpp/transport/UdpTransport.hpp
 
 bin_test_encode_decode_Interest_SOURCES = tests/test-encode-decode-Interest.cpp
 bin_test_encode_decode_Interest_LDADD = libndn-c.a libndn-cpp.a
@@ -600,10 +600,7 @@
 ndn-cpp/c/transport/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) ndn-cpp/c/transport/$(DEPDIR)
 	@: > ndn-cpp/c/transport/$(DEPDIR)/$(am__dirstamp)
-ndn-cpp/c/transport/TcpTransport.$(OBJEXT):  \
-	ndn-cpp/c/transport/$(am__dirstamp) \
-	ndn-cpp/c/transport/$(DEPDIR)/$(am__dirstamp)
-ndn-cpp/c/transport/UdpTransport.$(OBJEXT):  \
+ndn-cpp/c/transport/SocketTransport.$(OBJEXT):  \
 	ndn-cpp/c/transport/$(am__dirstamp) \
 	ndn-cpp/c/transport/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/c/util/$(am__dirstamp):
@@ -774,8 +771,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/encoding/$(DEPDIR)/BinaryXMLName.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/encoding/$(DEPDIR)/BinaryXMLPublisherPublicKeyDigest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/encoding/$(DEPDIR)/BinaryXMLStructureDecoder.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/transport/$(DEPDIR)/TcpTransport.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/transport/$(DEPDIR)/UdpTransport.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/transport/$(DEPDIR)/SocketTransport.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/DynamicUCharArray.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/ndn_memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/ndn_realloc.Po@am__quote@
diff --git a/ndn-cpp/c/errors.c b/ndn-cpp/c/errors.c
index af32008..cbe2de1 100644
--- a/ndn-cpp/c/errors.c
+++ b/ndn-cpp/c/errors.c
@@ -52,26 +52,18 @@
     return      "unrecognized ndn_KeyLocatorType";
   case NDN_ERROR_decodeBinaryXMLKeyLocator_unrecognized_key_locator_type:
     return      "decodeBinaryXMLKeyLocator unrecognized key locator type";
-  case NDN_ERROR_TcpTransport_error_in_getaddrinfo:
-    return      "TcpTransport error in getaddrinfo";
-  case NDN_ERROR_TcpTransport_cannot_connect_to_socket:
-    return      "TcpTransport cannot connect to socket";
-  case NDN_ERROR_TcpTransport_socket_is_not_open:
-    return      "TcpTransport socket is not open";
-  case NDN_ERROR_TcpTransport_error_in_send:
-    return      "TcpTransport error in send";
-  case NDN_ERROR_TcpTransport_error_in_recv:
-    return      "TcpTransport error in recv";
-  case NDN_ERROR_UdpTransport_error_in_getaddrinfo:
-    return      "UdpTransport error in getaddrinfo";
-  case NDN_ERROR_UdpTransport_cannot_connect_to_socket:
-    return      "UdpTransport cannot connect to socket";
-  case NDN_ERROR_UdpTransport_socket_is_not_open:
-    return      "UdpTransport socket is not open";
-  case NDN_ERROR_UdpTransport_error_in_send:
-    return      "UdpTransport error in send";
-  case NDN_ERROR_UdpTransport_error_in_recv:
-    return      "UdpTransport error in recv";
+  case NDN_ERROR_unrecognized_ndn_SocketTransport:
+    return      "unrecognized ndn_SocketTransport";
+  case NDN_ERROR_SocketTransport_error_in_getaddrinfo:
+    return      "SocketTransport error in getaddrinfo";
+  case NDN_ERROR_SocketTransport_cannot_connect_to_socket:
+    return      "SocketTransport cannot connect to socket";
+  case NDN_ERROR_SocketTransport_socket_is_not_open:
+    return      "SocketTransport socket is not open";
+  case NDN_ERROR_SocketTransport_error_in_send:
+    return      "SocketTransport error in send";
+  case NDN_ERROR_SocketTransport_error_in_recv:
+    return      "SocketTransport error in recv";
   default:
     return "unrecognized ndn_Error code";  
   }
diff --git a/ndn-cpp/c/errors.h b/ndn-cpp/c/errors.h
index f574b6a..6a3daf4 100644
--- a/ndn-cpp/c/errors.h
+++ b/ndn-cpp/c/errors.h
@@ -34,16 +34,12 @@
   NDN_ERROR_unrecognized_ndn_ExcludeType,
   NDN_ERROR_unrecognized_ndn_KeyLocatorType,
   NDN_ERROR_decodeBinaryXMLKeyLocator_unrecognized_key_locator_type,
-  NDN_ERROR_TcpTransport_error_in_getaddrinfo,
-  NDN_ERROR_TcpTransport_cannot_connect_to_socket,
-  NDN_ERROR_TcpTransport_socket_is_not_open,
-  NDN_ERROR_TcpTransport_error_in_send,
-  NDN_ERROR_TcpTransport_error_in_recv,
-  NDN_ERROR_UdpTransport_error_in_getaddrinfo,
-  NDN_ERROR_UdpTransport_cannot_connect_to_socket,
-  NDN_ERROR_UdpTransport_socket_is_not_open,
-  NDN_ERROR_UdpTransport_error_in_send,
-  NDN_ERROR_UdpTransport_error_in_recv
+  NDN_ERROR_unrecognized_ndn_SocketTransport,
+  NDN_ERROR_SocketTransport_error_in_getaddrinfo,
+  NDN_ERROR_SocketTransport_cannot_connect_to_socket,
+  NDN_ERROR_SocketTransport_socket_is_not_open,
+  NDN_ERROR_SocketTransport_error_in_send,
+  NDN_ERROR_SocketTransport_error_in_recv
 } ndn_Error;
   
 /**
diff --git a/ndn-cpp/c/transport/UdpTransport.c b/ndn-cpp/c/transport/SocketTransport.c
similarity index 63%
rename from ndn-cpp/c/transport/UdpTransport.c
rename to ndn-cpp/c/transport/SocketTransport.c
index 0dc5d8e..187f0da 100644
--- a/ndn-cpp/c/transport/UdpTransport.c
+++ b/ndn-cpp/c/transport/SocketTransport.c
@@ -3,7 +3,7 @@
  * See COPYING for copyright and distribution information.
  */
 
-#include "UdpTransport.h"
+#include "SocketTransport.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -15,7 +15,7 @@
 #include <arpa/inet.h>
 #include "../util/ndn_memory.h"
 
-ndn_Error ndn_UdpTransport_connect(struct ndn_UdpTransport *self, char *host, unsigned short port)
+ndn_Error ndn_SocketTransport_connect(struct ndn_SocketTransport *self, ndn_SocketType socketType, char *host, unsigned short port)
 {
   if (self->socketDescriptor >= 0) {
     close(self->socketDescriptor);
@@ -25,14 +25,19 @@
 	struct addrinfo hints;
 	ndn_memset((unsigned char *)&hints, 0, sizeof(hints));
 	hints.ai_family = AF_UNSPEC;
-	hints.ai_socktype = SOCK_DGRAM;
+  if (socketType == SOCKET_TCP)
+    hints.ai_socktype = SOCK_STREAM;
+  else if (socketType == SOCKET_UDP)
+    hints.ai_socktype = SOCK_DGRAM;
+  else
+    return NDN_ERROR_unrecognized_ndn_SocketTransport;
 
   char portString[10];
   sprintf(portString, "%d", port);
   
 	struct addrinfo *serverInfo;
 	if (getaddrinfo(host, portString, &hints, &serverInfo) != 0)
-		return NDN_ERROR_UdpTransport_error_in_getaddrinfo;
+		return NDN_ERROR_SocketTransport_error_in_getaddrinfo;
 
 	// loop through all the results and connect to the first we can
 	struct addrinfo *p;
@@ -51,7 +56,7 @@
 
 	if (p == NULL) {
     freeaddrinfo(serverInfo);
-		return NDN_ERROR_UdpTransport_cannot_connect_to_socket;
+		return NDN_ERROR_SocketTransport_cannot_connect_to_socket;
   }
 
 	freeaddrinfo(serverInfo);
@@ -60,15 +65,15 @@
   return 0;
 }
 
-ndn_Error ndn_UdpTransport_send(struct ndn_UdpTransport *self, unsigned char *data, unsigned int dataLength)
+ndn_Error ndn_SocketTransport_send(struct ndn_SocketTransport *self, unsigned char *data, unsigned int dataLength)
 {
   if (self->socketDescriptor < 0)
-    return NDN_ERROR_UdpTransport_socket_is_not_open;
+    return NDN_ERROR_SocketTransport_socket_is_not_open;
   
   int nBytes;
   while (1) {
     if ((nBytes = send(self->socketDescriptor, data, dataLength, 0)) < 0)
-      return NDN_ERROR_UdpTransport_error_in_send;
+      return NDN_ERROR_SocketTransport_error_in_send;
     if (nBytes >= dataLength)
       break;
     
@@ -79,15 +84,15 @@
   return 0;  
 }
 
-ndn_Error ndn_UdpTransport_receive
-(struct ndn_UdpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytesOut)
+ndn_Error ndn_SocketTransport_receive
+(struct ndn_SocketTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytesOut)
 {
   if (self->socketDescriptor < 0)
-    return NDN_ERROR_UdpTransport_socket_is_not_open;
+    return NDN_ERROR_SocketTransport_socket_is_not_open;
 
   int nBytes;  
 	if ((nBytes = recv(self->socketDescriptor, buffer, bufferLength, 0)) == -1)
-    return NDN_ERROR_UdpTransport_error_in_recv;
+    return NDN_ERROR_SocketTransport_error_in_recv;
 
   *nBytesOut = (unsigned int)nBytes;
   
diff --git a/ndn-cpp/c/transport/SocketTransport.h b/ndn-cpp/c/transport/SocketTransport.h
new file mode 100644
index 0000000..a5e89f7
--- /dev/null
+++ b/ndn-cpp/c/transport/SocketTransport.h
@@ -0,0 +1,41 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_SOCKETTRANSPORT_H
+#define	NDN_SOCKETTRANSPORT_H
+
+#include <sys/socket.h>
+#include "../errors.h"
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+  SOCKET_TCP,
+  SOCKET_UDP
+} ndn_SocketType;
+  
+struct ndn_SocketTransport {
+  int socketDescriptor; /**< -1 if not connected */
+};
+  
+static inline void ndn_SocketTransport_init(struct ndn_SocketTransport *self)
+{
+  self->socketDescriptor = -1;
+}
+
+ndn_Error ndn_SocketTransport_connect(struct ndn_SocketTransport *self, ndn_SocketType socketType, char *host, unsigned short port);
+
+ndn_Error ndn_SocketTransport_send(struct ndn_SocketTransport *self, unsigned char *data, unsigned int dataLength);
+
+ndn_Error ndn_SocketTransport_receive
+  (struct ndn_SocketTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytes);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
diff --git a/ndn-cpp/c/transport/TcpTransport.c b/ndn-cpp/c/transport/TcpTransport.c
deleted file mode 100644
index ea44d86..0000000
--- a/ndn-cpp/c/transport/TcpTransport.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @author: Jeff Thompson
- * See COPYING for copyright and distribution information.
- */
-
-#include "TcpTransport.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <netdb.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include "../util/ndn_memory.h"
-
-ndn_Error ndn_TcpTransport_connect(struct ndn_TcpTransport *self, char *host, unsigned short port)
-{
-  if (self->socketDescriptor >= 0) {
-    close(self->socketDescriptor);
-    self->socketDescriptor = -1;
-  }
-  
-	struct addrinfo hints;
-	ndn_memset((unsigned char *)&hints, 0, sizeof(hints));
-	hints.ai_family = AF_UNSPEC;
-	hints.ai_socktype = SOCK_STREAM;
-
-  char portString[10];
-  sprintf(portString, "%d", port);
-  
-	struct addrinfo *serverInfo;
-	if (getaddrinfo(host, portString, &hints, &serverInfo) != 0)
-		return NDN_ERROR_TcpTransport_error_in_getaddrinfo;
-
-	// loop through all the results and connect to the first we can
-	struct addrinfo *p;
-  int socketDescriptor;
-	for(p = serverInfo; p != NULL; p = p->ai_next) {
-		if ((socketDescriptor = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1)
-			continue;
-
-		if (connect(socketDescriptor, p->ai_addr, p->ai_addrlen) == -1) {
-			close(socketDescriptor);
-			continue;
-		}
-
-		break;
-	}
-
-	if (p == NULL) {
-    freeaddrinfo(serverInfo);
-		return NDN_ERROR_TcpTransport_cannot_connect_to_socket;
-  }
-
-	freeaddrinfo(serverInfo);
-  self->socketDescriptor = socketDescriptor;
-
-  return 0;
-}
-
-ndn_Error ndn_TcpTransport_send(struct ndn_TcpTransport *self, unsigned char *data, unsigned int dataLength)
-{
-  if (self->socketDescriptor < 0)
-    return NDN_ERROR_TcpTransport_socket_is_not_open;
-  
-  int nBytes;
-  while (1) {
-    if ((nBytes = send(self->socketDescriptor, data, dataLength, 0)) < 0)
-      return NDN_ERROR_TcpTransport_error_in_send;
-    if (nBytes >= dataLength)
-      break;
-    
-    // Send more.
-    dataLength -= nBytes;
-  }
-
-  return 0;  
-}
-
-ndn_Error ndn_TcpTransport_receive
-(struct ndn_TcpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytesOut)
-{
-  if (self->socketDescriptor < 0)
-    return NDN_ERROR_TcpTransport_socket_is_not_open;
-
-  int nBytes;  
-	if ((nBytes = recv(self->socketDescriptor, buffer, bufferLength, 0)) == -1)
-    return NDN_ERROR_TcpTransport_error_in_recv;
-
-  *nBytesOut = (unsigned int)nBytes;
-  
-	return 0;  
-}
diff --git a/ndn-cpp/c/transport/TcpTransport.h b/ndn-cpp/c/transport/TcpTransport.h
index 0a1742c..ec43806 100644
--- a/ndn-cpp/c/transport/TcpTransport.h
+++ b/ndn-cpp/c/transport/TcpTransport.h
@@ -8,27 +8,36 @@
 #ifndef NDN_TCPTRANSPORT_H
 #define	NDN_TCPTRANSPORT_H
 
-#include "../errors.h"
+#include "SocketTransport.h"
 
 #ifdef	__cplusplus
 extern "C" {
 #endif
 
 struct ndn_TcpTransport {
-  int socketDescriptor; /**< -1 if not connected */
+  struct ndn_SocketTransport base;
 };
   
 static inline void ndn_TcpTransport_init(struct ndn_TcpTransport *self)
 {
-  self->socketDescriptor = -1;
+  ndn_SocketTransport_init(&self->base);
 }
 
-ndn_Error ndn_TcpTransport_connect(struct ndn_TcpTransport *self, char *host, unsigned short port);
+static inline ndn_Error ndn_TcpTransport_connect(struct ndn_TcpTransport *self, char *host, unsigned short port)
+{
+  return ndn_SocketTransport_connect(&self->base, SOCKET_TCP, host, port);
+}
 
-ndn_Error ndn_TcpTransport_send(struct ndn_TcpTransport *self, unsigned char *data, unsigned int dataLength);
+static inline ndn_Error ndn_TcpTransport_send(struct ndn_TcpTransport *self, unsigned char *data, unsigned int dataLength)
+{
+  return ndn_SocketTransport_send(&self->base, data, dataLength);
+}
 
-ndn_Error ndn_TcpTransport_receive
-  (struct ndn_TcpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytes);
+static inline ndn_Error ndn_TcpTransport_receive
+  (struct ndn_TcpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytes)
+{
+  return ndn_SocketTransport_receive(&self->base, buffer, bufferLength, nBytes);
+}
 
 #ifdef	__cplusplus
 }
diff --git a/ndn-cpp/c/transport/UdpTransport.h b/ndn-cpp/c/transport/UdpTransport.h
index 924e4a7..262d5ec 100644
--- a/ndn-cpp/c/transport/UdpTransport.h
+++ b/ndn-cpp/c/transport/UdpTransport.h
@@ -1,32 +1,43 @@
-/**
- * @author: Jeff Thompson
- * See COPYING for copyright and distribution information.
+/* 
+ * File:   UdpTransport.h
+ * Author: jefft0
+ *
+ * Created on July 14, 2013, 4:15 PM
  */
 
 #ifndef NDN_UDPTRANSPORT_H
 #define	NDN_UDPTRANSPORT_H
 
-#include "../errors.h"
+#include "SocketTransport.h"
 
 #ifdef	__cplusplus
 extern "C" {
 #endif
 
 struct ndn_UdpTransport {
-  int socketDescriptor; /**< -1 if not connected */
+  struct ndn_SocketTransport base;
 };
   
 static inline void ndn_UdpTransport_init(struct ndn_UdpTransport *self)
 {
-  self->socketDescriptor = -1;
+  ndn_SocketTransport_init(&self->base);
 }
 
-ndn_Error ndn_UdpTransport_connect(struct ndn_UdpTransport *self, char *host, unsigned short port);
+static inline ndn_Error ndn_UdpTransport_connect(struct ndn_UdpTransport *self, char *host, unsigned short port)
+{
+  return ndn_SocketTransport_connect(&self->base, SOCKET_UDP, host, port);
+}
 
-ndn_Error ndn_UdpTransport_send(struct ndn_UdpTransport *self, unsigned char *data, unsigned int dataLength);
+static inline ndn_Error ndn_UdpTransport_send(struct ndn_UdpTransport *self, unsigned char *data, unsigned int dataLength)
+{
+  return ndn_SocketTransport_send(&self->base, data, dataLength);
+}
 
-ndn_Error ndn_UdpTransport_receive
-  (struct ndn_UdpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytes);
+static inline ndn_Error ndn_UdpTransport_receive
+  (struct ndn_UdpTransport *self, unsigned char *buffer, unsigned int bufferLength, unsigned int *nBytes)
+{
+  return ndn_SocketTransport_receive(&self->base, buffer, bufferLength, nBytes);
+}
 
 #ifdef	__cplusplus
 }
