Bug 7725: AAP with prefix 0.0.0.0/0 not supported in ACL 46/51346/8
authorSomashekar Byrappa <somashekar.b@altencalsoftlabs.com>
Thu, 2 Feb 2017 14:21:30 +0000 (19:51 +0530)
committerSam Hague <shague@redhat.com>
Sun, 26 Feb 2017 19:44:22 +0000 (14:44 -0500)
commit05a85fe4c2d5a4b71c0cce3a0914450b9a3cbf03
treef31c9e397dd20f78d6250d0eac9ae521c753ef22
parent17070a3ee44a393a5375b854faa58b4bbfcc568c
Bug 7725:  AAP with prefix 0.0.0.0/0 not supported in ACL

+ Added a check. In case of 0.0.0.0/0 prefix, program flow with just "ip"
match skipping the ip-prefix (0.0.0.0/0).
+ This method is called to configure flows both in table 40 and 251.

+ Handled below issue:
  - Create VM1 & VM2 with AAP 0.0.0.0/0 and default SG.
  - Create VM3 with default SG without AAP.
  - Delete VM2. Observe that +new+trk flow configured for VM2's 0.0.0.0/0 AAP
    prefix gets deleted (related to remote SG) in 252 table even though VM1 still
    exists.
    Flow: cookie=0x6900000, duration=4737.343s, table=252, n_packets=0,
    n_bytes=0,
    priority=61010,ct_state=+new+trk,ip,metadata=0x10000000000/0x1fffff0000000000
    actions=ct(commit,zone=5000),resubmit(,220)

+ Earlier flow priority was generated/used based on SG rule UUID. The
  above case was not handled with this approach.  So, with this fix now
  every ct_state=+new+trk flow will have a unique flow priority within table.
  Flow priorities are generated based on flow ID.

+ For every switch, two ID pools (one each for ingress and egress) are
  maintained which increases the availability of flow priorities.

Change-Id: I646312e1324267913cbb2865a1a8164b23b40372
Signed-off-by: Somashekar Byrappa <somashekar.b@altencalsoftlabs.com>
Signed-off-by: Sam Hague <shague@redhat.com>
30 files changed:
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AclServiceManagerImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/LearnEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/LearnIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatefulEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatefulIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatelessEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatelessIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/TransparentEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/TransparentIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclNodeListener.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclDataUtil.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclServiceUtils.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/LearnEgressAclServiceImplTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/StatelessEgressAclServiceImplTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/StatelessIngressAclServiceImplTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListenerTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceStatefulTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceStatefulTestIPv6.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceStatelessTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestBase.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestBaseIPv6.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestModule.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsBase.xtend
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsStateful.xtend
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsStatefulIPv6.xtend
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjectsStateless.xtend
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/IdHelper.java [new file with mode: 0644]