From 0349e372ac7ecfe02b8952272fe6fcc4f904a3d1 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 2 Oct 2021 16:59:20 +0200 Subject: [PATCH] collector: move net.InterfaceByName() call out of getUnicastAddr() Preparation for setting IPV6_MULTICAST_IF in listenUDP(). --- respond/collector.go | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/respond/collector.go b/respond/collector.go index d2cc54d..97037d7 100644 --- a/respond/collector.go +++ b/respond/collector.go @@ -59,16 +59,20 @@ func (coll *Collector) listenUDP(iface InterfaceConfig) { var addr net.IP - var err error - if iface.IPAddress != "" { - addr = net.ParseIP(iface.IPAddress) - } else { - addr, err = getUnicastAddr(iface.InterfaceName) - if err != nil { - log.WithField("iface", iface.InterfaceName).Panic(err) + ifaceInfo, err := net.InterfaceByName(iface.InterfaceName) + + if err == nil { + if iface.IPAddress != "" { + addr = net.ParseIP(iface.IPAddress) + } else { + addr, err = getUnicastAddr(ifaceInfo) } } + if err != nil { + log.WithField("iface", iface.InterfaceName).Panic(err) + } + multicastAddress := MulticastAddressDefault if iface.MulticastAddress != "" { multicastAddress = iface.MulticastAddress @@ -96,12 +100,7 @@ func (coll *Collector) listenUDP(iface InterfaceConfig) { } // Returns a unicast address of given interface (linklocal or global unicast address) -func getUnicastAddr(ifname string) (net.IP, error) { - iface, err := net.InterfaceByName(ifname) - if err != nil { - return nil, err - } - +func getUnicastAddr(iface *net.Interface) (net.IP, error) { addresses, err := iface.Addrs() if err != nil { return nil, err