Index: uspace/srv/net/ethip/pdu.c
===================================================================
--- uspace/srv/net/ethip/pdu.c	(revision 30c5d1347a6239321b40dbb4731798741ddb65f7)
+++ uspace/srv/net/ethip/pdu.c	(revision 9ae6fc7a2cb94ce23c7fb1b804b5ecb7de67be98)
@@ -46,6 +46,4 @@
 #include "pdu.h"
 
-#define MAC48_BYTES 6
-
 /** Encode Ethernet PDU. */
 int eth_pdu_encode(eth_frame_t *frame, void **rdata, size_t *rsize)
Index: uspace/srv/net/inetsrv/inetsrv.c
===================================================================
--- uspace/srv/net/inetsrv/inetsrv.c	(revision 30c5d1347a6239321b40dbb4731798741ddb65f7)
+++ uspace/srv/net/inetsrv/inetsrv.c	(revision 9ae6fc7a2cb94ce23c7fb1b804b5ecb7de67be98)
@@ -62,4 +62,15 @@
 #define NAME "inetsrv"
 
+static inet_naddr_t solicited_node_mask = {
+	.family = AF_INET6,
+	.addr6 = {0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01, 0xff, 0, 0, 0},
+	.prefix = 104
+};
+
+static inet_addr_t multicast_all_nodes = {
+	.family = AF_INET,
+	.addr6 = {0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01}
+};
+
 static void inet_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg);
 
@@ -514,5 +525,7 @@
 
 	addr = inet_addrobj_find(&packet->dest, iaf_addr);
-	if (addr != NULL) {
+	if ((addr != NULL) ||
+	    (inet_naddr_compare_mask(&solicited_node_mask, &packet->dest)) ||
+	    (inet_addr_compare(&multicast_all_nodes, &packet->dest))) {
 		/* Destined for one of the local addresses */
 
