Bug 7725: AAP with prefix 0.0.0.0/0 not supported in ACL
[netvirt.git] / vpnservice / aclservice / impl / src / main / java / org / opendaylight / netvirt / aclservice / listeners / AclNodeListener.java
index bd9e057472ceeeb868d897d2c64bafdd6950baae..9fb51088ed99df3c30a741146c8f2982b39da101 100644 (file)
@@ -35,6 +35,7 @@ import org.opendaylight.genius.mdsalutil.matches.MatchEthernetType;
 import org.opendaylight.genius.mdsalutil.matches.MatchIpProtocol;
 import org.opendaylight.genius.mdsalutil.matches.MatchTcpFlags;
 import org.opendaylight.netvirt.aclservice.utils.AclConstants;
+import org.opendaylight.netvirt.aclservice.utils.AclServiceUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
@@ -58,16 +59,19 @@ public class AclNodeListener extends AsyncDataTreeChangeListenerBase<FlowCapable
     private final IMdsalApiManager mdsalManager;
     private final AclserviceConfig config;
     private final DataBroker dataBroker;
+    private final AclServiceUtils aclServiceUtils;
 
     private SecurityGroupMode securityGroupMode = null;
 
     @Inject
-    public AclNodeListener(final IMdsalApiManager mdsalManager, DataBroker dataBroker, AclserviceConfig config) {
+    public AclNodeListener(final IMdsalApiManager mdsalManager, DataBroker dataBroker, AclserviceConfig config,
+            AclServiceUtils aclServiceUtils) {
         super(FlowCapableNode.class, AclNodeListener.class);
 
         this.mdsalManager = mdsalManager;
         this.dataBroker = dataBroker;
         this.config = config;
+        this.aclServiceUtils = aclServiceUtils;
     }
 
     @Override
@@ -88,7 +92,9 @@ public class AclNodeListener extends AsyncDataTreeChangeListenerBase<FlowCapable
 
     @Override
     protected void remove(InstanceIdentifier<FlowCapableNode> key, FlowCapableNode dataObjectModification) {
-        // do nothing
+        NodeKey nodeKey = key.firstKeyOf(Node.class);
+        BigInteger dpnId = MDSALUtil.getDpnIdFromNodeName(nodeKey.getId());
+        this.aclServiceUtils.deleteAclIdPools(dpnId);
     }
 
     @Override
@@ -103,6 +109,8 @@ public class AclNodeListener extends AsyncDataTreeChangeListenerBase<FlowCapable
         NodeKey nodeKey = key.firstKeyOf(Node.class);
         BigInteger dpnId = MDSALUtil.getDpnIdFromNodeName(nodeKey.getId());
         createTableDefaultEntries(dpnId);
+
+        this.aclServiceUtils.createAclIdPools(dpnId);
     }
 
     /**