Cherry Pick to Master - Fix for Bug3644 67/22567/1
authorAbhinav Gupta <abhi3123@gmail.com>
Thu, 11 Jun 2015 12:30:09 +0000 (18:00 +0530)
committerAbhinav Gupta <abhi3123@gmail.com>
Mon, 15 Jun 2015 08:19:37 +0000 (08:19 +0000)
Fix for Bug3644 - Same labels for route in diff vpns

Overlapping IPs in separate VPNs were assigned same label based on
nexthopip. Fix modifies the way label is created using key as rd+nexthopip
info

Change-Id: I4a0717c0c3f69975284294be7af445b380f409bc
Signed-off-by: Abhinav Gupta <abhi3123@gmail.com>
(cherry picked from commit 7ece688c41702efe0c4e4c5b8be0785f4622848c)

vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnConstants.java
vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java

index 3fc28972e9fcb9a332ac54b323bfbc8bbb4dd1c1..601f17c748d39a2f5d38ed0cfce8872f1e21027d 100644 (file)
@@ -17,4 +17,5 @@ public class VpnConstants {
     public static final short FIB_TABLE = 21;
     public static final short DEFAULT_FLOW_PRIORITY = 10;
     public static final long INVALID_ID = -1;
+    public static final String SEPARATOR = ".";
 }
index 92f990df978d7fbac1426f7256ebcd56f9c4b7d2..02d77ad4b93c24cf695f146be0e47d432795f362 100644 (file)
@@ -201,7 +201,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
 
             LOG.trace("NextHops are {}", nextHops);
             for (Adjacency nextHop : nextHops) {
-                String key = nextHop.getIpAddress();
+                String key = rd + VpnConstants.SEPARATOR + nextHop.getIpAddress();
                 long label = getUniqueId(key);
                 value.add(new AdjacencyBuilder(nextHop).setLabel(label).build());
             }
@@ -211,7 +211,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
             InstanceIdentifier<VpnInterface> interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName);
             syncWrite(LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface, DEFAULT_CALLBACK);
             for (Adjacency nextHop : nextHops) {
-                String key = nextHop.getIpAddress();
+                String key = rd + VpnConstants.SEPARATOR + nextHop.getIpAddress();
                 long label = getUniqueId(key);
                 updatePrefixToBGP(rd, nextHop, nextHopIp, label);
             }
@@ -494,7 +494,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
                     label = nextHop.getLabel();
                     if(label == VpnConstants.INVALID_ID) {
                         //Generate label using ID Manager
-                        label = getUniqueId(nextHop.getIpAddress());
+                        String key = newRd + VpnConstants.SEPARATOR + nextHop.getIpAddress();
+                        label = getUniqueId(key);
                     }
                     removePrefixFromBGP(rd, nextHop);
                     //updatePrefixToBGP(newRd, nextHop, nextHopIp, label);