Avoid Non-VPN Interface Adj IP Learning 93/76293/4
authorKarthikeyan Krishnan <karthikeyangceb007@gmail.com>
Thu, 20 Sep 2018 05:08:11 +0000 (10:38 +0530)
committerSam Hague <shague@redhat.com>
Tue, 2 Oct 2018 01:06:49 +0000 (01:06 +0000)
This review is addresing the review comments
from the existing merged review[0]

[0]https://git.opendaylight.org/gerrit/#/c/75226/

Issue: NETVIRT-1171

Change-Id: I60bbcefd25b863305b28d81f0843ce29c655399f
Signed-off-by: Karthikeyan Krishnan <karthikeyangceb007@gmail.com>
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/iplearn/AbstractIpLearnNotificationHandler.java
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/iplearn/ipv4/ArpNotificationHandler.java

index a5a563edbabedde280880c0a9dbfb93078596d9c..e2289d57acf51daee6be5a7c22b91557842560a0 100644 (file)
@@ -27,13 +27,11 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.LearntVpnVipToPortEventAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.adjacency.list.Adjacency;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.learnt.vpn.vip.to.port.data.LearntVpnVipToPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.config.rev161130.VpnConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
 import org.slf4j.Logger;
@@ -74,7 +72,7 @@ public abstract class AbstractIpLearnNotificationHandler {
             IpAddress targetIP, BigInteger metadata) {
         List<Adjacency> adjacencies = vpnUtil.getAdjacenciesForVpnInterfaceFromConfig(srcInterface);
         IpVersionChoice srcIpVersion = vpnUtil.getIpVersionFromString(srcIP.stringValue());
-        Uuid srcIpSubnetId = null;
+        boolean isSrcIpVersionPartOfVpn = false;
         if (adjacencies != null) {
             for (Adjacency adj : adjacencies) {
                 IpPrefix ipPrefix = IpPrefixBuilder.getDefaultInstance(adj.getIpAddress());
@@ -84,18 +82,22 @@ public abstract class AbstractIpLearnNotificationHandler {
                 }
                 IpVersionChoice currentAdjIpVersion = vpnUtil.getIpVersionFromString(adj.getIpAddress());
                 if (srcIpVersion.isIpVersionChosen(currentAdjIpVersion)) {
-                    srcIpSubnetId = adj.getSubnetId();
+                    isSrcIpVersionPartOfVpn = true;
                 }
             }
+            //If srcIP version is not part of the srcInterface VPN Adjacency, ignore IpLearning process
+            if (!isSrcIpVersionPartOfVpn) {
+                return;
+            }
         }
 
         LOG.trace("ARP/NA Notification Response Received from interface {} and IP {} having MAC {}, learning MAC",
                 srcInterface, srcIP.stringValue(), srcMac.getValue());
-        processIpLearning(srcInterface, srcIP, srcMac, metadata, targetIP, srcIpSubnetId);
+        processIpLearning(srcInterface, srcIP, srcMac, metadata, targetIP);
     }
 
     protected void processIpLearning(String srcInterface, IpAddress srcIP, MacAddress srcMac, BigInteger metadata,
-            IpAddress dstIP, Uuid srcIpSubnetId) {
+                                     IpAddress dstIP) {
 
         if (metadata == null || Objects.equals(metadata, BigInteger.ZERO)) {
             return;
@@ -134,17 +136,6 @@ public abstract class AbstractIpLearnNotificationHandler {
                 }
             }
 
-            if (srcIpSubnetId != null) {
-                Subnetmap snMap = vpnUtil.getSubnetmapFromItsUuid(srcIpSubnetId);
-                if (snMap != null && snMap.getVpnId() == null) {
-                    /* If the subnet is not part of vpn then it should be ignored
-                     * from being discovered. This use case will come for dual stack
-                     * network. i.e V6 or V4 subnet only part of VPN.
-                     */
-                    continue;
-                }
-            }
-
             LearntVpnVipToPort learntVpnVipToPort = vpnUtil.getLearntVpnVipToPort(vpnName, srcIpToQuery);
             if (learntVpnVipToPort != null) {
                 String oldPortName = learntVpnVipToPort.getPortName();
index adba9dd4de97252df49f523f5a15c4818dffc401..0adbdf9f1be75bb8dc1aed4943b0f7c76dcbd821 100644 (file)
@@ -63,7 +63,7 @@ public class ArpNotificationHandler extends AbstractIpLearnNotificationHandler i
                         + "target destination {}, learning MAC",
                 srcInterface, srcIP.stringValue(), srcMac.getValue(), targetIP.stringValue());
 
-        processIpLearning(srcInterface, srcIP, srcMac, metadata, targetIP, null);
+        processIpLearning(srcInterface, srcIP, srcMac, metadata, targetIP);
     }
 
     @Override