Index: uspace/lib/c/include/inet/iplink_srv.h
===================================================================
--- uspace/lib/c/include/inet/iplink_srv.h	(revision ceba4bed90274ab7e0275c4ddcb524984cc64a39)
+++ uspace/lib/c/include/inet/iplink_srv.h	(revision df15e5f181264043903da170259c6dba1dd99a30)
@@ -37,4 +37,6 @@
 
 #include <async.h>
+#include <fibril_synch.h>
+#include <bool.h>
 #include <sys/types.h>
 
@@ -42,12 +44,10 @@
 
 typedef struct {
+	fibril_mutex_t lock;
+	bool connected;
 	struct iplink_ops *ops;
 	void *arg;
+	async_sess_t *client_sess;
 } iplink_srv_t;
-
-typedef struct {
-	iplink_srv_t *srv;
-	async_sess_t *client_sess;
-} iplink_conn_t;
 
 typedef struct {
@@ -68,12 +68,14 @@
 
 typedef struct iplink_ops {
-	int (*open)(iplink_conn_t *);
-	int (*close)(iplink_conn_t *);
-	int (*send)(iplink_conn_t *, iplink_srv_sdu_t *);
-	int (*get_mtu)(iplink_conn_t *, size_t *);
+	int (*open)(iplink_srv_t *);
+	int (*close)(iplink_srv_t *);
+	int (*send)(iplink_srv_t *, iplink_srv_sdu_t *);
+	int (*get_mtu)(iplink_srv_t *, size_t *);
 } iplink_ops_t;
 
+extern void iplink_srv_init(iplink_srv_t *);
+
 extern int iplink_conn(ipc_callid_t, ipc_call_t *, void *);
-extern int iplink_ev_recv(iplink_conn_t *, iplink_srv_sdu_t *);
+extern int iplink_ev_recv(iplink_srv_t *, iplink_srv_sdu_t *);
 
 #endif
