diff --git a/package/gluon-ebtables-limit-arp/src/gluon-arp-limiter.c b/package/gluon-ebtables-limit-arp/src/gluon-arp-limiter.c
index af4acf48dbf3d4e1ec2b3a053f91b3a20803a195..cbb6faf21fcc76bc841e5600596594bfba4da0d9 100644
--- a/package/gluon-ebtables-limit-arp/src/gluon-arp-limiter.c
+++ b/package/gluon-ebtables-limit-arp/src/gluon-arp-limiter.c
@@ -248,6 +248,9 @@ static void ebt_tl_update(void)
 			break;
 		}
 
+		if (mac_is_multicast(&mac))
+			continue;
+
 		ebt_add_mac(&mac);
 	}
 
diff --git a/package/gluon-ebtables-limit-arp/src/mac.h b/package/gluon-ebtables-limit-arp/src/mac.h
index e61917364813e70c28bc04aa622d028ba7958206..11567ade6060c4fc8a36e2b3302f617f774b27c2 100644
--- a/package/gluon-ebtables-limit-arp/src/mac.h
+++ b/package/gluon-ebtables-limit-arp/src/mac.h
@@ -16,4 +16,9 @@ struct mac_addr {
 int mac_aton(const char *cp, struct  mac_addr *mac);
 char *mac_ntoa(struct mac_addr *mac);
 
+static inline int mac_is_multicast(struct mac_addr *addr)
+{
+	return addr->storage[0] & 0x01;
+}
+
 #endif /* _MAC_H_ */