Index: uspace/lib/inet/include/inet/addr.h
===================================================================
--- uspace/lib/inet/include/inet/addr.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/include/inet/addr.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -37,13 +37,8 @@
 
 #include <errno.h>
+#include <inet/eth_addr.h>
 #include <stdint.h>
 
 typedef uint32_t addr32_t;
-
-#define ETH_ADDR_SIZE 6
-
-typedef struct {
-	uint8_t b[ETH_ADDR_SIZE];
-} addr48_t;
 
 typedef uint8_t addr128_t[16];
@@ -84,12 +79,9 @@
 
 extern const addr32_t addr32_broadcast_all_hosts;
-extern const addr48_t addr48_broadcast;
 
 extern void addr128(const addr128_t, addr128_t);
 
-extern int addr48_compare(const addr48_t *, const addr48_t *);
 extern int addr128_compare(const addr128_t, const addr128_t);
-
-extern void addr48_solicited_node(const addr128_t, addr48_t *);
+extern void eth_addr_solicited_node(const addr128_t, eth_addr_t *);
 
 extern void host2addr128_t_be(const addr128_t, addr128_t);
Index: uspace/lib/inet/include/inet/eth_addr.h
===================================================================
--- uspace/lib/inet/include/inet/eth_addr.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/include/inet/eth_addr.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,9 +38,18 @@
 #define _LIBC_INET_ETH_ADDR_H_
 
-// XXX Move addr48 here
-#include <inet/addr.h>
+#include <stdint.h>
 
-extern void mac48_encode(addr48_t *, void *);
-extern void mac48_decode(const void *, addr48_t *);
+#define ETH_ADDR_SIZE 6
+
+typedef struct {
+	uint8_t b[ETH_ADDR_SIZE];
+} eth_addr_t;
+
+extern const eth_addr_t eth_addr_broadcast;
+
+extern void eth_addr_encode(eth_addr_t *, void *);
+extern void eth_addr_decode(const void *, eth_addr_t *);
+
+extern int eth_addr_compare(const eth_addr_t *, const eth_addr_t *);
 
 #endif
Index: uspace/lib/inet/include/inet/iplink.h
===================================================================
--- uspace/lib/inet/include/inet/iplink.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/include/inet/iplink.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,4 +38,5 @@
 #include <async.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 
 struct iplink_ev_ops;
@@ -62,5 +63,5 @@
 typedef struct {
 	/** Local MAC destination address */
-	addr48_t dest;
+	eth_addr_t dest;
 	/** Serialized IP packet */
 	void *data;
@@ -79,5 +80,5 @@
 typedef struct iplink_ev_ops {
 	errno_t (*recv)(iplink_t *, iplink_recv_sdu_t *, ip_ver_t);
-	errno_t (*change_addr)(iplink_t *, addr48_t *);
+	errno_t (*change_addr)(iplink_t *, eth_addr_t *);
 } iplink_ev_ops_t;
 
@@ -89,6 +90,6 @@
 extern errno_t iplink_addr_remove(iplink_t *, inet_addr_t *);
 extern errno_t iplink_get_mtu(iplink_t *, size_t *);
-extern errno_t iplink_get_mac48(iplink_t *, addr48_t *);
-extern errno_t iplink_set_mac48(iplink_t *, addr48_t *);
+extern errno_t iplink_get_mac48(iplink_t *, eth_addr_t *);
+extern errno_t iplink_set_mac48(iplink_t *, eth_addr_t *);
 extern void *iplink_get_userptr(iplink_t *);
 
Index: uspace/lib/inet/include/inet/iplink_srv.h
===================================================================
--- uspace/lib/inet/include/inet/iplink_srv.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/include/inet/iplink_srv.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -38,7 +38,8 @@
 #include <async.h>
 #include <fibril_synch.h>
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
+#include <inet/iplink.h>
 #include <stdbool.h>
-#include <inet/addr.h>
-#include <inet/iplink.h>
 
 struct iplink_ops;
@@ -58,6 +59,6 @@
 	errno_t (*send6)(iplink_srv_t *, iplink_sdu6_t *);
 	errno_t (*get_mtu)(iplink_srv_t *, size_t *);
-	errno_t (*get_mac48)(iplink_srv_t *, addr48_t *);
-	errno_t (*set_mac48)(iplink_srv_t *, addr48_t *);
+	errno_t (*get_mac48)(iplink_srv_t *, eth_addr_t *);
+	errno_t (*set_mac48)(iplink_srv_t *, eth_addr_t *);
 	errno_t (*addr_add)(iplink_srv_t *, inet_addr_t *);
 	errno_t (*addr_remove)(iplink_srv_t *, inet_addr_t *);
@@ -68,5 +69,5 @@
 extern errno_t iplink_conn(ipc_call_t *, void *);
 extern errno_t iplink_ev_recv(iplink_srv_t *, iplink_recv_sdu_t *, ip_ver_t);
-extern errno_t iplink_ev_change_addr(iplink_srv_t *, addr48_t *);
+extern errno_t iplink_ev_change_addr(iplink_srv_t *, eth_addr_t *);
 
 #endif
Index: uspace/lib/inet/include/types/inetcfg.h
===================================================================
--- uspace/lib/inet/include/types/inetcfg.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/include/types/inetcfg.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2013 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -36,4 +36,5 @@
 #define _LIBC_TYPES_INETCFG_H_
 
+#include <inet/eth_addr.h>
 #include <inet/inet.h>
 #include <stddef.h>
@@ -56,5 +57,5 @@
 	size_t def_mtu;
 	/** Link layer address */
-	addr48_t mac_addr;
+	eth_addr_t mac_addr;
 } inet_link_info_t;
 
Index: uspace/lib/inet/src/addr.c
===================================================================
--- uspace/lib/inet/src/addr.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/src/addr.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -37,4 +37,5 @@
 #include <errno.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <stdio.h>
 #include <stddef.h>
@@ -54,9 +55,5 @@
 const addr32_t addr32_broadcast_all_hosts = 0xffffffff;
 
-const addr48_t addr48_broadcast = {
-	0xff, 0xff, 0xff, 0xff, 0xff, 0xff
-};
-
-static const addr48_t inet_addr48_solicited_node = {
+static const eth_addr_t inet_eth_addr_solicited_node = {
 	0x33, 0x33, 0xff, 0, 0, 0
 };
@@ -77,13 +74,4 @@
 }
 
-/** Compare addr48.
- *
- * @return Non-zero if equal, zero if not equal.
- */
-int addr48_compare(const addr48_t *a, const addr48_t *b)
-{
-	return memcmp(a->b, b->b, 6) == 0;
-}
-
 /** Compare addr128.
  *
@@ -101,7 +89,7 @@
  *
  */
-void addr48_solicited_node(const addr128_t ip, addr48_t *mac)
-{
-	memcpy(&mac->b[0], &inet_addr48_solicited_node.b[0], 3);
+void eth_addr_solicited_node(const addr128_t ip, eth_addr_t *mac)
+{
+	memcpy(&mac->b[0], &inet_eth_addr_solicited_node.b[0], 3);
 	memcpy(&mac->b[3], ip + 13, 3);
 }
Index: uspace/lib/inet/src/eth_addr.c
===================================================================
--- uspace/lib/inet/src/eth_addr.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/src/eth_addr.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,5 +38,9 @@
 #include <mem.h>
 
-void mac48_encode(addr48_t *addr, void *buf)
+const eth_addr_t eth_addr_broadcast = {
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+};
+
+void eth_addr_encode(eth_addr_t *addr, void *buf)
 {
 	uint8_t *bp = (uint8_t *)buf;
@@ -45,5 +49,5 @@
 }
 
-void mac48_decode(const void *buf, addr48_t *addr)
+void eth_addr_decode(const void *buf, eth_addr_t *addr)
 {
 	const uint8_t *bp = (uint8_t *)buf;
@@ -52,4 +56,13 @@
 }
 
+/** Compare ethernet addresses.
+ *
+ * @return Non-zero if equal, zero if not equal.
+ */
+int eth_addr_compare(const eth_addr_t *a, const eth_addr_t *b)
+{
+	return memcmp(a->b, b->b, ETH_ADDR_SIZE) == 0;
+}
+
 /** @}
  */
Index: uspace/lib/inet/src/inetcfg.c
===================================================================
--- uspace/lib/inet/src/inetcfg.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/src/inetcfg.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -30,4 +30,5 @@
 #include <assert.h>
 #include <errno.h>
+#include <inet/eth_addr.h>
 #include <inet/inetcfg.h>
 #include <ipc/inet.h>
@@ -292,5 +293,5 @@
 	aid_t req = async_send_1(exch, INETCFG_LINK_GET, link_id, &answer);
 	aid_t dreq = async_data_read(exch, name_buf, LOC_NAME_MAXLEN, &dreply);
-	errno_t rc = async_data_read_start(exch, &linfo->mac_addr, sizeof(addr48_t));
+	errno_t rc = async_data_read_start(exch, &linfo->mac_addr, sizeof(eth_addr_t));
 	async_wait_for(dreq, &dretval);
 
Index: uspace/lib/inet/src/iplink.c
===================================================================
--- uspace/lib/inet/src/iplink.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/src/iplink.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,6 +38,7 @@
 #include <assert.h>
 #include <errno.h>
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink.h>
-#include <inet/addr.h>
 #include <ipc/iplink.h>
 #include <ipc/services.h>
@@ -115,5 +116,5 @@
 	aid_t req = async_send_0(exch, IPLINK_SEND6, &answer);
 
-	errno_t rc = async_data_write_start(exch, &sdu->dest, sizeof(addr48_t));
+	errno_t rc = async_data_write_start(exch, &sdu->dest, sizeof(eth_addr_t));
 	if (rc != EOK) {
 		async_exchange_end(exch);
@@ -153,5 +154,5 @@
 }
 
-errno_t iplink_get_mac48(iplink_t *iplink, addr48_t *mac)
+errno_t iplink_get_mac48(iplink_t *iplink, eth_addr_t *mac)
 {
 	async_exch_t *exch = async_exchange_begin(iplink->sess);
@@ -160,5 +161,5 @@
 	aid_t req = async_send_0(exch, IPLINK_GET_MAC48, &answer);
 
-	errno_t rc = async_data_read_start(exch, mac, sizeof(addr48_t));
+	errno_t rc = async_data_read_start(exch, mac, sizeof(eth_addr_t));
 
 	loc_exchange_end(exch);
@@ -175,5 +176,5 @@
 }
 
-errno_t iplink_set_mac48(iplink_t *iplink, addr48_t *mac)
+errno_t iplink_set_mac48(iplink_t *iplink, eth_addr_t *mac)
 {
 	async_exch_t *exch = async_exchange_begin(iplink->sess);
@@ -182,5 +183,5 @@
 	aid_t req = async_send_0(exch, IPLINK_GET_MAC48, &answer);
 
-	errno_t rc = async_data_read_start(exch, mac, sizeof(addr48_t));
+	errno_t rc = async_data_read_start(exch, mac, sizeof(eth_addr_t));
 
 	loc_exchange_end(exch);
@@ -264,9 +265,9 @@
 static void iplink_ev_change_addr(iplink_t *iplink, ipc_call_t *icall)
 {
-	addr48_t *addr;
+	eth_addr_t *addr;
 	size_t size;
 
 	errno_t rc = async_data_write_accept((void **) &addr, false,
-	    sizeof(addr48_t), sizeof(addr48_t), 0, &size);
+	    sizeof(eth_addr_t), sizeof(eth_addr_t), 0, &size);
 	if (rc != EOK) {
 		async_answer_0(icall, rc);
Index: uspace/lib/inet/src/iplink_srv.c
===================================================================
--- uspace/lib/inet/src/iplink_srv.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/lib/inet/src/iplink_srv.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -36,4 +36,5 @@
 
 #include <errno.h>
+#include <inet/eth_addr.h>
 #include <ipc/iplink.h>
 #include <stdlib.h>
@@ -51,5 +52,5 @@
 static void iplink_get_mac48_srv(iplink_srv_t *srv, ipc_call_t *icall)
 {
-	addr48_t mac;
+	eth_addr_t mac;
 	errno_t rc = srv->ops->get_mac48(srv, &mac);
 	if (rc != EOK) {
@@ -66,5 +67,5 @@
 	}
 
-	if (size != sizeof(addr48_t)) {
+	if (size != sizeof(eth_addr_t)) {
 		async_answer_0(&call, EINVAL);
 		async_answer_0(icall, EINVAL);
@@ -83,5 +84,5 @@
 	errno_t rc;
 	size_t size;
-	addr48_t mac;
+	eth_addr_t mac;
 
 	ipc_call_t call;
@@ -97,5 +98,5 @@
 	}
 
-	rc = async_data_read_finalize(&call, &mac, sizeof(addr48_t));
+	rc = async_data_read_finalize(&call, &mac, sizeof(eth_addr_t));
 	if (rc != EOK)
 		async_answer_0(&call, rc);
@@ -189,5 +190,5 @@
 	}
 
-	if (size != sizeof(addr48_t)) {
+	if (size != sizeof(eth_addr_t)) {
 		async_answer_0(&call, EINVAL);
 		async_answer_0(icall, EINVAL);
@@ -322,5 +323,5 @@
 }
 
-errno_t iplink_ev_change_addr(iplink_srv_t *srv, addr48_t *addr)
+errno_t iplink_ev_change_addr(iplink_srv_t *srv, eth_addr_t *addr)
 {
 	if (srv->client_sess == NULL)
@@ -332,5 +333,5 @@
 	aid_t req = async_send_0(exch, IPLINK_EV_CHANGE_ADDR, &answer);
 
-	errno_t rc = async_data_write_start(exch, addr, sizeof(addr48_t));
+	errno_t rc = async_data_write_start(exch, addr, sizeof(eth_addr_t));
 	async_exchange_end(exch);
 
Index: uspace/srv/net/dhcp/dhcp.c
===================================================================
--- uspace/srv/net/dhcp/dhcp.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/dhcp/dhcp.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -42,4 +42,5 @@
 #include <fibril_synch.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/dnsr.h>
 #include <inet/inetcfg.h>
@@ -157,5 +158,5 @@
 	hdr->op = op_bootrequest;
 	hdr->htype = 1; /* AHRD_ETHERNET */
-	hdr->hlen = sizeof(addr48_t);
+	hdr->hlen = ETH_ADDR_SIZE;
 	hdr->xid = host2uint32_t_be(42);
 	hdr->flags = flag_broadcast;
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
Index: uspace/srv/net/inetsrv/addrobj.c
===================================================================
--- uspace/srv/net/inetsrv/addrobj.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/addrobj.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,4 +38,5 @@
 #include <errno.h>
 #include <fibril_synch.h>
+#include <inet/eth_addr.h>
 #include <io/log.h>
 #include <ipc/loc.h>
@@ -229,5 +230,5 @@
 
 	errno_t rc;
-	addr48_t ldest_mac;
+	eth_addr_t ldest_mac;
 
 	switch (ldest_ver) {
Index: uspace/srv/net/inetsrv/inet_link.c
===================================================================
--- uspace/srv/net/inetsrv/inet_link.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/inet_link.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -35,13 +35,14 @@
  */
 
-#include <stdbool.h>
 #include <errno.h>
-#include <str_error.h>
 #include <fibril_synch.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink.h>
 #include <io/log.h>
 #include <loc.h>
+#include <stdbool.h>
 #include <stdlib.h>
 #include <str.h>
+#include <str_error.h>
 #include "addrobj.h"
 #include "inetsrv.h"
@@ -56,5 +57,5 @@
 
 static errno_t inet_iplink_recv(iplink_t *, iplink_recv_sdu_t *, ip_ver_t);
-static errno_t inet_iplink_change_addr(iplink_t *, addr48_t *);
+static errno_t inet_iplink_change_addr(iplink_t *, eth_addr_t *);
 static inet_link_t *inet_link_get_by_id_locked(sysarg_t);
 
@@ -70,5 +71,5 @@
     { 0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xfe, 0, 0, 0 };
 
-static void inet_link_local_node_ip(addr48_t *mac_addr,
+static void inet_link_local_node_ip(eth_addr_t *mac_addr,
     addr128_t ip_addr)
 {
@@ -121,5 +122,5 @@
 }
 
-static errno_t inet_iplink_change_addr(iplink_t *iplink, addr48_t *mac)
+static errno_t inet_iplink_change_addr(iplink_t *iplink, eth_addr_t *mac)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_iplink_change_addr(): "
@@ -129,5 +130,5 @@
 	list_foreach(inet_links, link_list, inet_link_t, ilink) {
 		if (ilink->sess == iplink->sess)
-			memcpy(&ilink->mac, mac, sizeof(addr48_t));
+			ilink->mac = *mac;
 	}
 
@@ -387,5 +388,5 @@
  *
  */
-errno_t inet_link_send_dgram6(inet_link_t *ilink, addr48_t *ldest,
+errno_t inet_link_send_dgram6(inet_link_t *ilink, eth_addr_t *ldest,
     inet_dgram_t *dgram, uint8_t proto, uint8_t ttl, int df)
 {
Index: uspace/srv/net/inetsrv/inet_link.h
===================================================================
--- uspace/srv/net/inetsrv/inet_link.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/inet_link.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -38,4 +38,5 @@
 #define INET_LINK_H_
 
+#include <inet/eth_addr.h>
 #include <stddef.h>
 #include <stdint.h>
@@ -45,5 +46,5 @@
 extern errno_t inet_link_send_dgram(inet_link_t *, addr32_t,
     addr32_t, inet_dgram_t *, uint8_t, uint8_t, int);
-extern errno_t inet_link_send_dgram6(inet_link_t *, addr48_t *, inet_dgram_t *,
+extern errno_t inet_link_send_dgram6(inet_link_t *, eth_addr_t *, inet_dgram_t *,
     uint8_t, uint8_t, int);
 extern inet_link_t *inet_link_get_by_id(sysarg_t);
Index: uspace/srv/net/inetsrv/inetsrv.h
===================================================================
--- uspace/srv/net/inetsrv/inetsrv.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/inetsrv.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -41,4 +41,5 @@
 #include <stdbool.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink.h>
 #include <ipc/loc.h>
@@ -109,5 +110,5 @@
 	iplink_t *iplink;
 	size_t def_mtu;
-	addr48_t mac;
+	eth_addr_t mac;
 	bool mac_valid;
 } inet_link_t;
Index: uspace/srv/net/inetsrv/ndp.c
===================================================================
--- uspace/srv/net/inetsrv/ndp.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/ndp.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2013 Antonin Steinhauser
  * All rights reserved.
@@ -36,7 +37,8 @@
 
 #include <errno.h>
+#include <inet/eth_addr.h>
+#include <io/log.h>
 #include <mem.h>
 #include <stdlib.h>
-#include <io/log.h>
 #include "ntrans.h"
 #include "addrobj.h"
@@ -151,5 +153,5 @@
  *
  */
-errno_t ndp_translate(addr128_t src_addr, addr128_t ip_addr, addr48_t *mac_addr,
+errno_t ndp_translate(addr128_t src_addr, addr128_t ip_addr, eth_addr_t *mac_addr,
     inet_link_t *ilink)
 {
@@ -170,5 +172,5 @@
 	addr128(src_addr, packet.sender_proto_addr);
 	addr128(ip_addr, packet.solicited_ip);
-	addr48_solicited_node(ip_addr, &packet.target_hw_addr);
+	eth_addr_solicited_node(ip_addr, &packet.target_hw_addr);
 	ndp_solicited_node_ip(ip_addr, packet.target_proto_addr);
 
Index: uspace/srv/net/inetsrv/ndp.h
===================================================================
--- uspace/srv/net/inetsrv/ndp.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/ndp.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2013 Antonin Steinhauser
  * All rights reserved.
@@ -39,4 +40,5 @@
 
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include "inetsrv.h"
 #include "icmpv6_std.h"
@@ -52,9 +54,9 @@
 	ndp_opcode_t opcode;
 	/** Sender hardware address */
-	addr48_t sender_hw_addr;
+	eth_addr_t sender_hw_addr;
 	/** Sender protocol address */
 	addr128_t sender_proto_addr;
 	/** Target hardware address */
-	addr48_t target_hw_addr;
+	eth_addr_t target_hw_addr;
 	/** Target protocol address */
 	addr128_t target_proto_addr;
@@ -64,5 +66,5 @@
 
 extern errno_t ndp_received(inet_dgram_t *);
-extern errno_t ndp_translate(addr128_t, addr128_t, addr48_t *, inet_link_t *);
+extern errno_t ndp_translate(addr128_t, addr128_t, eth_addr_t *, inet_link_t *);
 
 #endif
Index: uspace/srv/net/inetsrv/ntrans.c
===================================================================
--- uspace/srv/net/inetsrv/ntrans.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/ntrans.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2013 Antonin Steinhauser
  * All rights reserved.
@@ -38,4 +39,5 @@
 #include <errno.h>
 #include <fibril_synch.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
 #include <stdlib.h>
@@ -73,5 +75,5 @@
  *
  */
-errno_t ntrans_add(addr128_t ip_addr, addr48_t *mac_addr)
+errno_t ntrans_add(addr128_t ip_addr, eth_addr_t *mac_addr)
 {
 	inet_ntrans_t *ntrans;
@@ -134,5 +136,5 @@
  *
  */
-errno_t ntrans_lookup(addr128_t ip_addr, addr48_t *mac_addr)
+errno_t ntrans_lookup(addr128_t ip_addr, eth_addr_t *mac_addr)
 {
 	fibril_mutex_lock(&ntrans_list_lock);
Index: uspace/srv/net/inetsrv/ntrans.h
===================================================================
--- uspace/srv/net/inetsrv/ntrans.h	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/ntrans.h	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2013 Antonin Steinhauser
  * All rights reserved.
@@ -38,6 +39,7 @@
 #define NTRANS_H_
 
+#include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
-#include <inet/addr.h>
 
 /** Address translation table element */
@@ -45,10 +47,10 @@
 	link_t ntrans_list;
 	addr128_t ip_addr;
-	addr48_t mac_addr;
+	eth_addr_t mac_addr;
 } inet_ntrans_t;
 
-extern errno_t ntrans_add(addr128_t, addr48_t *);
+extern errno_t ntrans_add(addr128_t, eth_addr_t *);
 extern errno_t ntrans_remove(addr128_t);
-extern errno_t ntrans_lookup(addr128_t, addr48_t *);
+extern errno_t ntrans_lookup(addr128_t, eth_addr_t *);
 extern errno_t ntrans_wait_timeout(usec_t);
 
Index: uspace/srv/net/inetsrv/pdu.c
===================================================================
--- uspace/srv/net/inetsrv/pdu.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/inetsrv/pdu.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -505,5 +505,5 @@
 
 	message->length = 1;
-	mac48_encode(&ndp->sender_hw_addr, message->mac);
+	eth_addr_encode(&ndp->sender_hw_addr, message->mac);
 
 	icmpv6_phdr_t phdr;
@@ -553,5 +553,5 @@
 
 	addr128_t_be2host(message->target_address, ndp->target_proto_addr);
-	mac48_decode(message->mac, &ndp->sender_hw_addr);
+	eth_addr_decode(message->mac, &ndp->sender_hw_addr);
 
 	return EOK;
Index: uspace/srv/net/loopip/loopip.c
===================================================================
--- uspace/srv/net/loopip/loopip.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/loopip/loopip.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2012 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -41,4 +41,5 @@
 #include <inet/iplink_srv.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <io/log.h>
 #include <loc.h>
@@ -55,5 +56,5 @@
 static errno_t loopip_send6(iplink_srv_t *srv, iplink_sdu6_t *sdu);
 static errno_t loopip_get_mtu(iplink_srv_t *srv, size_t *mtu);
-static errno_t loopip_get_mac48(iplink_srv_t *srv, addr48_t *mac);
+static errno_t loopip_get_mac48(iplink_srv_t *srv, eth_addr_t *mac);
 static errno_t loopip_addr_add(iplink_srv_t *srv, inet_addr_t *addr);
 static errno_t loopip_addr_remove(iplink_srv_t *srv, inet_addr_t *addr);
@@ -231,5 +232,5 @@
 }
 
-static errno_t loopip_get_mac48(iplink_srv_t *src, addr48_t *mac)
+static errno_t loopip_get_mac48(iplink_srv_t *src, eth_addr_t *mac)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "loopip_get_mac48()");
Index: uspace/srv/net/slip/slip.c
===================================================================
--- uspace/srv/net/slip/slip.c	(revision d5ed54b16268538f1e6b51cf33d27caaf3049c96)
+++ uspace/srv/net/slip/slip.c	(revision b4edc96c3455b41ece7d35a9752221342dec22f8)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2021 Jiri Svoboda
  * Copyright (c) 2013 Jakub Jermar
  * All rights reserved.
@@ -40,4 +41,5 @@
 #include <loc.h>
 #include <inet/addr.h>
+#include <inet/eth_addr.h>
 #include <inet/iplink_srv.h>
 #include <io/chardev.h>
@@ -62,5 +64,5 @@
 static errno_t slip_send6(iplink_srv_t *, iplink_sdu6_t *);
 static errno_t slip_get_mtu(iplink_srv_t *, size_t *);
-static errno_t slip_get_mac48(iplink_srv_t *, addr48_t *);
+static errno_t slip_get_mac48(iplink_srv_t *, eth_addr_t *);
 static errno_t slip_addr_add(iplink_srv_t *, inet_addr_t *);
 static errno_t slip_addr_remove(iplink_srv_t *, inet_addr_t *);
@@ -176,5 +178,5 @@
 }
 
-errno_t slip_get_mac48(iplink_srv_t *src, addr48_t *mac)
+errno_t slip_get_mac48(iplink_srv_t *src, eth_addr_t *mac)
 {
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "slip_get_mac48()");
