Przeglądaj źródła

Rework Linux route setting to actually consult netlink interface.

Adam Ierymenko 4 lat temu
rodzic
commit
5ea7ef6b65
1 zmienionych plików z 5 dodań i 8 usunięć
  1. 5 8
      osdep/ManagedRoute.cpp

+ 5 - 8
osdep/ManagedRoute.cpp

@@ -518,17 +518,14 @@ bool ManagedRoute::sync()
 
 #ifdef __LINUX__ // ----------------------------------------------------------
 
-	if (!_applied.count(leftt)) {
+	const char *const devptr = (_via) ? (const char *)0 : _device;
+	if (!LinuxNetLink::getInstance().routeIsSet(leftt,_via,_src,devptr)) {
 		_applied[leftt] = false; // boolean unused
-		//LinuxNetLink::getInstance().delRoute(leftt, _via, _src, (_via) ? (const char *)0 : _device);
-		LinuxNetLink::getInstance().addRoute(leftt, _via, _src, (_via) ? (const char *)0 : _device);
-		//_routeCmd("replace",leftt,_via,(_via) ? (const char *)0 : _device);
+		LinuxNetLink::getInstance().addRoute(leftt, _via, _src, devptr);
 	}
-	if ((rightt)&&(!_applied.count(rightt))) {
+	if ((rightt)&&(!LinuxNetLink::getInstance().routeIsSet(rightt,_via,_src,devptr))) {
 		_applied[rightt] = false; // boolean unused
-		//LinuxNetLink::getInstance().delRoute(rightt, _via, _src, (_via) ? (const char *)0 : _device);
-		LinuxNetLink::getInstance().addRoute(rightt, _via, _src, (_via) ? (const char *)0 : _device);
-		//_routeCmd("replace",rightt,_via,(_via) ? (const char *)0 : _device);
+		LinuxNetLink::getInstance().addRoute(rightt, _via, _src, devptr);
 	}
 
 #endif // __LINUX__ ----------------------------------------------------------