diff --git a/gns3server/compute/base_node.py b/gns3server/compute/base_node.py index e1f9fa591..54092bcda 100644 --- a/gns3server/compute/base_node.py +++ b/gns3server/compute/base_node.py @@ -1197,7 +1197,11 @@ class BaseNode: bridge_name = self._marker_filter_bridges.get(name) if not bridge_name: - raise UbridgeError(f"Marker '{name}' is not installed on this node") + # Marker not installed on this uBridge (node not started, or not yet + # applied). The controller-layer `enabled` is still authoritative and + # is honoured when the node starts and applies the marker, so a + # toggle here is a no-op rather than an error. + return state = "on" if enabled else "off" await self._ubridge_send(f"bridge enable_packet_filter {bridge_name} {name} {state}") diff --git a/gns3server/compute/iou/iou_vm.py b/gns3server/compute/iou/iou_vm.py index 33a4e6c4c..ef9cd28d8 100644 --- a/gns3server/compute/iou/iou_vm.py +++ b/gns3server/compute/iou/iou_vm.py @@ -1337,7 +1337,9 @@ class IOUVM(BaseNode): location = self._marker_filter_bridges.get(name) if not location: - raise UbridgeError(f"Marker '{name}' is not installed on this node") + # Marker not installed on this uBridge (node not started, or not yet + # applied); controller-layer `enabled` is authoritative. No-op. + return state = "on" if enabled else "off" await self._ubridge_send(f"iol_bridge enable_packet_filter {location} {name} {state}")