Index: uspace/srv/net/ethip/arp.c
===================================================================
--- uspace/srv/net/ethip/arp.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/arp.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -36,7 +36,8 @@
 
 #include <errno.h>
-#include <io/log.h>
 #include <inet/iplink_srv.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
+#include <io/log.h>
 #include <stdlib.h>
 #include "arp.h"
@@ -95,9 +96,9 @@
 
 errno_t arp_translate(ethip_nic_t *nic, addr32_t src_addr, addr32_t ip_addr,
-    addr48_t *mac_addr)
+    eth_addr_t *mac_addr)
 {
 	/* Broadcast address */
 	if (ip_addr == addr32_broadcast_all_hosts) {
-		*mac_addr = addr48_broadcast;
+		*mac_addr = eth_addr_broadcast;
 		return EOK;
 	}
@@ -112,5 +113,5 @@
 	packet.sender_hw_addr = nic->mac_addr;
 	packet.sender_proto_addr = src_addr;
-	packet.target_hw_addr = addr48_broadcast;
+	packet.target_hw_addr = eth_addr_broadcast;
 	packet.target_proto_addr = ip_addr;
 
Index: uspace/srv/net/ethip/arp.h
===================================================================
--- uspace/srv/net/ethip/arp.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/arp.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,10 +38,11 @@
 #define ARP_H_
 
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
-#include <inet/addr.h>
 #include "ethip.h"
 
 extern void arp_received(ethip_nic_t *, eth_frame_t *);
-extern errno_t arp_translate(ethip_nic_t *, addr32_t, addr32_t, addr48_t *);
+extern errno_t arp_translate(ethip_nic_t *, addr32_t, addr32_t, eth_addr_t *);
 
 #endif
Index: uspace/srv/net/ethip/atrans.c
===================================================================
--- uspace/srv/net/ethip/atrans.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/atrans.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,4 +38,5 @@
 #include <errno.h>
 #include <fibril_synch.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
 #include <stdlib.h>
@@ -59,5 +60,5 @@
 }
 
-errno_t atrans_add(addr32_t ip_addr, addr48_t *mac_addr)
+errno_t atrans_add(addr32_t ip_addr, eth_addr_t *mac_addr)
 {
 	ethip_atrans_t *atrans;
@@ -103,5 +104,5 @@
 }
 
-static errno_t atrans_lookup_locked(addr32_t ip_addr, addr48_t *mac_addr)
+static errno_t atrans_lookup_locked(addr32_t ip_addr, eth_addr_t *mac_addr)
 {
 	ethip_atrans_t *atrans = atrans_find(ip_addr);
@@ -113,5 +114,5 @@
 }
 
-errno_t atrans_lookup(addr32_t ip_addr, addr48_t *mac_addr)
+errno_t atrans_lookup(addr32_t ip_addr, eth_addr_t *mac_addr)
 {
 	errno_t rc;
@@ -135,5 +136,5 @@
 
 errno_t atrans_lookup_timeout(addr32_t ip_addr, usec_t timeout,
-    addr48_t *mac_addr)
+    eth_addr_t *mac_addr)
 {
 	fibril_timer_t *t;
Index: uspace/srv/net/ethip/atrans.h
===================================================================
--- uspace/srv/net/ethip/atrans.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/atrans.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,12 +38,13 @@
 #define ATRANS_H_
 
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
-#include <inet/addr.h>
 #include "ethip.h"
 
-extern errno_t atrans_add(addr32_t, addr48_t *);
+extern errno_t atrans_add(addr32_t, eth_addr_t *);
 extern errno_t atrans_remove(addr32_t);
-extern errno_t atrans_lookup(addr32_t, addr48_t *);
-extern errno_t atrans_lookup_timeout(addr32_t, usec_t, addr48_t *);
+extern errno_t atrans_lookup(addr32_t, eth_addr_t *);
+extern errno_t atrans_lookup_timeout(addr32_t, usec_t, eth_addr_t *);
 
 #endif
Index: uspace/srv/net/ethip/ethip.c
===================================================================
--- uspace/srv/net/ethip/ethip.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/ethip.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -39,4 +39,5 @@
 #include <async.h>
 #include <errno.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
 #include <io/log.h>
@@ -58,6 +59,6 @@
 static errno_t ethip_send6(iplink_srv_t *srv, iplink_sdu6_t *sdu);
 static errno_t ethip_get_mtu(iplink_srv_t *srv, size_t *mtu);
-static errno_t ethip_get_mac48(iplink_srv_t *srv, addr48_t *mac);
-static errno_t ethip_set_mac48(iplink_srv_t *srv, addr48_t *mac);
+static errno_t ethip_get_mac48(iplink_srv_t *srv, eth_addr_t *mac);
+static errno_t ethip_set_mac48(iplink_srv_t *srv, eth_addr_t *mac);
 static errno_t ethip_addr_add(iplink_srv_t *srv, inet_addr_t *addr);
 static errno_t ethip_addr_remove(iplink_srv_t *srv, inet_addr_t *addr);
@@ -276,5 +277,5 @@
 }
 
-static errno_t ethip_get_mac48(iplink_srv_t *srv, addr48_t *mac)
+static errno_t ethip_get_mac48(iplink_srv_t *srv, eth_addr_t *mac)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_get_mac48()");
@@ -286,5 +287,5 @@
 }
 
-static errno_t ethip_set_mac48(iplink_srv_t *srv, addr48_t *mac)
+static errno_t ethip_set_mac48(iplink_srv_t *srv, eth_addr_t *mac)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_set_mac48()");
Index: uspace/srv/net/ethip/ethip.h
===================================================================
--- uspace/srv/net/ethip/ethip.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/ethip.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -40,6 +40,7 @@
 #include <adt/list.h>
 #include <async.h>
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
-#include <inet/addr.h>
 #include <loc.h>
 #include <stddef.h>
@@ -61,5 +62,5 @@
 
 	/** MAC address */
-	addr48_t mac_addr;
+	eth_addr_t mac_addr;
 
 	/**
@@ -73,7 +74,7 @@
 typedef struct {
 	/** Destination Address */
-	addr48_t dest;
+	eth_addr_t dest;
 	/** Source Address */
-	addr48_t src;
+	eth_addr_t src;
 	/** Ethertype or Length */
 	uint16_t etype_len;
@@ -100,9 +101,9 @@
 	arp_opcode_t opcode;
 	/** Sender hardware address */
-	addr48_t sender_hw_addr;
+	eth_addr_t sender_hw_addr;
 	/** Sender protocol address */
 	addr32_t sender_proto_addr;
 	/** Target hardware address */
-	addr48_t target_hw_addr;
+	eth_addr_t target_hw_addr;
 	/** Target protocol address */
 	addr32_t target_proto_addr;
@@ -113,5 +114,5 @@
 	link_t atrans_list;
 	addr32_t ip_addr;
-	addr48_t mac_addr;
+	eth_addr_t mac_addr;
 } ethip_atrans_t;
 
Index: uspace/srv/net/ethip/ethip_nic.c
===================================================================
--- uspace/srv/net/ethip/ethip_nic.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/ethip_nic.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -37,14 +37,15 @@
 #include <adt/list.h>
 #include <async.h>
-#include <stdbool.h>
 #include <errno.h>
-#include <str_error.h>
 #include <fibril_synch.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
 #include <io/log.h>
 #include <loc.h>
+#include <mem.h>
 #include <nic_iface.h>
+#include <stdbool.h>
 #include <stdlib.h>
-#include <mem.h>
+#include <str_error.h>
 #include "ethip.h"
 #include "ethip_nic.h"
@@ -193,5 +194,5 @@
 	}
 
-	mac48_decode(nic_address.address, &nic->mac_addr);
+	eth_addr_decode(nic_address.address, &nic->mac_addr);
 
 	rc = nic_set_state(nic->sess, NIC_STATE_ACTIVE);
@@ -399,6 +400,6 @@
 		assert(i < count);
 
-		addr48_t mac;
-		addr48_solicited_node(v6, &mac);
+		eth_addr_t mac;
+		eth_addr_solicited_node(v6, &mac);
 
 		/* Avoid duplicate addresses in the list */
@@ -407,7 +408,7 @@
 
 		for (size_t j = 0; j < i; j++) {
-			addr48_t mac_entry;
-			mac48_decode(mac_list[j].address, &mac_entry);
-			if (addr48_compare(&mac_entry, &mac)) {
+			eth_addr_t mac_entry;
+			eth_addr_decode(mac_list[j].address, &mac_entry);
+			if (eth_addr_compare(&mac_entry, &mac)) {
 				found = true;
 				break;
@@ -416,5 +417,5 @@
 
 		if (!found) {
-			mac48_encode(&mac, mac_list[i].address);
+			eth_addr_encode(&mac, mac_list[i].address);
 			i++;
 		} else {
Index: uspace/srv/net/ethip/pdu.c
===================================================================
--- uspace/srv/net/ethip/pdu.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/pdu.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -60,6 +60,6 @@
 
 	hdr = (eth_header_t *)data;
-	mac48_encode(&frame->src, hdr->src);
-	mac48_encode(&frame->dest, hdr->dest);
+	eth_addr_encode(&frame->src, hdr->src);
+	eth_addr_encode(&frame->dest, hdr->dest);
 	hdr->etype_len = host2uint16_t_be(frame->etype_len);
 
@@ -93,6 +93,6 @@
 		return ENOMEM;
 
-	mac48_decode(hdr->src, &frame->src);
-	mac48_decode(hdr->dest, &frame->dest);
+	eth_addr_decode(hdr->src, &frame->src);
+	eth_addr_decode(hdr->dest, &frame->dest);
 	frame->etype_len = uint16_t_be2host(hdr->etype_len);
 
@@ -140,8 +140,8 @@
 	pfmt->proto_addr_size = IPV4_ADDR_SIZE;
 	pfmt->opcode = host2uint16_t_be(fopcode);
-	mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
+	eth_addr_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
 	pfmt->sender_proto_addr =
 	    host2uint32_t_be(packet->sender_proto_addr);
-	mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
+	eth_addr_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
 	pfmt->target_proto_addr =
 	    host2uint32_t_be(packet->target_proto_addr);
@@ -203,8 +203,8 @@
 	}
 
-	mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
+	eth_addr_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
 	packet->sender_proto_addr =
 	    uint32_t_be2host(pfmt->sender_proto_addr);
-	mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
+	eth_addr_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
 	packet->target_proto_addr =
 	    uint32_t_be2host(pfmt->target_proto_addr);
Index: uspace/srv/net/ethip/pdu.h
===================================================================
--- uspace/srv/net/ethip/pdu.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/ethip/pdu.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -44,6 +44,4 @@
 extern errno_t arp_pdu_encode(arp_eth_packet_t *, void **, size_t *);
 extern errno_t arp_pdu_decode(void *, size_t, arp_eth_packet_t *);
-extern void mac48_encode(addr48_t *, void *);
-extern void mac48_decode(void *, addr48_t *);
 
 #endif
