use of org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.config.rev181010.Ipv6serviceConfig in project netvirt by opendaylight.
the class Ipv6ConfigChangeListener method convertSwitchToControllerMode.
private void convertSwitchToControllerMode(Ipv6serviceConfig updated) {
List<IVirtualNetwork> networks = ifMgr.getNetworkCache();
for (IVirtualNetwork network : networks) {
VirtualNetwork vnet = ifMgr.getNetwork(network.getNetworkUuid());
VirtualPort routerPort = ifMgr.getRouterV6InterfaceForNetwork(network.getNetworkUuid());
Collection<VirtualNetwork.DpnInterfaceInfo> dpnIfaceList = vnet.getDpnIfaceList();
LOG.info("convertSwitchToControllerMode::Network : {} routerPort: {}", network, routerPort);
final long networkElanTag = ifMgr.getNetworkElanTag(network.getNetworkUuid());
// check if any VM is booted already before subnet is added to the router
if (routerPort == null) {
LOG.warn("convertSwitchToControllerMode:: RouterPort not available for network:{}", vnet.getNetworkUuid());
continue;
}
for (VirtualNetwork.DpnInterfaceInfo dpnIfaceInfo : dpnIfaceList) {
ifMgr.getNDExecutorService().execute(() -> {
LOG.info("convertSwitchToControllerMode : Deleting Old flows on Switch Mode");
ifMgr.checkVmBootBeforeSubnetAddRouter(dpnIfaceInfo, routerPort, networkElanTag, Ipv6ServiceConstants.DEL_FLOW);
LOG.info("convertSwitchToControllerMode : Installing new flows on Controller Mode");
MacAddress ifaceMac = MacAddress.getDefaultInstance(routerPort.getMacAddress());
Ipv6Address llAddr = Ipv6Util.getIpv6LinkLocalAddressFromMac(ifaceMac);
for (Ipv6Address ndTarget : routerPort.getIpv6Addresses()) {
LOG.info("convertSwitchToControllerMode:: Deleting NS punt Flow for : {}", ndTarget.getValue());
// TODO del can be removed as key is same for add flows too
ifMgr.programIcmpv6NsDefaultPuntFlows(routerPort, ndTarget, Ipv6ServiceConstants.DEL_FLOW);
dpnIfaceInfo.clearNdTargetFlowInfo();
ifMgr.programIcmpv6NSPuntFlowForAddress(routerPort.getNetworkID(), ndTarget, Ipv6ServiceConstants.ADD_FLOW);
}
ifMgr.programIcmpv6NSPuntFlowForAddress(routerPort.getNetworkID(), llAddr, Ipv6ServiceConstants.ADD_FLOW);
});
}
}
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.config.rev181010.Ipv6serviceConfig in project netvirt by opendaylight.
the class Ipv6ConfigChangeListener method convertControllerToSwitchMode.
private void convertControllerToSwitchMode(Ipv6serviceConfig updated) {
List<IVirtualNetwork> networks = ifMgr.getNetworkCache();
int lportTag;
for (IVirtualNetwork network : networks) {
VirtualNetwork vnet = ifMgr.getNetwork(network.getNetworkUuid());
VirtualPort routerPort = ifMgr.getRouterV6InterfaceForNetwork(network.getNetworkUuid());
Collection<VirtualNetwork.DpnInterfaceInfo> dpnIfaceList = vnet.getDpnIfaceList();
LOG.info("convertControllerToSwitchMode:: Network : {} routerPort: {}", network, routerPort);
final long networkElanTag = ifMgr.getNetworkElanTag(network.getNetworkUuid());
// check if any VM is booted already before subnet is added to the router
for (VirtualNetwork.DpnInterfaceInfo dpnIfaceInfo : dpnIfaceList) {
ifMgr.getNDExecutorService().execute(() -> {
LOG.info("convertControllerToSwitchMode : Deleting Old flows on Switch Mode");
for (Ipv6Address ipv6Address : routerPort.getIpv6Addresses()) {
LOG.info("convertControllerToSwitchMode:: Deleting NS punt flow for : {}", ipv6Address.getValue());
ifMgr.programIcmpv6NSPuntFlowForAddress(network.getNetworkUuid(), ipv6Address, Ipv6ServiceConstants.DEL_FLOW);
}
ifMgr.checkVmBootBeforeSubnetAddRouter(dpnIfaceInfo, routerPort, networkElanTag, Ipv6ServiceConstants.ADD_FLOW);
for (Ipv6Address ndTarget : routerPort.getIpv6Addresses()) {
LOG.info("convertControllerToSwitchM0ode:: Installing NS punt Flow for : {}", ndTarget.getValue());
ifMgr.programIcmpv6NsDefaultPuntFlows(routerPort, ndTarget, Ipv6ServiceConstants.ADD_FLOW);
}
});
}
}
}
Aggregations