Index: uspace/srv/net/inetsrv/Makefile
===================================================================
--- uspace/srv/net/inetsrv/Makefile	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/Makefile	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -38,5 +38,4 @@
 	inetcfg.c \
 	inetping.c \
-	inetping6.c \
 	ndp.c \
 	ntrans.c \
Index: uspace/srv/net/inetsrv/icmp.c
===================================================================
--- uspace/srv/net/inetsrv/icmp.c	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/icmp.c	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -130,12 +130,6 @@
 	inetping_sdu_t sdu;
 
-	ip_ver_t ver = inet_addr_get(&dgram->src, &sdu.src, NULL);
-	if (ver != ip_v4)
-		return EINVAL;
-
-	ver = inet_addr_get(&dgram->dest, &sdu.dest, NULL);
-	if (ver != ip_v4)
-		return EINVAL;
-
+	sdu.src = dgram->src;
+	sdu.dest = dgram->dest;
 	sdu.seq_no = uint16_t_be2host(reply->seq_no);
 	sdu.data = reply + sizeof(icmp_echo_t);
@@ -169,7 +163,6 @@
 	inet_dgram_t dgram;
 
-	inet_addr_set(sdu->src, &dgram.src);
-	inet_addr_set(sdu->dest, &dgram.dest);
-
+	dgram.src = sdu->src;
+	dgram.dest = sdu->dest;
 	dgram.iplink = 0;
 	dgram.tos = ICMP_TOS;
Index: uspace/srv/net/inetsrv/icmpv6.c
===================================================================
--- uspace/srv/net/inetsrv/icmpv6.c	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/icmpv6.c	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -40,9 +40,9 @@
 #include <mem.h>
 #include <stdlib.h>
-#include <types/inetping6.h>
+#include <types/inetping.h>
 #include "icmpv6.h"
 #include "icmpv6_std.h"
 #include "inetsrv.h"
-#include "inetping6.h"
+#include "inetping.h"
 #include "pdu.h"
 
@@ -116,11 +116,8 @@
 		return EINVAL;
 	
-	inetping6_sdu_t sdu;
-	
-	ip_ver_t src_ver = inet_addr_get(&dgram->src, NULL, &sdu.src);
-	ip_ver_t dest_ver = inet_addr_get(&dgram->dest, NULL, &sdu.dest);
-	
-	if ((src_ver != dest_ver) || (src_ver != ip_v6))
-		return EINVAL;
+	inetping_sdu_t sdu;
+	
+	sdu.src = dgram->src;
+	sdu.dest = dgram->dest;
 	
 	icmpv6_message_t *reply = (icmpv6_message_t *) dgram->data;
@@ -132,5 +129,5 @@
 	uint16_t ident = uint16_t_be2host(reply->un.echo.ident);
 	
-	return inetping6_recv(ident, &sdu);
+	return inetping_recv(ident, &sdu);
 }
 
@@ -160,5 +157,5 @@
 }
 
-int icmpv6_ping_send(uint16_t ident, inetping6_sdu_t *sdu)
+int icmpv6_ping_send(uint16_t ident, inetping_sdu_t *sdu)
 {
 	size_t rsize = sizeof(icmpv6_message_t) + sdu->size;
@@ -179,6 +176,6 @@
 	inet_dgram_t dgram;
 	
-	inet_addr_set6(sdu->src, &dgram.src);
-	inet_addr_set6(sdu->dest, &dgram.dest);
+	dgram.src = sdu->src;
+	dgram.dest = sdu->dest;
 	dgram.iplink = 0;
 	dgram.tos = 0;
@@ -188,6 +185,9 @@
 	icmpv6_phdr_t phdr;
 	
-	host2addr128_t_be(sdu->src, phdr.src_addr);
-	host2addr128_t_be(sdu->dest, phdr.dest_addr);
+	assert(sdu->src.version == ip_v6);
+	assert(sdu->dest.version == ip_v6);
+	
+	host2addr128_t_be(sdu->src.addr6, phdr.src_addr);
+	host2addr128_t_be(sdu->dest.addr6, phdr.dest_addr);
 	phdr.length = host2uint32_t_be(dgram.size);
 	memset(phdr.zeroes, 0, 3);
Index: uspace/srv/net/inetsrv/icmpv6.h
===================================================================
--- uspace/srv/net/inetsrv/icmpv6.h	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/icmpv6.h	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -38,9 +38,9 @@
 #define ICMPV6_H_
 
-#include <types/inetping6.h>
+#include <types/inetping.h>
 #include "inetsrv.h"
 
 extern int icmpv6_recv(inet_dgram_t *);
-extern int icmpv6_ping_send(uint16_t, inetping6_sdu_t *);
+extern int icmpv6_ping_send(uint16_t, inetping_sdu_t *);
 
 #endif
Index: uspace/srv/net/inetsrv/inetping.c
===================================================================
--- uspace/srv/net/inetsrv/inetping.c	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/inetping.c	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -1,4 +1,5 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2013 Jiri Svoboda
+ * Copyright (c) 2013 Martin Decky
  * All rights reserved.
  *
@@ -45,4 +46,5 @@
 #include <types/inetping.h>
 #include "icmp.h"
+#include "icmpv6.h"
 #include "icmp_std.h"
 #include "inetsrv.h"
@@ -57,23 +59,21 @@
 static int inetping_send(inetping_client_t *client, inetping_sdu_t *sdu)
 {
-	return icmp_ping_send(client->ident, sdu);
-}
-
-static int inetping_get_srcaddr(inetping_client_t *client, addr32_t remote,
-    addr32_t *local)
-{
-	inet_addr_t remote_addr;
-	inet_addr_set(remote, &remote_addr);
-	
-	inet_addr_t local_addr;
-	int rc = inet_get_srcaddr(&remote_addr, ICMP_TOS, &local_addr);
-	if (rc != EOK)
-		return rc;
-	
-	ip_ver_t ver = inet_addr_get(&local_addr, local, NULL);
-	if (ver != ip_v4)
+	if (sdu->src.version != sdu->dest.version)
 		return EINVAL;
-	
-	return EOK;
+
+	switch (sdu->src.version) {
+	case ip_v4:
+		return icmp_ping_send(client->ident, sdu);
+	case ip_v6:
+		return icmpv6_ping_send(client->ident, sdu);
+	default:
+		return EINVAL;
+	}
+}
+
+static int inetping_get_srcaddr(inetping_client_t *client,
+    inet_addr_t *remote, inet_addr_t *local)
+{
+	return inet_get_srcaddr(remote, ICMP_TOS, local);
 }
 
@@ -81,5 +81,5 @@
 {
 	fibril_mutex_lock(&client_list_lock);
-	
+
 	list_foreach(client_list, client_list, inetping_client_t, client) {
 		if (client->ident == ident) {
@@ -88,5 +88,5 @@
 		}
 	}
-	
+
 	fibril_mutex_unlock(&client_list_lock);
 	return NULL;
@@ -100,60 +100,155 @@
 		return ENOENT;
 	}
-	
+
 	async_exch_t *exch = async_exchange_begin(client->sess);
-	
+
 	ipc_call_t answer;
-	aid_t req = async_send_3(exch, INETPING_EV_RECV, (sysarg_t) sdu->src,
-	    (sysarg_t) sdu->dest, sdu->seq_no, &answer);
-	int rc = async_data_write_start(exch, sdu->data, sdu->size);
-	
-	async_exchange_end(exch);
-	
-	if (rc != EOK) {
+	aid_t req = async_send_1(exch, INETPING_EV_RECV, sdu->seq_no, &answer);
+
+	int rc = async_data_write_start(exch, &sdu->src, sizeof(sdu->src));
+	if (rc != EOK) {
+		async_exchange_end(exch);
 		async_forget(req);
 		return rc;
 	}
-	
+
+	rc = async_data_write_start(exch, &sdu->dest, sizeof(sdu->dest));
+	if (rc != EOK) {
+		async_exchange_end(exch);
+		async_forget(req);
+		return rc;
+	}
+
+	rc = async_data_write_start(exch, sdu->data, sdu->size);
+
+	async_exchange_end(exch);
+
+	if (rc != EOK) {
+		async_forget(req);
+		return rc;
+	}
+
 	sysarg_t retval;
 	async_wait_for(req, &retval);
-	
+
 	return (int) retval;
 }
 
-static void inetping_send_srv(inetping_client_t *client, ipc_callid_t callid,
-    ipc_call_t *call)
-{
+static void inetping_send_srv(inetping_client_t *client, ipc_callid_t iid,
+    ipc_call_t *icall)
+{
+	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping_send_srv()");
+
 	inetping_sdu_t sdu;
 	int rc;
 
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping_send_srv()");
+	sdu.seq_no = IPC_GET_ARG1(*icall);
+
+	ipc_callid_t callid;
+	size_t size;
+	if (!async_data_write_receive(&callid, &size)) {
+		async_answer_0(callid, EREFUSED);
+		async_answer_0(iid, EREFUSED);
+		return;
+	}
+
+	if (size != sizeof(sdu.src)) {
+		async_answer_0(callid, EINVAL);
+		async_answer_0(iid, EINVAL);
+		return;
+	}
+
+	rc = async_data_write_finalize(callid, &sdu.src, size);
+	if (rc != EOK) {
+		async_answer_0(callid, rc);
+		async_answer_0(iid, rc);
+		return;
+	}
+
+	if (!async_data_write_receive(&callid, &size)) {
+		async_answer_0(callid, EREFUSED);
+		async_answer_0(iid, EREFUSED);
+		return;
+	}
+
+	if (size != sizeof(sdu.dest)) {
+		async_answer_0(callid, EINVAL);
+		async_answer_0(iid, EINVAL);
+		return;
+	}
+
+	rc = async_data_write_finalize(callid, &sdu.dest, size);
+	if (rc != EOK) {
+		async_answer_0(callid, rc);
+		async_answer_0(iid, rc);
+		return;
+	}
 
 	rc = async_data_write_accept((void **) &sdu.data, false, 0, 0, 0,
 	    &sdu.size);
 	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		return;
-	}
-
-	sdu.src = IPC_GET_ARG1(*call);
-	sdu.dest = IPC_GET_ARG2(*call);
-	sdu.seq_no = IPC_GET_ARG3(*call);
+		async_answer_0(iid, rc);
+		return;
+	}
 
 	rc = inetping_send(client, &sdu);
 	free(sdu.data);
 
-	async_answer_0(callid, rc);
+	async_answer_0(iid, rc);
 }
 
 static void inetping_get_srcaddr_srv(inetping_client_t *client,
-    ipc_callid_t callid, ipc_call_t *call)
+    ipc_callid_t iid, ipc_call_t *icall)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping_get_srcaddr_srv()");
-	
-	uint32_t remote = IPC_GET_ARG1(*call);
-	uint32_t local = 0;
-	
-	int rc = inetping_get_srcaddr(client, remote, &local);
-	async_answer_1(callid, rc, (sysarg_t) local);
+
+	ipc_callid_t callid;
+	size_t size;
+
+	inet_addr_t local;
+	inet_addr_t remote;
+
+	if (!async_data_write_receive(&callid, &size)) {
+		async_answer_0(callid, EREFUSED);
+		async_answer_0(iid, EREFUSED);
+		return;
+	}
+
+	if (size != sizeof(remote)) {
+		async_answer_0(callid, EINVAL);
+		async_answer_0(iid, EINVAL);
+		return;
+	}
+
+	int rc = async_data_write_finalize(callid, &remote, size);
+	if (rc != EOK) {
+		async_answer_0(callid, rc);
+		async_answer_0(iid, rc);
+		return;
+	}
+
+	rc = inetping_get_srcaddr(client, &remote, &local);
+	if (rc != EOK) {
+		async_answer_0(iid, rc);
+		return;
+	}
+
+	if (!async_data_read_receive(&callid, &size)) {
+		async_answer_0(callid, EREFUSED);
+		async_answer_0(iid, EREFUSED);
+		return;
+	}
+
+	if (size != sizeof(local)) {
+		async_answer_0(callid, EINVAL);
+		async_answer_0(iid, EINVAL);
+		return;
+	}
+
+	rc = async_data_read_finalize(callid, &local, size);
+	if (rc != EOK)
+		async_answer_0(callid, rc);
+
+	async_answer_0(iid, rc);
 }
 
@@ -163,13 +258,13 @@
 	if (sess == NULL)
 		return ENOMEM;
-	
+
 	client->sess = sess;
 	link_initialize(&client->client_list);
-	
+
 	fibril_mutex_lock(&client_list_lock);
 	client->ident = ++inetping_ident;
 	list_append(&client->client_list, &client_list);
 	fibril_mutex_unlock(&client_list_lock);
-	
+
 	return EOK;
 }
@@ -179,5 +274,5 @@
 	async_hangup(client->sess);
 	client->sess = NULL;
-	
+
 	fibril_mutex_lock(&client_list_lock);
 	list_remove(&client->client_list);
@@ -188,18 +283,18 @@
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping_conn()");
-	
+
 	/* Accept the connection */
 	async_answer_0(iid, EOK);
-	
+
 	inetping_client_t client;
 	int rc = inetping_client_init(&client);
 	if (rc != EOK)
 		return;
-	
+
 	while (true) {
 		ipc_call_t call;
 		ipc_callid_t callid = async_get_call(&call);
 		sysarg_t method = IPC_GET_IMETHOD(call);
-		
+
 		if (!method) {
 			/* The other side has hung up */
@@ -207,5 +302,5 @@
 			break;
 		}
-		
+
 		switch (method) {
 		case INETPING_SEND:
@@ -219,5 +314,5 @@
 		}
 	}
-	
+
 	inetping_client_fini(&client);
 }
Index: uspace/srv/net/inetsrv/inetping6.c
===================================================================
--- uspace/srv/net/inetsrv/inetping6.c	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ 	(revision )
@@ -1,318 +1,0 @@
-/*
- * Copyright (c) 2013 Martin Decky
- * 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 <async.h>
-#include <errno.h>
-#include <fibril_synch.h>
-#include <io/log.h>
-#include <ipc/inet.h>
-#include <loc.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <types/inetping6.h>
-#include "icmpv6.h"
-#include "icmpv6_std.h"
-#include "inetsrv.h"
-#include "inetping6.h"
-
-static FIBRIL_MUTEX_INITIALIZE(client_list_lock);
-static LIST_INITIALIZE(client_list);
-
-/** Last used session identifier. Protected by @c client_list_lock */
-static uint16_t inetping6_ident = 0;
-
-static int inetping6_send(inetping6_client_t *client, inetping6_sdu_t *sdu)
-{
-	return icmpv6_ping_send(client->ident, sdu);
-}
-
-static int inetping6_get_srcaddr(inetping6_client_t *client, addr128_t remote,
-    addr128_t *local)
-{
-	inet_addr_t remote_addr;
-	inet_addr_set6(remote, &remote_addr);
-	
-	inet_addr_t local_addr;
-	int rc = inet_get_srcaddr(&remote_addr, ICMPV6_TOS, &local_addr);
-	if (rc != EOK)
-		return rc;
-	
-	ip_ver_t ver = inet_addr_get(&local_addr, NULL, local);
-	if (ver != ip_v6)
-		return EINVAL;
-	
-	return EOK;
-}
-
-static inetping6_client_t *inetping6_client_find(uint16_t ident)
-{
-	fibril_mutex_lock(&client_list_lock);
-	
-	list_foreach(client_list, client_list, inetping6_client_t, client) {
-		if (client->ident == ident) {
-			fibril_mutex_unlock(&client_list_lock);
-			return client;
-		}
-	}
-	
-	fibril_mutex_unlock(&client_list_lock);
-	return NULL;
-}
-
-int inetping6_recv(uint16_t ident, inetping6_sdu_t *sdu)
-{
-	inetping6_client_t *client = inetping6_client_find(ident);
-	if (client == NULL) {
-		log_msg(LOG_DEFAULT, LVL_DEBUG, "Unknown ICMP ident. Dropping.");
-		return ENOENT;
-	}
-	
-	async_exch_t *exch = async_exchange_begin(client->sess);
-	
-	ipc_call_t answer;
-	aid_t req = async_send_1(exch, INETPING6_EV_RECV, sdu->seq_no, &answer);
-	
-	int rc = async_data_write_start(exch, sdu->src, sizeof(addr128_t));
-	if (rc != EOK) {
-		async_exchange_end(exch);
-		async_forget(req);
-		return rc;
-	}
-	
-	rc = async_data_write_start(exch, sdu->dest, sizeof(addr128_t));
-	if (rc != EOK) {
-		async_exchange_end(exch);
-		async_forget(req);
-		return rc;
-	}
-	
-	rc = async_data_write_start(exch, sdu->data, sdu->size);
-	
-	async_exchange_end(exch);
-	
-	if (rc != EOK) {
-		async_forget(req);
-		return rc;
-	}
-	
-	sysarg_t retval;
-	async_wait_for(req, &retval);
-	
-	return (int) retval;
-}
-
-static void inetping6_send_srv(inetping6_client_t *client, ipc_callid_t iid,
-    ipc_call_t *icall)
-{
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping6_send_srv()");
-	
-	inetping6_sdu_t sdu;
-	
-	sdu.seq_no = IPC_GET_ARG1(*icall);
-	
-	ipc_callid_t callid;
-	size_t size;
-	if (!async_data_write_receive(&callid, &size)) {
-		async_answer_0(callid, EREFUSED);
-		async_answer_0(iid, EREFUSED);
-		return;
-	}
-	
-	if (size != sizeof(addr128_t)) {
-		async_answer_0(callid, EINVAL);
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-	
-	int rc = async_data_write_finalize(callid, &sdu.src, size);
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		async_answer_0(iid, rc);
-		return;
-	}
-	
-	if (!async_data_write_receive(&callid, &size)) {
-		async_answer_0(callid, EREFUSED);
-		async_answer_0(iid, EREFUSED);
-		return;
-	}
-	
-	if (size != sizeof(addr128_t)) {
-		async_answer_0(callid, EINVAL);
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-	
-	rc = async_data_write_finalize(callid, &sdu.dest, size);
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		async_answer_0(iid, rc);
-		return;
-	}
-	
-	rc = async_data_write_accept((void **) &sdu.data, false, 0, 0, 0,
-	    &sdu.size);
-	if (rc != EOK) {
-		async_answer_0(iid, rc);
-		return;
-	}
-	
-	rc = inetping6_send(client, &sdu);
-	free(sdu.data);
-	
-	async_answer_0(iid, rc);
-}
-
-static void inetping6_get_srcaddr_srv(inetping6_client_t *client,
-    ipc_callid_t iid, ipc_call_t *icall)
-{
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping6_get_srcaddr_srv()");
-	
-	ipc_callid_t callid;
-	size_t size;
-	if (!async_data_write_receive(&callid, &size)) {
-		async_answer_0(callid, EREFUSED);
-		async_answer_0(iid, EREFUSED);
-		return;
-	}
-	
-	if (size != sizeof(addr128_t)) {
-		async_answer_0(callid, EINVAL);
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-	
-	addr128_t remote;
-	int rc = async_data_write_finalize(callid, &remote, size);
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		async_answer_0(iid, rc);
-		return;
-	}
-	
-	addr128_t local;
-	rc = inetping6_get_srcaddr(client, remote, &local);
-	if (rc != EOK) {
-		async_answer_0(iid, rc);
-		return;
-	}
-	
-	if (!async_data_read_receive(&callid, &size)) {
-		async_answer_0(callid, EREFUSED);
-		async_answer_0(iid, EREFUSED);
-		return;
-	}
-	
-	if (size != sizeof(addr128_t)) {
-		async_answer_0(callid, EINVAL);
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-	
-	rc = async_data_read_finalize(callid, &local, size);
-	if (rc != EOK)
-		async_answer_0(callid, rc);
-	
-	async_answer_0(iid, rc);
-}
-
-static int inetping6_client_init(inetping6_client_t *client)
-{
-	async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE);
-	if (sess == NULL)
-		return ENOMEM;
-	
-	client->sess = sess;
-	link_initialize(&client->client_list);
-	
-	fibril_mutex_lock(&client_list_lock);
-	client->ident = ++inetping6_ident;
-	list_append(&client->client_list, &client_list);
-	fibril_mutex_unlock(&client_list_lock);
-	
-	return EOK;
-}
-
-static void inetping6_client_fini(inetping6_client_t *client)
-{
-	async_hangup(client->sess);
-	client->sess = NULL;
-	
-	fibril_mutex_lock(&client_list_lock);
-	list_remove(&client->client_list);
-	fibril_mutex_unlock(&client_list_lock);
-}
-
-void inetping6_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
-{
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "inetping6_conn()");
-	
-	/* Accept the connection */
-	async_answer_0(iid, EOK);
-	
-	inetping6_client_t client;
-	int rc = inetping6_client_init(&client);
-	if (rc != EOK)
-		return;
-	
-	while (true) {
-		ipc_call_t call;
-		ipc_callid_t callid = async_get_call(&call);
-		sysarg_t method = IPC_GET_IMETHOD(call);
-		
-		if (!method) {
-			/* The other side has hung up */
-			async_answer_0(callid, EOK);
-			break;
-		}
-		
-		switch (method) {
-		case INETPING6_SEND:
-			inetping6_send_srv(&client, callid, &call);
-			break;
-		case INETPING6_GET_SRCADDR:
-			inetping6_get_srcaddr_srv(&client, callid, &call);
-			break;
-		default:
-			async_answer_0(callid, EINVAL);
-		}
-	}
-	
-	inetping6_client_fini(&client);
-}
-
-/** @}
- */
Index: uspace/srv/net/inetsrv/inetping6.h
===================================================================
--- uspace/srv/net/inetsrv/inetping6.h	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ 	(revision )
@@ -1,49 +1,0 @@
-/*
- * Copyright (c) 2013 Martin Decky
- * 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 INETPING6_H_
-#define INETPING6_H_
-
-#include <types/inetping6.h>
-#include "inetsrv.h"
-
-extern void inetping6_conn(ipc_callid_t, ipc_call_t *, void *);
-extern int inetping6_recv(uint16_t, inetping6_sdu_t *);
-
-#endif
-
-/** @}
- */
Index: uspace/srv/net/inetsrv/inetsrv.c
===================================================================
--- uspace/srv/net/inetsrv/inetsrv.c	(revision 26de91ad6075a30c55e624bbca95373c9209119e)
+++ uspace/srv/net/inetsrv/inetsrv.c	(revision 3e896e13ce2d12717dbece63e83c5a92d660505f)
@@ -54,5 +54,4 @@
 #include "inetcfg.h"
 #include "inetping.h"
-#include "inetping6.h"
 #include "inet_link.h"
 #include "reass.h"
@@ -111,11 +110,4 @@
 	rc = loc_service_register_with_iface(SERVICE_NAME_INETPING, &sid,
 	    INET_PORT_PING);
-	if (rc != EOK) {
-		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service (%d).", rc);
-		return EEXIST;
-	}
-	
-	rc = loc_service_register_with_iface(SERVICE_NAME_INETPING6, &sid,
-	    INET_PORT_PING6);
 	if (rc != EOK) {
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service (%d).", rc);
@@ -452,7 +444,4 @@
 		inetping_conn(iid, icall, arg);
 		break;
-	case INET_PORT_PING6:
-		inetping6_conn(iid, icall, arg);
-		break;
 	default:
 		async_answer_0(iid, ENOTSUP);
