*/
public NexthopManager(final DataBroker db) {
broker = db;
- createNexthopPointerPool();
}
@Override
this.idManager = idManager;
}
- private void createNexthopPointerPool() {
+ protected void createNexthopPointerPool() {
CreateIdPoolInput createPool = new CreateIdPoolInputBuilder()
.setPoolName("nextHopPointerPool")
.setIdStart(1L)
@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());
Futures.addCallback(tx.submit(), DEFAULT_CALLBACK);
}
-}
\ No newline at end of file
+}