Browse Source

Another fix for routing and interface issues on MacOS

Adam Ierymenko 3 years ago
parent
commit
6bb1598fa3
1 changed files with 18 additions and 0 deletions
  1. 18 0
      osdep/ManagedRoute.cpp

+ 18 - 0
osdep/ManagedRoute.cpp

@@ -437,6 +437,24 @@ bool ManagedRoute::sync()
 
 #ifdef __BSD__ // ------------------------------------------------------------
 
+	if (_device[0]) {
+		bool haveDevice = false;
+		struct ifaddrs *ifa = (struct ifaddrs *)0;
+		if (!getifaddrs(&ifa)) {
+			struct ifaddrs *p = ifa;
+			while (p) {
+				if ((p->ifa_name)&&(!strcmp(_device, p->ifa_name))) {
+					haveDevice = true;
+					break;
+				}
+				p = p->ifa_next;
+			}
+			freeifaddrs(ifa);
+		}
+		if (!haveDevice)
+			return false;
+	}
+
 	// Find lowest metric system route that this route should override (if any)
 	InetAddress newSystemVia;
 	char newSystemDevice[128];