@Override public Set<Host> getHosts(IpAddress ip) { Set<Host> ipset = new HashSet<>(); for (Host h : hosts.values()) { if (h.ipAddresses().contains(ip)) { ipset.add(h); } } return ipset; }
protected Ip4Address getIp(Host host) { return host.ipAddresses().stream().findFirst().get().getIp4Address(); }
/** * Starts monitoring the hosts by IP Address. */ private void startMonitoring() { store.getHosts().forEach(host -> { host.ipAddresses().forEach(ip -> { monitor.addMonitoringFor(ip); }); }); }
/** * Stops monitoring the hosts by IP Address. */ private void stopMonitoring() { store.getHosts().forEach(host -> { host.ipAddresses().forEach(ip -> { monitor.stopMonitoring(ip); }); }); }
@Override public void event(HostEvent event) { log.debug("Received HostEvent {}", event); Host host = event.subject(); switch (event.type()) { case HOST_ADDED: // FALLTHROUGH case HOST_UPDATED: for (IpAddress ipAddress : host.ipAddresses()) { updateMac(ipAddress, host.mac()); } break; case HOST_REMOVED: for (IpAddress ipAddress : host.ipAddresses()) { ip2Mac.remove(ipAddress); } break; default: break; } } }
@Override public void hostVanished(HostId hostId) { checkNotNull(hostId, HOST_ID_NULL); checkValidity(); Host host = store.getHost(hostId); if (!allowedToChange(hostId)) { log.info("Request to remove {} is ignored due to provider mismatch", hostId); return; } if (monitorHosts) { host.ipAddresses().forEach(ip -> { monitor.stopMonitoring(ip); }); } store.removeHost(hostId); }
/** * Returns a description of the given host. * * @param host the host * @return a description of the host */ public static HostDescription descriptionOf(Host host) { checkNotNull(host, "Must supply a non-null Host"); return new DefaultHostDescription(host.mac(), host.vlan(), host.locations(), host.ipAddresses(), host.configured(), (SparseAnnotations) host.annotations()); } }
peer.ipAddresses().forEach(peerIp -> { flowObjectiveService.forward(peer.location().deviceId(), createPeerObjBuilder(toPeerL3Unicast, peerIp.toIpPrefix()).remove());
@Override public ObjectNode encode(Host host, CodecContext context) { checkNotNull(host, "Host cannot be null"); final JsonCodec<HostLocation> locationCodec = context.codec(HostLocation.class); final ObjectNode result = context.mapper().createObjectNode() .put("id", host.id().toString()) .put("mac", host.mac().toString()) .put("vlan", host.vlan().toString()) .put("innerVlan", host.innerVlan().toString()) .put("outerTpid", host.tpid().toString()) .put("configured", host.configured()); final ArrayNode jsonIpAddresses = result.putArray("ipAddresses"); for (final IpAddress ipAddress : host.ipAddresses()) { jsonIpAddresses.add(ipAddress.toString()); } result.set("ipAddresses", jsonIpAddresses); final ArrayNode jsonLocations = result.putArray("locations"); for (final HostLocation location : host.locations()) { jsonLocations.add(locationCodec.encode(location, context)); } result.set("locations", jsonLocations); return annotate(result, host, context); }
protected boolean isValidHost(Host host) { return !host.ipAddresses().isEmpty() && host.annotations().value(VXLAN_ID) != null && host.annotations().value(NETWORK_ID) != null && host.annotations().value(TENANT_ID) != null && host.annotations().value(PORT_ID) != null; }
public void onVirtualPortDeleted(VtnRscEventFeedback l3Feedback) { VirtualPort vPort = l3Feedback.virtualPort(); HostId hostId = HostId.hostId(vPort.macAddress()); BasicHostConfig basicHostConfig = networkConfigService.addConfig(hostId, BasicHostConfig.class); Set<IpAddress> ips = hostService.getHost(hostId).ipAddresses(); for (FixedIp fixedIp : vPort.fixedIps()) { ips.remove(fixedIp.ip()); } basicHostConfig.setIps(ips).apply(); }
private void peerAdded(HostEvent event) { Host peer = event.subject(); Optional<Interface> peerIntf = interfaceService.getInterfacesByPort(peer.location()).stream() .filter(intf -> interfaces.isEmpty() || interfaces.contains(intf.name())) .filter(intf -> peer.vlan().equals(intf.vlan())) .findFirst(); if (!peerIntf.isPresent()) { log.debug("Adding peer {}/{} on {} but the interface is not configured", peer.mac(), peer.vlan(), peer.location()); return; } // Generate L3 Unicast groups and store it in the map int toRouterL3Unicast = createPeerGroup(peer.mac(), peerIntf.get().mac(), peer.vlan(), peer.location().deviceId(), controlPlaneConnectPoint.port()); int toPeerL3Unicast = createPeerGroup(peerIntf.get().mac(), peer.mac(), peer.vlan(), peer.location().deviceId(), peer.location().port()); peerNextId.put(peer, ImmutableSortedSet.of(toRouterL3Unicast, toPeerL3Unicast)); // From peer to router peerIntf.get().ipAddresses().forEach(routerIp -> { flowObjectiveService.forward(peer.location().deviceId(), createPeerObjBuilder(toRouterL3Unicast, routerIp.ipAddress().toIpPrefix()).add()); }); // From router to peer peer.ipAddresses().forEach(peerIp -> { flowObjectiveService.forward(peer.location().deviceId(), createPeerObjBuilder(toPeerL3Unicast, peerIp.toIpPrefix()).add()); }); }
if ((host == null || !host.ipAddresses().contains(targetIp6Address))) {
/** * Prints information about a host. * * @param host end-station host */ protected void printHost(Host host) { if (shortOnly) { print(FMT_SHORT, host.id(), host.mac(), host.locations(), host.vlan(), host.ipAddresses()); } else { print(FMT, host.id(), host.mac(), host.locations(), host.vlan(), host.ipAddresses(), annotations(host.annotations()), host.innerVlan(), host.tpid().toString(), host.providerId().scheme(), host.providerId().id(), host.configured()); } } }