private void removeExternalRules(OpenstackNetwork osNet, String subNetCidr) { TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder(); sBuilder .matchEthType(Ethernet.TYPE_IPV4) .matchTunnelId(Long.valueOf(osNet.segmentId())) .matchIPSrc(IpPrefix.valueOf(subNetCidr)) .matchEthDst(Constants.DEFAULT_GATEWAY_MAC); nodeService .completeNodes() .forEach( node -> { ForwardingObjective.Flag flag = node.type().equals(GATEWAY) ? ForwardingObjective.Flag.VERSATILE : ForwardingObjective.Flag.SPECIFIC; RulePopulatorUtil.removeRule( flowObjectiveService, appId, node.intBridge(), sBuilder.build(), flag, ROUTING_RULE_PRIORITY); }); }
@Override public void removeRouterInterface(OpenstackRouterInterface routerIface) { OpenstackRouter osRouter = openstackService.router(routerIface.id()); if (osRouter == null) { log.warn("Failed to remove router interface {}", routerIface); return; } OpenstackSubnet osSubnet = openstackService.subnet(routerIface.subnetId()); OpenstackNetwork osNet = openstackService.network(osSubnet.networkId()); unsetGatewayIcmp( Ip4Address.valueOf(openstackService.subnet(routerIface.subnetId()).gatewayIp())); unsetRoutes(osRouter, osSubnet); if (osRouter.gatewayExternalInfo().externalFixedIps().size() > 0) { unsetExternalConnection(osRouter, osNet.id(), osSubnet.cidr()); } log.info("Disconnected {} from router {}", osSubnet.cidr(), osRouter.name()); }
private void populateExternalRules(OpenstackNetwork osNet, OpenstackSubnet osSubNet) { populateCnodeToGateway(Long.valueOf(osNet.segmentId()), osSubNet.cidr()); populateGatewayToController(Long.valueOf(osNet.segmentId()), osSubNet.cidr()); }