Index: uspace/srv/net/ethip/arp.c
===================================================================
--- uspace/srv/net/ethip/arp.c	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/arp.c	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -66,11 +66,11 @@
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ARP PDU decoded, opcode=%d, tpa=%x",
-	    packet.opcode, packet.target_proto_addr.ipv4);
+	    packet.opcode, packet.target_proto_addr);
 
-	laddr = ethip_nic_addr_find(nic, &packet.target_proto_addr);
+	laddr = ethip_nic_addr_find(nic, packet.target_proto_addr);
 	if (laddr != NULL) {
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "Request/reply to my address");
 
-		(void) atrans_add(&packet.sender_proto_addr,
+		(void) atrans_add(packet.sender_proto_addr,
 		    &packet.sender_hw_addr);
 
@@ -87,6 +87,6 @@
 }
 
-int arp_translate(ethip_nic_t *nic, iplink_srv_addr_t *src_addr,
-    iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
+int arp_translate(ethip_nic_t *nic, uint32_t src_addr, uint32_t ip_addr,
+    mac48_addr_t *mac_addr)
 {
 	int rc;
@@ -99,7 +99,7 @@
 	packet.opcode = aop_request;
 	packet.sender_hw_addr = nic->mac_addr;
-	packet.sender_proto_addr = *src_addr;
+	packet.sender_proto_addr = src_addr;
 	packet.target_hw_addr.addr = MAC48_BROADCAST;
-	packet.target_proto_addr = *ip_addr;
+	packet.target_proto_addr = ip_addr;
 
 	rc = arp_send_packet(nic, &packet);
Index: uspace/srv/net/ethip/arp.h
===================================================================
--- uspace/srv/net/ethip/arp.h	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/arp.h	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -42,6 +42,5 @@
 
 extern void arp_received(ethip_nic_t *, eth_frame_t *);
-extern int arp_translate(ethip_nic_t *, iplink_srv_addr_t *,
-    iplink_srv_addr_t *, mac48_addr_t *);
+extern int arp_translate(ethip_nic_t *, uint32_t, uint32_t, mac48_addr_t *);
 
 #endif
Index: uspace/srv/net/ethip/atrans.c
===================================================================
--- uspace/srv/net/ethip/atrans.c	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/atrans.c	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -49,5 +49,5 @@
 static FIBRIL_CONDVAR_INITIALIZE(atrans_cv);
 
-static ethip_atrans_t *atrans_find(iplink_srv_addr_t *ip_addr)
+static ethip_atrans_t *atrans_find(uint32_t ip_addr)
 {
 	list_foreach(atrans_list, link) {
@@ -55,5 +55,5 @@
 		    ethip_atrans_t, atrans_list);
 
-		if (atrans->ip_addr.ipv4 == ip_addr->ipv4)
+		if (atrans->ip_addr == ip_addr)
 			return atrans;
 	}
@@ -62,5 +62,5 @@
 }
 
-int atrans_add(iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
+int atrans_add(uint32_t ip_addr, mac48_addr_t *mac_addr)
 {
 	ethip_atrans_t *atrans;
@@ -71,5 +71,5 @@
 		return ENOMEM;
 
-	atrans->ip_addr = *ip_addr;
+	atrans->ip_addr = ip_addr;
 	atrans->mac_addr = *mac_addr;
 
@@ -88,5 +88,5 @@
 }
 
-int atrans_remove(iplink_srv_addr_t *ip_addr)
+int atrans_remove(uint32_t ip_addr)
 {
 	ethip_atrans_t *atrans;
@@ -106,5 +106,5 @@
 }
 
-int atrans_lookup(iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
+int atrans_lookup(uint32_t ip_addr, mac48_addr_t *mac_addr)
 {
 	ethip_atrans_t *atrans;
Index: uspace/srv/net/ethip/atrans.h
===================================================================
--- uspace/srv/net/ethip/atrans.h	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/atrans.h	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -41,7 +41,7 @@
 #include "ethip.h"
 
-extern int atrans_add(iplink_srv_addr_t *, mac48_addr_t *);
-extern int atrans_remove(iplink_srv_addr_t *);
-extern int atrans_lookup(iplink_srv_addr_t *, mac48_addr_t *);
+extern int atrans_add(uint32_t, mac48_addr_t *);
+extern int atrans_remove(uint32_t);
+extern int atrans_lookup(uint32_t, mac48_addr_t *);
 extern int atrans_wait_timeout(suseconds_t);
 
Index: uspace/srv/net/ethip/ethip.c
===================================================================
--- uspace/srv/net/ethip/ethip.c	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/ethip.c	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -57,6 +57,6 @@
 static int ethip_send(iplink_srv_t *srv, iplink_srv_sdu_t *sdu);
 static int ethip_get_mtu(iplink_srv_t *srv, size_t *mtu);
-static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr);
-static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr);
+static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr);
+static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr);
 
 static void ethip_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg);
@@ -175,8 +175,8 @@
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_send()");
 
-	rc = arp_translate(nic, &sdu->lsrc, &sdu->ldest, &dest_mac_addr);
+	rc = arp_translate(nic, sdu->lsrc, sdu->ldest, &dest_mac_addr);
 	if (rc != EOK) {
 		log_msg(LOG_DEFAULT, LVL_WARN, "Failed to look up IP address 0x%" PRIx32,
-		    sdu->ldest.ipv4);
+		    sdu->ldest);
 		return rc;
 	}
@@ -221,6 +221,6 @@
 	case ETYPE_IP:
 		log_msg(LOG_DEFAULT, LVL_DEBUG, " - construct SDU");
-		sdu.lsrc.ipv4 = 0;
-		sdu.ldest.ipv4 = 0;
+		sdu.lsrc = 0;
+		sdu.ldest = 0;
 		sdu.data = frame.data;
 		sdu.size = frame.size;
@@ -244,17 +244,19 @@
 }
 
-static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr)
-{
+static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr)
+{
+	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr);
+	
+	ethip_nic_t *nic = (ethip_nic_t *) srv->arg;
+	
+	return ethip_nic_addr_add(nic, addr);
+}
+
+static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr)
+{
+	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr);
+	
 	ethip_nic_t *nic = (ethip_nic_t *)srv->arg;
-
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr->ipv4);
-	return ethip_nic_addr_add(nic, addr);
-}
-
-static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr)
-{
-	ethip_nic_t *nic = (ethip_nic_t *)srv->arg;
-
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr->ipv4);
+	
 	return ethip_nic_addr_add(nic, addr);
 }
Index: uspace/srv/net/ethip/ethip.h
===================================================================
--- uspace/srv/net/ethip/ethip.h	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/ethip.h	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -48,5 +48,5 @@
 typedef struct {
 	link_t addr_list;
-	iplink_srv_addr_t addr;
+	uint32_t addr;
 } ethip_link_addr_t;
 
@@ -104,9 +104,9 @@
 	mac48_addr_t sender_hw_addr;
 	/** Sender protocol address */
-	iplink_srv_addr_t sender_proto_addr;
+	uint32_t sender_proto_addr;
 	/** Target hardware address */
 	mac48_addr_t target_hw_addr;
 	/** Target protocol address */
-	iplink_srv_addr_t target_proto_addr;
+	uint32_t target_proto_addr;
 } arp_eth_packet_t;
 
@@ -114,5 +114,5 @@
 typedef struct {
 	link_t atrans_list;
-	iplink_srv_addr_t ip_addr;
+	uint32_t ip_addr;
 	mac48_addr_t mac_addr;
 } ethip_atrans_t;
Index: uspace/srv/net/ethip/ethip_nic.c
===================================================================
--- uspace/srv/net/ethip/ethip_nic.c	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/ethip_nic.c	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -121,8 +121,7 @@
 }
 
-static ethip_link_addr_t *ethip_nic_addr_new(iplink_srv_addr_t *addr)
+static ethip_link_addr_t *ethip_nic_addr_new(uint32_t addr)
 {
 	ethip_link_addr_t *laddr = calloc(1, sizeof(ethip_link_addr_t));
-
 	if (laddr == NULL) {
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed allocating NIC address structure. "
@@ -130,7 +129,8 @@
 		return NULL;
 	}
-
+	
 	link_initialize(&laddr->addr_list);
-	laddr->addr.ipv4 = addr->ipv4;
+	laddr->addr = addr;
+	
 	return laddr;
 }
@@ -335,27 +335,24 @@
 }
 
-int ethip_nic_addr_add(ethip_nic_t *nic, iplink_srv_addr_t *addr)
-{
-	ethip_link_addr_t *laddr;
-
+int ethip_nic_addr_add(ethip_nic_t *nic, uint32_t addr)
+{
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_add()");
-	laddr = ethip_nic_addr_new(addr);
+	
+	ethip_link_addr_t *laddr = ethip_nic_addr_new(addr);
 	if (laddr == NULL)
 		return ENOMEM;
-
+	
 	list_append(&laddr->addr_list, &nic->addr_list);
 	return EOK;
 }
 
-int ethip_nic_addr_remove(ethip_nic_t *nic, iplink_srv_addr_t *addr)
-{
-	ethip_link_addr_t *laddr;
-
+int ethip_nic_addr_remove(ethip_nic_t *nic, uint32_t addr)
+{
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_remove()");
-
-	laddr = ethip_nic_addr_find(nic, addr);
+	
+	ethip_link_addr_t *laddr = ethip_nic_addr_find(nic, addr);
 	if (laddr == NULL)
 		return ENOENT;
-
+	
 	list_remove(&laddr->addr_list);
 	ethip_link_addr_delete(laddr);
@@ -364,5 +361,5 @@
 
 ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *nic,
-    iplink_srv_addr_t *addr)
+    uint32_t addr)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_find()");
@@ -372,5 +369,5 @@
 		    ethip_link_addr_t, addr_list);
 
-		if (addr->ipv4 == laddr->addr.ipv4)
+		if (addr == laddr->addr)
 			return laddr;
 	}
Index: uspace/srv/net/ethip/ethip_nic.h
===================================================================
--- uspace/srv/net/ethip/ethip_nic.h	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/ethip_nic.h	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -44,8 +44,7 @@
 extern ethip_nic_t *ethip_nic_find_by_iplink_sid(service_id_t);
 extern int ethip_nic_send(ethip_nic_t *, void *, size_t);
-extern int ethip_nic_addr_add(ethip_nic_t *, iplink_srv_addr_t *);
-extern int ethip_nic_addr_remove(ethip_nic_t *, iplink_srv_addr_t *);
-extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *,
-    iplink_srv_addr_t *);
+extern int ethip_nic_addr_add(ethip_nic_t *, uint32_t);
+extern int ethip_nic_addr_remove(ethip_nic_t *, uint32_t);
+extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *, uint32_t);
 
 #endif
Index: uspace/srv/net/ethip/pdu.c
===================================================================
--- uspace/srv/net/ethip/pdu.c	(revision 289cb7dde5a430de83c0f30f460de47fb564b1fd)
+++ uspace/srv/net/ethip/pdu.c	(revision a2e3ee6092cd450ed63e80fa45ddb46a740aa02c)
@@ -170,8 +170,8 @@
 	mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
 	pfmt->sender_proto_addr =
-	    host2uint32_t_be(packet->sender_proto_addr.ipv4);
+	    host2uint32_t_be(packet->sender_proto_addr);
 	mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
 	pfmt->target_proto_addr =
-	    host2uint32_t_be(packet->target_proto_addr.ipv4);
+	    host2uint32_t_be(packet->target_proto_addr);
 
 	*rdata = data;
@@ -228,8 +228,8 @@
 
 	mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
-	packet->sender_proto_addr.ipv4 =
+	packet->sender_proto_addr =
 	    uint32_t_be2host(pfmt->sender_proto_addr);
 	mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
-	packet->target_proto_addr.ipv4 =
+	packet->target_proto_addr =
 	    uint32_t_be2host(pfmt->target_proto_addr);
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "packet->tpa = %x\n", pfmt->target_proto_addr);
@@ -238,5 +238,4 @@
 }
 
-
 /** @}
  */
