* 实现周期采集、快照缓存、本地 HTTP API 和主动上报 * 补齐 Linux 和 Windows 主机、网络、资源、进程和 TCP 采集 * 添加服务生命周期管理、配置加载、构建脚本和测试覆盖 BREAKING CHANGE: network.ips 拆分为 network.ipv4s 和 network.ipv6s。
28 lines
551 B
Go
28 lines
551 B
Go
package collector
|
|
|
|
import (
|
|
"net"
|
|
"sort"
|
|
)
|
|
|
|
// networkAddressSets separates interface addresses into deterministic IPv4 and IPv6 lists.
|
|
func networkAddressSets(values map[string]struct{}) (ipv4s []string, ipv6s []string) {
|
|
for value := range values {
|
|
host, _, err := net.ParseCIDR(value)
|
|
if err != nil {
|
|
host = net.ParseIP(value)
|
|
}
|
|
if host == nil {
|
|
continue
|
|
}
|
|
if host.To4() != nil {
|
|
ipv4s = append(ipv4s, value)
|
|
continue
|
|
}
|
|
ipv6s = append(ipv6s, value)
|
|
}
|
|
sort.Strings(ipv4s)
|
|
sort.Strings(ipv6s)
|
|
return ipv4s, ipv6s
|
|
}
|