diff --git a/frontends/nss/ecm_nss_ipv4.c b/frontends/nss/ecm_nss_ipv4.c
index ad67997..0a97c26 100644
--- a/frontends/nss/ecm_nss_ipv4.c
+++ b/frontends/nss/ecm_nss_ipv4.c
@@ -1034,23 +1034,26 @@
 		}
 	}
 
-#ifdef ECM_MULTICAST_ENABLE
 	/*
 	 * Check for a multicast Destination address here.
 	 */
 	ECM_NIN4_ADDR_TO_IP_ADDR(ip_dest_addr, orig_tuple.dst.u3.ip);
-	if (ecm_ip_addr_is_multicast(ip_dest_addr)  && (skb->pkt_type == PACKET_MULTICAST)) {
-		DEBUG_TRACE("Multicast, Processing: %p\n", skb);
-		return ecm_nss_multicast_ipv4_connection_process(out_dev,
-				in_dev,
-				src_node_addr,
-				dest_node_addr,
-				can_accel, is_routed, skb,
-				&ip_hdr,
-				ct, sender,
-				&orig_tuple, &reply_tuple);
-	}
+	if (ecm_ip_addr_is_multicast(ip_dest_addr)) {
+#ifdef ECM_MULTICAST_ENABLE
+
+		if (unlikely(ecm_front_end_ipv4_mc_stopped)) {
+			DEBUG_TRACE("%p: Multicast disabled by ecm_front_end_ipv4_mc_stopped = %d\n", skb, ecm_front_end_ipv4_mc_stopped);
+			return NF_ACCEPT;
+		}
+
+		DEBUG_TRACE("%p: Multicast, Processing\n", skb);
+		return ecm_nss_multicast_ipv4_connection_process(out_dev, in_dev, src_node_addr, dest_node_addr,
+									can_accel, is_routed, skb, &ip_hdr, ct, sender,
+									&orig_tuple, &reply_tuple);
+#else
+		return NF_ACCEPT;
 #endif
+	}
 
 	/*
 	 * Work out if this packet involves NAT or not.
@@ -1433,18 +1436,6 @@
 		return NF_ACCEPT;
 	}
 
-#ifndef ECM_MULTICAST_ENABLE
-	if (skb->pkt_type == PACKET_MULTICAST) {
-		DEBUG_TRACE("Multicast, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#else
-	if ((skb->pkt_type == PACKET_MULTICAST) && unlikely(ecm_front_end_ipv4_mc_stopped)) {
-		DEBUG_TRACE("Multicast frontend stopped, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#endif
-
 #ifdef ECM_INTERFACE_PPP_ENABLE
 #ifndef ECM_INTERFACE_PPTP_ENABLE
 	/*
@@ -1581,18 +1572,6 @@
 		return NF_ACCEPT;
 	}
 
-#ifndef ECM_MULTICAST_ENABLE
-	if (skb->pkt_type == PACKET_MULTICAST) {
-		DEBUG_TRACE("Multicast, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#else
-	if ((skb->pkt_type == PACKET_MULTICAST) && unlikely(ecm_front_end_ipv4_mc_stopped)) {
-		DEBUG_TRACE("Multicast frontend stopped, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#endif
-
 #ifdef ECM_INTERFACE_PPP_ENABLE
 	/*
 	 * skip l2tp/pptp because we don't accelerate them
diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c
index 9685e6f..c6072c8 100644
--- a/frontends/nss/ecm_nss_ipv6.c
+++ b/frontends/nss/ecm_nss_ipv6.c
@@ -934,24 +934,27 @@
 		}
 	}
 
-#ifdef ECM_MULTICAST_ENABLE
 	/*
 	 * Check for a multicast Destination address here.
 	 */
 	ECM_NIN6_ADDR_TO_IP_ADDR(ip_dest_addr, orig_tuple.dst.u3.in6);
-	if (ecm_ip_addr_is_multicast(ip_dest_addr) && (skb->pkt_type == PACKET_MULTICAST)) {
+	if (ecm_ip_addr_is_multicast(ip_dest_addr)) {
 		DEBUG_TRACE("skb %p multicast daddr " ECM_IP_ADDR_OCTAL_FMT "\n", skb, ECM_IP_ADDR_TO_OCTAL(ip_dest_addr));
+#ifdef ECM_MULTICAST_ENABLE
 
-		return ecm_nss_multicast_ipv6_connection_process(out_dev,
-				in_dev,
-				src_node_addr,
-				dest_node_addr,
-				can_accel, is_routed, skb,
-				&ip_hdr,
-				ct, sender,
-				&orig_tuple, &reply_tuple);
-	}
+		if (unlikely(ecm_front_end_ipv6_mc_stopped)) {
+			DEBUG_TRACE("%p: Multicast disabled by ecm_front_end_ipv6_mc_stopped = %d\n", skb, ecm_front_end_ipv6_mc_stopped);
+			return NF_ACCEPT;
+		}
+
+		return ecm_nss_multicast_ipv6_connection_process(out_dev, in_dev, src_node_addr, dest_node_addr,
+								 can_accel, is_routed, skb, &ip_hdr, ct, sender,
+								 &orig_tuple, &reply_tuple);
+#else
+		return NF_ACCEPT;
 #endif
+	}
+
 	/*
 	 * Work out if this packet involves routing or not.
 	 */
@@ -1088,18 +1091,6 @@
 		return NF_ACCEPT;
 	}
 
-#ifndef ECM_MULTICAST_ENABLE
-	if (skb->pkt_type == PACKET_MULTICAST) {
-		DEBUG_TRACE("Multicast, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#else
-	if ((skb->pkt_type == PACKET_MULTICAST) && unlikely(ecm_front_end_ipv6_mc_stopped)) {
-		DEBUG_TRACE("Multicast frontend stopped, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#endif
-
 #ifdef ECM_INTERFACE_PPP_ENABLE
 #ifdef ECM_INTERFACE_L2TPV2_ENABLE
 	/*
@@ -1234,18 +1225,6 @@
 		return NF_ACCEPT;
 	}
 
-#ifndef ECM_MULTICAST_ENABLE
-	if (skb->pkt_type == PACKET_MULTICAST) {
-		DEBUG_TRACE("Multicast, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#else
-	if ((skb->pkt_type == PACKET_MULTICAST) && unlikely(ecm_front_end_ipv6_mc_stopped)) {
-		DEBUG_TRACE("Multicast frontend stopped, ignoring: %p\n", skb);
-		return NF_ACCEPT;
-	}
-#endif
-
 #ifdef ECM_INTERFACE_PPP_ENABLE
 	/*
 	 * skip l2tp/pptp because we don't accelerate them
