YueGuobin
c62b9b0283
refactor(marker): converge to filter single-path model, remove dual-apply endpoints
...
Markers now follow exactly the same apply pattern as packet filters:
state lives in Link._markers, application goes through NIO
(update() -> PUT /nio -> _ubridge_apply_markers). The former
immediate-apply REST endpoints (/markers/start, /markers/stop on
the compute side) and the per-node start_marker/stop_marker methods
are removed — they were a legacy of the original capture-inspired
design and have been superseded by the NIO flow.
Changes:
- controller/udp_link: start_marker/stop_marker/update_marker now
set _markers state + call self.update() (mirrors update_filters).
Removed _marker_capture_nodes runtime dict and its helpers.
- controller/project: _create_link_from_topology_data restores
_markers directly from persisted data (with BPF validation,
like filter reload). No long calls start_marker during load.
- compute: _ubridge_apply_markers swallows BPF compile errors
(warn+skip), matching _ubridge_apply_filters behaviour so a
single bad expression cannot break link creation / node restart.
- Removed: /markers/start,stop endpoints (6 handlers across
vpcs/qemu/docker route files), node start_marker/stop_marker
methods (3 VM files), _ubridge_delete_marker_filter,
_marker_capture_nodes, MarkerDelete schema.
Net: ~280 lines of dead code removed; marker and packet filter now
share a single, unified apply path via the NIO.
2026-07-16 00:39:51 +08:00
YueGuobin
d2e9823e6c
feat: implement traffic insight marker backend (ubridge mark filter)
...
Add compute-side marker subsystem that receives ubridge UDP MARK signals
and forwards them as project-scoped notifications to the web UI for
real-time traffic coloring. Matched packets are always saved to per-link
pcaps for future replay.
Key components:
- gns3server/compute/marker/: MarkerManager (singleton, UDP listener +
O(1) registry keyed by (node_id, filter_name)) + MarkerListener
(DatagramProtocol parsing MARK lines per ubridge integration contract)
- gns3server/compute/base_node.py: marker sink/node config at ubridge
startup; shared _ubridge_add_marker_filter / _ubridge_delete_marker_filter
- Per-node start_marker/stop_marker: VPCS (VPCS-{id}), QEMU
(QEMU-{id}-{adapter}), Docker (bridge{adapter})
- Compute REST /markers/start + /markers/stop (vpcs/qemu/docker route files)
- Controller Link._markers state + UDPLink.start_marker/stop_marker/
update_marker (mirror capture pattern: BPF validation, _choose_capture_side,
node.post forwarding, topology persistence)
- Controller REST GET/POST/DELETE/PUT /v3/projects/{p}/links/{l}/markers
- Config: marker_listen_host / marker_listen_port in ServerSettings
- Signal routing: creation-time registry O(1) lookup, no node-table scan;
project-scoped WS stream (not global); event payload always carries
project_id for frontend scoping
Tests: 14 unit tests (registry, listener parsing, UDP round-trip);
562 existing tests pass with zero regressions.
2026-07-16 00:39:51 +08:00
grossmj
bc1016474e
Merge branch '2.2' into 3.0
...
# Conflicts:
# gns3server/compute/base_node.py
2023-12-05 22:15:50 +10:00
grossmj
24bb0ca419
Add custom executable paths on Windows
2023-12-05 21:24:40 +10:00
grossmj
27d9063e56
Merge 2.2
2023-01-05 12:38:00 +08:00
grossmj
b3a6b9173b
Fix reset console. Fixes #1619
2022-12-31 09:43:17 +08:00
grossmj
1148dbc48e
Fix issue when calling reset_console with running VPCS and Qemu nodes. Ref #1619
2022-12-30 20:54:37 +08:00
grossmj
cefab8d362
Rename __json__() to asdict()
2021-04-17 23:34:28 +09:30
grossmj
c021e21309
Use black with -l 120 param.
2021-04-13 18:46:50 +09:30
grossmj
f928738bd5
Use pyupgrade with --py36-plus param.
2021-04-13 18:37:58 +09:30
grossmj
30ebae207f
Use Pydantic to validate the server config file.
2021-04-12 17:02:23 +09:30
grossmj
9e6ccc3f61
Fix bug when starting of vpcs stopped with "quit". Fixes https://github.com/GNS3/gns3-gui/issues/3110
2021-02-14 13:50:10 +10:30
grossmj
128e494134
Stop uBridge if VPCS node has been terminated. Ref https://github.com/GNS3/gns3-gui/issues/3110
2021-01-27 21:03:19 +10:30
grossmj
a17119187b
Fix remote packet capture for Dynamips.
2019-04-01 20:58:18 +07:00
grossmj
4cc5dbc228
Fix remote packet capture and make sure packet capture is stopped when deleting an NIO. Fixes https://github.com/GNS3/gns3-gui/issues/2753
2019-04-01 19:47:31 +07:00
grossmj
380224dca1
Change how VPCS executable is searched.
2019-03-06 23:15:05 +07:00
grossmj
456ef1348b
Fix DeprecationWarning: invalid escape sequence. Fixes https://github.com/GNS3/gns3-gui/issues/2670
2019-01-17 18:01:58 +07:00
grossmj
2764828f38
Refactor how clients access PCAP capture files. Fixes https://github.com/GNS3/gns3-gui/issues/2438 .
...
* The PCAP file is directly accessed if controller and client are on the same host.
* The PCAP file is streamed from the compute server to the client with the controller as a proxy when the controller is remote for the client.
2018-10-27 14:47:17 +07:00
grossmj
76af98404a
Drop Python 3.4 and switch to async / await syntax for asyncio. Fixes #1425
2018-10-15 17:05:49 +07:00
grossmj
9de13c570c
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/compute/builtin/nodes/cloud.py
# gns3server/compute/docker/docker_vm.py
# gns3server/compute/dynamips/nodes/ethernet_switch.py
# gns3server/compute/iou/iou_vm.py
# gns3server/compute/qemu/qemu_vm.py
# gns3server/compute/virtualbox/virtualbox_vm.py
# gns3server/compute/vmware/vmware_vm.py
# gns3server/controller/__init__.py
# gns3server/version.py
# gns3server/web/web_server.py
2018-10-04 15:44:13 +02:00
grossmj
4d95e0b51f
Catch some exceptions.
2018-09-28 15:04:38 +02:00
grossmj
21a1800edc
Merge branch '2.1' into 2.2
...
# Conflicts:
# gns3server/controller/__init__.py
# gns3server/controller/export_project.py
# gns3server/controller/import_project.py
# gns3server/controller/project.py
# gns3server/version.py
2018-04-28 19:41:12 +07:00
grossmj
20294e284c
Fix exception from send_signal() on Windows.
2018-04-27 17:00:28 +07:00
grossmj
e52775fa3a
Support for console type "none".
2018-03-24 18:11:21 +07:00
grossmj
90ce6093d8
Some spring cleaning.
2018-03-15 14:17:39 +07:00
grossmj
5f14f8eb46
Default VPCS name format is now PC-{0}.
2018-01-09 23:40:35 +07:00
ziajka
3d85bba9d4
Don't create directory structure during json dump. Fixes #2270
2017-10-02 10:41:57 +02:00
Julien Duponchelle
0854c04687
API for duplication a Node
...
Support:
* VPCS
* Dynamips router
* Ethernet switch
Ref #1065
2017-07-24 10:08:22 +02:00
Julien Duponchelle
9e2759a3f2
Merge branch '2.1' into remove_use_ubrige
2017-07-12 12:46:10 +02:00
Julien Duponchelle
86f1201276
Support packet filtering for dynamips
...
Fix #1109
2017-07-12 12:08:02 +02:00
Julien Duponchelle
04303ca00c
Fix VPCS ubridge usage
2017-07-12 09:55:23 +02:00
Julien Duponchelle
d112da400e
Remove use_ubridge flag
...
Ref #1115
2017-07-11 13:58:59 +02:00
Julien Duponchelle
557924e91a
Use ubridge for dynamips routers
...
Ref #1109
2017-07-10 20:38:28 +02:00
Julien Duponchelle
4097bab565
Apply feedback from @grossmj
2017-07-05 16:36:39 +02:00
Julien Duponchelle
08423eff96
Support packet filtering for VPCS
...
https://github.com/GNS3/gns3-gui/issues/765
2017-07-04 15:12:26 +02:00
Julien Duponchelle
bb8097a052
Merge remote-tracking branch 'origin/master' into 2.1
2017-06-19 10:44:52 +02:00
ziajka
7235a312ab
Escaping VPCS name in regex #1067
2017-06-09 09:14:25 +02:00
Julien Duponchelle
1ab9ca2333
Merge branch '2.0' into 2.1
2017-02-28 14:25:38 +01:00
Julien Duponchelle
70e2b87ff0
Patch hostname in configuration file even if name is unsync
...
Ref https://github.com/GNS3/gns3-gui/issues/1889
2017-02-27 12:48:05 +01:00
Julien Duponchelle
7407ab88b3
Fix a failing test on Python 3.6
2017-02-20 10:56:48 +01:00
Julien Duponchelle
e892e5dfab
Manage base configuration on server
...
Fix #786
2017-02-03 13:19:14 +01:00
Julien Duponchelle
1ed88eda85
Fix version check for VPCS
2017-01-23 21:11:52 +01:00
Julien Duponchelle
f7d87f09f1
Fix VPCS configuration is overwritten on project load
...
Fix https://github.com/GNS3/gns3-gui/issues/1766
2017-01-09 17:07:42 +01:00
Julien Duponchelle
d0f65aebff
Fix Can't delete link between docker VM after they were in use
...
Fix #818
2016-12-14 12:01:34 +01:00
Julien Duponchelle
db8296f548
Support multiple client connected to the same VPCS console
...
Ref #770
2016-11-08 19:44:12 +01:00
Julien Duponchelle
66a789672d
Merge branch 'master' into 2.0
2016-10-19 17:06:43 +02:00
Julien Duponchelle
72fe5d3489
Merge branch 'master' into 2.0
2016-08-29 14:08:23 +02:00
grossmj
d79fb231d3
Use uBridge for VirtualBox connections plus some cleaning. Ref #267 .
2016-06-24 18:35:39 -06:00
grossmj
04022677bd
Use uBridge for Qemu connections. Ref #267 .
...
Handle packet captures for VPCS & Qemu nodes. Fixes #548 .
2016-06-23 16:56:06 -06:00
Julien Duponchelle
4c3bfde97e
Fix test suite after VPCS changes for using ubridge
2016-06-23 12:10:18 +02:00