|
@@ -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];
|