@Override
 public void inetAddressAdded(NetworkTopologyEvent nte) {
   if (nte.getInetAddress() instanceof Inet6Address
       && !ProfileUtils.getPreferences(
               ProfileManager.getDefault().getActiveProfile(), ZeroConfService.class, false)
           .getBoolean(ZeroConfService.IPv6, true)) {
     log.debug("Ignoring IPv6 address {}", nte.getInetAddress().getHostAddress());
     return;
   }
   if (nte.getInetAddress() instanceof Inet4Address
       && !ProfileUtils.getPreferences(
               ProfileManager.getDefault().getActiveProfile(), ZeroConfService.class, false)
           .getBoolean(ZeroConfService.IPv4, true)) {
     log.debug("Ignoring IPv4 address {}", nte.getInetAddress().getHostAddress());
     return;
   }
   if (!ZeroConfService.netServices.containsKey(nte.getInetAddress())) {
     log.debug("Adding address {}", nte.getInetAddress().getHostAddress());
     ZeroConfService.netServices.put(nte.getInetAddress(), nte.getDNS());
     ZeroConfService.allServices()
         .stream()
         .forEach(
             (service) -> {
               try {
                 if (!service.serviceInfos.containsKey(nte.getDNS().getInetAddress())) {
                   log.debug(
                       "Publishing zeroConf service for '{}' on {}",
                       service.key(),
                       nte.getInetAddress().getHostAddress());
                   nte.getDNS().registerService(service.addServiceInfo(nte.getDNS()));
                   service
                       .listeners
                       .stream()
                       .forEach(
                           (listener) -> {
                             listener.servicePublished(
                                 new ZeroConfServiceEvent(service, nte.getDNS()));
                           });
                 }
               } catch (IOException ex) {
                 log.error(ex.getLocalizedMessage(), ex);
               }
             });
   } else {
     log.debug("Address {} already known.", nte.getInetAddress().getHostAddress());
   }
 }
 @Override
 public void inetAddressRemoved(NetworkTopologyEvent nte) {
   log.debug("Removing address {}", nte.getInetAddress().toString());
   ZeroConfService.netServices.remove(nte.getInetAddress());
   nte.getDNS().unregisterAllServices();
   ZeroConfService.allServices()
       .stream()
       .map(
           (service) -> {
             service.serviceInfos.remove(nte.getInetAddress());
             return service;
           })
       .forEach(
           (service) -> {
             service
                 .listeners
                 .stream()
                 .forEach(
                     (listener) -> {
                       listener.servicePublished(
                           new ZeroConfServiceEvent(service, nte.getDNS()));
                     });
           });
 }