Bug 3292: Invalid Range exception in setDpnId 81/20881/1
authorVishal Thapar <vishal.thapar@ericsson.com>
Thu, 21 May 2015 10:10:13 +0000 (15:40 +0530)
committerVishal Thapar <vishal.thapar@ericsson.com>
Thu, 21 May 2015 10:10:13 +0000 (15:40 +0530)
1. Change dpnId from long to BigInteger

Change-Id: I1235500337561784bdf836d2dd8f486b598c416d
Signed-off-by: Vishal Thapar <vishal.thapar@ericsson.com>
25 files changed:
fibmanager/fibmanager-api/src/main/java/org/opendaylight/fibmanager/api/IFibManager.java
fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java
fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManagerProvider.java
fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibNodeCapableListener.java
fibmanager/fibmanager-impl/src/test/java/org/opendaylight/vpnservice/fibmanager/test/FibManagerTest.java
interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/interfaces/IInterfaceManager.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java
interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/IfmUtilTest.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/AbstractSwitchEntity.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/FlowEntity.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/GroupEntity.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MDSALUtil.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java
mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALManager.java
mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALUtilProvider.java
mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/vpnservice/test/MdSalUtilTest.java
nexthopmgr/nexthopmgr-api/src/main/yang/l3nexthop.yang
nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java
nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java
nexthopmgr/nexthopmgr-impl/src/test/java/org/opendaylight/vpnservice/nexthopmgr/test/NexthopManagerTest.java
vpnmanager/vpnmanager-api/src/main/java/org/opendaylight/vpnmanager/api/IVpnManager.java
vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java
vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnserviceProvider.java

index 4c16d2fec133eed6bbb9038c47f72c730156d7c9..ab97db7703ca5161b27e3fa56ab19084b31fd33e 100644 (file)
@@ -1,6 +1,8 @@
 package org.opendaylight.fibmanager.api;
 
+import java.math.BigInteger;
+
 public interface IFibManager {
-    void populateFibOnNewDpn(long dpnId, long vpnId, String rd);
-    void cleanUpDpnForVpn(long dpnId, long vpnId, String rd);
+    void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd);
+    void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd);
 }
index bfb69d6306e9f8c7621d0295cdc078b5f8454c4a..363536b4523429d729d4240ecc801b4987fa0ec2 100644 (file)
@@ -7,15 +7,26 @@
  */
 package org.opendaylight.vpnservice.fibmanager;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import java.math.BigInteger;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import com.google.common.util.concurrent.FutureCallback;
-
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.vpnmanager.api.IVpnManager;
 import org.opendaylight.vpnservice.AbstractDataChangeListener;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.vpnservice.mdsalutil.ActionInfo;
 import org.opendaylight.vpnservice.mdsalutil.ActionType;
 import org.opendaylight.vpnservice.mdsalutil.FlowEntity;
@@ -30,6 +41,7 @@ import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnInstance1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.FibEntries;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.fibentries.VrfTables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.fibentries.VrfTablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.vrfentries.VrfEntry;
@@ -41,25 +53,10 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.FibEntries;
 import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.google.common.base.Optional;
-
-import java.math.BigInteger;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 
 public class FibManager extends AbstractDataChangeListener<VrfEntry> implements AutoCloseable{
   private static final Logger LOG = LoggerFactory.getLogger(FibManager.class);
@@ -179,13 +176,13 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
 
     Long vpnId = getVpnId(vrfTableKey.getRouteDistinguisher());
     Preconditions.checkNotNull(vpnId, "Vpn Instance not available!");
-    Collection<Long> dpns = vpnmanager.getDpnsForVpn(vpnId);
-    for (Long dpId : dpns) {
+    Collection<BigInteger> dpns = vpnmanager.getDpnsForVpn(vpnId);
+    for (BigInteger dpId : dpns) {
       addRouteInternal(dpId, vpnId, vrfTableKey, vrfEntry);
     }
   }
 
-  private void addRouteInternal(final long dpId, final long vpnId, final VrfTablesKey vrfTableKey,
+  private void addRouteInternal(final BigInteger dpId, final long vpnId, final VrfTablesKey vrfTableKey,
                                 final VrfEntry vrfEntry) {
     String rd = vrfTableKey.getRouteDistinguisher();
     LOG.debug("adding route " + vrfEntry.getDestPrefix() + " " + rd);
@@ -223,13 +220,13 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
 
     Long vpnId = getVpnId(vrfTableKey.getRouteDistinguisher());
     Preconditions.checkNotNull(vpnId, "Vpn Instance not available!");
-    Collection<Long> dpns = vpnmanager.getDpnsForVpn(vpnId);
-    for (Long dpId : dpns) {
+    Collection<BigInteger> dpns = vpnmanager.getDpnsForVpn(vpnId);
+    for (BigInteger dpId : dpns) {
       deleteRoute(dpId, vpnId, vrfTableKey, vrfEntry);
     }
   }
 
-  public void deleteRoute(final long dpId, final long vpnId, final VrfTablesKey vrfTableKey,
+  public void deleteRoute(final BigInteger dpId, final long vpnId, final VrfTablesKey vrfTableKey,
                           final VrfEntry vrfEntry) {
     LOG.debug("deleting route "+ vrfEntry.getDestPrefix() + " "+vpnId);
     String rd = vrfTableKey.getRouteDistinguisher();
@@ -263,7 +260,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
             + ((rawIpAddress[2] & 0xFF) << (1 * 8)) + (rawIpAddress[3] & 0xFF)) & 0xffffffffL;
   }
 
-  private void makeConnectedRoute(long dpId, long vpnId, VrfEntry vrfEntry, String rd,
+  private void makeConnectedRoute(BigInteger dpId, long vpnId, VrfEntry vrfEntry, String rd,
                                   long groupId, int addOrRemove) {
     LOG.trace("makeConnectedRoute: vrfEntry {}",vrfEntry);
     String values[] = vrfEntry.getDestPrefix().split("/");
@@ -317,7 +314,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     }
   }
 
-  private void makeLFibTableEntry(long dpId, long label, long groupId,
+  private void makeLFibTableEntry(BigInteger dpId, long label, long groupId,
                                   String nextHop, int addOrRemove) {
     List<MatchInfo> matches = new ArrayList<MatchInfo>();
     matches.add(new MatchInfo(MatchFieldType.eth_type,
@@ -345,7 +342,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     LOG.debug("LFIB Entry for dpID {} : label : {} group {} modified successfully {}",dpId, label, groupId );
   }
 
-  private void deleteLocalAdjacency(final long dpId, final long vpnId, final VrfEntry vrfEntry) {
+  private void deleteLocalAdjacency(final BigInteger dpId, final long vpnId, final VrfEntry vrfEntry) {
     LOG.trace("deleteLocalAdjacency called with dpid {}, vpnId{}, VrfEntry {}",dpId, vpnId, vrfEntry);;
     try {
       Future<RpcResult<Void>> result =
@@ -365,7 +362,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     }
   }
 
-  public void populateFibOnNewDpn(long dpnId, long vpnId, String rd) {
+  public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) {
     LOG.trace("New dpn {} for vpn {} : populateFibOnNewDpn", dpnId, rd);
     InstanceIdentifier<VrfTables> id = buildVrfId(rd);
     Optional<VrfTables> vrfTable = read(LogicalDatastoreType.CONFIGURATION, id);
@@ -376,7 +373,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     }
   }
 
-  public void cleanUpDpnForVpn(long dpnId, long vpnId, String rd) {
+  public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) {
     LOG.trace("Remove dpn {} for vpn {} : cleanUpDpnForVpn", dpnId, rd);
     InstanceIdentifier<VrfTables> id = buildVrfId(rd);
     Optional<VrfTables> vrfTable = read(LogicalDatastoreType.CONFIGURATION, id);
@@ -394,21 +391,21 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     return id;
   }
 
-  private String getFlowRef(long dpnId, short tableId, long label, String nextHop) {
+  private String getFlowRef(BigInteger dpnId, short tableId, long label, String nextHop) {
     return new StringBuilder(64).append(FLOWID_PREFIX).append(dpnId).append(NwConstants.FLOWID_SEPARATOR)
         .append(tableId).append(NwConstants.FLOWID_SEPARATOR)
         .append(label).append(NwConstants.FLOWID_SEPARATOR)
         .append(nextHop).toString();
   }
 
-  private String getFlowRef(long dpnId, short tableId, String rd, InetAddress destPrefix) {
+  private String getFlowRef(BigInteger dpnId, short tableId, String rd, InetAddress destPrefix) {
     return new StringBuilder(64).append(FLOWID_PREFIX).append(dpnId).append(NwConstants.FLOWID_SEPARATOR)
         .append(tableId).append(NwConstants.FLOWID_SEPARATOR)
         .append(rd).append(NwConstants.FLOWID_SEPARATOR)
         .append(destPrefix.getHostAddress()).toString();
   }
 
-  protected GetEgressPointerOutput resolveAdjacency(final long dpId, final long vpnId,
+  protected GetEgressPointerOutput resolveAdjacency(final BigInteger dpId, final long vpnId,
                         final VrfEntry vrfEntry) {
     GetEgressPointerOutput adjacency = null;
     LOG.trace("resolveAdjacency called with dpid {}, vpnId{}, VrfEntry {}",dpId, vpnId, vrfEntry);;
@@ -450,12 +447,12 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     return vpnId;
   }
 
-    public void processNodeAdd(long dpnId) {
+    public void processNodeAdd(BigInteger dpnId) {
         LOG.debug("Received notification to install TableMiss entries for dpn {} ", dpnId);
         makeTableMissFlow(dpnId, NwConstants.ADD_FLOW);
     }
 
-    private void makeTableMissFlow(long dpnId, int addOrRemove) {
+    private void makeTableMissFlow(BigInteger dpnId, int addOrRemove) {
         final BigInteger COOKIE_TABLE_MISS = new BigInteger("1030000", 16);
         // Instruction to punt to controller
         List<InstructionInfo> instructions = new ArrayList<InstructionInfo>();
@@ -482,7 +479,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
         }
     }
 
-    private String getFlowRef(long dpnId, short tableId, int tableMiss) {
+    private String getFlowRef(BigInteger dpnId, short tableId, int tableMiss) {
         return new StringBuffer().append(FLOWID_PREFIX).append(dpnId).append(NwConstants.FLOWID_SEPARATOR)
                 .append(tableId).append(NwConstants.FLOWID_SEPARATOR).append(tableMiss)
                 .append(FLOWID_PREFIX).toString();
index aef8ce5d67c84ee3ed6d875af31aeb5b8c9edef1..e8f469f2e02175cd6da6a1bbac39cd0dd7a77342 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.vpnservice.fibmanager;
 
+import java.math.BigInteger;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
@@ -59,12 +60,12 @@ public class FibManagerProvider implements BindingAwareProvider, IFibManager, Au
   }
 
   @Override
-  public void populateFibOnNewDpn(long dpnId, long vpnId, String rd) {
+  public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) {
     fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
   }
 
   @Override
-  public void cleanUpDpnForVpn(long dpnId, long vpnId, String rd) {
+  public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) {
     fibManager.cleanUpDpnForVpn(dpnId, vpnId, rd);
   }
 }
index 26bc947eeb54201c160a145a1a5df6f843315c53..55c3ee27afb711145980e2d107c427dc790bf92a 100644 (file)
@@ -1,5 +1,7 @@
 package org.opendaylight.vpnservice.fibmanager;
 
+import java.math.BigInteger;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
@@ -57,7 +59,7 @@ public class FibNodeCapableListener extends AbstractDataChangeListener<FlowCapab
     protected void add(InstanceIdentifier<FlowCapableNode> identifier, FlowCapableNode node) {
         LOG.trace("FlowCapableNode Added: key: " + identifier + ", value=" + node );
         NodeKey nodeKey = identifier.firstKeyOf(Node.class, NodeKey.class);
-        long dpnId = MDSALUtil.getDpnIdFromNodeName(nodeKey.getId());
+        BigInteger dpnId = MDSALUtil.getDpnIdFromNodeName(nodeKey.getId());
         fibManager.processNodeAdd(dpnId);
     }
 
index 6af4c4335e569490a8c1e2c2992623485d9b14f3..49b0645a76a53ca8d48319c535c9c1a022c25421 100644 (file)
@@ -7,27 +7,25 @@
  */
 package org.opendaylight.vpnservice.fibmanager.test;
 
+import java.math.BigInteger;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-
 import static org.junit.Assert.*;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
-
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -85,19 +83,20 @@ public class FibManagerTest {
 
   MockDataChangedEvent dataChangeEvent;
   FibManager fibmgr;
-  Long EgressPointer = 11L;
+  private static final Long EgressPointer = 11L;
   VrfEntry vrfEntry;
   InstanceIdentifier<VrfEntry> identifier;
   VrfEntryBuilder vrfbuilder;
-  String rd = "routeDis";
-  String prefix = "0.1.2.3";
-  String nexthop = "1.1.1.1";
-  int label = 10;
-  List<Long> Dpns;
+  private static final String rd = "routeDis";
+  private static final String prefix = "0.1.2.3";
+  private static final String nexthop = "1.1.1.1";
+  private static final int label = 10;
+  List<BigInteger> Dpns;
+  private static final long vpnId = 101L;
 
   private void SetupMocks() {
-    Dpns = new ArrayList<Long>();
-    Dpns.add(100000L);
+    Dpns = new ArrayList<BigInteger>();
+    Dpns.add(BigInteger.valueOf(100000L));
     identifier = buildVrfEntryId(rd, prefix);
     vrfEntry = buildVrfEntry(rd, prefix, nexthop, label);
     fibmgr.setMdsalManager(mdsalManager);
@@ -117,13 +116,13 @@ public class FibManagerTest {
     dataChangeEvent = new MockDataChangedEvent();
     vrfbuilder = new VrfEntryBuilder();
     fibmgr = new FibManager(dataBroker, l3nexthopService) {
-      protected GetEgressPointerOutput resolveAdjacency(final long dpId, final long vpnId,
+      protected GetEgressPointerOutput resolveAdjacency(final BigInteger dpId, final long vpnId,
           final VrfEntry vrfEntry) {
         return adjacency;
       }
 
       protected Long getVpnId(String rd) {
-        return 101L;
+        return vpnId;
       }
     };
     SetupMocks();
index 69be7cfeb4528e4e7b0dc890960a577b38b13060..a0a26d66c99ad18762d1decd29e495a078f31f9c 100644 (file)
@@ -8,6 +8,8 @@
 
 package org.opendaylight.vpnservice.interfacemgr.interfaces;
 
+import java.math.BigInteger;
+
 import java.util.List;
 import org.opendaylight.vpnservice.mdsalutil.ActionInfo;
 import org.opendaylight.vpnservice.mdsalutil.MatchInfo;
@@ -15,8 +17,8 @@ import org.opendaylight.vpnservice.mdsalutil.MatchInfo;
 public interface IInterfaceManager {
 
     public Long getPortForInterface(String ifName);
-    public long getDpnForInterface(String ifName);
-    public String getEndpointIpForDpn(long dpnId);
+    public BigInteger getDpnForInterface(String ifName);
+    public String getEndpointIpForDpn(BigInteger dpnId);
     public List<MatchInfo> getInterfaceIngressRule(String ifName);
     public List<ActionInfo> getInterfaceEgressActions(String ifName);
 
index 2d2647390951d048fbeb6731ad5b54754717c0dc..c36df7f34d96e5246aff4e72de63c0c75a7d51d5 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.vpnservice.interfacemgr;
 
+import java.math.BigInteger;
+
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
@@ -30,7 +32,7 @@ public class IfmUtil {
     }
 
 
-    public static NodeId buildDpnNodeId(long dpnId) {
+    public static NodeId buildDpnNodeId(BigInteger dpnId) {
         return new NodeId(IfmConstants.OF_URI_PREFIX + dpnId);
     }
 
index d494ab55f0a7106796f2f652672faae3ba8017fa..d8f77f4297bcb37482be2d848ee709aecba3065f 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.vpnservice.interfacemgr;
 
+import java.math.BigInteger;
+
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -432,19 +434,19 @@ public class InterfaceManager extends AbstractDataChangeListener<Interface> impl
         return getPortNumForInterface(iface);
     }
 
-    long getDpnForInterface(String ifName) {
+    BigInteger getDpnForInterface(String ifName) {
         Interface iface = getInterfaceByIfName(ifName);
         try {
             NodeConnector port = getNodeConnectorFromDataStore(iface);
             //TODO: This should be an MDSAL Util method
-            return Long.parseLong(IfmUtil.getDpnFromNodeConnectorId(port.getId()));
+            return new BigInteger(IfmUtil.getDpnFromNodeConnectorId(port.getId()));
         } catch (NullPointerException e) {
             LOG.error("dpn for Interface {} not found", ifName);
         }
-        return 0L;
+        return BigInteger.ZERO;
     }
 
-    String getEndpointIpForDpn(long dpnId) {
+    String getEndpointIpForDpn(BigInteger dpnId) {
         //TODO: This should be MDSAL Util function
         NodeId dpnNodeId = IfmUtil.buildDpnNodeId(dpnId);
         return dbDpnEndpoints.get(dpnNodeId);
@@ -454,9 +456,9 @@ public class InterfaceManager extends AbstractDataChangeListener<Interface> impl
         Interface iface = getInterfaceByIfName(ifName);
         List<MatchInfo> matches = new ArrayList<MatchInfo>();
         Class<? extends InterfaceType> ifType = iface.getType();
-        long dpn = this.getDpnForInterface(ifName);
+        BigInteger dpn = this.getDpnForInterface(ifName);
         long portNo = this.getPortNumForInterface(iface).longValue();
-        matches.add(new MatchInfo(MatchFieldType.in_port, new long[] {dpn, portNo}));
+        matches.add(new MatchInfo(MatchFieldType.in_port, new BigInteger[] {dpn, BigInteger.valueOf(portNo)}));
 
         if (ifType.isInstance(L2vlan.class)) {
             IfL2vlan vlanIface = iface.getAugmentation(IfL2vlan.class);
@@ -486,7 +488,7 @@ public class InterfaceManager extends AbstractDataChangeListener<Interface> impl
 
         List<ActionInfo> listActionInfo = new ArrayList<ActionInfo>();
         Class<? extends InterfaceType> ifType = iface.getType();
-        long dpn = this.getDpnForInterface(ifName);
+        BigInteger dpn = this.getDpnForInterface(ifName);
         long portNo = this.getPortNumForInterface(iface).longValue();
         if (iface.isEnabled()) {
 
index 9a04dae55def58f0854b132e4962ee58b194b285..b1b65b7258c7bf2975e6c74a62f57423fabce02e 100644 (file)
@@ -76,12 +76,12 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
     }
 
     @Override
-    public long getDpnForInterface(String ifName) {
+    public BigInteger getDpnForInterface(String ifName) {
         return interfaceManager.getDpnForInterface(ifName);
     }
 
     @Override
-    public String getEndpointIpForDpn(long dpnId) {
+    public String getEndpointIpForDpn(BigInteger dpnId) {
         return interfaceManager.getEndpointIpForDpn(dpnId);
     }
 
index f41b677cb82d54ffed78bcf6cb21ae3e41168896..bc30c10079f2177ed8a8525783b17da39a52616c 100644 (file)
@@ -11,6 +11,8 @@ package org.opendaylight.vpnservice.interfacemgr.test;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.when;
 
+import java.math.BigInteger;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -30,7 +32,7 @@ public class IfmUtilTest {
 
     @Test
     public void testDpnConversions() {
-        String NodeId = IfmUtil.buildDpnNodeId(101L).getValue();
+        String NodeId = IfmUtil.buildDpnNodeId(BigInteger.valueOf(101)).getValue();
         assertEquals("openflow:101", NodeId);
         when(ncId.getValue()).thenReturn("openflow:101:11");
         assertEquals("101",IfmUtil.getDpnFromNodeConnectorId(ncId));
index b833180761d3e6f64ea7b698ea78fce57df66da6..3310b095744513546980db1b01598a14a4d6c26e 100644 (file)
@@ -7,29 +7,30 @@
  */
 package org.opendaylight.vpnservice.mdsalutil;
 
+import java.math.BigInteger;
+
 public class AbstractSwitchEntity {
     private static final long serialVersionUID = 1L;
 
-    private long m_lDpnId;
-
+    private BigInteger m_dpnId;
 
-    public AbstractSwitchEntity(long lDpnId) {
-        m_lDpnId = lDpnId;
 
+    public AbstractSwitchEntity(BigInteger dpnId) {
+        m_dpnId = dpnId;
     }
 
     @Override
     public String toString() {
-        return "AbstractSwitchEntity [m_lDpnId=" + m_lDpnId + " ]";
+        return "AbstractSwitchEntity [m_lDpnId=" + m_dpnId + " ]";
     }
 
 
-    public long getDpnId() {
-        return m_lDpnId;
+    public BigInteger getDpnId() {
+        return m_dpnId;
     }
 
-    public void setDpnId(long lDpnId) {
-        m_lDpnId = lDpnId;
+    public void setDpnId(BigInteger dpnId) {
+        m_dpnId = dpnId;
     }
 
 }
index 9f15fa3b5d6302169d5c85ec6730b92053375316..aca5f3d513691b70da79245fb2445c73ccd5b8bc 100644 (file)
@@ -34,8 +34,8 @@ public class FlowEntity extends AbstractSwitchEntity {
 
     private transient FlowBuilder m_flowBuilder;
 
-    public FlowEntity(long lDpnId) {
-        super(lDpnId);
+    public FlowEntity(BigInteger dpnId) {
+        super(dpnId);
     }
 
     @Override
index 345569cb4918644147a3d61966b57fe5a4eb558c..d51b24bc4d249f42fcb00b38fea2fd04bf9867ed 100644 (file)
@@ -7,8 +7,9 @@
  */
 package org.opendaylight.vpnservice.mdsalutil;
 
-import java.util.List;
+import java.math.BigInteger;
 
+import java.util.List;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
@@ -24,8 +25,8 @@ public class GroupEntity extends AbstractSwitchEntity {
 
     private transient GroupBuilder m_groupBuilder;
 
-    public GroupEntity(long lDpnId) {
-        super(lDpnId);
+    public GroupEntity(BigInteger dpnId) {
+        super(dpnId);
     }
 
     @Override
index 7b99a66ad71c44638b73cf7f12696555a84d6ea2..1f09d8bc842531434c639ec94b1534f67e3cb01a 100644 (file)
@@ -65,7 +65,7 @@ public class MDSALUtil {
             new ArrayList<Instruction>()).build();
     private static final Match EMPTY_Matches = new MatchBuilder().build();
 
-    public static FlowEntity buildFlowEntity(long dpnId, short tableId, String flowId, int priority, String flowName,
+    public static FlowEntity buildFlowEntity(BigInteger dpnId, short tableId, String flowId, int priority, String flowName,
             int idleTimeOut, int hardTimeOut, BigInteger cookie, List<MatchInfo> listMatchInfo,
             List<InstructionInfo> listInstructionInfo) {
 
@@ -102,7 +102,7 @@ public class MDSALUtil {
                 .setCookie(new FlowCookie(cookie)).build();
     }
 
-    public static GroupEntity buildGroupEntity(long dpnId, long groupId, String groupName, GroupTypes groupType,
+    public static GroupEntity buildGroupEntity(BigInteger dpnId, long groupId, String groupName, GroupTypes groupType,
             List<BucketInfo> listBucketInfo) {
 
         GroupEntity groupEntity = new GroupEntity(dpnId);
@@ -115,7 +115,7 @@ public class MDSALUtil {
         return groupEntity;
     }
 
-    public static TransmitPacketInput getPacketOutDefault(List<ActionInfo> actionInfos, byte[] payload, long dpnId) {
+    public static TransmitPacketInput getPacketOutDefault(List<ActionInfo> actionInfos, byte[] payload, BigInteger dpnId) {
         return new TransmitPacketInputBuilder()
                 .setAction(buildActions(actionInfos))
                 .setPayload(payload)
@@ -217,11 +217,11 @@ public class MDSALUtil {
     }
 
     // TODO: Check the port const
-    public static NodeConnectorRef getDefaultNodeConnRef(long nDpId) {
+    public static NodeConnectorRef getDefaultNodeConnRef(BigInteger nDpId) {
         return getNodeConnRef(NODE_PREFIX + SEPARATOR + nDpId, "0xfffffffd");
     }
 
-    public static NodeConnectorRef getNodeConnRef(long nDpId, String port) {
+    public static NodeConnectorRef getNodeConnRef(BigInteger nDpId, String port) {
         return getNodeConnRef(NODE_PREFIX + SEPARATOR + nDpId, port);
     }
 
@@ -260,13 +260,13 @@ public class MDSALUtil {
         return nodeConnectorRef;
     }
 
-    public static long getDpnIdFromNodeName(NodeId nodeId) {
+    public static BigInteger getDpnIdFromNodeName(NodeId nodeId) {
         return getDpnIdFromNodeName(nodeId.getValue());
     }
 
-    public static long getDpnIdFromNodeName(String sMdsalNodeName) {
+    public static BigInteger getDpnIdFromNodeName(String sMdsalNodeName) {
         String sDpId = sMdsalNodeName.substring(sMdsalNodeName.lastIndexOf(":") + 1);
-        return Long.parseLong(sDpId);
+        return new BigInteger(sDpId);
     }
 
     public static long getOfPortNumberFromPortName(NodeConnectorId nodeConnectorId) {
@@ -277,4 +277,10 @@ public class MDSALUtil {
         String sPortNumber = sMdsalPortName.substring(sMdsalPortName.lastIndexOf(":") + 1);
         return Long.parseLong(sPortNumber);
     }
+
+    public static TransmitPacketInput getPacketOut(List<ActionInfo> actionInfos, byte[] payload, BigInteger dpnId,
+                    NodeConnectorRef nodeConnRef) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
index 3c889b96d23610de0c400467dbc7717da94575ec..ec09bbdd3a44c8af3eb464322d411e92cc7f8621 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.vpnservice.mdsalutil.interfaces;
 
+import java.math.BigInteger;
 import java.util.List;
 import org.opendaylight.vpnservice.mdsalutil.ActionInfo;
 import org.opendaylight.vpnservice.mdsalutil.FlowEntity;
@@ -24,10 +25,10 @@ public interface IMdsalApiManager {
 
     public void removeGroup(GroupEntity groupEntity);
 
-    public void sendPacketOut(long lDpnId, int groupId, byte[] payload);
+    public void sendPacketOut(BigInteger dpnId, int groupId, byte[] payload);
 
-    public void sendPacketOutWithActions(long lDpnId, long groupId, byte[] payload, List<ActionInfo> actionInfos);
+    public void sendPacketOutWithActions(BigInteger dpnId, long groupId, byte[] payload, List<ActionInfo> actionInfos);
 
-    public void sendARPPacketOutWithActions(long dpid, byte[] payload, List<ActionInfo> action_info);
+    public void sendARPPacketOutWithActions(BigInteger dpnId, byte[] payload, List<ActionInfo> action_info);
 
 }
index e31ad2d002d79af309a7eae048a3e51228c80a00..8fe95ef15e8a89f2d07062089cd47df409bb7b07 100644 (file)
@@ -251,23 +251,23 @@ public class MDSALManager implements AutoCloseable {
         installGroup(groupEntity);
     }
 
-    public void sendPacketOut(long lDpnId, int groupId, byte[] payload) {
+    public void sendPacketOut(BigInteger dpnId, int groupId, byte[] payload) {
 
         List<ActionInfo> actionInfos = new ArrayList<ActionInfo>();
         actionInfos.add(new ActionInfo(ActionType.group, new String[] { String.valueOf(groupId) }));
 
-        sendPacketOutWithActions(lDpnId, groupId, payload, actionInfos);
+        sendPacketOutWithActions(dpnId, groupId, payload, actionInfos);
     }
 
-    public void sendPacketOutWithActions(long lDpnId, long groupId, byte[] payload, List<ActionInfo> actionInfos) {
+    public void sendPacketOutWithActions(BigInteger dpnId, long groupId, byte[] payload, List<ActionInfo> actionInfos) {
 
-        m_packetProcessingService.transmitPacket(MDSALUtil.getPacketOut(actionInfos, payload, lDpnId,
-                getNodeConnRef("openflow:" + lDpnId, "0xfffffffd")));
+        m_packetProcessingService.transmitPacket(MDSALUtil.getPacketOut(actionInfos, payload, dpnId,
+                getNodeConnRef("openflow:" + dpnId, "0xfffffffd")));
     }
 
-    public void sendARPPacketOutWithActions(long lDpnId, byte[] payload, List<ActionInfo> actions) {
-        m_packetProcessingService.transmitPacket(MDSALUtil.getPacketOut(actions, payload, lDpnId,
-                getNodeConnRef("openflow:" + lDpnId, "0xfffffffd")));
+    public void sendARPPacketOutWithActions(BigInteger dpnId, byte[] payload, List<ActionInfo> actions) {
+        m_packetProcessingService.transmitPacket(MDSALUtil.getPacketOut(actions, payload, dpnId,
+                getNodeConnRef("openflow:" + dpnId, "0xfffffffd")));
     }
 
     public InstanceIdentifier<Node> nodeToInstanceId(Node node) {
@@ -293,8 +293,8 @@ public class MDSALManager implements AutoCloseable {
         return _nodeConnectorRef;
     }
 
-    private Node buildDpnNode(long lDpnId) {
-        NodeId nodeId = new NodeId("openflow:" + lDpnId);
+    private Node buildDpnNode(BigInteger dpnId) {
+        NodeId nodeId = new NodeId("openflow:" + dpnId);
         Node nodeDpn = new NodeBuilder().setId(nodeId).setKey(new NodeKey(nodeId)).build();
 
         return nodeDpn;
index 10d9b002752376ad1c62c9cadd3decc808725e5b..398e16f6a8ba8b928dadfd4b463f6adeb465cc65 100644 (file)
@@ -7,8 +7,9 @@
  */
 package org.opendaylight.vpnservice.mdsalutil.internal;
 
-import java.util.List;
+import java.math.BigInteger;
 
+import java.util.List;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
@@ -78,22 +79,22 @@ public class MDSALUtilProvider implements BindingAwareConsumer, IMdsalApiManager
 
 
     @Override
-    public void sendPacketOut(long lDpnId, int groupId, byte[] payload) {
-        mdSalMgr.sendPacketOut(lDpnId, groupId, payload);
+    public void sendPacketOut(BigInteger dpnId, int groupId, byte[] payload) {
+        mdSalMgr.sendPacketOut(dpnId, groupId, payload);
     }
 
 
     @Override
-    public void sendPacketOutWithActions(long lDpnId, long groupId,
+    public void sendPacketOutWithActions(BigInteger dpnId, long groupId,
             byte[] payload, List<ActionInfo> actionInfos) {
-        mdSalMgr.sendPacketOutWithActions(lDpnId, groupId, payload, actionInfos);
+        mdSalMgr.sendPacketOutWithActions(dpnId, groupId, payload, actionInfos);
     }
 
 
     @Override
-    public void sendARPPacketOutWithActions(long dpid, byte[] payload,
+    public void sendARPPacketOutWithActions(BigInteger dpnId, byte[] payload,
             List<ActionInfo> action_info) {
-        mdSalMgr.sendARPPacketOutWithActions(dpid, payload, action_info);
+        mdSalMgr.sendARPPacketOutWithActions(dpnId, payload, action_info);
     }
 
 }
index d05bb0018b6f291e73fe444e2e2d9491c1071d06..6ee10d638416c3e90e879ff56a0cc230f28db846 100644 (file)
@@ -63,6 +63,7 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
      MDSALManager mdSalMgr = null ;
      MockFlowForwarder flowFwder = null ;
      MockGroupForwarder grpFwder = null ;
+     private static final String Nodeid = "openflow:1";
 
      @Before
         public void setUp() throws Exception {
@@ -110,7 +111,6 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
         @Test
         public void testInstallGroup() {
             // Install Group 1
-            String Nodeid = "1";
             String inport = "2" ;
             int vlanid = 100 ;
             GroupEntity grpEntity1 = createGroupEntity(Nodeid, inport, vlanid) ;
@@ -119,7 +119,6 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
              assertEquals(1, grpFwder.getDataChgCount());
 
              // Install Group 2
-               Nodeid = "1";
                 inport = "3" ;
                 vlanid = 100 ;
                 GroupEntity grpEntity2 = createGroupEntity(Nodeid, inport, vlanid) ;
@@ -129,7 +128,6 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
 
         @Test
         public void testRemoveGroup() {
-            String Nodeid = "1";
             String inport = "2" ;
             int vlanid = 100 ;
             GroupEntity grpEntity = createGroupEntity(Nodeid, inport, vlanid) ;
@@ -162,7 +160,7 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
 
         public FlowEntity createFlowEntity(String dpnId, String tableId) {
 
-            long dpId;
+            BigInteger dpId;
             int SERVICE_ID = 0;
             FlowEntity terminatingServiceTableFlowEntity = null;
 
@@ -171,7 +169,7 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
                     new String[] {}));
 
             try {
-                dpId = Long.parseLong(dpnId.split(":")[1]);
+                dpId = new BigInteger(dpnId.split(":")[1]);
 
                 List<MatchInfo> mkMatches = new ArrayList<MatchInfo>();
                 BigInteger COOKIE = new BigInteger("9000000", 16);
@@ -218,7 +216,8 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
             listBucketInfo.add(new BucketInfo(listActionInfo));
 
             String groupName = "Test Group";
-            groupEntity = MDSALUtil.buildGroupEntity(Long.valueOf(Nodeid), id, groupName, GroupTypes.GroupIndirect,
+            BigInteger dpnId = new BigInteger(Nodeid.split(":")[1]);
+            groupEntity = MDSALUtil.buildGroupEntity(dpnId, id, groupName, GroupTypes.GroupIndirect,
                     listBucketInfo);
 
             return groupEntity;
@@ -226,7 +225,7 @@ public class MdSalUtilTest extends AbstractDataBrokerTest {
 
         private static long getUniqueValue(String nodeId, String inport) {
 
-            Long nodeIdL = Long.valueOf(nodeId);
+            Long nodeIdL = Long.valueOf(nodeId.split(":")[1]);
             Long inportL = Long.valueOf(inport);
                 long sd_set;
                 sd_set = nodeIdL * 10 + inportL;
index 3090e70211b1447c2c58349cb7bc68f87fc2c11b..68083d6b8d854f3cfd7e4b502a620ba807fdb0b7 100644 (file)
@@ -1,56 +1,56 @@
 
 
 module l3nexthop {
-       namespace "urn:opendaylight:vpnservice:l3nexthop";
-       prefix l3nexthop;
-       
-       revision "2015-04-09" {
-               description "L3 NextHop module";
-       }
+    namespace "urn:opendaylight:vpnservice:l3nexthop";
+    prefix l3nexthop;
 
-       container l3nexthop {
-               config false;
-               list vpnNexthops{
-                       key "vpnId";
-                       leaf vpnId {type uint32;}
-                       list vpnNexthop{
-                               key  "IpAddress";
-                               leaf IpAddress {type string;}
-                               leaf egressPointer {type uint32;}
-                       }
-               }
-               list tunnelNexthops{
-                       key "dpnId";
-                       leaf dpnId {type uint32;}
-                       list tunnelNexthop{
-                               key  "IpAddress";
-                               leaf IpAddress {type string;}
-                               leaf egressPointer {type uint32;}
-                       }
-               }
-       }
-       
-       rpc getEgressPointer {
-               description "returns egress pointer, an OF Group Id";
-               input { 
-                       leaf dpnId {type uint32;}
-                       leaf vpnId { type uint32;}  /* optional */
-                       leaf ipPrefix {type string;}
-                       leaf nexthopIp {type string;}
-               }
-               output { 
-                       leaf egressPointer {type uint32;} 
-                       leaf localDestination {type boolean;}
-               }
-       }
+    revision "2015-04-09" {
+        description "L3 NextHop module";
+    }
 
-       rpc removeLocalNextHop {
-               description "remove a local next hop";
-               input {
-                       leaf dpnId {type uint32;}
-                       leaf vpnId { type uint32;}  /* optional */
-                       leaf ipPrefix {type string;}
-                       leaf nexthopIp {type string;}
-               }
-       }
+    container l3nexthop {
+        config false;
+        list vpnNexthops{
+            key "vpnId";
+            leaf vpnId {type uint32;}
+            list vpnNexthop{
+                key  "IpAddress";
+                leaf IpAddress {type string;}
+                leaf egressPointer {type uint32;}
+            }
+        }
+        list tunnelNexthops{
+            key "dpnId";
+            leaf dpnId {type uint64;}
+            list tunnelNexthop{
+                key  "IpAddress";
+                leaf IpAddress {type string;}
+                leaf egressPointer {type uint32;}
+            }
+        }
+    }
+
+    rpc getEgressPointer {
+        description "returns egress pointer, an OF Group Id";
+        input {
+            leaf dpnId {type uint64;}
+            leaf vpnId { type uint32;}  /* optional */
+            leaf ipPrefix {type string;}
+            leaf nexthopIp {type string;}
+        }
+        output {
+            leaf egressPointer {type uint32;}
+            leaf localDestination {type boolean;}
+        }
+    }
+
+    rpc removeLocalNextHop {
+        description "remove a local next hop";
+        input {
+            leaf dpnId {type uint64;}
+            leaf vpnId { type uint32;}  /* optional */
+            leaf ipPrefix {type string;}
+            leaf nexthopIp {type string;}
+        }
+    }
 }
\ No newline at end of file
index 450f59c6fd3d049ccc3049a3c82866735b53dad2..bd767cbe3e38577cf60dffba333008361a279f85 100644 (file)
@@ -139,9 +139,9 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         }
     }
 
-    private long getDpnId(String ifName) {
-        String[] fields = ifName.split(":");
-        long dpn = Integer.parseInt(fields[1]);
+    private BigInteger getDpnId(String ofPortId) {
+        String[] fields = ofPortId.split(":");
+        BigInteger dpn = new BigInteger(fields[1]);
         LOG.debug("DpnId: {}", dpn);
         return dpn;
     }
@@ -166,7 +166,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         int groupId = createNextHopPointer(nhKey);
 
         long vpnId = getVpnId(vpnName);
-        long dpnId = interfaceManager.getDpnForInterface(ifName);
+        BigInteger dpnId = interfaceManager.getDpnForInterface(ifName);
         VpnNexthop nexthop = getVpnNexthop(vpnId, ipAddress, 0);
         LOG.trace("nexthop: {}", nexthop);
         if (nexthop == null) {
@@ -199,7 +199,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         String nhKey = new String("nexthop." + ifName + ipAddress);
         int groupId = createNextHopPointer(nhKey);
 
-        long dpnId = getDpnId(ofPortId);
+        BigInteger dpnId = getDpnId(ofPortId);
         TunnelNexthop nexthop = getTunnelNexthop(dpnId, ipAddress);
         if (nexthop == null) {
             List<BucketInfo> listBucketInfo = new ArrayList<BucketInfo>();
@@ -219,21 +219,21 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         }
     }
 
-    private void makeRemoteFlow(long dpId, String ifName, int addOrRemoveFlow) {
+    private void makeRemoteFlow(BigInteger dpnId, String ifName, int addOrRemoveFlow) {
         long portNo = 0;
         String flowName = ifName;
-        String flowRef = getTunnelInterfaceFlowRef(dpId, LPORT_INGRESS_TABLE, ifName);
+        String flowRef = getTunnelInterfaceFlowRef(dpnId, LPORT_INGRESS_TABLE, ifName);
         List<MatchInfo> matches = new ArrayList<MatchInfo>();
         List<InstructionInfo> mkInstructions = new ArrayList<InstructionInfo>();
         if (NwConstants.ADD_FLOW == addOrRemoveFlow) {
             portNo = interfaceManager.getPortForInterface(ifName);
-            matches.add(new MatchInfo(MatchFieldType.in_port, new long[] {
-                dpId, portNo }));
+            matches.add(new MatchInfo(MatchFieldType.in_port, new BigInteger[] {
+                dpnId, BigInteger.valueOf(portNo) }));
             mkInstructions.add(new InstructionInfo(InstructionType.goto_table, new long[] {LFIB_TABLE}));
         }
 
         BigInteger COOKIE_VM_INGRESS_TABLE = new BigInteger("8000001", 16);
-        FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpId, LPORT_INGRESS_TABLE, flowRef,
+        FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpnId, LPORT_INGRESS_TABLE, flowRef,
                                                           DEFAULT_FLOW_PRIORITY, flowName, 0, 0, COOKIE_VM_INGRESS_TABLE, matches, mkInstructions);
 
         if (NwConstants.ADD_FLOW == addOrRemoveFlow) {
@@ -243,8 +243,8 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         }
     }
 
-    private String getTunnelInterfaceFlowRef(long dpId, short tableId, String ifName) {
-                return new StringBuilder().append(dpId).append(tableId).append(ifName).toString();
+    private String getTunnelInterfaceFlowRef(BigInteger dpnId, short tableId, String ifName) {
+                return new StringBuilder().append(dpnId).append(tableId).append(ifName).toString();
             }
 
     protected void addVpnNexthopToDS(long vpnId, String ipPrefix, long egressPointer) {
@@ -266,7 +266,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
 
     }
 
-    private void addTunnelNexthopToDS(long dpnId, String ipPrefix, long egressPointer) {
+    private void addTunnelNexthopToDS(BigInteger dpnId, String ipPrefix, long egressPointer) {
         InstanceIdentifierBuilder<TunnelNexthops> idBuilder = InstanceIdentifier.builder(L3nexthop.class)
                 .child(TunnelNexthops.class, new TunnelNexthopsKey(dpnId));
 
@@ -313,7 +313,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         return null;
     }
 
-    private TunnelNexthop getTunnelNexthop(long dpnId, String ipAddress) {
+    private TunnelNexthop getTunnelNexthop(BigInteger dpnId, String ipAddress) {
         
         InstanceIdentifierBuilder<TunnelNexthops> idBuilder = InstanceIdentifier.builder(L3nexthop.class)
                 .child(TunnelNexthops.class, new TunnelNexthopsKey(dpnId));
@@ -333,7 +333,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         return null;
     }
 
-    public long getNextHopPointer(long dpnId, long vpnId, String prefixIp, String nextHopIp) {
+    public long getNextHopPointer(BigInteger dpnId, long vpnId, String prefixIp, String nextHopIp) {
         String endpointIp = interfaceManager.getEndpointIpForDpn(dpnId);
         if (nextHopIp.equals(endpointIp)) {
             VpnNexthop vpnNextHop = getVpnNexthop(vpnId, prefixIp, 0);
@@ -345,7 +345,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         }
     }
 
-    private void removeTunnelNexthopFromDS(long dpnId, String ipPrefix) {
+    private void removeTunnelNexthopFromDS(BigInteger dpnId, String ipPrefix) {
 
         InstanceIdentifierBuilder<TunnelNexthop> idBuilder = InstanceIdentifier.builder(L3nexthop.class)
                 .child(TunnelNexthops.class, new TunnelNexthopsKey(dpnId))
@@ -368,14 +368,14 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
     }
 
  
-    public void removeLocalNextHop(Long dpId, Long vpnId, String ipAddress) {
+    public void removeLocalNextHop(BigInteger dpnId, Long vpnId, String ipAddress) {
 
         VpnNexthop nh = getVpnNexthop(vpnId, ipAddress, 0);
         if (nh != null) {
             // how to inform and remove dependent FIB entries??
             // we need to do it before the group is removed
             GroupEntity groupEntity = MDSALUtil.buildGroupEntity(
-                    dpId, nh.getEgressPointer(), ipAddress, GroupTypes.GroupIndirect, null);
+                    dpnId, nh.getEgressPointer(), ipAddress, GroupTypes.GroupIndirect, null);
             // remove Group ...
             mdsalManager.removeGroup(groupEntity);
             //update MD-SAL DS
@@ -387,7 +387,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
 
     }
 
-    public void removeRemoteNextHop(long dpnId, String ifName, String ipAddress) {
+    public void removeRemoteNextHop(BigInteger dpnId, String ifName, String ipAddress) {
 
         TunnelNexthop nh = getTunnelNexthop(dpnId, ipAddress);
         if (nh != null) {
index ccb7ea4dd61dae87876e2f9946704b6b6bf5d2a5..bdfd046b00c052f91dabf8113e6fbcdc029c3831 100644 (file)
@@ -8,22 +8,21 @@
 package org.opendaylight.vpnservice.nexthopmgr;
 
 
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-
+import java.math.BigInteger;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.BaseIds;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.L3tunnel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL3tunnel;
-import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager;
-import org.opendaylight.vpnservice.nexthopmgr.AbstractDataChangeListener;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.L3tunnel;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -92,7 +91,7 @@ public class OdlInterfaceChangeListener extends AbstractDataChangeListener<Inter
             Interface intrf) {
         LOG.trace("Removing interface : key: " + identifier + ", value=" + intrf );
         if (intrf.getType().equals(L3tunnel.class)) {
-            long dpnId = interfaceManager.getDpnForInterface(intrf.getName());
+            BigInteger dpnId = interfaceManager.getDpnForInterface(intrf.getName());
             IfL3tunnel intfData = intrf.getAugmentation(IfL3tunnel.class);
             IpAddress gatewayIp = intfData.getGatewayIp();
             IpAddress remoteIp = (gatewayIp == null) ? intfData.getRemoteIp() : gatewayIp;
index d6540f9e6f11fb357a281ffb4894e2e7209ca367..fdcb511fb87af2ae67376059f29f4955a403a5b8 100644 (file)
@@ -12,10 +12,11 @@ import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
 
+import java.math.BigInteger;
+
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.l3nexthop.rev150409.L3nexthop;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.l3nexthop.rev150409.l3nexthop.VpnNexthopsKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
-
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
 import java.lang.reflect.InvocationTargetException;
@@ -67,7 +68,7 @@ public class NexthopManagerTest {
   private final String ipAddress = "1.1.1.1";
   private final String macAddress = "11:22:33:44:55:66";
   private final int groupId = 5000;
-  private final long dpId = 1L;
+  private final BigInteger dpId = BigInteger.ONE;
   private final long vpnId = 2L;
 
   Map<InstanceIdentifier<?>, DataObject> written = new HashMap<>();
index 56e7c7e45661b3121620f7dbab5fce2c0ffb0ad4..d3214304b64b45217f00f94a576e4421fd7bb716 100644 (file)
@@ -1,10 +1,11 @@
 package org.opendaylight.vpnmanager.api;
 
-import java.util.Collection;
+import java.math.BigInteger;
 
+import java.util.Collection;
 import org.opendaylight.fibmanager.api.IFibManager;
 
 public interface IVpnManager {
-    Collection<Long> getDpnsForVpn(long vpnId);
+    Collection<BigInteger> getDpnsForVpn(long vpnId);
     void setFibService(IFibManager fibManager);
 }
index d3fdb24ba7dfd1bf8867411b1302fddbdea240d7..0f29dea16e9241eab61f042bd590b419dcf65209 100644 (file)
@@ -78,8 +78,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
     private IMdsalApiManager mdsalManager;
     private IInterfaceManager interfaceManager;
     private IdManagerService idManager;
-    private Map<Long, Collection<Long>> vpnToDpnsDb;
-    private Map<Long, Collection<String>> dpnToInterfaceDb;
+    private Map<Long, Collection<BigInteger>> vpnToDpnsDb;
+    private Map<BigInteger, Collection<String>> dpnToInterfaceDb;
 
     private static final FutureCallback<Void> DEFAULT_CALLBACK =
             new FutureCallback<Void>() {
@@ -181,7 +181,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
             //Get the rd of the vpn instance
             String rd = getRouteDistinguisher(intf.getVpnInstanceName());
 
-            long dpnId = interfaceManager.getDpnForInterface(intfName);
+            BigInteger dpnId = interfaceManager.getDpnForInterface(intfName);
             String nextHopIp = interfaceManager.getEndpointIpForDpn(dpnId);
 
 
@@ -249,8 +249,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         return rd;
     }
 
-    private synchronized void updateMappingDbs(long vpnId, long dpnId, String intfName, String rd) {
-        Collection<Long> dpnIds = vpnToDpnsDb.get(vpnId);
+    private synchronized void updateMappingDbs(long vpnId, BigInteger dpnId, String intfName, String rd) {
+        Collection<BigInteger> dpnIds = vpnToDpnsDb.get(vpnId);
         if(dpnIds == null) {
             dpnIds = new HashSet<>();
         }
@@ -267,7 +267,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         dpnToInterfaceDb.put(dpnId, intfNames);
     }
 
-    private synchronized void remoteFromMappingDbs(long vpnId, long dpnId, String inftName, String rd) {
+    private synchronized void remoteFromMappingDbs(long vpnId, BigInteger dpnId, String inftName, String rd) {
         Collection<String> intfNames = dpnToInterfaceDb.get(dpnId);
         if(intfNames == null) {
             return;
@@ -276,7 +276,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         dpnToInterfaceDb.put(dpnId, intfNames);
         //TODO: Delay 'DPN' removal so that other services can cleanup the entries for this dpn
         if(intfNames.isEmpty()) {
-            Collection<Long> dpnIds = vpnToDpnsDb.get(vpnId);
+            Collection<BigInteger> dpnIds = vpnToDpnsDb.get(vpnId);
             if(dpnIds == null) {
                 return;
             }
@@ -290,8 +290,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         LOG.trace("Bind service on interface {} for VPN: {}", intf, vpnName);
 
         long vpnId = getVpnId(vpnName);
-        long dpId = interfaceManager.getDpnForInterface(intf.getName()); 
-        if(dpId == 0L) {
+        BigInteger dpId = interfaceManager.getDpnForInterface(intf.getName()); 
+        if(dpId.equals(BigInteger.ZERO)) {
             LOG.warn("DPN for interface {} not found. Bind service on this interface aborted.", intf.getName());
             return;
         } else {
@@ -318,8 +318,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         mkInstructions.add(new InstructionInfo(InstructionType.goto_table, new long[] { gotoTableId }));
 
         List<MatchInfo> matches = new ArrayList<MatchInfo>();
-        matches.add(new MatchInfo(MatchFieldType.in_port, new long[] {
-                dpId, portNo }));
+        matches.add(new MatchInfo(MatchFieldType.in_port, new BigInteger[] {
+                dpId, BigInteger.valueOf(portNo) }));
 
         FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpId, VpnConstants.LPORT_INGRESS_TABLE, flowRef,
                           priority, flowName, 0, 0, COOKIE_VM_INGRESS_TABLE, matches, mkInstructions);
@@ -327,7 +327,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         mdsalManager.installFlow(flowEntity);
     }
 
-    private String getVpnInterfaceFlowRef(long dpId, short tableId,
+    private String getVpnInterfaceFlowRef(BigInteger dpId, short tableId,
             long vpnId, long portNo) {
         return new StringBuilder().append(dpId).append(tableId).append(vpnId).append(portNo).toString();
     }
@@ -409,8 +409,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         LOG.trace("Unbind service on interface {} for VPN: {}", intf, vpnName);
 
         long vpnId = getVpnId(vpnName);
-        long dpId = interfaceManager.getDpnForInterface(intf.getName());
-        if(dpId == 0L) {
+        BigInteger dpId = interfaceManager.getDpnForInterface(intf.getName());
+        if(dpId.equals(BigInteger.ZERO)) {
             LOG.warn("DPN for interface {} not found. Unbind service on this interface aborted.", intf.getName());
             return;
         } else {
@@ -426,8 +426,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         int priority = VpnConstants.DEFAULT_FLOW_PRIORITY;
 
         List<MatchInfo> matches = new ArrayList<MatchInfo>();
-        matches.add(new MatchInfo(MatchFieldType.in_port, new long[] {
-                dpId, portNo }));
+        matches.add(new MatchInfo(MatchFieldType.in_port, new BigInteger[] {
+                dpId, BigInteger.valueOf(portNo) }));
 
         FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpId, VpnConstants.LPORT_INGRESS_TABLE, flowRef,
                           priority, flowName, 0, 0, null, matches, null);
@@ -465,8 +465,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
         tx.submit();
     }
 
-    synchronized Collection<Long> getDpnsForVpn(long vpnId) {
-        Collection<Long> dpnIds = vpnToDpnsDb.get(vpnId);
+    synchronized Collection<BigInteger> getDpnsForVpn(long vpnId) {
+        Collection<BigInteger> dpnIds = vpnToDpnsDb.get(vpnId);
         if(dpnIds != null) {
             return ImmutableList.copyOf(dpnIds);
         } else {
index e4d6e8970bfad95ad640a91c5e5bdfedf7bcdd08..9acdc36c6995d7a6da2b234b15688855a11869ed 100644 (file)
@@ -101,7 +101,7 @@ public class VpnserviceProvider implements BindingAwareProvider, IVpnManager,
     }
 
     @Override
-    public Collection<Long> getDpnsForVpn(long vpnId) {
+    public Collection<BigInteger> getDpnsForVpn(long vpnId) {
         return vpnInterfaceManager.getDpnsForVpn(vpnId);
     }