Class AbstractAclServiceImpl
- java.lang.Object
-
- org.opendaylight.netvirt.aclservice.AbstractAclServiceImpl
-
- All Implemented Interfaces:
AclServiceListener
- Direct Known Subclasses:
EgressAclServiceImpl
,IngressAclServiceImpl
public abstract class AbstractAclServiceImpl extends java.lang.Object implements AclServiceListener
-
-
Field Summary
Fields Modifier and Type Field Description protected AclDataUtil
aclDataUtil
protected AclInterfaceCache
aclInterfaceCache
protected AclServiceUtils
aclServiceUtils
protected java.lang.Class<? extends DirectionBase>
direction
protected java.lang.String
directionString
protected org.opendaylight.infrautils.jobcoordinator.JobCoordinator
jobCoordinator
protected org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager
mdsalManager
protected java.lang.Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase>
serviceMode
protected org.opendaylight.genius.infra.ManagedNewTransactionRunner
txRunner
-
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)
-
-
-
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
-
aclDataUtil
protected final AclDataUtil aclDataUtil
-
aclServiceUtils
protected final AclServiceUtils aclServiceUtils
-
jobCoordinator
protected final org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator
-
aclInterfaceCache
protected final AclInterfaceCache aclInterfaceCache
-
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 modedataBroker
- the data broker instance.mdsalManager
- the mdsal manager instance.aclDataUtil
- the acl data util.aclServiceUtils
- the acl service util.jobCoordinator
- the job coordinatoraclInterfaceCache
- the acl interface cache
-
-
Method Detail
-
applyAcl
public boolean applyAcl(AclInterface port)
- Specified by:
applyAcl
in interfaceAclServiceListener
-
bindAcl
public boolean bindAcl(AclInterface port)
- Specified by:
bindAcl
in interfaceAclServiceListener
-
unbindAcl
public boolean unbindAcl(AclInterface port)
- Specified by:
unbindAcl
in interfaceAclServiceListener
-
updateAcl
public boolean updateAcl(AclInterface portBefore, AclInterface portAfter)
- Specified by:
updateAcl
in interfaceAclServiceListener
-
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 entriesport
- acl interfaceaclUuidList
- the list of acl uuid to be appliedaddOrRemove
- 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 entriesport
- acl interfaceaclName
- the acl nameace
- rule to be programaddOrRemove
- 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)
-
removeAcl
public boolean removeAcl(AclInterface port)
- Specified by:
removeAcl
in interfaceAclServiceListener
-
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 interfaceAclServiceListener
-
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 interfaceAclServiceListener
-
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 interfaceAclServiceListener
-
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 entriesport
- the acl interfaceaction
- add/modify/remove actionaddOrRemove
- 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 entriesport
- the acl interfaceallowedAddresses
- the allowed addressesaddOrRemove
- 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 entriesport
- the acl interfaceallowedAddresses
- the allowed addressesaction
- add/modify/remove actionaddOrRemove
- 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 entriesport
- the Acl Interface portaddOrRemove
- 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 entriesport
- the Acl Interface portsubnetInfoList
- the port subnet info listaddOrRemove
- 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 dpIdtableId
- the tableIdflowId
- the flowIdpriority
- the priorityidleTimeOut
- the idle timeouthardTimeOut
- the hard timeoutcookie
- the cookiematches
- the list of matches to be writtedinstructions
- 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 entriesdpId
- the dp idallowedAddresses
- the allowed addresseslportTag
- the lport tagportId
- the portIdaction
- the actionwrite
- 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 entriesdpId
- the dpIdaaps
- the allowed address pairslportTag
- the lport tagportId
- the portIdaddOrRemove
- 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 entriesdpId
- the dpIdlportTag
- the lport tagaddOrRemove
- 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 entriesdpId
- the dpIdlportTag
- the lport tagaddOrRemove
- 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 entriesdpId
- the dp idlportTag
- the lport tagaddOrRemove
- 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 entriesdpId
- the dp idlportTag
- the lport tagportId
- the port idaddOrRemove
- 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 entriesdpId
- the dp idlportTag
- the lport tagportId
- the port idmatchEtherType
- the match ether typeaddOrRemove
- 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 entriesdpId
- the dp idlportTag
- the lport tagaddOrRemove
- 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()
-
-