Class AbstractAclServiceImpl

    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractAclServiceImpl​(java.lang.Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase> serviceMode, org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager, AclDataUtil aclDataUtil, AclServiceUtils aclServiceUtils, org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator, AclInterfaceCache aclInterfaceCache)
      Initialize the member variables.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addFlowEntryToList​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, short tableId, java.lang.String flowId, int priority, int idleTimeOut, int hardTimeOut, org.opendaylight.yangtools.yang.common.Uint64 cookie, java.util.List<? extends org.opendaylight.genius.mdsalutil.MatchInfoBase> matches, java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> instructions, int addOrRemove)
      Add Flow to list.
      boolean applyAce​(AclInterface port, java.lang.String aclName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace)  
      boolean applyAcl​(AclInterface port)  
      boolean bindAcl​(AclInterface port)  
      abstract void bindService​(AclInterface aclInterface)
      Bind service.
      protected java.util.Set<java.math.BigInteger> collectDpns​(@Nullable java.util.Map<java.lang.String,​java.util.Set<AclInterface>> mapAclWithPortSet)  
      protected abstract short getAclCommitterTable()  
      protected abstract short getAclConntrackSenderTable()  
      protected abstract short getAclFilterCumDispatcherTable()  
      protected abstract short getAclForExistingTrafficTable()  
      protected abstract short getAclRemoteAclTable()  
      protected abstract short getAclRuleBasedFilterTable()  
      protected java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> getDispatcherTableResubmitInstructions()  
      protected java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> getDispatcherTableResubmitInstructions​(java.util.List<org.opendaylight.genius.mdsalutil.ActionInfo> actionsInfos)
      Gets the dispatcher table resubmit instructions based on ingress/egress service mode w.r.t switch.
      protected @Nullable java.lang.Long getElanIdFromAclInterface​(java.lang.String elanInterfaceName)  
      protected java.util.SortedSet<java.lang.Integer> getRemoteAclTags​(AclInterface port)  
      protected void handleRemoteAclUpdate​(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclBefore, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclAfter, java.util.Collection<AclInterface> portsBefore)  
      protected abstract boolean isValidDirection​(java.lang.Class<? extends DirectionBase> direction)  
      protected abstract void processDhcpServiceUpdate​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.util.List<AllowedAddressPairs> allowedAddresses, int addOrRemove)
      Programs DHCP service flows.
      protected void programAceRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.lang.String aclName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace, int addOrRemove)
      Programs the ace specific rule.
      protected void programAceSpecificFlows​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.lang.String aclName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace, @Nullable java.util.Map<java.lang.String,​java.util.List<org.opendaylight.genius.mdsalutil.MatchInfoBase>> flowMap, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid remoteAclId, int addOrRemove)  
      protected void programAclCommitRuleForConntrack​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, java.lang.String portId, org.opendaylight.genius.mdsalutil.matches.MatchEthernetType matchEtherType, int addOrRemove)
      Program acl commit rule for conntrack.
      protected void programAclCommitRuleForNonConntrack​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, int addOrRemove)
      Program acl commit rule for non conntrack.
      protected void programAclCommitRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, java.lang.String portId, int addOrRemove)
      Program acl commit rules.
      protected void programAclDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, int addOrRemove)  
      protected void programAclPortSpecificFixedRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, java.util.List<AllowedAddressPairs> allowedAddresses, int lportTag, java.lang.String portId, AclServiceManager.Action action, int write)
      Programs the port specific fixed rules.
      protected void programAclRuleMissDropRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, int addOrRemove)
      Program ACL rule miss drop rule for a port.
      protected boolean programAclRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.util.List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid> aclUuidList, int addOrRemove)
      Programs the acl custom rules.
      protected abstract void programAntiSpoofingRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.util.List<AllowedAddressPairs> allowedAddresses, AclServiceManager.Action action, int addOrRemove)
      Programs the anti-spoofing rules.
      protected abstract void programBroadcastRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, AclServiceManager.Action action, int addOrRemove)
      Programs broadcast rules.
      protected void programConntrackInvalidDropRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, int addOrRemove)
      Adds the rule to drop the conntrack invalid packets .
      protected void programConntrackRecircRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, java.lang.String portId, org.opendaylight.genius.mdsalutil.matches.MatchEthernetType matchEtherType, int addOrRemove)  
      protected void programConntrackRecircRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, java.util.List<AllowedAddressPairs> aaps, int lportTag, java.lang.String portId, int addOrRemove)
      Adds the rule to send the packet to the netfilter to check whether it is a known packet.
      protected abstract void programDhcpService​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, AclServiceManager.Action action, int addOrRemove)
      Programs DHCP Service flows.
      protected void programFirstRemoteAclEntryInDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.lang.Integer firstRemoteAclTag, int addOrRemove)  
      protected void programFlows​(java.lang.String jobName, java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, int addOrRemove)  
      protected void programForAceNotHavingRemoteAclId​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.lang.String aclName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace, @Nullable java.util.Map<java.lang.String,​java.util.List<org.opendaylight.genius.mdsalutil.MatchInfoBase>> flowMap, int addOrRemove)  
      protected abstract void programGotoClassifierTableRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, java.util.List<AllowedAddressPairs> aaps, int lportTag, int addOrRemove)  
      protected abstract void programIcmpv6RARule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.util.List<SubnetInfo> subnets, int addOrRemove)  
      protected void programLastRemoteAclEntryInDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.lang.Integer lastRemoteAclTag, int addOrRemove)  
      protected void programPortSpecificDropRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, int lportTag, int addOrRemove)
      Adds the rules to drop the unknown/invalid packets .
      protected abstract void programRemoteAclTableFlow​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, org.opendaylight.yangtools.yang.common.Uint64 dpId, java.lang.Integer aclTag, AllowedAddressPairs aap, int addOrRemove)  
      protected abstract void programSubnetBroadcastRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries, AclInterface port, java.util.List<SubnetInfo> subnetInfoList, int addOrRemove)
      Programs broadcast rules.
      boolean removeAce​(AclInterface port, java.lang.String aclName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace)  
      boolean removeAcl​(AclInterface port)  
      boolean unbindAcl​(AclInterface port)  
      protected abstract void unbindService​(AclInterface aclInterface)
      Unbind service.
      boolean updateAcl​(AclInterface portBefore, AclInterface portAfter)  
      void updateRemoteAcl​(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclBefore, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclAfter, java.util.Collection<AclInterface> portsBefore)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • mdsalManager

        protected final org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager
      • txRunner

        protected final org.opendaylight.genius.infra.ManagedNewTransactionRunner txRunner
      • serviceMode

        protected final java.lang.Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase> serviceMode
      • jobCoordinator

        protected final org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator
      • direction

        protected final java.lang.Class<? extends DirectionBase> direction
      • directionString

        protected final java.lang.String directionString
    • Constructor Detail

      • AbstractAclServiceImpl

        public AbstractAclServiceImpl​(java.lang.Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase> serviceMode,
                                      org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
                                      org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager,
                                      AclDataUtil aclDataUtil,
                                      AclServiceUtils aclServiceUtils,
                                      org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator,
                                      AclInterfaceCache aclInterfaceCache)
        Initialize the member variables.
        Parameters:
        serviceMode - the service mode
        dataBroker - the data broker instance.
        mdsalManager - the mdsal manager instance.
        aclDataUtil - the acl data util.
        aclServiceUtils - the acl service util.
        jobCoordinator - the job coordinator
        aclInterfaceCache - the acl interface cache
    • Method Detail

      • getRemoteAclTags

        protected java.util.SortedSet<java.lang.Integer> getRemoteAclTags​(AclInterface port)
      • programAclDispatcherTable

        protected void programAclDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                 AclInterface port,
                                                 int addOrRemove)
      • programFirstRemoteAclEntryInDispatcherTable

        protected void programFirstRemoteAclEntryInDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                                   AclInterface port,
                                                                   java.lang.Integer firstRemoteAclTag,
                                                                   int addOrRemove)
      • programLastRemoteAclEntryInDispatcherTable

        protected void programLastRemoteAclEntryInDispatcherTable​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                                  AclInterface port,
                                                                  java.lang.Integer lastRemoteAclTag,
                                                                  int addOrRemove)
      • programAclRules

        protected boolean programAclRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                          AclInterface port,
                                          java.util.List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid> aclUuidList,
                                          int addOrRemove)
        Programs the acl custom rules.
        Parameters:
        flowEntries - the flow entries
        port - acl interface
        aclUuidList - the list of acl uuid to be applied
        addOrRemove - whether to delete or add flow
        Returns:
        program succeeded
      • programAceRule

        protected void programAceRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                      AclInterface port,
                                      java.lang.String aclName,
                                      org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace,
                                      int addOrRemove)
        Programs the ace specific rule.
        Parameters:
        flowEntries - flow entries
        port - acl interface
        aclName - the acl name
        ace - rule to be program
        addOrRemove - whether to delete or add flow
      • programForAceNotHavingRemoteAclId

        protected void programForAceNotHavingRemoteAclId​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                         AclInterface port,
                                                         java.lang.String aclName,
                                                         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace,
                                                         @Nullable java.util.Map<java.lang.String,​java.util.List<org.opendaylight.genius.mdsalutil.MatchInfoBase>> flowMap,
                                                         int addOrRemove)
      • programAceSpecificFlows

        protected void programAceSpecificFlows​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                               AclInterface port,
                                               java.lang.String aclName,
                                               org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace,
                                               @Nullable java.util.Map<java.lang.String,​java.util.List<org.opendaylight.genius.mdsalutil.MatchInfoBase>> flowMap,
                                               org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid remoteAclId,
                                               int addOrRemove)
      • applyAce

        public boolean applyAce​(AclInterface port,
                                java.lang.String aclName,
                                org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace)
        Specified by:
        applyAce in interface AclServiceListener
      • removeAce

        public boolean removeAce​(AclInterface port,
                                 java.lang.String aclName,
                                 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.Ace ace)
        Specified by:
        removeAce in interface AclServiceListener
      • updateRemoteAcl

        public void updateRemoteAcl​(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclBefore,
                                    org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclAfter,
                                    java.util.Collection<AclInterface> portsBefore)
        Specified by:
        updateRemoteAcl in interface AclServiceListener
      • bindService

        public abstract void bindService​(AclInterface aclInterface)
        Bind service.
        Parameters:
        aclInterface - the acl interface
      • unbindService

        protected abstract void unbindService​(AclInterface aclInterface)
        Unbind service.
        Parameters:
        aclInterface - the acl interface
      • programDhcpService

        protected abstract void programDhcpService​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                   AclInterface port,
                                                   AclServiceManager.Action action,
                                                   int addOrRemove)
        Programs DHCP Service flows.
        Parameters:
        flowEntries - the flow entries
        port - the acl interface
        action - add/modify/remove action
        addOrRemove - addorRemove
      • processDhcpServiceUpdate

        protected abstract void processDhcpServiceUpdate​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                         AclInterface port,
                                                         java.util.List<AllowedAddressPairs> allowedAddresses,
                                                         int addOrRemove)
        Programs DHCP service flows.
        Parameters:
        flowEntries - the flow entries
        port - the acl interface
        allowedAddresses - the allowed addresses
        addOrRemove - addorRemove
      • programAntiSpoofingRules

        protected abstract void programAntiSpoofingRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                         AclInterface port,
                                                         java.util.List<AllowedAddressPairs> allowedAddresses,
                                                         AclServiceManager.Action action,
                                                         int addOrRemove)
        Programs the anti-spoofing rules.
        Parameters:
        flowEntries - the flow entries
        port - the acl interface
        allowedAddresses - the allowed addresses
        action - add/modify/remove action
        addOrRemove - addorRemove
      • programBroadcastRules

        protected abstract void programBroadcastRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                      AclInterface port,
                                                      AclServiceManager.Action action,
                                                      int addOrRemove)
        Programs broadcast rules.
        Parameters:
        flowEntries - the flow entries
        port - the Acl Interface port
        addOrRemove - whether to delete or add flow
      • programSubnetBroadcastRules

        protected abstract void programSubnetBroadcastRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                            AclInterface port,
                                                            java.util.List<SubnetInfo> subnetInfoList,
                                                            int addOrRemove)
        Programs broadcast rules.
        Parameters:
        flowEntries - the flow entries
        port - the Acl Interface port
        subnetInfoList - the port subnet info list
        addOrRemove - whether to delete or add flow
      • programIcmpv6RARule

        protected abstract void programIcmpv6RARule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                    AclInterface port,
                                                    java.util.List<SubnetInfo> subnets,
                                                    int addOrRemove)
      • addFlowEntryToList

        protected void addFlowEntryToList​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                          org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                          short tableId,
                                          java.lang.String flowId,
                                          int priority,
                                          int idleTimeOut,
                                          int hardTimeOut,
                                          org.opendaylight.yangtools.yang.common.Uint64 cookie,
                                          java.util.List<? extends org.opendaylight.genius.mdsalutil.MatchInfoBase> matches,
                                          java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> instructions,
                                          int addOrRemove)
        Add Flow to list.
        Parameters:
        dpId - the dpId
        tableId - the tableId
        flowId - the flowId
        priority - the priority
        idleTimeOut - the idle timeout
        hardTimeOut - the hard timeout
        cookie - the cookie
        matches - the list of matches to be writted
        instructions - the list of instruction to be written.
        addOrRemove - add or remove the entries.
      • programFlows

        protected void programFlows​(java.lang.String jobName,
                                    java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                    int addOrRemove)
      • getDispatcherTableResubmitInstructions

        protected java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> getDispatcherTableResubmitInstructions()
      • getDispatcherTableResubmitInstructions

        protected java.util.List<org.opendaylight.genius.mdsalutil.InstructionInfo> getDispatcherTableResubmitInstructions​(java.util.List<org.opendaylight.genius.mdsalutil.ActionInfo> actionsInfos)
        Gets the dispatcher table resubmit instructions based on ingress/egress service mode w.r.t switch.
        Parameters:
        actionsInfos - the actions infos
        Returns:
        the instructions for dispatcher table resubmit
      • handleRemoteAclUpdate

        protected void handleRemoteAclUpdate​(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclBefore,
                                             org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl aclAfter,
                                             java.util.Collection<AclInterface> portsBefore)
      • programRemoteAclTableFlow

        protected abstract void programRemoteAclTableFlow​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                          org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                          java.lang.Integer aclTag,
                                                          AllowedAddressPairs aap,
                                                          int addOrRemove)
      • collectDpns

        protected java.util.Set<java.math.BigInteger> collectDpns​(@Nullable java.util.Map<java.lang.String,​java.util.Set<AclInterface>> mapAclWithPortSet)
      • programAclPortSpecificFixedRules

        protected void programAclPortSpecificFixedRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                        org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                        java.util.List<AllowedAddressPairs> allowedAddresses,
                                                        int lportTag,
                                                        java.lang.String portId,
                                                        AclServiceManager.Action action,
                                                        int write)
        Programs the port specific fixed rules.
        Parameters:
        flowEntries - the flow entries
        dpId - the dp id
        allowedAddresses - the allowed addresses
        lportTag - the lport tag
        portId - the portId
        action - the action
        write - whether to add or remove the flow.
      • programGotoClassifierTableRules

        protected abstract void programGotoClassifierTableRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                                org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                                java.util.List<AllowedAddressPairs> aaps,
                                                                int lportTag,
                                                                int addOrRemove)
      • programConntrackRecircRules

        protected void programConntrackRecircRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                   org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                   java.util.List<AllowedAddressPairs> aaps,
                                                   int lportTag,
                                                   java.lang.String portId,
                                                   int addOrRemove)
        Adds the rule to send the packet to the netfilter to check whether it is a known packet.
        Parameters:
        flowEntries - the flow entries
        dpId - the dpId
        aaps - the allowed address pairs
        lportTag - the lport tag
        portId - the portId
        addOrRemove - whether to add or remove the flow
      • programConntrackRecircRule

        protected void programConntrackRecircRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                  org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                  int lportTag,
                                                  java.lang.String portId,
                                                  org.opendaylight.genius.mdsalutil.matches.MatchEthernetType matchEtherType,
                                                  int addOrRemove)
      • programPortSpecificDropRules

        protected void programPortSpecificDropRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                    org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                    int lportTag,
                                                    int addOrRemove)
        Adds the rules to drop the unknown/invalid packets .
        Parameters:
        flowEntries - the flow entries
        dpId - the dpId
        lportTag - the lport tag
        addOrRemove - whether to add or remove the flow
      • programConntrackInvalidDropRule

        protected void programConntrackInvalidDropRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                       org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                       int lportTag,
                                                       int addOrRemove)
        Adds the rule to drop the conntrack invalid packets .
        Parameters:
        flowEntries - the flow entries
        dpId - the dpId
        lportTag - the lport tag
        addOrRemove - whether to add or remove the flow
      • programAclRuleMissDropRule

        protected void programAclRuleMissDropRule​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                  org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                  int lportTag,
                                                  int addOrRemove)
        Program ACL rule miss drop rule for a port.
        Parameters:
        flowEntries - the flow entries
        dpId - the dp id
        lportTag - the lport tag
        addOrRemove - the add or remove
      • programAclCommitRules

        protected void programAclCommitRules​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                             org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                             int lportTag,
                                             java.lang.String portId,
                                             int addOrRemove)
        Program acl commit rules.
        Parameters:
        flowEntries - the flow entries
        dpId - the dp id
        lportTag - the lport tag
        portId - the port id
        addOrRemove - the add or remove
      • programAclCommitRuleForConntrack

        protected void programAclCommitRuleForConntrack​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                        org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                        int lportTag,
                                                        java.lang.String portId,
                                                        org.opendaylight.genius.mdsalutil.matches.MatchEthernetType matchEtherType,
                                                        int addOrRemove)
        Program acl commit rule for conntrack.
        Parameters:
        flowEntries - the flow entries
        dpId - the dp id
        lportTag - the lport tag
        portId - the port id
        matchEtherType - the match ether type
        addOrRemove - the add or remove
      • programAclCommitRuleForNonConntrack

        protected void programAclCommitRuleForNonConntrack​(java.util.List<org.opendaylight.genius.mdsalutil.FlowEntity> flowEntries,
                                                           org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                           int lportTag,
                                                           int addOrRemove)
        Program acl commit rule for non conntrack.
        Parameters:
        flowEntries - the flow entries
        dpId - the dp id
        lportTag - the lport tag
        addOrRemove - the add or remove
      • getElanIdFromAclInterface

        protected @Nullable java.lang.Long getElanIdFromAclInterface​(java.lang.String elanInterfaceName)
      • isValidDirection

        protected abstract boolean isValidDirection​(java.lang.Class<? extends DirectionBase> direction)
      • getAclConntrackSenderTable

        protected abstract short getAclConntrackSenderTable()
      • getAclForExistingTrafficTable

        protected abstract short getAclForExistingTrafficTable()
      • getAclFilterCumDispatcherTable

        protected abstract short getAclFilterCumDispatcherTable()
      • getAclRuleBasedFilterTable

        protected abstract short getAclRuleBasedFilterTable()
      • getAclRemoteAclTable

        protected abstract short getAclRemoteAclTable()
      • getAclCommitterTable

        protected abstract short getAclCommitterTable()