diff --git a/ofdpa/flows.py b/ofdpa/flows.py
index 83fd1d9..9f02081 100755
--- a/ofdpa/flows.py
+++ b/ofdpa/flows.py
@@ -25,6 +25,7 @@
 import oftest.base_tests as base_tests
 import ofp
 import time
+from oftest.oft12.testutils import delete_all_flows_one_table
 from oftest.testutils import *
 from accton_util import *
 from utils import *
@@ -1311,6 +1312,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 port_to_intf_src_mac_str,
                 Groups) = fill_mcast_pipeline_L3toL3(
@@ -1380,6 +1382,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 Groups) = fill_mcast_pipeline_L3toL2(
                 self.controller,
@@ -1445,6 +1448,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 Groups) = fill_mcast_pipeline_L3toL2(
                 self.controller,
@@ -1513,6 +1517,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 Groups) = fill_mcast_pipeline_L3toL2(
                 self.controller,
@@ -1579,6 +1584,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 Groups) = fill_mcast_pipeline_L3toL2(
                 self.controller,
@@ -1648,6 +1654,7 @@
                 port_to_out_vlan,
                 port_to_src_mac_str,
                 port_to_dst_mac_str,
+                port_to_src_ip,
                 port_to_src_ip_str,
                 Groups) = fill_mcast_pipeline_L3toL2(
                 self.controller,
@@ -1697,6 +1704,107 @@
             delete_groups( self.controller, Groups )
             delete_all_groups( self.controller )
 
+class L3McastTrafficThenDrop( base_tests.SimpleDataPlane ):
+    """
+    Mcast routing, in this test case the traffic is untagged.
+    4094 is used as internal vlan_id. We first install aa full pipeline,
+    test that it forwards properly then remove all rules on table 40 and
+    mcast groups and ensure traffic is dropped. Blackhole of mcast traffic
+    if no tree is programmed on the switch.
+    """
+    def runTest( self ):
+        Groups = Queue.LifoQueue( )
+        try:
+            if len( config[ "port_map" ] ) < 2:
+                logging.info( "Port count less than 2, can't run this case" )
+                assert (False)
+                return
+            ports      = config[ "port_map" ].keys( )
+            dst_ip_str = "224.0.0.1"
+            (
+                port_to_in_vlan,
+                port_to_out_vlan,
+                port_to_src_mac_str,
+                port_to_dst_mac_str,
+                port_to_src_ip,
+                port_to_src_ip_str,
+                Groups) = fill_mcast_pipeline_L3toL2(
+                self.controller,
+                logging,
+                ports,
+                is_ingress_tagged   = False,
+                is_egress_tagged    = False,
+                is_vlan_translated  = False,
+                is_max_vlan         = True
+                )
+
+            for in_port in ports:
+
+                parsed_pkt = simple_udp_packet(
+                    pktlen  = 96,
+                    eth_dst = port_to_dst_mac_str[in_port],
+                    eth_src = port_to_src_mac_str[in_port],
+                    ip_ttl  = 64,
+                    ip_src  = port_to_src_ip_str[in_port],
+                    ip_dst  = dst_ip_str
+                    )
+                pkt = str( parsed_pkt )
+                self.dataplane.send( in_port, pkt )
+
+                for out_port in ports:
+
+                    parsed_pkt = simple_udp_packet(
+                        pktlen  = 96,
+                        eth_dst = port_to_dst_mac_str[in_port],
+                        eth_src = port_to_src_mac_str[in_port],
+                        ip_ttl  = 64,
+                        ip_src  = port_to_src_ip_str[in_port],
+                        ip_dst  = dst_ip_str
+                        )
+                    pkt = str( parsed_pkt )
+                    if out_port == in_port:
+                        verify_no_packet( self, pkt, in_port )
+                        continue
+                    verify_packet( self, pkt, out_port )
+                    verify_no_other_packets( self )
+
+            delete_all_flows_one_table(ctrl=self.controller, logger=logging, table_id=40);
+            delete_all_groups(self.controller)
+
+            for in_port in ports:
+
+                parsed_pkt = simple_udp_packet(
+                    pktlen  = 96,
+                    eth_dst = port_to_dst_mac_str[in_port],
+                    eth_src = port_to_src_mac_str[in_port],
+                    ip_ttl  = 64,
+                    ip_src  = port_to_src_ip_str[in_port],
+                    ip_dst  = dst_ip_str
+                    )
+                pkt = str( parsed_pkt )
+                self.dataplane.send( in_port, pkt )
+
+                for out_port in ports:
+
+                    parsed_pkt = simple_udp_packet(
+                        pktlen  = 96,
+                        eth_dst = port_to_dst_mac_str[in_port],
+                        eth_src = port_to_src_mac_str[in_port],
+                        ip_ttl  = 64,
+                        ip_src  = port_to_src_ip_str[in_port],
+                        ip_dst  = dst_ip_str
+                        )
+                    pkt = str( parsed_pkt )
+                    if out_port == in_port:
+                        verify_no_packet( self, pkt, in_port )
+                        continue
+                    verify_no_packet( self, pkt, out_port )
+                    verify_no_other_packets( self )
+        finally:
+            delete_all_flows( self.controller )
+            delete_groups( self.controller, Groups )
+            delete_all_groups( self.controller )
+
 @disabled
 class _MplsFwd( base_tests.SimpleDataPlane ):
     """ Verify basic MPLS forwarding: Label switch router  """
diff --git a/ofdpa/utils.py b/ofdpa/utils.py
index c5cf95f..ce45065 100644
--- a/ofdpa/utils.py
+++ b/ofdpa/utils.py
@@ -205,6 +205,7 @@
         port_to_out_vlan,
         port_to_src_mac_str,
         port_to_dst_mac_str,
+        port_to_src_ip,
         port_to_src_ip_str,
         Groups
         )
@@ -302,6 +303,7 @@
         port_to_out_vlan,
         port_to_src_mac_str,
         port_to_dst_mac_str,
+        port_to_src_ip,
         port_to_src_ip_str,
         port_to_intf_src_mac_str,
         Groups
