public Address(String hostname, InetAddress inetAddress, int port) { checkNotNull(inetAddress, "inetAddress can't be null"); type = (inetAddress instanceof Inet4Address) ? IPV4 : IPV6; String[] addressArgs = inetAddress.getHostAddress().split("\\%"); host = hostname != null ? hostname : addressArgs[0]; if (addressArgs.length == 2) { scopeId = addressArgs[1]; } this.port = port; hostSet = !AddressUtil.isIpAddress(host); }
public Address(String hostname, InetAddress inetAddress, int port) { checkNotNull(inetAddress, "inetAddress can't be null"); type = (inetAddress instanceof Inet4Address) ? IPV4 : IPV6; String[] addressArgs = inetAddress.getHostAddress().split("\\%"); host = hostname != null ? hostname : addressArgs[0]; if (addressArgs.length == 2) { scopeId = addressArgs[1]; } this.port = port; hostSet = !AddressUtil.isIpAddress(host); }
@Override protected Set<MemberGroup> createInternalMemberGroups(Collection<? extends Member> members) { Map<Integer, MemberGroup> memberGroups = new HashMap<Integer, MemberGroup>(); for (Member member : members) { String host = ((MemberImpl) member).getAddress().getHost(); for (Entry<Integer, MemberGroupConfig> entry : memberGroupConfigMap.entrySet()) { Collection<String> interfaces = entry.getValue().getInterfaces(); boolean match; if (AddressUtil.isIpAddress(host)) { match = AddressUtil.matchAnyInterface(host, interfaces); } else { match = AddressUtil.matchAnyDomain(host, interfaces); } if (match) { MemberGroup group = memberGroups.get(entry.getKey()); if (group == null) { group = new DefaultMemberGroup(); memberGroups.put(entry.getKey(), group); } group.addMember(member); break; } } } return new HashSet<MemberGroup>(memberGroups.values()); } }
@Override protected Set<MemberGroup> createInternalMemberGroups(Collection<? extends Member> members) { Map<Integer, MemberGroup> memberGroups = new HashMap<Integer, MemberGroup>(); for (Member member : members) { String host = ((MemberImpl) member).getAddress().getHost(); for (Entry<Integer, MemberGroupConfig> entry : memberGroupConfigMap.entrySet()) { Collection<String> interfaces = entry.getValue().getInterfaces(); boolean match; if (AddressUtil.isIpAddress(host)) { match = AddressUtil.matchAnyInterface(host, interfaces); } else { match = AddressUtil.matchAnyDomain(host, interfaces); } if (match) { MemberGroup group = memberGroups.get(entry.getKey()); if (group == null) { group = new DefaultMemberGroup(); memberGroups.put(entry.getKey(), group); } group.addMember(member); break; } } } return new HashSet<MemberGroup>(memberGroups.values()); } }
private Map<String, String> createAddressToDomainMap(TcpIpConfig tcpIpConfig) { if (!tcpIpConfig.isEnabled()) { return Collections.emptyMap(); } Collection<String> possibleAddresses = TcpIpJoiner.getConfigurationMembers(config); // LinkedHashMap is to guarantee order Map<String, String> addressDomainMap = createLinkedHashMap(possibleAddresses.size()); for (String possibleAddress : possibleAddresses) { String addressHolder = AddressUtil.getAddressHolder(possibleAddress).getAddress(); if (AddressUtil.isIpAddress(addressHolder)) { // there may be a domain registered for this address if (!addressDomainMap.containsKey(addressHolder)) { addressDomainMap.put(addressHolder, null); } } else { try { Collection<String> addresses = resolveDomainNames(addressHolder); for (String address : addresses) { addressDomainMap.put(address, addressHolder); } } catch (UnknownHostException e) { logger.warning("Cannot resolve hostname: '" + addressHolder + "'"); } } } return addressDomainMap; }
private Map<String, String> createAddressToDomainMap(TcpIpConfig tcpIpConfig) { if (!tcpIpConfig.isEnabled()) { return Collections.emptyMap(); } Collection<String> possibleAddresses = TcpIpJoiner.getConfigurationMembers(config); // LinkedHashMap is to guarantee order Map<String, String> addressDomainMap = createLinkedHashMap(possibleAddresses.size()); for (String possibleAddress : possibleAddresses) { String addressHolder = AddressUtil.getAddressHolder(possibleAddress).getAddress(); if (AddressUtil.isIpAddress(addressHolder)) { // there may be a domain registered for this address if (!addressDomainMap.containsKey(addressHolder)) { addressDomainMap.put(addressHolder, null); } } else { try { Collection<String> addresses = resolveDomainNames(addressHolder); for (String address : addresses) { addressDomainMap.put(address, addressHolder); } } catch (UnknownHostException e) { logger.warning("Cannot resolve hostname: '" + addressHolder + "'"); } } } return addressDomainMap; }
private List<InterfaceDefinition> getInterfaces() { NetworkConfig networkConfig = config.getNetworkConfig(); TcpIpConfig tcpIpConfig = networkConfig.getJoin().getTcpIpConfig(); // address -> domain Map<String, String> addressDomainMap = createAddressToDomainMap(tcpIpConfig); // must preserve insertion order List<InterfaceDefinition> interfaceDefs = new ArrayList<InterfaceDefinition>(); if (networkConfig.getInterfaces().isEnabled()) { Collection<String> configInterfaces = networkConfig.getInterfaces().getInterfaces(); for (String configInterface : configInterfaces) { if (!AddressUtil.isIpAddress(configInterface)) { logger.warning("'" + configInterface + "' is not an IP address! Removing from interface list."); continue; } // add interfaces matching to members in TcpIpConfig appendMatchingInterfaces(interfaceDefs, addressDomainMap, configInterface); // add default interface definition interfaceDefs.add(new InterfaceDefinition(null, configInterface)); } logger.info("Interfaces is enabled, trying to pick one address matching to one of: " + interfaceDefs); } else if (tcpIpConfig.isEnabled()) { for (Entry<String, String> entry : addressDomainMap.entrySet()) { interfaceDefs.add(new InterfaceDefinition(entry.getValue(), entry.getKey())); } logger.info("Interfaces is disabled, trying to pick one address from TCP-IP config addresses: " + interfaceDefs); } return interfaceDefs; }
private List<InterfaceDefinition> getInterfaces() { NetworkConfig networkConfig = config.getNetworkConfig(); TcpIpConfig tcpIpConfig = networkConfig.getJoin().getTcpIpConfig(); // address -> domain Map<String, String> addressDomainMap = createAddressToDomainMap(tcpIpConfig); // must preserve insertion order List<InterfaceDefinition> interfaceDefs = new ArrayList<InterfaceDefinition>(); if (networkConfig.getInterfaces().isEnabled()) { Collection<String> configInterfaces = networkConfig.getInterfaces().getInterfaces(); for (String configInterface : configInterfaces) { if (!AddressUtil.isIpAddress(configInterface)) { logger.warning("'" + configInterface + "' is not an IP address! Removing from interface list."); continue; } // add interfaces matching to members in TcpIpConfig appendMatchingInterfaces(interfaceDefs, addressDomainMap, configInterface); // add default interface definition interfaceDefs.add(new InterfaceDefinition(null, configInterface)); } logger.info("Interfaces is enabled, trying to pick one address matching to one of: " + interfaceDefs); } else if (tcpIpConfig.isEnabled()) { for (Entry<String, String> entry : addressDomainMap.entrySet()) { interfaceDefs.add(new InterfaceDefinition(entry.getValue(), entry.getKey())); } logger.info("Interfaces is disabled, trying to pick one address from TCP-IP config addresses: " + interfaceDefs); } return interfaceDefs; }
private Address getRequiredMemberAddress() { TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig(); String host = tcpIpConfig.getRequiredMember(); try { AddressHolder addressHolder = AddressUtil.getAddressHolder(host, config.getNetworkConfig().getPort()); if (AddressUtil.isIpAddress(addressHolder.getAddress())) { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } InterfacesConfig interfaces = config.getNetworkConfig().getInterfaces(); if (interfaces.isEnabled()) { InetAddress[] inetAddresses = InetAddress.getAllByName(addressHolder.getAddress()); if (inetAddresses.length > 1) { for (InetAddress inetAddress : inetAddresses) { if (AddressUtil.matchAnyInterface(inetAddress.getHostAddress(), interfaces.getInterfaces())) { return new Address(inetAddress, addressHolder.getPort()); } } } else if (AddressUtil.matchAnyInterface(inetAddresses[0].getHostAddress(), interfaces.getInterfaces())) { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } } else { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } } catch (final Exception e) { logger.warning(e); } return null; }
private Address getRequiredMemberAddress() { TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig(); String host = tcpIpConfig.getRequiredMember(); try { AddressHolder addressHolder = AddressUtil.getAddressHolder(host, config.getNetworkConfig().getPort()); if (AddressUtil.isIpAddress(addressHolder.getAddress())) { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } InterfacesConfig interfaces = config.getNetworkConfig().getInterfaces(); if (interfaces.isEnabled()) { InetAddress[] inetAddresses = InetAddress.getAllByName(addressHolder.getAddress()); if (inetAddresses.length > 1) { for (InetAddress inetAddress : inetAddresses) { if (AddressUtil.matchAnyInterface(inetAddress.getHostAddress(), interfaces.getInterfaces())) { return new Address(inetAddress, addressHolder.getPort()); } } } else if (AddressUtil.matchAnyInterface(inetAddresses[0].getHostAddress(), interfaces.getInterfaces())) { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } } else { return new Address(addressHolder.getAddress(), addressHolder.getPort()); } } catch (final Exception e) { logger.warning(e); } return null; }