diff --git a/src/etc/rc.routing_configure b/src/etc/rc.routing_configure index b7612dc12..c7793096b 100755 --- a/src/etc/rc.routing_configure +++ b/src/etc/rc.routing_configure @@ -34,6 +34,14 @@ require_once 'interfaces.inc'; require_once 'filter.inc'; require_once 'rrd.inc'; +// drop deleted routes +foreach (glob("/tmp/delete_route_*.todo") as $filename) { + $network = trim(file_get_contents($filename)); + $inet = (is_subnetv6($network) ? "-inet6" : "-inet"); + mwexec("/sbin/route delete {$inet} " . escapeshellarg($network), true); + unlink($filename); +} + system_routing_configure('', true); filter_configure_sync(true); setup_gateways_monitor(true); diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php b/src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php index bda5b0da5..304f6e8e8 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php @@ -122,6 +122,8 @@ class RoutesController extends ApiControllerBase if ($mdlRoute->route->del($uuid)) { // if item is removed, serialize to config and save $mdlRoute->serializeToConfig(); + // we don't know for sure if this route was already removed, flush to disk to remove on apply + file_put_contents("/tmp/delete_route_{$uuid}.todo", (string)$node->network); Config::getInstance()->save(); $result['result'] = 'deleted'; } else {