internal/clientinfo: use all possible source IP for listing clients

This commit is contained in:
Cuong Manh Le
2023-08-04 20:03:15 +00:00
committed by Cuong Manh Le
parent 46509be8a0
commit e5389ffecb
3 changed files with 32 additions and 5 deletions
+15 -2
View File
@@ -47,6 +47,15 @@ func (m *mdns) String() string {
return "mdns"
}
func (m *mdns) List() []string {
var ips []string
m.name.Range(func(key, value any) bool {
ips = append(ips, key.(string))
return true
})
return ips
}
func (m *mdns) init(quitCh chan struct{}) error {
ifaces, err := multicastInterfaces()
if err != nil {
@@ -123,8 +132,11 @@ func (m *mdns) readLoop(conn *net.UDPConn) {
}
var ip, name string
for _, answer := range msg.Answer {
switch ar := answer.(type) {
rrs := make([]dns.RR, 0, len(msg.Answer)+len(msg.Extra))
rrs = append(rrs, msg.Answer...)
rrs = append(rrs, msg.Extra...)
for _, rr := range rrs {
switch ar := rr.(type) {
case *dns.A:
ip, name = ar.A.String(), ar.Hdr.Name
case *dns.AAAA:
@@ -151,6 +163,7 @@ func (m *mdns) readLoop(conn *net.UDPConn) {
func (m *mdns) probe(conns []*net.UDPConn, remoteAddr net.Addr) error {
msg := new(dns.Msg)
msg.Question = make([]dns.Question, len(services))
msg.Compress = true
for i, service := range services {
msg.Question[i] = dns.Question{
Name: dns.CanonicalName(service),