From 3bff8e4e2e3781aaf8a2402949d9c8602215ef16 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Fri, 15 Jul 2022 17:43:27 +0200 Subject: [PATCH] improve address finding --- main.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 91cf590..ed82763 100644 --- a/main.go +++ b/main.go @@ -88,14 +88,26 @@ func doPing(host string, count int, interval time.Duration) (*ping.Statistics, e if err != nil { return nil, err } - addr, err := nif.Addrs() + addrs, err := nif.Addrs() if err != nil { return nil, err } - if len(addr) == 0 { + if len(addrs) == 0 { return nil, fmt.Errorf("interface %s has no addressed assigned", conf.UploadInterface) } - pinger.Source = addr[0].(*net.IPNet).IP.String() + + for _, addr := range addrs { + if addr.(*net.IPNet).IP.To4() == nil { + continue + } else { + pinger.Source = addr.(*net.IPNet).IP.String() + break + } + } + + if pinger.Source == "" { + return nil, fmt.Errorf("interface %s has no suitable addressed assigned", conf.UploadInterface) + } err = pinger.Run() if err != nil {