added localDestination field to getNextHopPointer output
[vpnservice.git] / nexthopmgr / nexthopmgr-impl / src / main / java / org / opendaylight / vpnservice / nexthopmgr / NexthopManager.java
index 8239e9a8eb8c90e702e815ed30eaf12c19998068..9864b61c646202ac120b0aa3d971ce763d7addb3 100644 (file)
@@ -79,7 +79,6 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
     */
     public NexthopManager(final DataBroker db) {
         broker = db;
-        createNexthopPointerPool();
     }
 
     @Override
@@ -99,7 +98,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         this.idManager = idManager;
     }
 
-    private void createNexthopPointerPool() {
+    protected void createNexthopPointerPool() {
         CreateIdPoolInput createPool = new CreateIdPoolInputBuilder()
             .setPoolName("nextHopPointerPool")
             .setIdStart(1L)
@@ -375,11 +374,19 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
     @Override
     public Future<RpcResult<GetEgressPointerOutput>> getEgressPointer(
             GetEgressPointerInput input) {
-        long egressGroupId =
-                getNextHopPointer(input.getDpnId(), input.getVpnId(), input.getIpPrefix(), input.getNexthopIp());
 
         GetEgressPointerOutputBuilder output = new GetEgressPointerOutputBuilder();
-        output.setEgressPointer(egressGroupId);
+
+        String endpointIp = interfaceManager.getEndpointIpForDpn(input.getDpnId());
+        if (input.getNexthopIp().equals(endpointIp)) {
+            VpnNexthop vpnNextHop = getVpnNexthop(input.getVpnId(), input.getIpPrefix());
+            output.setEgressPointer(vpnNextHop.getEgressPointer());
+            output.setLocalDestination(true);
+        } else {
+            TunnelNexthop tunnelNextHop = getTunnelNexthop(input.getDpnId(), input.getNexthopIp());
+            output.setEgressPointer(tunnelNextHop.getEgressPointer());
+            output.setLocalDestination(false);
+        }
 
         RpcResultBuilder<GetEgressPointerOutput> rpcResultBuilder = RpcResultBuilder.success();
         rpcResultBuilder.withResult(output.build());
@@ -417,4 +424,4 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         Futures.addCallback(tx.submit(), DEFAULT_CALLBACK);
     }
 
-}
\ No newline at end of file
+}