mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 14:01:15 +02:00
fix(controller): don't push the synthetic suspend filter to kernel links
update_suspend() piggybacks on the filter system: get_active_filters()
returns {"frequency_drop": [-1]} while a link is suspended so relay-based
node types drop all traffic at the uBridge filter. Kernel-datapath links
implement suspend natively via interface carrier, and pushing the
synthetic filter tripped the compute-side guard, making suspend fail
with 409 on every kernel link (and leaving controller/kernel state torn).
_get_node_filters() now returns empty filters for kernel links.
This commit is contained in:
2 files changed
+36
No files matched your search
@@ -88,6 +88,13 @@ class UDPLink(Link):
|
||||
|
||||
:returns: Tuple of (node1_filters, node2_filters)
|
||||
"""
|
||||
# Kernel-datapath links implement suspend natively (interface carrier
|
||||
# driven by the NIO suspend flag). The synthetic frequency_drop filter
|
||||
# that get_active_filters() injects for suspended links is a
|
||||
# relay-datapath emulation mechanism — sending it would trip the
|
||||
# compute-side kernel guard, so kernel links always push empty filters.
|
||||
if self.kernel_datapath:
|
||||
return {}, {}
|
||||
filter_node = self._get_filter_node()
|
||||
return (
|
||||
self.get_active_filters() if filter_node == node1 else {},
|
||||
|
||||
Reference in new issue
Block a user