From e4be98984cdb1f175a9f174f325e6f2c03637344 Mon Sep 17 00:00:00 2001 From: YueGuobin Date: Mon, 13 Jul 2026 15:05:40 +0800 Subject: [PATCH] fix(marker): enable marker support for docker nodes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Docker's _connect_nio and adapter_update_nio_binding applied packet filters but never called _ubridge_apply_markers, so markers silently did nothing on Docker links despite docker being in the allowlist. Add the missing calls (same pattern as the IOU fix). Also narrow _MARKER_CAPABLE_TYPES to the four types that actually implement marker support — vpcs, qemu, docker, iou — removing dynamips, virtualbox, vmware, and cloud which have no marker pathway and would silently fail when selected as the capture side. --- gns3server/compute/docker/docker_vm.py | 3 ++- gns3server/controller/udp_link.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index 8c139cdfd..7315dad0d 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -1228,6 +1228,7 @@ class DockerVM(BaseNode): ) await self._ubridge_send(f"bridge start {bridge_name}") await self._ubridge_apply_filters(bridge_name, nio.filters) + await self._ubridge_apply_markers(bridge_name, nio) async def adapter_add_nio_binding(self, adapter_number, nio): """ @@ -1268,7 +1269,7 @@ class DockerVM(BaseNode): bridge_name = f"bridge{adapter_number}" if bridge_name in self._bridges: await self._ubridge_apply_filters(bridge_name, nio.filters) - + await self._ubridge_apply_markers(bridge_name, nio) async def adapter_remove_nio_binding(self, adapter_number): """ Removes an adapter NIO binding. diff --git a/gns3server/controller/udp_link.py b/gns3server/controller/udp_link.py index ca8dface2..da08c5f6b 100644 --- a/gns3server/controller/udp_link.py +++ b/gns3server/controller/udp_link.py @@ -26,7 +26,7 @@ from gns3server.utils.packet_filter_validation import validate_bpf_syntax, Filte # `mark` filter to). Mirrors _get_filter_node in link.py, minus "nat" # (which has no uBridge). _MARKER_CAPABLE_TYPES = frozenset({ - "vpcs", "qemu", "docker", "iou", "virtualbox", "vmware", "dynamips", "cloud", + "vpcs", "qemu", "docker", "iou", })