Index: uspace/lib/c/generic/inet/addr.c
===================================================================
--- uspace/lib/c/generic/inet/addr.c	(revision 0aa70f423d0b7162d509dad82025424772c65808)
+++ uspace/lib/c/generic/inet/addr.c	(revision ea509069a307ceb20bd018f7dbfd999bad5aa21f)
@@ -52,4 +52,8 @@
 };
 
+static const addr48_t inet_addr48_solicited_node = {
+	0x33, 0x33, 0xff, 0, 0, 0
+};
+
 static const inet_addr_t inet_addr_any_addr = {
 	.family = AF_INET,
@@ -72,7 +76,24 @@
 }
 
+int addr48_compare(const addr48_t a, const addr48_t b)
+{
+	return memcmp(a, b, 6);
+}
+
 int addr128_compare(const addr128_t a, const addr128_t b)
 {
 	return memcmp(a, b, 16);
+}
+
+/** Compute solicited node MAC multicast address from target IPv6 address
+ *
+ * @param ip  Target IPv6 address
+ * @param mac Solicited MAC address to be assigned
+ *
+ */
+void addr48_solicited_node(const addr128_t ip, addr48_t mac)
+{
+	memcpy(mac, inet_addr48_solicited_node, 3);
+	memcpy(mac + 3, ip + 13, 3);
 }
 
