Index: uspace/lib/c/generic/iplink.c
===================================================================
--- uspace/lib/c/generic/iplink.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/lib/c/generic/iplink.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -88,6 +88,6 @@
 
 	ipc_call_t answer;
-	aid_t req = async_send_2(exch, IPLINK_SEND, sdu->src.ipv4,
-	    sdu->dest.ipv4, &answer);
+	aid_t req = async_send_2(exch, IPLINK_SEND, sdu->lsrc.ipv4,
+	    sdu->ldest.ipv4, &answer);
 	int rc = async_data_write_start(exch, sdu->data, sdu->size);
 	async_exchange_end(exch);
@@ -127,6 +127,6 @@
 	iplink_sdu_t sdu;
 
-	sdu.src.ipv4 = IPC_GET_ARG1(*call);
-	sdu.dest.ipv4 = IPC_GET_ARG2(*call);
+	sdu.lsrc.ipv4 = IPC_GET_ARG1(*call);
+	sdu.ldest.ipv4 = IPC_GET_ARG2(*call);
 
 	rc = async_data_write_accept(&sdu.data, false, 0, 0, 0, &sdu.size);
Index: uspace/lib/c/generic/iplink_srv.c
===================================================================
--- uspace/lib/c/generic/iplink_srv.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/lib/c/generic/iplink_srv.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -57,6 +57,6 @@
 	int rc;
 
-	sdu.src.ipv4 = IPC_GET_ARG1(*call);
-	sdu.dest.ipv4 = IPC_GET_ARG2(*call);
+	sdu.lsrc.ipv4 = IPC_GET_ARG1(*call);
+	sdu.ldest.ipv4 = IPC_GET_ARG2(*call);
 
 	rc = async_data_write_accept(&sdu.data, false, 0, 0, 0, &sdu.size);
@@ -122,6 +122,6 @@
 
 	ipc_call_t answer;
-	aid_t req = async_send_2(exch, IPLINK_EV_RECV, sdu->src.ipv4,
-	    sdu->dest.ipv4, &answer);
+	aid_t req = async_send_2(exch, IPLINK_EV_RECV, sdu->lsrc.ipv4,
+	    sdu->ldest.ipv4, &answer);
 	int rc = async_data_write_start(exch, sdu->data, sdu->size);
 	async_exchange_end(exch);
Index: uspace/lib/c/include/inet/iplink.h
===================================================================
--- uspace/lib/c/include/inet/iplink.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/lib/c/include/inet/iplink.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -52,8 +52,8 @@
 /** IP link Service Data Unit */
 typedef struct {
-	/** Source address */
-	iplink_addr_t src;
-	/** Destination address */
-	iplink_addr_t dest;
+	/** Local source address */
+	iplink_addr_t lsrc;
+	/** Local destination address */
+	iplink_addr_t ldest;
 	/** Serialized IP packet */
 	void *data;
Index: uspace/lib/c/include/inet/iplink_srv.h
===================================================================
--- uspace/lib/c/include/inet/iplink_srv.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/lib/c/include/inet/iplink_srv.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -57,8 +57,8 @@
 /** IP link Service Data Unit */
 typedef struct {
-	/** Source address */
-	iplink_srv_addr_t src;
-	/** Destination address */
-	iplink_srv_addr_t dest;
+	/** Local source address */
+	iplink_srv_addr_t lsrc;
+	/** Local destination address */
+	iplink_srv_addr_t ldest;
 	/** Serialized IP packet */
 	void *data;
Index: uspace/srv/inet/Makefile
===================================================================
--- uspace/srv/inet/Makefile	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/srv/inet/Makefile	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -31,6 +31,8 @@
 
 SOURCES = \
+	addrobj.c \
 	inet.c \
-	inet_link.c
+	inet_link.c \
+	pdu.c
 
 include $(USPACE_PREFIX)/Makefile.common
Index: uspace/srv/inet/addrobj.c
===================================================================
--- uspace/srv/inet/addrobj.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
+++ uspace/srv/inet/addrobj.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2012 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup inet
+ * @{
+ */
+/**
+ * @file
+ * @brief
+ */
+
+#include <bitops.h>
+#include <fibril_synch.h>
+#include <io/log.h>
+#include <ipc/loc.h>
+#include <stdlib.h>
+
+#include "addrobj.h"
+#include "inet.h"
+#include "inet_link.h"
+
+static FIBRIL_MUTEX_INITIALIZE(addr_list_lock);
+static LIST_INITIALIZE(addr_list);
+
+static uint32_t inet_netmask(int bits)
+{
+	assert(bits >= 1);
+	assert(bits < 32);
+
+	return BIT_RANGE(uint32_t, 31, 31 - (bits - 1));
+}
+
+inet_addrobj_t *inet_addrobj_new(void)
+{
+	inet_addrobj_t *addr = calloc(1, sizeof(inet_addrobj_t));
+
+	if (addr == NULL) {
+		log_msg(LVL_ERROR, "Failed allocating address object. "
+		    "Out of memory.");
+		return NULL;
+	}
+
+	link_initialize(&addr->addr_list);
+
+	return addr;
+}
+
+void inet_addrobj_delete(inet_addrobj_t *addr)
+{
+	free(addr);
+}
+
+void inet_addrobj_add(inet_addrobj_t *addr)
+{
+	fibril_mutex_lock(&addr_list_lock);
+	list_append(&addr->addr_list, &addr_list);
+	fibril_mutex_unlock(&addr_list_lock);
+}
+
+void inet_addrobj_remove(inet_addrobj_t *addr)
+{
+	fibril_mutex_lock(&addr_list_lock);
+	list_remove(&addr->addr_list);
+	fibril_mutex_unlock(&addr_list_lock);
+}
+
+/** Find address object matching address @a addr */
+inet_addrobj_t *inet_addrobj_find(inet_addr_t *addr)
+{
+	uint32_t mask;
+
+	log_msg(LVL_DEBUG, "inet_addrobj_find(%x)", (unsigned)addr->ipv4);
+
+	fibril_mutex_lock(&addr_list_lock);
+
+	list_foreach(addr_list, link) {
+		inet_addrobj_t *naddr = list_get_instance(link,
+		    inet_addrobj_t, addr_list);
+
+		mask = inet_netmask(naddr->naddr.bits);
+		if ((naddr->naddr.ipv4 & mask) == (addr->ipv4 & mask)) {
+			fibril_mutex_unlock(&addr_list_lock);
+			log_msg(LVL_DEBUG, "inet_addrobj_find: found %p",
+			    addr);
+			return naddr;
+		}
+	}
+
+	log_msg(LVL_DEBUG, "inet_addrobj_find: Not found");
+	fibril_mutex_unlock(&addr_list_lock);
+
+	return NULL;
+}
+
+/** Send datagram to directly reachable destination */
+int inet_addrobj_send_dgram(inet_addrobj_t *addr, inet_dgram_t *dgram,
+    uint8_t ttl, int df)
+{
+	inet_addr_t lsrc_addr;
+	inet_addr_t *ldest_addr;
+
+	lsrc_addr.ipv4 = addr->naddr.ipv4;
+	ldest_addr = &dgram->dest;
+
+	return inet_link_send_dgram(addr->ilink, &lsrc_addr, ldest_addr, dgram,
+	    ttl, df);
+}
+
+/** @}
+ */
Index: uspace/srv/inet/addrobj.h
===================================================================
--- uspace/srv/inet/addrobj.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
+++ uspace/srv/inet/addrobj.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2012 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup inet
+ * @{
+ */
+/**
+ * @file
+ * @brief
+ */
+
+#ifndef INET_ADDROBJ_H_
+#define INET_ADDROBJ_H_
+
+#include "inet.h"
+
+extern inet_addrobj_t *inet_addrobj_new(void);
+extern void inet_addrobj_delete(inet_addrobj_t *);
+extern void inet_addrobj_add(inet_addrobj_t *);
+extern void inet_addrobj_remove(inet_addrobj_t *);
+extern inet_addrobj_t *inet_addrobj_find(inet_addr_t *);
+extern int inet_addrobj_send_dgram(inet_addrobj_t *, inet_dgram_t *,
+    uint8_t ttl, int df);
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/inet/inet.c
===================================================================
--- uspace/srv/inet/inet.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/srv/inet/inet.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -47,4 +47,5 @@
 #include <sys/types.h>
 
+#include "addrobj.h"
 #include "inet.h"
 #include "inet_link.h"
@@ -85,8 +86,8 @@
 }
 
-static void inet_callback_create(inet_client_t *client, ipc_callid_t callid,
-    ipc_call_t *call)
-{
-	log_msg(LVL_DEBUG, "inet_callback_create()");
+static void inet_callback_create_srv(inet_client_t *client, ipc_callid_t callid,
+    ipc_call_t *call)
+{
+	log_msg(LVL_DEBUG, "inet_callback_create_srv()");
 
 	async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE);
@@ -100,13 +101,29 @@
 }
 
-static void inet_get_srcaddr(inet_client_t *client, ipc_callid_t callid,
-    ipc_call_t *call)
-{
-	log_msg(LVL_DEBUG, "inet_get_srcaddr()");
+static int inet_send(inet_client_t *client, inet_dgram_t *dgram,
+    uint8_t ttl, int df)
+{
+	inet_addrobj_t *addr;
+
+	addr = inet_addrobj_find(&dgram->dest);
+	if (addr != NULL) {
+		/* Destination is directly accessible */
+		return inet_addrobj_send_dgram(addr, dgram, ttl, df);
+	}
+
+	/* TODO: Gateways */
+	log_msg(LVL_DEBUG, "inet_send: No route to destination.");
+	return ENOENT;
+}
+
+static void inet_get_srcaddr_srv(inet_client_t *client, ipc_callid_t callid,
+    ipc_call_t *call)
+{
+	log_msg(LVL_DEBUG, "inet_get_srcaddr_srv()");
 
 	async_answer_0(callid, ENOTSUP);
 }
 
-static void inet_send(inet_client_t *client, ipc_callid_t callid,
+static void inet_send_srv(inet_client_t *client, ipc_callid_t callid,
     ipc_call_t *call)
 {
@@ -116,5 +133,5 @@
 	int rc;
 
-	log_msg(LVL_DEBUG, "inet_send()");
+	log_msg(LVL_DEBUG, "inet_send_srv()");
 
 	dgram.src.ipv4 = IPC_GET_ARG1(*call);
@@ -124,7 +141,4 @@
 	df = IPC_GET_ARG5(*call);
 
-	(void)ttl;
-	(void)df;
-
 	rc = async_data_write_accept(&dgram.data, false, 0, 0, 0, &dgram.size);
 	if (rc != EOK) {
@@ -133,9 +147,11 @@
 	}
 
+	rc = inet_send(client, &dgram, ttl, df);
+
 	free(dgram.data);
-	async_answer_0(callid, ENOTSUP);
-}
-
-static void inet_set_proto(inet_client_t *client, ipc_callid_t callid,
+	async_answer_0(callid, rc);
+}
+
+static void inet_set_proto_srv(inet_client_t *client, ipc_callid_t callid,
     ipc_call_t *call)
 {
@@ -143,5 +159,5 @@
 
 	proto = IPC_GET_ARG1(*call);
-	log_msg(LVL_DEBUG, "inet_set_proto(%lu)", (unsigned long) proto);
+	log_msg(LVL_DEBUG, "inet_set_proto_srv(%lu)", (unsigned long) proto);
 
 	if (proto > UINT8_MAX) {
@@ -197,14 +213,14 @@
 		switch (method) {
 		case INET_CALLBACK_CREATE:
-			inet_callback_create(&client, callid, &call);
+			inet_callback_create_srv(&client, callid, &call);
 			break;
 		case INET_GET_SRCADDR:
-			inet_get_srcaddr(&client, callid, &call);
+			inet_get_srcaddr_srv(&client, callid, &call);
 			break;
 		case INET_SEND:
-			inet_send(&client, callid, &call);
+			inet_send_srv(&client, callid, &call);
 			break;
 		case INET_SET_PROTO:
-			inet_set_proto(&client, callid, &call);
+			inet_set_proto_srv(&client, callid, &call);
 			break;
 		default:
Index: uspace/srv/inet/inet.h
===================================================================
--- uspace/srv/inet/inet.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/srv/inet/inet.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -39,4 +39,6 @@
 
 #include <adt/list.h>
+#include <inet/iplink.h>
+#include <ipc/loc.h>
 #include <sys/types.h>
 #include <async.h>
@@ -49,7 +51,16 @@
 } inet_client_t;
 
+/** Host address */
 typedef struct {
 	uint32_t ipv4;
 } inet_addr_t;
+
+/** Network address */
+typedef struct {
+	/** Address */
+	uint32_t ipv4;
+	/** Number of valid bits in @c ipv4 */
+	int bits;
+} inet_naddr_t;
 
 typedef struct {
@@ -61,4 +72,18 @@
 } inet_dgram_t;
 
+typedef struct {
+	link_t link_list;
+	service_id_t svc_id;
+	char *svc_name;
+	async_sess_t *sess;
+	iplink_t *iplink;
+} inet_link_t;
+
+typedef struct {
+	link_t addr_list;
+	inet_naddr_t naddr;
+	inet_link_t *ilink;
+} inet_addrobj_t;
+
 extern int inet_ev_recv(inet_client_t *, inet_dgram_t *);
 
Index: uspace/srv/inet/inet_link.c
===================================================================
--- uspace/srv/inet/inet_link.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/srv/inet/inet_link.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -43,16 +43,11 @@
 #include <stdlib.h>
 
+#include "addrobj.h"
+#include "inet.h"
 #include "inet_link.h"
+#include "pdu.h"
 
 static int inet_link_open(service_id_t sid);
 static int inet_iplink_recv(iplink_t *ilink, iplink_sdu_t *sdu);
-
-typedef struct {
-	link_t link_list;
-	service_id_t svc_id;
-	char *svc_name;
-	async_sess_t *sess;
-	iplink_t *iplink;
-} inet_link_t;
 
 static iplink_ev_ops_t inet_iplink_ev_ops = {
@@ -172,4 +167,13 @@
 	list_append(&ilink->link_list, &inet_link_list);
 
+	inet_addrobj_t *addr;
+
+	/* XXX For testing: set static IP address 192.168.0.4/24 */
+	addr = inet_addrobj_new();
+	addr->naddr.ipv4 = (192 << 24) + (168 << 16) + (0 << 8) + 4;
+	addr->naddr.bits = 24;
+	addr->ilink = ilink;
+	inet_addrobj_add(addr);
+
 	return EOK;
 
@@ -198,4 +202,24 @@
 }
 
+/** Send datagram over Internet link */
+int inet_link_send_dgram(inet_link_t *ilink, inet_addr_t *lsrc,
+    inet_addr_t *ldest, inet_dgram_t *dgram, uint8_t ttl, int df)
+{
+	iplink_sdu_t sdu;
+	int rc;
+
+	sdu.lsrc.ipv4 = lsrc->ipv4;
+	sdu.ldest.ipv4 = ldest->ipv4;
+	rc = inet_pdu_encode(dgram, &sdu.data, &sdu.size);
+	if (rc != EOK)
+		return rc;
+
+	rc = iplink_send(ilink->iplink, &sdu);
+	free(sdu.data);
+
+	return rc;
+}
+
+
 /** @}
  */
Index: uspace/srv/inet/inet_link.h
===================================================================
--- uspace/srv/inet/inet_link.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
+++ uspace/srv/inet/inet_link.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -38,5 +38,9 @@
 #define INET_LINK_H_
 
+#include "inet.h"
+
 extern int inet_link_discovery_start(void);
+extern int inet_link_send_dgram(inet_link_t *, inet_addr_t *,
+    inet_addr_t *, inet_dgram_t *, uint8_t, int);
 
 #endif
Index: uspace/srv/inet/pdu.c
===================================================================
--- uspace/srv/inet/pdu.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
+++ uspace/srv/inet/pdu.c	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2012 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup inet
+ * @{
+ */
+/**
+ * @file
+ * @brief
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "inet.h"
+#include "pdu.h"
+
+/** Encode Internet PDU.
+ *
+ * XXX We should be encoding from packet, not from datagram.
+ */
+int inet_pdu_encode(inet_dgram_t *dgram, void **rdata, size_t *rsize)
+{
+	void *data;
+	size_t size;
+
+	size = 20;
+	data = calloc(size, 1);
+	if (data == NULL)
+		return ENOMEM;
+
+	/* XXX Implement */
+
+	*rdata = data;
+	*rsize = size;
+	return EOK;
+}
+
+/** @}
+ */
Index: uspace/srv/inet/pdu.h
===================================================================
--- uspace/srv/inet/pdu.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
+++ uspace/srv/inet/pdu.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2012 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup inet
+ * @{
+ */
+/**
+ * @file
+ * @brief
+ */
+
+#ifndef INET_PDU_H_
+#define INET_PDU_H_
+
+#include "inet.h"
+
+extern int inet_pdu_encode(inet_dgram_t *, void **, size_t *);
+
+#endif
+
+/** @}
+ */
