improve address finding
This commit is contained in:
18
main.go
18
main.go
@@ -88,14 +88,26 @@ func doPing(host string, count int, interval time.Duration) (*ping.Statistics, e
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
addr, err := nif.Addrs()
|
addrs, err := nif.Addrs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(addr) == 0 {
|
if len(addrs) == 0 {
|
||||||
return nil, fmt.Errorf("interface %s has no addressed assigned", conf.UploadInterface)
|
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()
|
err = pinger.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Reference in New Issue
Block a user