Index: uspace/lib/c/include/inet/addr.h
===================================================================
--- uspace/lib/c/include/inet/addr.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ uspace/lib/c/include/inet/addr.h	(revision ccf282fd2a5e9010cc2fd35ce119bd269ba99c96)
@@ -37,22 +37,52 @@
 
 #include <stdint.h>
+#include <net/in.h>
+
+#define INET_ADDR_SIZE  16
 
 /** Node address */
 typedef struct {
-	uint32_t ipv4;
+	uint16_t family;
+	uint8_t addr[INET_ADDR_SIZE];
 } inet_addr_t;
 
 /** Network address */
 typedef struct {
+	/** Address family */
+	uint16_t family;
+	
 	/** Address */
-	uint32_t ipv4;
-	/** Number of valid bits in @c ipv4 */
-	int bits;
+	uint8_t addr[INET_ADDR_SIZE];
+	
+	/** Number of valid bits */
+	uint8_t prefix;
 } inet_naddr_t;
 
+extern int inet_addr_family(const char *, uint16_t *);
+
+extern int inet_addr_parse(const char *, inet_addr_t *);
 extern int inet_naddr_parse(const char *, inet_naddr_t *);
-extern int inet_addr_parse(const char *, inet_addr_t *);
+
+extern int inet_addr_format(inet_addr_t *, char **);
 extern int inet_naddr_format(inet_naddr_t *, char **);
-extern int inet_addr_format(inet_addr_t *, char **);
+
+extern int inet_addr_pack(inet_addr_t *, uint32_t *);
+extern int inet_naddr_pack(inet_naddr_t *, uint32_t *, uint8_t *);
+
+extern void inet_addr_unpack(uint32_t, inet_addr_t *);
+extern void inet_naddr_unpack(uint32_t, uint8_t, inet_naddr_t *);
+
+extern int inet_addr_sockaddr_in(inet_addr_t *, sockaddr_in_t *);
+extern void inet_naddr_addr(inet_naddr_t *, inet_addr_t *);
+
+extern void inet_addr(inet_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
+extern void inet_naddr(inet_naddr_t *, uint8_t, uint8_t, uint8_t, uint8_t,
+    uint8_t);
+
+extern void inet_addr_any(inet_addr_t *);
+extern void inet_naddr_any(inet_naddr_t *);
+
+extern int inet_addr_compare(inet_addr_t *, inet_addr_t *);
+extern int inet_addr_is_any(inet_addr_t *);
 
 #endif
Index: uspace/lib/c/include/inet/addr2.h
===================================================================
--- uspace/lib/c/include/inet/addr2.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ 	(revision )
@@ -1,95 +1,0 @@
-/*
- * Copyright (c) 2013 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 libc
- * @{
- */
-/** @file
- */
-
-#ifndef LIBC_INET2_ADDR_H_
-#define LIBC_INET2_ADDR_H_
-
-#include <stdint.h>
-#include <net/in.h>
-#include <inet/addr.h>
-
-#define INET2_ADDR_SIZE  16
-
-/** Node address */
-typedef struct {
-	uint16_t family;
-	uint8_t addr[INET2_ADDR_SIZE];
-} inet2_addr_t;
-
-/** Network address */
-typedef struct {
-	/** Address family */
-	uint16_t family;
-	
-	/** Address */
-	uint8_t addr[INET2_ADDR_SIZE];
-	
-	/** Number of valid bits */
-	uint8_t prefix;
-} inet2_naddr_t;
-
-extern int inet2_addr_family(const char *, uint16_t *);
-
-extern int inet2_addr_parse(const char *, inet2_addr_t *);
-extern int inet2_naddr_parse(const char *, inet2_naddr_t *);
-
-extern int inet2_addr_format(inet2_addr_t *, char **);
-extern int inet2_naddr_format(inet2_naddr_t *, char **);
-
-extern int inet2_addr_pack(inet2_addr_t *, uint32_t *);
-extern int inet2_naddr_pack(inet2_naddr_t *, uint32_t *, uint8_t *);
-
-extern void inet2_addr_unpack(uint32_t, inet2_addr_t *);
-extern void inet2_naddr_unpack(uint32_t, uint8_t, inet2_naddr_t *);
-
-extern int inet2_addr_sockaddr_in(inet2_addr_t *, sockaddr_in_t *);
-extern void inet2_naddr_addr(inet2_naddr_t *, inet2_addr_t *);
-
-extern void inet2_addr(inet2_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
-extern void inet2_naddr(inet2_naddr_t *, uint8_t, uint8_t, uint8_t, uint8_t,
-    uint8_t);
-
-extern void inet2_addr_empty(inet2_addr_t *);
-extern void inet2_naddr_empty(inet2_naddr_t *);
-
-extern int inet2_addr_compare(inet2_addr_t *, inet2_addr_t *);
-extern int inet2_addr_is_any(inet2_addr_t *);
-
-extern void inet_inet2(inet_addr_t *, inet2_addr_t *);
-extern void inet2_inet(inet2_addr_t *, inet_addr_t *);
-
-#endif
-
-/** @}
- */
Index: uspace/lib/c/include/inet/dnsr.h
===================================================================
--- uspace/lib/c/include/inet/dnsr.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ uspace/lib/c/include/inet/dnsr.h	(revision ccf282fd2a5e9010cc2fd35ce119bd269ba99c96)
@@ -37,5 +37,5 @@
 
 #include <inet/inet.h>
-#include <inet/addr2.h>
+#include <inet/addr.h>
 
 enum {
@@ -47,5 +47,5 @@
 	char *cname;
 	/** Host address */
-	inet2_addr_t addr;
+	inet_addr_t addr;
 } dnsr_hostinfo_t;
 
@@ -53,6 +53,6 @@
 extern int dnsr_name2host(const char *, dnsr_hostinfo_t **);
 extern void dnsr_hostinfo_destroy(dnsr_hostinfo_t *);
-extern int dnsr_get_srvaddr(inet2_addr_t *);
-extern int dnsr_set_srvaddr(inet2_addr_t *);
+extern int dnsr_get_srvaddr(inet_addr_t *);
+extern int dnsr_set_srvaddr(inet_addr_t *);
 
 #endif
Index: uspace/lib/c/include/inet/inet.h
===================================================================
--- uspace/lib/c/include/inet/inet.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ uspace/lib/c/include/inet/inet.h	(revision ccf282fd2a5e9010cc2fd35ce119bd269ba99c96)
@@ -37,5 +37,4 @@
 
 #include <inet/addr.h>
-#include <inet/addr2.h>
 #include <sys/types.h>
 
@@ -61,5 +60,4 @@
 extern int inet_send(inet_dgram_t *, uint8_t, inet_df_t);
 extern int inet_get_srcaddr(inet_addr_t *, uint8_t, inet_addr_t *);
-extern int inet2_get_srcaddr(inet2_addr_t *, uint8_t, inet2_addr_t *);
 
 #endif
Index: uspace/lib/c/include/inet/iplink.h
===================================================================
--- uspace/lib/c/include/inet/iplink.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ uspace/lib/c/include/inet/iplink.h	(revision ccf282fd2a5e9010cc2fd35ce119bd269ba99c96)
@@ -38,4 +38,5 @@
 #include <async.h>
 #include <sys/types.h>
+#include <inet/addr.h>
 
 struct iplink_ev_ops;
@@ -46,14 +47,10 @@
 } iplink_t;
 
-typedef struct {
-	uint32_t ipv4;
-} iplink_addr_t;
-
-/** IP link Service Data Unit */
+/** IPv4 link Service Data Unit */
 typedef struct {
 	/** Local source address */
-	iplink_addr_t lsrc;
+	uint32_t lsrc;
 	/** Local destination address */
-	iplink_addr_t ldest;
+	uint32_t ldest;
 	/** Serialized IP packet */
 	void *data;
@@ -61,4 +58,14 @@
 	size_t size;
 } iplink_sdu_t;
+
+/** IPv6 link Service Data Unit */
+typedef struct {
+	/** Target MAC address */
+	uint64_t hwaddr;
+	/** Serialized IP packet */
+	void *data;
+	/** Size of @c data in bytes */
+	size_t size;
+} iplink_sdu6_t;
 
 typedef struct iplink_ev_ops {
@@ -69,6 +76,6 @@
 extern void iplink_close(iplink_t *);
 extern int iplink_send(iplink_t *, iplink_sdu_t *);
-extern int iplink_addr_add(iplink_t *, iplink_addr_t *);
-extern int iplink_addr_remove(iplink_t *, iplink_addr_t *);
+extern int iplink_addr_add(iplink_t *, inet_addr_t *);
+extern int iplink_addr_remove(iplink_t *, inet_addr_t *);
 extern int iplink_get_mtu(iplink_t *, size_t *);
 
Index: uspace/lib/c/include/inet/iplink_srv.h
===================================================================
--- uspace/lib/c/include/inet/iplink_srv.h	(revision 19a4f73d732eaf01d22b3fdcb5c730406666b0d6)
+++ uspace/lib/c/include/inet/iplink_srv.h	(revision ccf282fd2a5e9010cc2fd35ce119bd269ba99c96)
@@ -51,14 +51,10 @@
 } iplink_srv_t;
 
-typedef struct {
-	uint32_t ipv4;
-} iplink_srv_addr_t;
-
 /** IP link Service Data Unit */
 typedef struct {
 	/** Local source address */
-	iplink_srv_addr_t lsrc;
+	uint32_t lsrc;
 	/** Local destination address */
-	iplink_srv_addr_t ldest;
+	uint32_t ldest;
 	/** Serialized IP packet */
 	void *data;
@@ -72,6 +68,6 @@
 	int (*send)(iplink_srv_t *, iplink_srv_sdu_t *);
 	int (*get_mtu)(iplink_srv_t *, size_t *);
-	int (*addr_add)(iplink_srv_t *, iplink_srv_addr_t *);
-	int (*addr_remove)(iplink_srv_t *, iplink_srv_addr_t *);
+	int (*addr_add)(iplink_srv_t *, uint32_t);
+	int (*addr_remove)(iplink_srv_t *, uint32_t);
 } iplink_ops_t;
 
