- RpcResult<GetEgressPointerOutput> result = null;
- //Rpcs.<GetEgressPointerOutput> getRpcResult(false, output.build());
- return Futures.immediateFuture(result);
+ 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());
+
+ return Futures.immediateFuture(rpcResultBuilder.build());
+