Index: uspace/srv/net/cfg/e1k.nic
===================================================================
--- uspace/srv/net/cfg/e1k.nic	(revision 5cc9eba114f1b3db3d9b0fce528eeec326c97785)
+++ uspace/srv/net/cfg/e1k.nic	(revision 9cd81655f6cba65cbde69068b36eff82d99f80b8)
@@ -12,9 +12,9 @@
 
 IP_CONFIG=static
-IP_ADDR=10.0.2.15
+IP_ADDR=192.168.0.4
 IP_ROUTING=yes
-IP_NETMASK=255.255.255.240
-IP_BROADCAST=10.0.2.255
-IP_GATEWAY=10.0.2.2
+IP_NETMASK=255.255.255.0
+IP_BROADCAST=192.168.0.255
+IP_GATEWAY=192.168.0.1
 ARP=arp
 
Index: uspace/srv/net/cfg/ne2k.nic
===================================================================
--- uspace/srv/net/cfg/ne2k.nic	(revision 5cc9eba114f1b3db3d9b0fce528eeec326c97785)
+++ uspace/srv/net/cfg/ne2k.nic	(revision 9cd81655f6cba65cbde69068b36eff82d99f80b8)
@@ -12,9 +12,9 @@
 
 IP_CONFIG=static
-IP_ADDR=10.0.2.15
+IP_ADDR=192.168.0.4
 IP_ROUTING=yes
-IP_NETMASK=255.255.255.240
-IP_BROADCAST=10.0.2.255
-IP_GATEWAY=10.0.2.2
+IP_NETMASK=255.255.255.0
+IP_BROADCAST=192.168.0.255
+IP_GATEWAY=192.168.0.1
 ARP=arp
 
Index: uspace/srv/net/nil/eth/eth.c
===================================================================
--- uspace/srv/net/nil/eth/eth.c	(revision 5cc9eba114f1b3db3d9b0fce528eeec326c97785)
+++ uspace/srv/net/nil/eth/eth.c	(revision 9cd81655f6cba65cbde69068b36eff82d99f80b8)
@@ -173,5 +173,5 @@
     void *arg);
 
-static int eth_device_state(nic_device_id_t device_id, sysarg_t state)
+static int eth_device_state(eth_device_t *device, sysarg_t state)
 {
 	int index;
@@ -183,6 +183,6 @@
 		proto = eth_protos_get_index(&eth_globals.protos, index);
 		if ((proto) && (proto->sess)) {
-			il_device_state_msg(proto->sess, device_id, state,
-			    proto->service);
+			il_device_state_msg(proto->sess, device->device_id,
+			    state, proto->service);
 		}
 	}
@@ -347,6 +347,5 @@
 	}
 	
-	rc = nic_callback_create(device->sess, device_id,
-	    eth_nic_cb_connection, NULL);
+	rc = nic_callback_create(device->sess, eth_nic_cb_connection, device);
 	if (rc != EOK) {
 		fibril_rwlock_write_unlock(&eth_globals.devices_lock);
@@ -825,5 +824,5 @@
 }
 
-static int eth_received(nic_device_id_t device_id)
+static int eth_received(eth_device_t *device)
 {
 	void *data;
@@ -845,8 +844,8 @@
 	free(data);
 	
-	return nil_received_msg_local(device_id, packet);
-}
-
-static int eth_addr_changed(nic_device_id_t device_id)
+	return nil_received_msg_local(device->device_id, packet);
+}
+
+static int eth_addr_changed(eth_device_t *device)
 {
 	nic_address_t address;
@@ -866,28 +865,24 @@
 
 	fibril_rwlock_write_lock(&eth_globals.devices_lock);
-	/* An existing device? */
-	eth_device_t *device = eth_devices_find(&eth_globals.devices, device_id);
-	if (device) {
-		printf("Device %d changing address from " PRIMAC " to " PRIMAC "\n",
-			device_id, ARGSMAC(device->addr.address), ARGSMAC(address.address));
-		memcpy(&device->addr, &address, sizeof (nic_address_t));
-		fibril_rwlock_write_unlock(&eth_globals.devices_lock);
-
-		/* Notify all upper layer modules */
-		fibril_rwlock_read_lock(&eth_globals.protos_lock);
-		int index;
-		for (index = 0; index < eth_protos_count(&eth_globals.protos); index++) {
-			eth_proto_t *proto = eth_protos_get_index(&eth_globals.protos, index);
-			if (proto->sess != NULL) {
-				il_addr_changed_msg(proto->sess, device->device_id,
-						ETH_ADDR, address.address);
-			}
-		}
-
-		fibril_rwlock_read_unlock(&eth_globals.protos_lock);
-		return EOK;
-	} else {
-		return ENOENT;
-	}
+
+	printf("Device %d changing address from " PRIMAC " to " PRIMAC "\n",
+		device->device_id, ARGSMAC(device->addr.address),
+		ARGSMAC(address.address));
+	memcpy(&device->addr, &address, sizeof (nic_address_t));
+	fibril_rwlock_write_unlock(&eth_globals.devices_lock);
+
+	/* Notify all upper layer modules */
+	fibril_rwlock_read_lock(&eth_globals.protos_lock);
+	int index;
+	for (index = 0; index < eth_protos_count(&eth_globals.protos); index++) {
+		eth_proto_t *proto = eth_protos_get_index(&eth_globals.protos, index);
+		if (proto->sess != NULL) {
+			il_addr_changed_msg(proto->sess, device->device_id,
+					ETH_ADDR, address.address);
+		}
+	}
+
+	fibril_rwlock_read_unlock(&eth_globals.protos_lock);
+	return EOK;
 }
 
@@ -962,4 +957,5 @@
 static void eth_nic_cb_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
 {
+	eth_device_t *device = (eth_device_t *)arg;
 	int rc;
 	
@@ -975,14 +971,13 @@
 		switch (IPC_GET_IMETHOD(call)) {
 		case NIC_EV_DEVICE_STATE:
-			rc = eth_device_state(IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call));
+			rc = eth_device_state(device, IPC_GET_ARG1(call));
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
 		case NIC_EV_RECEIVED:
-			rc = eth_received(IPC_GET_ARG1(call));
+			rc = eth_received(device);
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
 		case NIC_EV_ADDR_CHANGED:
-			rc = eth_addr_changed(IPC_GET_ARG1(call));
+			rc = eth_addr_changed(device);
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
Index: uspace/srv/net/nil/nildummy/nildummy.c
===================================================================
--- uspace/srv/net/nil/nildummy/nildummy.c	(revision 5cc9eba114f1b3db3d9b0fce528eeec326c97785)
+++ uspace/srv/net/nil/nildummy/nildummy.c	(revision 9cd81655f6cba65cbde69068b36eff82d99f80b8)
@@ -73,10 +73,10 @@
     void *arg);
 
-static int nildummy_device_state(nic_device_id_t device_id, sysarg_t state)
+static int nildummy_device_state(nildummy_device_t *device, sysarg_t state)
 {
 	fibril_rwlock_read_lock(&nildummy_globals.protos_lock);
 	if (nildummy_globals.proto.sess)
-		il_device_state_msg(nildummy_globals.proto.sess, device_id,
-		    state, nildummy_globals.proto.service);
+		il_device_state_msg(nildummy_globals.proto.sess,
+		    device->device_id, state, nildummy_globals.proto.service);
 	fibril_rwlock_read_unlock(&nildummy_globals.protos_lock);
 	
@@ -84,5 +84,5 @@
 }
 
-static int nildummy_addr_changed(nic_device_id_t device_id)
+static int nildummy_addr_changed(nildummy_device_t *device)
 {
 	return ENOTSUP;
@@ -182,6 +182,6 @@
 	}
 	
-	int rc = nic_callback_create(device->sess, device_id,
-	    nildummy_nic_cb_conn, NULL);
+	int rc = nic_callback_create(device->sess, nildummy_nic_cb_conn,
+	    device);
 	if (rc != EOK) {
 		async_hangup(device->sess);
@@ -383,5 +383,5 @@
 }
 
-static int nildummy_received(nic_device_id_t device_id)
+static int nildummy_received(nildummy_device_t *device)
 {
 	void *data;
@@ -401,5 +401,5 @@
 	free(pdata);
 
-	return nil_received_msg_local(device_id, packet);
+	return nil_received_msg_local(device->device_id, packet);
 }
 
@@ -465,4 +465,5 @@
 static void nildummy_nic_cb_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
 {
+	nildummy_device_t *device = (nildummy_device_t *)arg;
 	int rc;
 	
@@ -478,14 +479,13 @@
 		switch (IPC_GET_IMETHOD(call)) {
 		case NIC_EV_DEVICE_STATE:
-			rc = nildummy_device_state(IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call));
+			rc = nildummy_device_state(device, IPC_GET_ARG1(call));
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
 		case NIC_EV_RECEIVED:
-			rc = nildummy_received(IPC_GET_ARG1(call));
+			rc = nildummy_received(device);
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
 		case NIC_EV_ADDR_CHANGED:
-			rc = nildummy_addr_changed(IPC_GET_ARG1(call));
+			rc = nildummy_addr_changed(device);
 			async_answer_0(callid, (sysarg_t) rc);
 			break;
