diff --git a/gns3server/api/routes/compute/cloud_nodes.py b/gns3server/api/routes/compute/cloud_nodes.py index 539c73a44..b6efc06ca 100644 --- a/gns3server/api/routes/compute/cloud_nodes.py +++ b/gns3server/api/routes/compute/cloud_nodes.py @@ -269,6 +269,11 @@ async def toggle_cloud_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled} diff --git a/gns3server/api/routes/compute/docker_nodes.py b/gns3server/api/routes/compute/docker_nodes.py index a322bd56e..e40daeb72 100644 --- a/gns3server/api/routes/compute/docker_nodes.py +++ b/gns3server/api/routes/compute/docker_nodes.py @@ -423,6 +423,11 @@ async def toggle_docker_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled} diff --git a/gns3server/api/routes/compute/dynamips_nodes.py b/gns3server/api/routes/compute/dynamips_nodes.py index 05c32e7a6..38c7a5624 100644 --- a/gns3server/api/routes/compute/dynamips_nodes.py +++ b/gns3server/api/routes/compute/dynamips_nodes.py @@ -382,6 +382,11 @@ async def toggle_dynamips_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled} diff --git a/gns3server/api/routes/compute/iou_nodes.py b/gns3server/api/routes/compute/iou_nodes.py index e1c97819d..289993633 100644 --- a/gns3server/api/routes/compute/iou_nodes.py +++ b/gns3server/api/routes/compute/iou_nodes.py @@ -361,6 +361,11 @@ async def toggle_iou_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled} diff --git a/gns3server/api/routes/compute/qemu_nodes.py b/gns3server/api/routes/compute/qemu_nodes.py index 7dc93869d..6ce9252d4 100644 --- a/gns3server/api/routes/compute/qemu_nodes.py +++ b/gns3server/api/routes/compute/qemu_nodes.py @@ -453,6 +453,11 @@ async def toggle_qemu_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled} diff --git a/gns3server/api/routes/compute/vpcs_nodes.py b/gns3server/api/routes/compute/vpcs_nodes.py index fd478833a..2b796f979 100644 --- a/gns3server/api/routes/compute/vpcs_nodes.py +++ b/gns3server/api/routes/compute/vpcs_nodes.py @@ -360,6 +360,11 @@ async def toggle_vpcs_marker( Toggle a marker filter on/off without an NIO rebuild (ubridge contract §3.2). """ + if marker_name not in node._marker_filter_bridges: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Marker '{marker_name}' is not installed on this node", + ) await node._ubridge_set_marker_filter_state(marker_name, toggle_data.enabled) return {"marker_name": marker_name, "enabled": toggle_data.enabled}