Index: uspace/srv/ethip/ethip.c
===================================================================
--- uspace/srv/ethip/ethip.c	(revision 06295a99157877f0b3955dae49c83b8d24365018)
+++ uspace/srv/ethip/ethip.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
@@ -106,4 +106,6 @@
 	}
 
+	nic->iplink_sid = sid;
+
 	rc = loc_category_get_id("iplink", &iplink_cat, IPC_FLAG_BLOCKING);
 	if (rc != EOK) {
@@ -128,6 +130,16 @@
 static void ethip_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
 {
-	log_msg(LVL_DEBUG, "ethip_client_conn(%u)", (unsigned) IPC_GET_ARG1(*icall));
-	if (0) iplink_conn(iid, icall, NULL);
+	ethip_nic_t *nic;
+	service_id_t sid;
+
+	sid = (service_id_t)IPC_GET_ARG1(*icall);
+	log_msg(LVL_DEBUG, "ethip_client_conn(%u)", (unsigned)sid);
+	nic = ethip_nic_find_by_iplink_sid(sid);
+	if (nic == NULL) {
+		log_msg(LVL_WARN, "Uknown service ID.");
+		return;
+	}
+
+	iplink_conn(iid, icall, &nic->iplink);
 }
 
Index: uspace/srv/ethip/ethip.h
===================================================================
--- uspace/srv/ethip/ethip.h	(revision 06295a99157877f0b3955dae49c83b8d24365018)
+++ uspace/srv/ethip/ethip.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
@@ -45,4 +45,5 @@
 
 	iplink_srv_t iplink;
+	service_id_t iplink_sid;
 } ethip_nic_t;
 
Index: uspace/srv/ethip/ethip_nic.c
===================================================================
--- uspace/srv/ethip/ethip_nic.c	(revision 06295a99157877f0b3955dae49c83b8d24365018)
+++ uspace/srv/ethip/ethip_nic.c	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
@@ -35,4 +35,5 @@
  */
 
+#include <adt/list.h>
 #include <async.h>
 #include <bool.h>
@@ -256,4 +257,24 @@
 }
 
+ethip_nic_t *ethip_nic_find_by_iplink_sid(service_id_t iplink_sid)
+{
+	log_msg(LVL_DEBUG, "ethip_nic_find_by_iplink_sid(%u)",
+	    (unsigned) iplink_sid);
+
+	list_foreach(ethip_nic_list, link) {
+		log_msg(LVL_DEBUG, "ethip_nic_find_by_iplink_sid - element");
+		ethip_nic_t *nic = list_get_instance(link, ethip_nic_t,
+		    nic_list);
+
+		if (nic->iplink_sid == iplink_sid) {
+			log_msg(LVL_DEBUG, "ethip_nic_find_by_iplink_sid - found %p", nic);
+			return nic;
+		}
+	}
+
+	log_msg(LVL_DEBUG, "ethip_nic_find_by_iplink_sid - not found");
+	return NULL;
+}
+
 /** @}
  */
Index: uspace/srv/ethip/ethip_nic.h
===================================================================
--- uspace/srv/ethip/ethip_nic.h	(revision 06295a99157877f0b3955dae49c83b8d24365018)
+++ uspace/srv/ethip/ethip_nic.h	(revision bc385789c90bd429765abebdb70ac2057bcf31db)
@@ -38,5 +38,8 @@
 #define ETHIP_NIC_H_
 
+#include <ipc/loc.h>
+
 extern int ethip_nic_discovery_start(void);
+extern ethip_nic_t *ethip_nic_find_by_iplink_sid(service_id_t);
 
 #endif
