import javax.inject.Inject;
import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar;
+import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
import org.opendaylight.infrautils.inject.AbstractLifecycle;
+import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.netvirt.elanmanager.api.IElanService;
-import org.opendaylight.netvirt.neutronvpn.interfaces.INeutronVpnManager;
+import org.opendaylight.netvirt.fibmanager.api.IFibManager;
+import org.opendaylight.netvirt.natservice.ha.NatDataUtil;
+import org.opendaylight.netvirt.vpnmanager.api.IVpnFootprintService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
private final DataBroker dataBroker;
private final IMdsalApiManager mdsalManager;
private final ItmRpcService itmManager;
- private final OdlInterfaceRpcService interfaceManager;
+ private final OdlInterfaceRpcService odlInterfaceRpcService;
private final IdManagerService idManager;
private final NAPTSwitchSelector naptSwitchSelector;
private final NatMode natMode;
- private final INeutronVpnManager nvpnManager;
private final ExternalRoutersListener externalRouterListener;
private final IElanService elanManager;
+ private final IInterfaceManager interfaceManager;
+ private final IVpnFootprintService vpnFootprintService;
+ private final IFibManager fibManager;
+ private final NatDataUtil natDataUtil;
+ private final DataTreeEventCallbackRegistrar eventCallbacks;
+ private final NatOverVxlanUtil natOverVxlanUtil;
+ private final Ipv6SubnetFlowProgrammer ipv6SubnetFlowProgrammer;
@Inject
public SnatServiceImplFactory(final DataBroker dataBroker, final IMdsalApiManager mdsalManager,
- final ItmRpcService itmManager,
- final OdlInterfaceRpcService interfaceManager,
- final IdManagerService idManager,
- final NAPTSwitchSelector naptSwitchSelector,
- final NatserviceConfig config,
- final INeutronVpnManager nvpnManager,
- final ExternalRoutersListener externalRouterListener,
- final IElanService elanManager) {
+ final ItmRpcService itmManager,
+ final OdlInterfaceRpcService odlInterfaceRpcService,
+ final IdManagerService idManager,
+ final NAPTSwitchSelector naptSwitchSelector,
+ final NatserviceConfig config,
+ final ExternalRoutersListener externalRouterListener,
+ final IElanService elanManager,
+ final IInterfaceManager interfaceManager,
+ final IVpnFootprintService vpnFootprintService,
+ final IFibManager fibManager,
+ final NatDataUtil natDataUtil,
+ final DataTreeEventCallbackRegistrar eventCallbacks,
+ final NatOverVxlanUtil natOverVxlanUtil,
+ final Ipv6SubnetFlowProgrammer ipv6SubnetFlowProgrammer) {
this.dataBroker = dataBroker;
this.mdsalManager = mdsalManager;
this.itmManager = itmManager;
- this.interfaceManager = interfaceManager;
+ this.odlInterfaceRpcService = odlInterfaceRpcService;
this.idManager = idManager;
this.naptSwitchSelector = naptSwitchSelector;
if (config != null) {
} else {
this.natMode = null;
}
- this.nvpnManager = nvpnManager;
this.externalRouterListener = externalRouterListener;
this.elanManager = elanManager;
+ this.interfaceManager = interfaceManager;
+ this.vpnFootprintService = vpnFootprintService;
+ this.fibManager = fibManager;
+ this.natDataUtil = natDataUtil;
+ this.eventCallbacks = eventCallbacks;
+ this.natOverVxlanUtil = natOverVxlanUtil;
+ this.ipv6SubnetFlowProgrammer = ipv6SubnetFlowProgrammer;
}
@Override
LOG.info("{} close", getClass().getSimpleName());
}
+ @Nullable
public AbstractSnatService createFlatVlanSnatServiceImpl() {
-
if (natMode == NatMode.Conntrack) {
- return new FlatVlanConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, interfaceManager,
- idManager, naptSwitchSelector);
+ return new FlatVlanConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService,
+ idManager, naptSwitchSelector, interfaceManager, vpnFootprintService, fibManager, natDataUtil,
+ eventCallbacks);
}
return null;
}
- public AbstractSnatService createVxlanGreSnatServiceImpl() {
+ public Ipv6ForwardingService createFlatVlanIpv6ServiceImpl() {
+ return new Ipv6ForwardingService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService,
+ idManager, naptSwitchSelector, interfaceManager, ipv6SubnetFlowProgrammer);
+ }
+ @Nullable
+ public AbstractSnatService createVxlanGreSnatServiceImpl() {
if (natMode == NatMode.Conntrack) {
- NatOverVxlanUtil.validateAndCreateVxlanVniPool(dataBroker, nvpnManager, idManager,
- NatConstants.ODL_VNI_POOL_NAME);
- return new VxlanGreConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, interfaceManager,
- idManager, naptSwitchSelector, externalRouterListener, elanManager);
+ return new VxlanGreConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService,
+ idManager, naptSwitchSelector, externalRouterListener, elanManager, interfaceManager,
+ vpnFootprintService, fibManager, natDataUtil, eventCallbacks, natOverVxlanUtil);
}
return null;
}
-
-
}