Index: uspace/lib/net/netif/netif_skel.c
===================================================================
--- uspace/lib/net/netif/netif_skel.c	(revision 6b8200979d8daac47bccc812f910bbf881df8e94)
+++ uspace/lib/net/netif/netif_skel.c	(revision e6910c8cba8ef767d08e484d4d27dc60eb1d67ef)
@@ -228,4 +228,29 @@
 }
 
+/** Register the device notification receiver,
+ *
+ * Register a network interface layer module as the device
+ * notification receiver.
+ *
+ * @param[in] sess      Session to the network interface layer module.
+ *
+ * @return EOK on success.
+ * @return ELIMIT if there is another module registered.
+ *
+ */
+static int register_message(async_sess_t *sess)
+{
+	fibril_rwlock_write_lock(&netif_globals.lock);
+	if (netif_globals.nil_sess != NULL) {
+		fibril_rwlock_write_unlock(&netif_globals.lock);
+		return ELIMIT;
+	}
+	
+	netif_globals.nil_sess = sess;
+	
+	fibril_rwlock_write_unlock(&netif_globals.lock);
+	return EOK;
+}
+
 /** Process the netif module messages.
  *
@@ -257,4 +282,9 @@
 		return EOK;
 	
+	async_sess_t *callback =
+	    async_callback_receive_start(EXCHANGE_SERIALIZE, call);
+	if (callback)
+		return register_message(callback);
+	
 	switch (IPC_GET_IMETHOD(*call)) {
 	case NET_NETIF_PROBE:
@@ -358,6 +388,4 @@
  * messages in an infinite loop.
  *
- * @param[in] nil_service Network interface layer service.
- *
  * @return EOK on success.
  * @return Other error codes as defined for each specific module
@@ -365,10 +393,10 @@
  *
  */
-int netif_module_start(sysarg_t nil_service)
+int netif_module_start(void)
 {
 	async_set_client_connection(netif_client_connection);
 	
 	netif_globals.sess = connect_to_service(SERVICE_NETWORKING);
-	netif_globals.nil_sess = connect_to_service(nil_service);
+	netif_globals.nil_sess = NULL;
 	netif_device_map_initialize(&netif_globals.device_map);
 	
