Răsfoiți Sursa

fix(connections): skip point-to-point interfaces when listing LANs (fixes #9719) (#9720)

Point-to-point interfaces are typically VPNs and similar which, for our
purposes, do not qualify as LANs.
Jakob Borg 1 an în urmă
părinte
comite
b1ed2802fb
1 a modificat fișierele cu 10 adăugiri și 5 ștergeri
  1. 10 5
      lib/osutil/net.go

+ 10 - 5
lib/osutil/net.go

@@ -11,21 +11,26 @@ import (
 )
 
 func GetLans() ([]*net.IPNet, error) {
-	ifs, err := net.Interfaces()
+	intfs, err := net.Interfaces()
 	if err != nil {
 		return nil, err
 	}
 	var addrs []net.Addr
 
-	for _, currentIf := range ifs {
-		if currentIf.Flags&net.FlagRunning == 0 {
+	for _, intf := range intfs {
+		if intf.Flags&net.FlagRunning == 0 {
 			continue
 		}
-		currentAddrs, err := currentIf.Addrs()
+		if intf.Flags&net.FlagPointToPoint != 0 {
+			// Point-to-point interfaces are typically VPNs and similar
+			// which, for our purposes, do not qualify as LANs.
+			continue
+		}
+		intfAddrs, err := intf.Addrs()
 		if err != nil {
 			return nil, err
 		}
-		addrs = append(addrs, currentAddrs...)
+		addrs = append(addrs, intfAddrs...)
 	}
 
 	nets := make([]*net.IPNet, 0, len(addrs))