remove mdns dante node discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
11
dante.go
11
dante.go
@@ -75,17 +75,6 @@ func (t *Tendrils) handlePTPPacket(ifaceName string, srcIP net.IP, data []byte)
|
|||||||
t.nodes.SetDanteClockMaster(srcIP)
|
t.nodes.SetDanteClockMaster(srcIP)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Nodes) UpdateDante(name string, ip net.IP, arcPort int) {
|
|
||||||
if n.t.DebugDante {
|
|
||||||
log.Printf("[dante] mdns response: %s -> %s (arc port %d)", name, ip, arcPort)
|
|
||||||
}
|
|
||||||
n.Update(nil, nil, []net.IP{ip}, "", name, "dante")
|
|
||||||
|
|
||||||
if arcPort > 0 {
|
|
||||||
go n.t.probeDanteDeviceWithPort(ip, arcPort)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *Nodes) UpdateDanteTxChannels(name string, ip net.IP, channels string) {
|
func (n *Nodes) UpdateDanteTxChannels(name string, ip net.IP, channels string) {
|
||||||
n.mu.Lock()
|
n.mu.Lock()
|
||||||
defer n.mu.Unlock()
|
defer n.mu.Unlock()
|
||||||
|
|||||||
68
mdns.go
68
mdns.go
@@ -14,30 +14,6 @@ const (
|
|||||||
mdnsAddr = "224.0.0.251:5353"
|
mdnsAddr = "224.0.0.251:5353"
|
||||||
)
|
)
|
||||||
|
|
||||||
func extractDanteName(s string) string {
|
|
||||||
var name string
|
|
||||||
for _, prefix := range []string{"._netaudio-", "._dante"} {
|
|
||||||
if idx := strings.Index(s, prefix); idx > 0 {
|
|
||||||
name = s[:idx]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if name == "" {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
if at := strings.LastIndex(name, "@"); at >= 0 {
|
|
||||||
name = name[at+1:]
|
|
||||||
}
|
|
||||||
if strings.Contains(name, ".in-addr") {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return name
|
|
||||||
}
|
|
||||||
|
|
||||||
func isDanteService(s string) bool {
|
|
||||||
return strings.Contains(s, "_netaudio-") || strings.Contains(s, "._dante")
|
|
||||||
}
|
|
||||||
|
|
||||||
func isSkaarhojService(s string) bool {
|
func isSkaarhojService(s string) bool {
|
||||||
return strings.Contains(s, "_skaarhoj._tcp")
|
return strings.Contains(s, "_skaarhoj._tcp")
|
||||||
}
|
}
|
||||||
@@ -109,8 +85,6 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
|
|
||||||
aRecords := map[string]net.IP{}
|
aRecords := map[string]net.IP{}
|
||||||
srvTargets := map[string]string{}
|
srvTargets := map[string]string{}
|
||||||
danteNames := map[string]bool{}
|
|
||||||
danteARCPorts := map[string]uint16{}
|
|
||||||
skaarhojNames := map[string]bool{}
|
skaarhojNames := map[string]bool{}
|
||||||
|
|
||||||
for _, rr := range allRecords {
|
for _, rr := range allRecords {
|
||||||
@@ -121,12 +95,6 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
case *dns.AAAA:
|
case *dns.AAAA:
|
||||||
continue
|
continue
|
||||||
case *dns.PTR:
|
case *dns.PTR:
|
||||||
if isDanteService(r.Hdr.Name) {
|
|
||||||
name := extractDanteName(r.Ptr)
|
|
||||||
if name != "" {
|
|
||||||
danteNames[name] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isSkaarhojService(r.Ptr) {
|
if isSkaarhojService(r.Ptr) {
|
||||||
name := extractSkaarhojName(r.Ptr)
|
name := extractSkaarhojName(r.Ptr)
|
||||||
if name != "" {
|
if name != "" {
|
||||||
@@ -135,18 +103,6 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
}
|
}
|
||||||
case *dns.SRV:
|
case *dns.SRV:
|
||||||
target := strings.TrimSuffix(r.Target, ".")
|
target := strings.TrimSuffix(r.Target, ".")
|
||||||
if isDanteService(r.Hdr.Name) {
|
|
||||||
name := extractDanteName(r.Hdr.Name)
|
|
||||||
if name != "" {
|
|
||||||
danteNames[name] = true
|
|
||||||
if target != "" {
|
|
||||||
srvTargets[name] = target
|
|
||||||
}
|
|
||||||
if strings.Contains(r.Hdr.Name, "_netaudio-arc.") && r.Port > 0 {
|
|
||||||
danteARCPorts[name] = r.Port
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isSkaarhojService(r.Hdr.Name) {
|
if isSkaarhojService(r.Hdr.Name) {
|
||||||
name := extractSkaarhojName(r.Hdr.Name)
|
name := extractSkaarhojName(r.Hdr.Name)
|
||||||
if name != "" {
|
if name != "" {
|
||||||
@@ -159,21 +115,6 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for name := range danteNames {
|
|
||||||
var ip net.IP
|
|
||||||
if target, ok := srvTargets[name]; ok {
|
|
||||||
ip = aRecords[target]
|
|
||||||
}
|
|
||||||
if ip == nil {
|
|
||||||
ip = aRecords[name+".local"]
|
|
||||||
}
|
|
||||||
if ip == nil {
|
|
||||||
ip = srcIP
|
|
||||||
}
|
|
||||||
arcPort := int(danteARCPorts[name])
|
|
||||||
t.nodes.UpdateDante(name, ip, arcPort)
|
|
||||||
}
|
|
||||||
|
|
||||||
for name := range skaarhojNames {
|
for name := range skaarhojNames {
|
||||||
var ip net.IP
|
var ip net.IP
|
||||||
if target, ok := srvTargets[name]; ok {
|
if target, ok := srvTargets[name]; ok {
|
||||||
@@ -188,7 +129,7 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
t.nodes.Update(nil, nil, []net.IP{ip}, "", name, "skaarhoj")
|
t.nodes.Update(nil, nil, []net.IP{ip}, "", name, "skaarhoj")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(danteNames) == 0 && len(skaarhojNames) == 0 {
|
if len(skaarhojNames) == 0 {
|
||||||
for aName, ip := range aRecords {
|
for aName, ip := range aRecords {
|
||||||
hostname := strings.TrimSuffix(aName, ".local")
|
hostname := strings.TrimSuffix(aName, ".local")
|
||||||
if hostname != "" && hostname != aName {
|
if hostname != "" && hostname != aName {
|
||||||
@@ -203,12 +144,7 @@ func (t *Tendrils) processMDNSResponse(ifaceName string, srcIP net.IP, msg *dns.
|
|||||||
|
|
||||||
var mdnsServices = []string{
|
var mdnsServices = []string{
|
||||||
"_services._dns-sd._udp.local.",
|
"_services._dns-sd._udp.local.",
|
||||||
"_netaudio-arc._udp.local.",
|
"_skaarhoj._tcp.local.",
|
||||||
"_netaudio-cmc._udp.local.",
|
|
||||||
"_netaudio-dbc._udp.local.",
|
|
||||||
"_netaudio-chan._udp.local.",
|
|
||||||
"_dantevideo._udp.local.",
|
|
||||||
"_danteancil._udp.local.",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tendrils) runMDNSQuerier(ctx context.Context, iface net.Interface, conn *net.UDPConn) {
|
func (t *Tendrils) runMDNSQuerier(ctx context.Context, iface net.Interface, conn *net.UDPConn) {
|
||||||
|
|||||||
Reference in New Issue
Block a user