核心类三个
1 UtilAutoConfiguration
2 InetUtils
3 InetUtilsProperties
/** for testing */ boolean ignoreInterface(String interfaceName) {
for (String regex : this.properties.getIgnoredInterfaces()) {
if (interfaceName.matches(regex)) {
log.trace("Ignoring interface: " + interfaceName);
return true;
}
}
return false;
}
interfaceName = Intel(R) PRO/1000 MT Network Connection
boolean ignoreAddress(InetAddress address) {
//如果设置使用本地地址注册,且address是本地地址的话,就直接返回,通过。
if (this.properties.isUseOnlySiteLocalInterfaces() && !address.isSiteLocalAddress()) {
log.trace("Ignoring address: " + address.getHostAddress());
return true;
}
//更喜欢的网络地址,就是白名单
for (String regex : this.properties.getPreferredNetworks()) {
if (!address.getHostAddress().matches(regex) && !address.getHostAddress().startsWith(regex)) {
//address.getHostAddress()=192.168.29.28 regex=配置的192.168.29.45
log.trace("Ignoring address: " + address.getHostAddress());
return true;
}
}
return false;
}