added localDestination field to getNextHopPointer output 97/19997/1
authoresravik <vivek.v.srivastava@ericsson.com>
Mon, 11 May 2015 07:57:09 +0000 (13:27 +0530)
committeresravik <vivek.v.srivastava@ericsson.com>
Mon, 11 May 2015 08:06:48 +0000 (13:36 +0530)
Change-Id: Ic90238ad0eb47c3d65f51d7d338b23eb6ae4cdca
Signed-off-by: esravik <vivek.v.srivastava@ericsson.com>
nexthopmgr/nexthopmgr-api/src/main/yang/l3nexthop.yang
nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java

index 7a287b5b5816e0e669f2068d2c6a9f830a6bdf3b..8fdc6902279402ae725752327d9aa4ff166a10f5 100644 (file)
@@ -40,6 +40,7 @@ module l3nexthop {
                }
                output { 
                        leaf egressPointer {type uint32;} 
+                       leaf localDestination {type boolean;}
                }
        }
 }
\ No newline at end of file
index 546e60f8a91ee5970da596eb3d4cfdf3b9c1d66e..9864b61c646202ac120b0aa3d971ce763d7addb3 100644 (file)
@@ -374,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());