From f70d0c0efc8996a41e52dd4930e63dd8f122a95d Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 13 Apr 2026 23:44:21 +0300 Subject: [PATCH 01/13] Added DHCP Relay --- back/Dockerfile | 1 + back/requirements.txt | 2 +- back/src/jobs.py | 17 +++++++++++++++++ front/.env | 2 +- front/src/miminet_host.py | 14 ++++++++++++++ front/src/static/config.js | 11 +++++++++++ front/src/static/config_router.html | 13 +++++++++++++ 7 files changed, 58 insertions(+), 2 deletions(-) diff --git a/back/Dockerfile b/back/Dockerfile index d08a0461..8dee516e 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -20,6 +20,7 @@ RUN apt-get update \ python3-pip \ dnsmasq \ isc-dhcp-client \ + dhcp-helper \ python3-setuptools \ gcc \ make \ diff --git a/back/requirements.txt b/back/requirements.txt index 0c083992..95f961ac 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -4,4 +4,4 @@ python-dotenv==1.1.1 marshmallow_dataclass==8.7.1 psutil==7.0.0 netaddr==1.3.0 -ipmininet @ git+https://github.com/mimi-net/ipmininet.git@1.2.4 \ No newline at end of file +ipmininet @ git+https://github.com/IgorFilimonov/ipmininet.git \ No newline at end of file diff --git a/back/src/jobs.py b/back/src/jobs.py index 0fc3961e..7455d68d 100755 --- a/back/src/jobs.py +++ b/back/src/jobs.py @@ -7,6 +7,7 @@ from network_schema import Job from mininet.log import info from ipmininet.host.config.dnsmasq import Dnsmasq +from ipmininet.router.config.dhcphelper import DHCPHelper def filter_arg_for_options( @@ -512,6 +513,21 @@ def dhcp_server(job: Job, job_host): job_host.start_daemon(daemon) +def dhcp_relay(job: Job, job_host): + dhcp_server_ip = job.arg_1 + dhcp_server_mask = job.arg_2 + intf = job.arg_3 + daemon = DHCPHelper( + node=job_host, + dhcp_server_ip=dhcp_server_ip, + dhcp_server_mask=dhcp_server_mask, + intf=intf, + ) + job_host.build_daemon(daemon) + job_host.start_daemon(daemon) + info(f"dhcp-helper -s {dhcp_server_ip} -i {intf}") + + class Jobs: """Class for representing various commands for working with miminet network""" @@ -542,6 +558,7 @@ def __init__(self, job: Job, job_host: Any, **kwargs) -> None: 108: dhcp_client, 109: port_forwarding_tcp_handler, 110: port_forwarding_udp_handler, + 111: dhcp_relay, 200: open_udp_server_handler, 201: open_tcp_server_handler, 202: block_tcp_udp_port, diff --git a/front/.env b/front/.env index 118ca745..6b694e49 100755 --- a/front/.env +++ b/front/.env @@ -22,4 +22,4 @@ POSTGRES_HOST=172.18.0.4 # YANDEX_POSTGRES_SSLMODE=verify-full # Режим работы: dev (локальный PostgreSQL) или prod (Yandex Cloud PostgreSQL) -MODE=prod \ No newline at end of file +MODE=dev diff --git a/front/src/miminet_host.py b/front/src/miminet_host.py index f5b90d91..498b59ad 100755 --- a/front/src/miminet_host.py +++ b/front/src/miminet_host.py @@ -426,6 +426,20 @@ def build_error(error_type: str, cmd: str) -> str: emptiness_check ).set_error_msg('Не указан интерфейс для команды "Добавить ARP Proxy-интерфейс"') +# Add DHCP Relay +dhcp_relay_job = router.create_job(111, "dhcp relay to [0]/[1]") +dhcp_relay_job.add_param("config_router_dhcp_relay_ip_input_field").add_check( + IPv4_check +).set_error_msg('Неверно указан IP адрес диапазона для команды "Включить DHCP Relay"') +dhcp_relay_job.add_param("config_router_dhcp_relay_mask_input_field").add_check( + mask_check +).set_error_msg('Неверно указана маска для команды "Включить DHCP Relay"') +dhcp_relay_job.add_param( + "config_router_dhcp_relay_select_iface_field" +).add_check(emptiness_check).set_error_msg( + 'Не указан интерфейс для команды "Включить DHCP Relay"' +) + # ~ ~ ~ SWITCH JOBS ~ ~ ~ link_down_job = switch.create_job(6, "link down [1]") diff --git a/front/src/static/config.js b/front/src/static/config.js index 50861d2d..e0994706 100755 --- a/front/src/static/config.js +++ b/front/src/static/config.js @@ -935,6 +935,10 @@ const ConfigRouterJobOnChange = function(evnt) { UpdateRouterForm('config_router_add_port_forwarding_udp_script'); FillDeviceSelectIntf("#config_router_add_port_forwarding_udp_iface_select_field", "#router_id", "Выберите линк", false) break; + case '111': + UpdateRouterForm('config_router_dhcp_relay_script'); + FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false) + break; default: console.log("Unknown target.value"); } @@ -1412,6 +1416,13 @@ const EditJobInRouter = function(router_id, job_id, network_guid) { $('#config_router_add_port_forwarding_udp_dest_ip_input_field').val(job.arg_3 || '') $('#config_router_add_port_forwarding_udp_dest_port_input_field').val(job.arg_4 || '') break; + case '111': // Добавить DHCP Relay + UpdateRouterForm('config_router_dhcp_relay_script'); + FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false); + $('#config_router_dhcp_relay_ip_input_field').val(job.arg_1 || ''); + $('#config_router_dhcp_relay_mask_input_field').val(job.arg_2 || '0'); + $('#config_router_dhcp_relay_select_iface_field').val(job.arg_3 || ''); + break; default: console.error('Unknown job type for editing:', job.job_id); } diff --git a/front/src/static/config_router.html b/front/src/static/config_router.html index 51ff6fdf..ca4dc251 100755 --- a/front/src/static/config_router.html +++ b/front/src/static/config_router.html @@ -56,6 +56,7 @@ + @@ -208,3 +209,15 @@ + + From a50212287bc84d4e400224f45d20bcf8c5c745ef Mon Sep 17 00:00:00 2001 From: igor Date: Tue, 14 Apr 2026 01:10:49 +0300 Subject: [PATCH 02/13] Fixed a bug with DHCP Relay job id and changed its job sign --- back/src/jobs.py | 2 +- front/src/miminet_host.py | 2 +- front/src/static/config.js | 4 ++-- front/src/static/config_router.html | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/back/src/jobs.py b/back/src/jobs.py index fd652544..a5d36a5a 100755 --- a/back/src/jobs.py +++ b/back/src/jobs.py @@ -580,11 +580,11 @@ def __init__(self, job: Job, job_host: Any, **kwargs) -> None: 108: dhcp_client, 109: port_forwarding_tcp_handler, 110: port_forwarding_udp_handler, - 111: dhcp_relay, 200: open_udp_server_handler, 201: open_tcp_server_handler, 202: block_tcp_udp_port, 203: dhcp_server, + 204: dhcp_relay, } self._job: Job = job self._job_host = job_host diff --git a/front/src/miminet_host.py b/front/src/miminet_host.py index 498b59ad..64980684 100755 --- a/front/src/miminet_host.py +++ b/front/src/miminet_host.py @@ -427,7 +427,7 @@ def build_error(error_type: str, cmd: str) -> str: ).set_error_msg('Не указан интерфейс для команды "Добавить ARP Proxy-интерфейс"') # Add DHCP Relay -dhcp_relay_job = router.create_job(111, "dhcp relay to [0]/[1]") +dhcp_relay_job = router.create_job(204, "dhcp-helper -s [0] -i [2]") dhcp_relay_job.add_param("config_router_dhcp_relay_ip_input_field").add_check( IPv4_check ).set_error_msg('Неверно указан IP адрес диапазона для команды "Включить DHCP Relay"') diff --git a/front/src/static/config.js b/front/src/static/config.js index e0994706..df019a8b 100755 --- a/front/src/static/config.js +++ b/front/src/static/config.js @@ -935,7 +935,7 @@ const ConfigRouterJobOnChange = function(evnt) { UpdateRouterForm('config_router_add_port_forwarding_udp_script'); FillDeviceSelectIntf("#config_router_add_port_forwarding_udp_iface_select_field", "#router_id", "Выберите линк", false) break; - case '111': + case '204': UpdateRouterForm('config_router_dhcp_relay_script'); FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false) break; @@ -1416,7 +1416,7 @@ const EditJobInRouter = function(router_id, job_id, network_guid) { $('#config_router_add_port_forwarding_udp_dest_ip_input_field').val(job.arg_3 || '') $('#config_router_add_port_forwarding_udp_dest_port_input_field').val(job.arg_4 || '') break; - case '111': // Добавить DHCP Relay + case '204': // Добавить DHCP Relay UpdateRouterForm('config_router_dhcp_relay_script'); FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false); $('#config_router_dhcp_relay_ip_input_field').val(job.arg_1 || ''); diff --git a/front/src/static/config_router.html b/front/src/static/config_router.html index ca4dc251..41f5558c 100755 --- a/front/src/static/config_router.html +++ b/front/src/static/config_router.html @@ -56,7 +56,7 @@ - + From 32e090de84ee23ece97744b698351b073cda5f30 Mon Sep 17 00:00:00 2001 From: igor Date: Tue, 14 Apr 2026 19:35:39 +0300 Subject: [PATCH 03/13] Added tests for DHCP Relay --- .github/workflows/back_test.yml | 1 + .../dhcp_relay_no_client_answer.json | 1 + .../dhcp_relay_no_client_network.json | 235 ++++++++++++++ .../test_json/dhcp_relay_one_host_answer.json | 1 + .../dhcp_relay_one_host_network.json | 235 ++++++++++++++ .../test_json/dhcp_relay_two_host_answer.json | 1 + .../dhcp_relay_two_host_network.json | 284 +++++++++++++++++ front/.env | 2 +- front/tests/test_dhcp_relay.py | 299 ++++++++++++++++++ front/tests/utils/locators.py | 9 + 10 files changed, 1067 insertions(+), 1 deletion(-) create mode 100644 back/tests/test_json/dhcp_relay_no_client_answer.json create mode 100644 back/tests/test_json/dhcp_relay_no_client_network.json create mode 100644 back/tests/test_json/dhcp_relay_one_host_answer.json create mode 100644 back/tests/test_json/dhcp_relay_one_host_network.json create mode 100644 back/tests/test_json/dhcp_relay_two_host_answer.json create mode 100644 back/tests/test_json/dhcp_relay_two_host_network.json create mode 100644 front/tests/test_dhcp_relay.py diff --git a/.github/workflows/back_test.yml b/.github/workflows/back_test.yml index 4932c240..03982831 100644 --- a/.github/workflows/back_test.yml +++ b/.github/workflows/back_test.yml @@ -40,6 +40,7 @@ jobs: libbsd-dev \ dnsmasq \ isc-dhcp-client \ + dhcp-helper \ openvswitch-switch \ git sudo touch /etc/network/interfaces diff --git a/back/tests/test_json/dhcp_relay_no_client_answer.json b/back/tests/test_json/dhcp_relay_no_client_answer.json new file mode 100644 index 00000000..02077f10 --- /dev/null +++ b/back/tests/test_json/dhcp_relay_no_client_answer.json @@ -0,0 +1 @@ +[[{"data": {"id": "pkt_I4WTAG5A", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608410696"}], [{"data": {"id": "pkt_KRONUEO6", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608431950"}], [{"data": {"id": "pkt_94ZYRBWT", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608454333"}], [{"data": {"id": "pkt_JMXM43MG", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608472432"}], [{"data": {"id": "pkt_GV4YNRF6", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608487991"}], [{"data": {"id": "pkt_LUP7R0SC", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608504892"}], [{"data": {"id": "pkt_F93ZHAV9", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608520746"}], [{"data": {"id": "pkt_GGX9IP9R", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608536572"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_no_client_network.json b/back/tests/test_json/dhcp_relay_no_client_network.json new file mode 100644 index 00000000..aca96761 --- /dev/null +++ b/back/tests/test_json/dhcp_relay_no_client_network.json @@ -0,0 +1,235 @@ +{ + "nodes": [ + { + "classes": [ + "l2_switch" + ], + "config": { + "label": "l2sw1", + "stp": 0, + "type": "l2_switch" + }, + "data": { + "id": "l2sw1", + "label": "l2sw1" + }, + "interface": [ + { + "connect": "edge_mnwcvh8lkuozj9b2hw", + "id": "l2sw1_3", + "name": "l2sw1_3", + "type_connection": null, + "vlan": null + }, + { + "id": "l2sw1_1", + "name": "l2sw1_1", + "connect": "edge_mnxf20jpi9lk28vbr2", + "vlan": null, + "type_connection": null + } + ], + "position": { + "x": 250, + "y": 200 + } + }, + { + "classes": [ + "l3_router" + ], + "config": { + "default_gw": "", + "label": "router_1", + "type": "router" + }, + "data": { + "id": "router_1", + "label": "router_1" + }, + "interface": [ + { + "connect": "edge_mnwcvh8lkuozj9b2hw", + "id": "iface_20417632", + "ip": "172.16.10.3", + "name": "iface_20417632", + "netmask": 24 + }, + { + "connect": "edge_mnwcvu628bbw4u6v8di", + "id": "iface_13153444", + "ip": "192.168.10.3", + "name": "iface_13153444", + "netmask": 24 + } + ], + "position": { + "x": 350, + "y": 100 + } + }, + { + "classes": [ + "l2_switch" + ], + "config": { + "label": "l2sw2", + "stp": 0, + "type": "l2_switch" + }, + "data": { + "id": "l2sw2", + "label": "l2sw2" + }, + "interface": [ + { + "connect": "edge_mnwcvu628bbw4u6v8di", + "id": "l2sw2_1", + "name": "l2sw2_1", + "type_connection": null, + "vlan": null + }, + { + "connect": "edge_mnwcvw5j8b38v1xr5sj", + "id": "l2sw2_2", + "name": "l2sw2_2", + "type_connection": null, + "vlan": null + } + ], + "position": { + "x": 450, + "y": 200 + } + }, + { + "classes": [ + "server" + ], + "config": { + "default_gw": "", + "label": "server_1", + "type": "server" + }, + "data": { + "id": "server_1", + "label": "server_1" + }, + "interface": [ + { + "connect": "edge_mnwcvw5j8b38v1xr5sj", + "id": "iface_16417632", + "ip": "192.168.10.2", + "name": "iface_16417632", + "netmask": 24 + } + ], + "position": { + "x": 450, + "y": 300 + } + }, + { + "data": { + "id": "host_1", + "label": "host_1" + }, + "position": { + "x": 250, + "y": 300 + }, + "classes": [ + "host" + ], + "config": { + "type": "host", + "label": "host_1", + "default_gw": "" + }, + "interface": [ + { + "id": "iface_46653148", + "name": "iface_46653148", + "connect": "edge_mnxf20jpi9lk28vbr2" + } + ] + } + ], + "edges": [ + { + "data": { + "id": "edge_mnwcvh8lkuozj9b2hw", + "source": "l2sw1", + "target": "router_1", + "loss_percentage": 0, + "duplicate_percentage": 0 + } + }, + { + "data": { + "id": "edge_mnwcvu628bbw4u6v8di", + "source": "router_1", + "target": "l2sw2", + "loss_percentage": 0, + "duplicate_percentage": 0 + } + }, + { + "data": { + "id": "edge_mnwcvw5j8b38v1xr5sj", + "source": "l2sw2", + "target": "server_1", + "loss_percentage": 0, + "duplicate_percentage": 0 + } + }, + { + "data": { + "id": "edge_mnxf20jpi9lk28vbr2", + "source": "host_1", + "target": "l2sw1", + "loss_percentage": 0, + "duplicate_percentage": 0 + } + } + ], + "jobs": [ + { + "arg_1": "172.16.10.10", + "arg_2": "172.16.10.100", + "arg_3": "24", + "arg_4": "172.16.10.3", + "arg_5": "iface_16417632", + "host_id": "server_1", + "id": "c124a6208e0441478f7548a14003b8b5", + "job_id": 203, + "level": 3, + "print_cmd": "dhcp ip range: 172.16.10.10,172.16.10.100/24 gw: 172.16.10.3" + }, + { + "id": "406fa1c5e3794d36b40c920dc80f129e", + "job_id": 1, + "print_cmd": "ping -c 1 192.168.10.2", + "arg_1": "192.168.10.2", + "level": 2, + "host_id": "router_1" + }, + { + "id": "edf96de59a6a4430a7719670b23fa5af", + "job_id": 204, + "print_cmd": "dhcp-helper -s 192.168.10.2 -i iface_20417632", + "arg_1": "192.168.10.2", + "arg_2": "24", + "arg_3": "iface_20417632", + "level": 2, + "host_id": "router_1" + } + ], + "config": { + "zoom": 2, + "pan_x": 193, + "pan_y": 8 + }, + "pcap": [], + "packets": "[]" +} \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_one_host_answer.json b/back/tests/test_json/dhcp_relay_one_host_answer.json new file mode 100644 index 00000000..3dd25d0d --- /dev/null +++ b/back/tests/test_json/dhcp_relay_one_host_answer.json @@ -0,0 +1 @@ +[[{"data": {"id": "pkt_W0XDDYJD", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703487820"}], [{"data": {"id": "pkt_Y0WH9UK8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703506938"}], [{"data": {"id": "pkt_7COWAFF7", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703523266"}], [{"data": {"id": "pkt_ZTFNG52S", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703540468"}], [{"data": {"id": "pkt_P19NKSF0", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703556123"}], [{"data": {"id": "pkt_AZ16YEMU", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703571557"}], [{"data": {"id": "pkt_6PDQZ0SG", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703588706"}], [{"data": {"id": "pkt_H8DYZ23U", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703605053"}], [{"data": {"id": "pkt_IN2PNVQ8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706142123"}], [{"data": {"id": "pkt_GQX57TJ9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706157607"}], [{"data": {"id": "pkt_M72WFGTE", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706172938"}], [{"data": {"id": "pkt_ZOX6JXM8", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706188085"}], [{"data": {"id": "pkt_PPPBMV1T", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706636786"}], [{"data": {"id": "pkt_4U2BP6YS", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706652292"}], [{"data": {"id": "pkt_R1Y69UE0", "label": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706667924"}], [{"data": {"id": "pkt_MKOFD7I4", "label": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706683782"}], [{"data": {"id": "pkt_76B1UB4B", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706703746"}, {"data": {"id": "pkt_PXZOEMV3", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706703752"}], [{"data": {"id": "pkt_UBQ22Q9M", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706719152"}, {"data": {"id": "pkt_JNRFARAI", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706719172"}], [{"data": {"id": "pkt_UNCQO7YI", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706734541"}, {"data": {"id": "pkt_5246P396", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706734575"}], [{"data": {"id": "pkt_J5DZO3TB", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706751558"}, {"data": {"id": "pkt_OS03BIKA", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706751579"}], [{"data": {"id": "pkt_O2UN0XFT", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706767129"}], [{"data": {"id": "pkt_VVBTTX7F", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706784393"}], [{"data": {"id": "pkt_YG51ZRQW", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706799751"}], [{"data": {"id": "pkt_0ANFGCS1", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706815533"}], [{"data": {"id": "pkt_0Z6VMNLD", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706841292"}], [{"data": {"id": "pkt_I1KH7J2D", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706856545"}], [{"data": {"id": "pkt_S5AFSACM", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706875219"}], [{"data": {"id": "pkt_716CTVDO", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706890737"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_one_host_network.json b/back/tests/test_json/dhcp_relay_one_host_network.json new file mode 100644 index 00000000..9397ea8f --- /dev/null +++ b/back/tests/test_json/dhcp_relay_one_host_network.json @@ -0,0 +1,235 @@ +{ + "nodes": [ + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw1", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw1", + "label":"l2sw1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"l2sw1_1", + "name":"l2sw1_1", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnym51eah6wx0v6s9h", + "id":"l2sw1_2", + "name":"l2sw1_2", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":250, + "y":200 + } + }, + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw2", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw2", + "label":"l2sw2" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"l2sw2_2", + "name":"l2sw2_2", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnym5331cjpgqzraqy4", + "id":"l2sw2_3", + "name":"l2sw2_3", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":450, + "y":200 + } + }, + { + "classes":[ + "server" + ], + "config":{ + "default_gw":"", + "label":"server_1", + "type":"server" + }, + "data":{ + "id":"server_1", + "label":"server_1" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"iface_16417632", + "ip":"192.168.10.2", + "name":"iface_16417632", + "netmask":24 + } + ], + "position":{ + "x":450, + "y":300 + } + }, + { + "classes":[ + "host" + ], + "config":{ + "default_gw":"", + "label":"host_1", + "type":"host" + }, + "data":{ + "id":"host_1", + "label":"host_1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"iface_46653148", + "name":"iface_46653148" + } + ], + "position":{ + "x":250, + "y":300 + } + }, + { + "classes":[ + "l3_router" + ], + "config":{ + "default_gw":"", + "label":"router_1", + "type":"router" + }, + "data":{ + "id":"router_2", + "label":"router_1" + }, + "interface":[ + { + "connect":"edge_mnym51eah6wx0v6s9h", + "id":"iface_02514152", + "ip":"172.16.10.3", + "name":"iface_02514152", + "netmask":24 + }, + { + "connect":"edge_mnym5331cjpgqzraqy4", + "id":"iface_64411470", + "ip":"192.168.10.3", + "name":"iface_64411470", + "netmask":24 + } + ], + "position":{ + "x":350, + "y":100 + } + } + ], + "edges": [ + { + "data":{ + "id":"edge_mnwcvw5j8b38v1xr5sj", + "source":"l2sw2", + "target":"server_1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnxf20jpi9lk28vbr2", + "source":"host_1", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnym51eah6wx0v6s9h", + "source":"l2sw1", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnym5331cjpgqzraqy4", + "source":"l2sw2", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + } + ], + "jobs": [ + { + "arg_1":"172.16.10.10", + "arg_2":"172.16.10.100", + "arg_3":"24", + "arg_4":"172.16.10.3", + "arg_5":"iface_16417632", + "host_id":"server_1", + "id":"c124a6208e0441478f7548a14003b8b5", + "job_id":203, + "level":3, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3" + }, + { + "arg_1":"iface_46653148", + "host_id":"host_1", + "id":"64ef46e73ec84b15b2f661a8aada7b8a", + "job_id":108, + "level":2, + "print_cmd":"dhcp client" + }, + { + "id":"053d51a340b843a697a213cdda070b0c", + "job_id":204, + "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_02514152", + "arg_1":"192.168.10.2", + "arg_2":"24", + "arg_3":"iface_02514152", + "level":2, + "host_id":"router_2" + } + ], + "config": { + "zoom": 2, + "pan_x": 295, + "pan_y": 25 + }, + "pcap": [], + "packets": "[]" +} \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_two_host_answer.json b/back/tests/test_json/dhcp_relay_two_host_answer.json new file mode 100644 index 00000000..51e0ab42 --- /dev/null +++ b/back/tests/test_json/dhcp_relay_two_host_answer.json @@ -0,0 +1 @@ +[[{"data": {"id": "pkt_GZGHM9R3", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567813859"}], [{"data": {"id": "pkt_RE1PAF8X", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567829713"}, {"data": {"id": "pkt_TZ3R5P6W", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567829719"}], [{"data": {"id": "pkt_VB6M19KR", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567845460"}], [{"data": {"id": "pkt_HTUUC8L3", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567863164"}], [{"data": {"id": "pkt_VQ5640NJ", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567878248"}], [{"data": {"id": "pkt_IJCUQJXV", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567894325"}], [{"data": {"id": "pkt_BV05229C", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567909445"}], [{"data": {"id": "pkt_MVIJMVPM", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567930733"}], [{"data": {"id": "pkt_P0OYYY5R", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570061773"}], [{"data": {"id": "pkt_BX7I51X9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570077678"}, {"data": {"id": "pkt_WFXGPQOS", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570077684"}], [{"data": {"id": "pkt_H95FS6UD", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570093048"}], [{"data": {"id": "pkt_7SRDDX1Z", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570108087"}], [{"data": {"id": "pkt_7621MXOK", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570970824"}], [{"data": {"id": "pkt_IES3OF65", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570986236"}], [{"data": {"id": "pkt_E7U4KX47", "label": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571001325"}], [{"data": {"id": "pkt_N9MUYU8T", "label": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571017365"}], [{"data": {"id": "pkt_MJC3FEJL", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571032423"}, {"data": {"id": "pkt_FX1H78ZR", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571032426"}], [{"data": {"id": "pkt_D54PMZUX", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571049477"}, {"data": {"id": "pkt_YSMLHHTO", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571049495"}], [{"data": {"id": "pkt_1XVEAPTS", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571065116"}, {"data": {"id": "pkt_V59GSUL7", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571065147"}], [{"data": {"id": "pkt_VZKWYRR9", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571080874"}, {"data": {"id": "pkt_FW6PLKX6", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571080891"}], [{"data": {"id": "pkt_JZ3R3US7", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571099188"}], [{"data": {"id": "pkt_DQ1528CS", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571118703"}, {"data": {"id": "pkt_K7NDI1V0", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571118712"}], [{"data": {"id": "pkt_B0O36Y8K", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571134073"}], [{"data": {"id": "pkt_AVBSE16F", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571171887"}], [{"data": {"id": "pkt_SFI8ZIMH", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571196063"}], [{"data": {"id": "pkt_GH3Y2UX3", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571211259"}], [{"data": {"id": "pkt_32345LCB", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571226612"}], [{"data": {"id": "pkt_HHWEWEYI", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571241712"}], [{"data": {"id": "pkt_84CAA4XS", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572829404"}], [{"data": {"id": "pkt_NNWYSL1X", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572845972"}, {"data": {"id": "pkt_95BJLBZL", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572845983"}], [{"data": {"id": "pkt_7XT2S70N", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572862758"}], [{"data": {"id": "pkt_NRZBUYDR", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572878108"}], [{"data": {"id": "pkt_BRK6HIKY", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575612281"}], [{"data": {"id": "pkt_VN8HD34O", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575628801"}, {"data": {"id": "pkt_VAGGG2OB", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575628807"}], [{"data": {"id": "pkt_HGJOJV42", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575659153"}], [{"data": {"id": "pkt_XS3W74UV", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575674515"}], [{"data": {"id": "pkt_TM0SPLTY", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575911043"}, {"data": {"id": "pkt_J8RMBTJ8", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575911324"}], [{"data": {"id": "pkt_B0NRUTCQ", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575928246"}, {"data": {"id": "pkt_8UXD5QS9", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575928257"}], [{"data": {"id": "pkt_KVRXMR80", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575946645"}, {"data": {"id": "pkt_BA5EN5G5", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575946695"}], [{"data": {"id": "pkt_8VFUZZM6", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575962139"}, {"data": {"id": "pkt_2D8FZHH6", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575962155"}], [{"data": {"id": "pkt_PE1PPLGZ", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575979282"}], [{"data": {"id": "pkt_AFZSAYRY", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575994437"}, {"data": {"id": "pkt_6HWS7KKK", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575994445"}], [{"data": {"id": "pkt_9CMT64QT", "label": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576010028"}], [{"data": {"id": "pkt_5QY10AP9", "label": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576025936"}], [{"data": {"id": "pkt_7I3JEUSZ", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576046063"}], [{"data": {"id": "pkt_NJU50EAD", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576062002"}], [{"data": {"id": "pkt_22ISEQWE", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576077423"}], [{"data": {"id": "pkt_VH3QU2JN", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576093003"}], [{"data": {"id": "pkt_Z7PBVGRF", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576583038"}], [{"data": {"id": "pkt_K2J254EB", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576599406"}], [{"data": {"id": "pkt_S7148IHR", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576618681"}], [{"data": {"id": "pkt_64S051LE", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576633923"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_two_host_network.json b/back/tests/test_json/dhcp_relay_two_host_network.json new file mode 100644 index 00000000..a62f6267 --- /dev/null +++ b/back/tests/test_json/dhcp_relay_two_host_network.json @@ -0,0 +1,284 @@ +{ + "nodes": [ + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw1", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw1", + "label":"l2sw1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"l2sw1_1", + "name":"l2sw1_1", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnxhr0ryr17gulcfmsp", + "id":"l2sw1_2", + "name":"l2sw1_2", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnymnv682oxza36u70v", + "id":"l2sw1_4", + "name":"l2sw1_4", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":250, + "y":200 + } + }, + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw2", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw2", + "label":"l2sw2" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"l2sw2_2", + "name":"l2sw2_2", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnymnwaol5jotl3mig", + "id":"l2sw2_3", + "name":"l2sw2_3", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":450, + "y":200 + } + }, + { + "classes":[ + "server" + ], + "config":{ + "default_gw":"", + "label":"server_1", + "type":"server" + }, + "data":{ + "id":"server_1", + "label":"server_1" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"iface_16417632", + "ip":"192.168.10.2", + "name":"iface_16417632", + "netmask":24 + } + ], + "position":{ + "x":450, + "y":300 + } + }, + { + "classes":[ + "host" + ], + "config":{ + "default_gw":"", + "label":"host_1", + "type":"host" + }, + "data":{ + "id":"host_1", + "label":"host_1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"iface_46653148", + "name":"iface_46653148" + } + ], + "position":{ + "x":250, + "y":300 + } + }, + { + "classes":[ + "host" + ], + "config":{ + "default_gw":"", + "label":"host_2", + "type":"host" + }, + "data":{ + "id":"host_2", + "label":"host_2" + }, + "interface":[ + { + "connect":"edge_mnxhr0ryr17gulcfmsp", + "id":"iface_44772062", + "name":"iface_44772062" + } + ], + "position":{ + "x":150, + "y":300 + } + }, + { + "classes":[ + "l3_router" + ], + "config":{ + "default_gw":"", + "label":"router_1", + "type":"router" + }, + "data":{ + "id":"router_2", + "label":"router_1" + }, + "interface":[ + { + "connect":"edge_mnymnv682oxza36u70v", + "id":"iface_58425861", + "ip":"172.16.10.3", + "name":"iface_58425861", + "netmask":24 + }, + { + "connect":"edge_mnymnwaol5jotl3mig", + "id":"iface_15453503", + "ip":"192.168.10.3", + "name":"iface_15453503", + "netmask":24 + } + ], + "position":{ + "x":350, + "y":100 + } + } + ], + "edges": [ + { + "data":{ + "id":"edge_mnwcvw5j8b38v1xr5sj", + "source":"l2sw2", + "target":"server_1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnxf20jpi9lk28vbr2", + "source":"host_1", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnxhr0ryr17gulcfmsp", + "source":"host_2", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnymnv682oxza36u70v", + "source":"l2sw1", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnymnwaol5jotl3mig", + "source":"l2sw2", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + } + ], + "jobs": [ + { + "arg_1":"172.16.10.10", + "arg_2":"172.16.10.100", + "arg_3":"24", + "arg_4":"172.16.10.3", + "arg_5":"iface_16417632", + "host_id":"server_1", + "id":"c124a6208e0441478f7548a14003b8b5", + "job_id":203, + "level":3, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3" + }, + { + "arg_1":"iface_46653148", + "host_id":"host_1", + "id":"64ef46e73ec84b15b2f661a8aada7b8a", + "job_id":108, + "level":2, + "print_cmd":"dhcp client" + }, + { + "arg_1":"iface_44772062", + "host_id":"host_2", + "id":"ac3e90f6bc8e41229ae518ed44dba495", + "job_id":108, + "level":3, + "print_cmd":"dhcp client" + }, + { + "id":"9a28a24a9ddc452580b1f17860774129", + "job_id":204, + "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_58425861", + "arg_1":"192.168.10.2", + "arg_2":"24", + "arg_3":"iface_58425861", + "level":3, + "host_id":"router_2" + } + ], + "config": { + "zoom": 2, + "pan_x": 295, + "pan_y": 25 + }, + "pcap": [], + "packets": "[]" +} \ No newline at end of file diff --git a/front/.env b/front/.env index 6b694e49..d136a779 100755 --- a/front/.env +++ b/front/.env @@ -22,4 +22,4 @@ POSTGRES_HOST=172.18.0.4 # YANDEX_POSTGRES_SSLMODE=verify-full # Режим работы: dev (локальный PostgreSQL) или prod (Yandex Cloud PostgreSQL) -MODE=dev +MODE=prod diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py new file mode 100644 index 00000000..f3910092 --- /dev/null +++ b/front/tests/test_dhcp_relay.py @@ -0,0 +1,299 @@ +import pytest +from conftest import MiminetTester +from utils.networks import NodeType, MiminetTestNetwork +from utils.locators import Location +from utils.checkers import TestNetworkComparator + +class TestDHCPRelay: + @pytest.fixture(scope="class") + def network(self, selenium: MiminetTester): + network = MiminetTestNetwork(selenium) + + # nodes + network.add_node(NodeType.Host, 250, 275) # host + network.add_node(NodeType.Switch, 250, 175) # switch 1 + network.add_node(NodeType.Router, 350, 75) # router + network.add_node(NodeType.Switch, 400, 175) # switch 2 + network.add_node(NodeType.Server, 400, 275) # server + + # edges + network.add_edge(0, 1) # host -> switch 1 + network.add_edge(1, 2) # switch 1 -> router + network.add_edge(2, 3) # router -> switch 2 + network.add_edge(3, 4) # switch 2 -> server + + # configure host + host_iface = network.nodes[0]["interface"][0]["id"] + host_config = network.open_node_config(0) + host_config.add_jobs( + 108, + {Location.Network.ConfigPanel.Host.Job.DHCLIENT_INTF.selector: host_iface}, + ) + host_config.submit() + + # configure router + router_iface = network.nodes[2]["interface"][0]["id"] + router_config = network.open_node_config(2) + router_config.fill_link("172.16.10.3", 24) + router_config.fill_link("192.168.10.3", 24, 1) + router_config.add_jobs( + 204, + { + Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_IP_INPUT_FIELD.selector: "192.168.10.2", + Location.Network.ConfigPanel.Router.Job.ADD_ROUTE_MASK_FIELD.selector: "24", + Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_SELECT_IFACE_FIELD: router_iface, + }, + ) + router_config.submit() + + # config server + server_iface = network.nodes[4]["interface"][0]["id"] + server_config = network.open_node_config(4) + server_config.fill_link("192.168.10.2", 24) + server_config.add_jobs( + 203, + { + Location.Network.ConfigPanel.Server.Job.DHCP_IP_RANGE_START_FIELD.selector: "172.16.10.10", + Location.Network.ConfigPanel.Server.Job.DHCP_IP_RANGE_END_FIELD.selector: "172.16.10.100", + Location.Network.ConfigPanel.Server.Job.DHCP_MASK_FIELD.selector: "24", + Location.Network.ConfigPanel.Server.Job.DHCP_IP_GW_FIELD.selector: "172.16.10.3", + Location.Network.ConfigPanel.Server.Job.DHCP_INTF.selector: server_iface, + }, + ) + server_config.submit() + + yield network + + network.delete() + + def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): + assert TestNetworkComparator.compare_nodes(network.nodes, self.JSON_NODES) + assert TestNetworkComparator.compare_edges(network.edges, self.JSON_EDGES) + assert TestNetworkComparator.compare_jobs(network.jobs, self.JSON_JOBS) + + JSON_NODES = [ + { + "data":{ + "id":"host_1", + "label":"host_1" + }, + "position":{ + "x":250, + "y":275 + }, + "classes":[ + "host" + ], + "config":{ + "type":"host", + "label":"host_1", + "default_gw":"" + }, + "interface":[ + { + "id":"iface_61426530", + "name":"iface_61426530", + "connect":"edge_mnysboa63sl7masz29i" + } + ] + }, + { + "data":{ + "id":"l2sw1", + "label":"l2sw1" + }, + "position":{ + "x":250, + "y":175 + }, + "classes":[ + "l2_switch" + ], + "config":{ + "type":"l2_switch", + "label":"l2sw1", + "stp":0 + }, + "interface":[ + { + "id":"l2sw1_1", + "name":"l2sw1_1", + "connect":"edge_mnysboa63sl7masz29i", + "vlan":None, + "type_connection":None + }, + { + "id":"l2sw1_2", + "name":"l2sw1_2", + "connect":"edge_mnysbpcfq1uwnl5unw", + "vlan":None, + "type_connection":None + } + ] + }, + { + "data":{ + "id":"router_1", + "label":"router_1" + }, + "position":{ + "x":350, + "y":75 + }, + "classes":[ + "l3_router" + ], + "config":{ + "type":"router", + "label":"router_1", + "default_gw":"" + }, + "interface":[ + { + "id":"iface_73510361", + "name":"iface_73510361", + "connect":"edge_mnysbpcfq1uwnl5unw", + "ip":"172.16.10.3", + "netmask":24 + }, + { + "id":"iface_37513030", + "name":"iface_37513030", + "connect":"edge_mnysbqjka0cbjig1jb7", + "ip":"192.168.10.3", + "netmask":24 + } + ] + }, + { + "data":{ + "id":"l2sw2", + "label":"l2sw2" + }, + "position":{ + "x":400, + "y":175 + }, + "classes":[ + "l2_switch" + ], + "config":{ + "type":"l2_switch", + "label":"l2sw2", + "stp":0 + }, + "interface":[ + { + "id":"l2sw2_1", + "name":"l2sw2_1", + "connect":"edge_mnysbqjka0cbjig1jb7", + "vlan":None, + "type_connection":None + }, + { + "id":"l2sw2_2", + "name":"l2sw2_2", + "connect":"edge_mnysbrok5nl01pdvoe3", + "vlan":None, + "type_connection":None + } + ] + }, + { + "data":{ + "id":"server_1", + "label":"server_1" + }, + "position":{ + "x":400, + "y":275 + }, + "classes":[ + "server" + ], + "config":{ + "type":"server", + "label":"server_1", + "default_gw":"" + }, + "interface":[ + { + "id":"iface_84271537", + "name":"iface_84271537", + "connect":"edge_mnysbrok5nl01pdvoe3", + "ip":"192.168.10.2", + "netmask":24 + } + ] + } + ] + JSON_EDGES = [ + { + "data":{ + "id":"edge_mnysboa63sl7masz29i", + "source":"host_1", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnysbpcfq1uwnl5unw", + "source":"l2sw1", + "target":"router_1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnysbqjka0cbjig1jb7", + "source":"router_1", + "target":"l2sw2", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnysbrok5nl01pdvoe3", + "source":"l2sw2", + "target":"server_1", + "loss_percentage":0, + "duplicate_percentage":0 + } + } + ] + JSON_JOBS = [ + { + "id":"6a39abbd1e7246cdb17f73544745c73f", + "job_id":108, + "print_cmd":"dhcp client", + "arg_1":"iface_61426530", + "level":0, + "host_id":"host_1" + }, + { + "id":"e796339025e747ccb06421d7c42d897e", + "job_id":204, + "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_73510361", + "arg_1":"192.168.10.2", + "arg_2":"24", + "arg_3":"iface_73510361", + "level":1, + "host_id":"router_1" + }, + { + "id":"64ef30fbc1ea4322a6c85b52739322d8", + "job_id":203, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3", + "arg_1":"172.16.10.10", + "arg_2":"172.16.10.100", + "arg_3":"24", + "arg_4":"172.16.10.3", + "arg_5":"iface_84271537", + "level":2, + "host_id":"server_1" + } + ] diff --git a/front/tests/utils/locators.py b/front/tests/utils/locators.py index 7be2c735..c6c6e774 100644 --- a/front/tests/utils/locators.py +++ b/front/tests/utils/locators.py @@ -286,6 +286,15 @@ class Job: PORT_FORWARDING_UDP_DEST_PORT_FIELD = Locator( "#config_router_add_port_forwarding_udp_dest_port_input_field" ) + DHCP_RELAY_IP_INPUT_FIELD = Locator( + "#config_router_dhcp_relay_ip_input_field" + ) + DHCP_RELAY_MASK_INPUT_FIELD = Locator( + "#config_router_dhcp_relay_mask_input_field" + ) + DHCP_RELAY_SELECT_IFACE_FIELD = Locator( + "#config_router_dhcp_relay_select_iface_field" + ) class Server(CommonDevice): MAIN_FORM = Locator("#config_main_form") From 84d26180695b784794432e8a2e2ad587efbc143d Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 15 Apr 2026 20:30:18 +0300 Subject: [PATCH 04/13] Optimized dhcp relay things to work with dnsmasq --- .github/workflows/back_test.yml | 1 - back/Dockerfile | 1 - back/requirements.txt | 2 +- back/src/jobs.py | 12 +++++------- front/.env | 2 +- front/src/miminet_host.py | 17 ++++++----------- front/src/static/config.js | 7 ++----- front/src/static/config_router.html | 11 ++++------- 8 files changed, 19 insertions(+), 34 deletions(-) diff --git a/.github/workflows/back_test.yml b/.github/workflows/back_test.yml index 03982831..4932c240 100644 --- a/.github/workflows/back_test.yml +++ b/.github/workflows/back_test.yml @@ -40,7 +40,6 @@ jobs: libbsd-dev \ dnsmasq \ isc-dhcp-client \ - dhcp-helper \ openvswitch-switch \ git sudo touch /etc/network/interfaces diff --git a/back/Dockerfile b/back/Dockerfile index 8dee516e..d08a0461 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -20,7 +20,6 @@ RUN apt-get update \ python3-pip \ dnsmasq \ isc-dhcp-client \ - dhcp-helper \ python3-setuptools \ gcc \ make \ diff --git a/back/requirements.txt b/back/requirements.txt index 95f961ac..8d949ec2 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -4,4 +4,4 @@ python-dotenv==1.1.1 marshmallow_dataclass==8.7.1 psutil==7.0.0 netaddr==1.3.0 -ipmininet @ git+https://github.com/IgorFilimonov/ipmininet.git \ No newline at end of file +ipmininet @ git+https://github.com/IgorFilimonov/ipmininet.git@4cff7aa0c6ca99f802d31434a0fc310e34a28d57 \ No newline at end of file diff --git a/back/src/jobs.py b/back/src/jobs.py index a5d36a5a..34131f27 100755 --- a/back/src/jobs.py +++ b/back/src/jobs.py @@ -7,7 +7,7 @@ from network_schema import Job from mininet.log import info from ipmininet.host.config.dnsmasq import Dnsmasq -from ipmininet.router.config.dhcphelper import DHCPHelper +from ipmininet.router.config.dhcprelay import DHCPRelay def filter_arg_for_options( @@ -537,17 +537,15 @@ def dhcp_server(job: Job, job_host): def dhcp_relay(job: Job, job_host): dhcp_server_ip = job.arg_1 - dhcp_server_mask = job.arg_2 - intf = job.arg_3 - daemon = DHCPHelper( + listening_ip = job.arg_2 + daemon = DHCPRelay( node=job_host, dhcp_server_ip=dhcp_server_ip, - dhcp_server_mask=dhcp_server_mask, - intf=intf, + listening_ip=listening_ip, ) job_host.build_daemon(daemon) job_host.start_daemon(daemon) - info(f"dhcp-helper -s {dhcp_server_ip} -i {intf}") + info(f"dnsmasq --dhcp-relay={listening_ip},{dhcp_server_ip}") class Jobs: diff --git a/front/.env b/front/.env index d136a779..6b694e49 100755 --- a/front/.env +++ b/front/.env @@ -22,4 +22,4 @@ POSTGRES_HOST=172.18.0.4 # YANDEX_POSTGRES_SSLMODE=verify-full # Режим работы: dev (локальный PostgreSQL) или prod (Yandex Cloud PostgreSQL) -MODE=prod +MODE=dev diff --git a/front/src/miminet_host.py b/front/src/miminet_host.py index 64980684..a20f7352 100755 --- a/front/src/miminet_host.py +++ b/front/src/miminet_host.py @@ -427,18 +427,13 @@ def build_error(error_type: str, cmd: str) -> str: ).set_error_msg('Не указан интерфейс для команды "Добавить ARP Proxy-интерфейс"') # Add DHCP Relay -dhcp_relay_job = router.create_job(204, "dhcp-helper -s [0] -i [2]") -dhcp_relay_job.add_param("config_router_dhcp_relay_ip_input_field").add_check( +dhcp_relay_job = router.create_job(204, "dnsmasq --dhcp-relay=[1],[0]") +dhcp_relay_job.add_param("config_router_dhcp_relay_server_ip_input_field").add_check( IPv4_check -).set_error_msg('Неверно указан IP адрес диапазона для команды "Включить DHCP Relay"') -dhcp_relay_job.add_param("config_router_dhcp_relay_mask_input_field").add_check( - mask_check -).set_error_msg('Неверно указана маска для команды "Включить DHCP Relay"') -dhcp_relay_job.add_param( - "config_router_dhcp_relay_select_iface_field" -).add_check(emptiness_check).set_error_msg( - 'Не указан интерфейс для команды "Включить DHCP Relay"' -) +).set_error_msg('Неверно указан IP адрес для команды "Включить DHCP Relay"') +dhcp_relay_job.add_param("config_router_dhcp_relay_listening_ip_input_field").add_check( + IPv4_check +).set_error_msg('Неверно указан IP адрес для команды "Включить DHCP Relay"') # ~ ~ ~ SWITCH JOBS ~ ~ ~ diff --git a/front/src/static/config.js b/front/src/static/config.js index df019a8b..c0623b26 100755 --- a/front/src/static/config.js +++ b/front/src/static/config.js @@ -937,7 +937,6 @@ const ConfigRouterJobOnChange = function(evnt) { break; case '204': UpdateRouterForm('config_router_dhcp_relay_script'); - FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false) break; default: console.log("Unknown target.value"); @@ -1418,10 +1417,8 @@ const EditJobInRouter = function(router_id, job_id, network_guid) { break; case '204': // Добавить DHCP Relay UpdateRouterForm('config_router_dhcp_relay_script'); - FillDeviceSelectIntf("#config_router_dhcp_relay_select_iface_field", "#router_id", "Выберите линк", false); - $('#config_router_dhcp_relay_ip_input_field').val(job.arg_1 || ''); - $('#config_router_dhcp_relay_mask_input_field').val(job.arg_2 || '0'); - $('#config_router_dhcp_relay_select_iface_field').val(job.arg_3 || ''); + $('#config_router_dhcp_relay_server_ip_input_field').val(job.arg_1 || ''); + $('#config_router_dhcp_relay_listening_ip_input_field').val(job.arg_2 || ''); break; default: console.error('Unknown job type for editing:', job.job_id); diff --git a/front/src/static/config_router.html b/front/src/static/config_router.html index 41f5558c..2c3f6385 100755 --- a/front/src/static/config_router.html +++ b/front/src/static/config_router.html @@ -212,12 +212,9 @@ From 1f8f17c36eccac99c0a0d2dc635c67807f6eec60 Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 15 Apr 2026 21:30:46 +0300 Subject: [PATCH 05/13] Updated dhcp relay tests and added a new one for no gateway case --- .../dhcp_relay_no_client_answer.json | 2 +- .../dhcp_relay_no_client_network.json | 302 +++++++++--------- .../dhcp_relay_no_gateway_answer.json | 1 + .../dhcp_relay_no_gateway_network.json | 233 ++++++++++++++ .../test_json/dhcp_relay_one_host_answer.json | 2 +- .../dhcp_relay_one_host_network.json | 32 +- .../test_json/dhcp_relay_two_host_answer.json | 2 +- .../dhcp_relay_two_host_network.json | 14 +- front/.env | 2 +- front/tests/test_dhcp_relay.py | 133 ++++---- front/tests/utils/locators.py | 11 +- 11 files changed, 478 insertions(+), 256 deletions(-) create mode 100644 back/tests/test_json/dhcp_relay_no_gateway_answer.json create mode 100644 back/tests/test_json/dhcp_relay_no_gateway_network.json diff --git a/back/tests/test_json/dhcp_relay_no_client_answer.json b/back/tests/test_json/dhcp_relay_no_client_answer.json index 02077f10..54811d22 100644 --- a/back/tests/test_json/dhcp_relay_no_client_answer.json +++ b/back/tests/test_json/dhcp_relay_no_client_answer.json @@ -1 +1 @@ -[[{"data": {"id": "pkt_I4WTAG5A", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608410696"}], [{"data": {"id": "pkt_KRONUEO6", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608431950"}], [{"data": {"id": "pkt_94ZYRBWT", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608454333"}], [{"data": {"id": "pkt_JMXM43MG", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608472432"}], [{"data": {"id": "pkt_GV4YNRF6", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608487991"}], [{"data": {"id": "pkt_LUP7R0SC", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608504892"}], [{"data": {"id": "pkt_F93ZHAV9", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608520746"}], [{"data": {"id": "pkt_GGX9IP9R", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776163608536572"}]] \ No newline at end of file +[[{"data": {"id": "pkt_UI1QGK53", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274672995385"}], [{"data": {"id": "pkt_048BOD85", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673012501"}], [{"data": {"id": "pkt_FIPV4QO4", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673027832"}], [{"data": {"id": "pkt_ZY0N0WW7", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673043742"}], [{"data": {"id": "pkt_JW244TDV", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvu628bbw4u6v8di", "source": "router_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673060126"}], [{"data": {"id": "pkt_WP9RYEH0", "label": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673076671"}], [{"data": {"id": "pkt_ISD5OLD5", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673091814"}], [{"data": {"id": "pkt_BCYWGSZS", "label": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "type": "packet"}, "config": {"type": "ICMP echo-reply\n192.168.10.2 > 192.168.10.3", "path": "edge_mnwcvu628bbw4u6v8di", "source": "l2sw2", "target": "router_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274673107063"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_no_client_network.json b/back/tests/test_json/dhcp_relay_no_client_network.json index aca96761..3321e6dc 100644 --- a/back/tests/test_json/dhcp_relay_no_client_network.json +++ b/back/tests/test_json/dhcp_relay_no_client_network.json @@ -1,228 +1,226 @@ { "nodes": [ { - "classes": [ + "classes":[ "l2_switch" ], - "config": { - "label": "l2sw1", - "stp": 0, - "type": "l2_switch" + "config":{ + "label":"l2sw1", + "stp":0, + "type":"l2_switch" }, - "data": { - "id": "l2sw1", - "label": "l2sw1" + "data":{ + "id":"l2sw1", + "label":"l2sw1" }, - "interface": [ + "interface":[ { - "connect": "edge_mnwcvh8lkuozj9b2hw", - "id": "l2sw1_3", - "name": "l2sw1_3", - "type_connection": null, - "vlan": null - }, + "connect":"edge_mnwcvh8lkuozj9b2hw", + "id":"l2sw1_3", + "name":"l2sw1_3", + "type_connection":null, + "vlan":null + }, { - "id": "l2sw1_1", - "name": "l2sw1_1", - "connect": "edge_mnxf20jpi9lk28vbr2", - "vlan": null, - "type_connection": null + "id":"l2sw1_1", + "name":"l2sw1_1", + "connect":"edge_mnxf20jpi9lk28vbr2", + "vlan":null, + "type_connection":null } ], - "position": { - "x": 250, - "y": 200 + "position":{ + "x":250, + "y":200 } - }, + }, { - "classes": [ + "classes":[ "l3_router" ], - "config": { - "default_gw": "", - "label": "router_1", - "type": "router" + "config":{ + "default_gw":"", + "label":"router_1", + "type":"router" + }, + "data":{ + "id":"router_1", + "label":"router_1" }, - "data": { - "id": "router_1", - "label": "router_1" - }, - "interface": [ + "interface":[ { - "connect": "edge_mnwcvh8lkuozj9b2hw", - "id": "iface_20417632", - "ip": "172.16.10.3", - "name": "iface_20417632", - "netmask": 24 + "connect":"edge_mnwcvh8lkuozj9b2hw", + "id":"iface_20417632", + "ip":"172.16.10.3", + "name":"iface_20417632", + "netmask":24 }, { - "connect": "edge_mnwcvu628bbw4u6v8di", - "id": "iface_13153444", - "ip": "192.168.10.3", - "name": "iface_13153444", - "netmask": 24 + "connect":"edge_mnwcvu628bbw4u6v8di", + "id":"iface_13153444", + "ip":"192.168.10.3", + "name":"iface_13153444", + "netmask":24 } ], - "position": { - "x": 350, - "y": 100 + "position":{ + "x":350, + "y":100 } - }, + }, { - "classes": [ + "classes":[ "l2_switch" - ], - "config": { - "label": "l2sw2", - "stp": 0, - "type": "l2_switch" + ], + "config":{ + "label":"l2sw2", + "stp":0, + "type":"l2_switch" }, - "data": { - "id": "l2sw2", - "label": "l2sw2" + "data":{ + "id":"l2sw2", + "label":"l2sw2" }, - "interface": [ + "interface":[ { - "connect": "edge_mnwcvu628bbw4u6v8di", - "id": "l2sw2_1", - "name": "l2sw2_1", - "type_connection": null, - "vlan": null + "connect":"edge_mnwcvu628bbw4u6v8di", + "id":"l2sw2_1", + "name":"l2sw2_1", + "type_connection":null, + "vlan":null }, { - "connect": "edge_mnwcvw5j8b38v1xr5sj", - "id": "l2sw2_2", - "name": "l2sw2_2", - "type_connection": null, - "vlan": null + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"l2sw2_2", + "name":"l2sw2_2", + "type_connection":null, + "vlan":null } ], - "position": { - "x": 450, - "y": 200 + "position":{ + "x":450, + "y":200 } }, { - "classes": [ + "classes":[ "server" ], - "config": { - "default_gw": "", - "label": "server_1", - "type": "server" + "config":{ + "default_gw":"192.168.10.3", + "label":"server_1", + "type":"server" }, - "data": { - "id": "server_1", - "label": "server_1" + "data":{ + "id":"server_1", + "label":"server_1" }, - "interface": [ + "interface":[ { - "connect": "edge_mnwcvw5j8b38v1xr5sj", - "id": "iface_16417632", - "ip": "192.168.10.2", - "name": "iface_16417632", - "netmask": 24 + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"iface_16417632", + "ip":"192.168.10.2", + "name":"iface_16417632", + "netmask":24 } ], - "position": { - "x": 450, - "y": 300 + "position":{ + "x":450, + "y":300 } }, { - "data": { - "id": "host_1", - "label": "host_1" + "data":{ + "id":"host_1", + "label":"host_1" }, - "position": { - "x": 250, - "y": 300 + "position":{ + "x":250, + "y":300 }, - "classes": [ + "classes":[ "host" ], - "config": { - "type": "host", - "label": "host_1", - "default_gw": "" + "config":{ + "type":"host", + "label":"host_1", + "default_gw":"" }, - "interface": [ + "interface":[ { - "id": "iface_46653148", - "name": "iface_46653148", - "connect": "edge_mnxf20jpi9lk28vbr2" + "id":"iface_46653148", + "name":"iface_46653148", + "connect":"edge_mnxf20jpi9lk28vbr2" } ] } ], "edges": [ { - "data": { - "id": "edge_mnwcvh8lkuozj9b2hw", - "source": "l2sw1", - "target": "router_1", - "loss_percentage": 0, - "duplicate_percentage": 0 + "data":{ + "id":"edge_mnwcvh8lkuozj9b2hw", + "source":"l2sw1", + "target":"router_1", + "loss_percentage":0, + "duplicate_percentage":0 } }, { - "data": { - "id": "edge_mnwcvu628bbw4u6v8di", - "source": "router_1", - "target": "l2sw2", - "loss_percentage": 0, - "duplicate_percentage": 0 + "data":{ + "id":"edge_mnwcvu628bbw4u6v8di", + "source":"router_1", + "target":"l2sw2", + "loss_percentage":0, + "duplicate_percentage":0 } }, { - "data": { - "id": "edge_mnwcvw5j8b38v1xr5sj", - "source": "l2sw2", - "target": "server_1", - "loss_percentage": 0, - "duplicate_percentage": 0 + "data":{ + "id":"edge_mnwcvw5j8b38v1xr5sj", + "source":"l2sw2", + "target":"server_1", + "loss_percentage":0, + "duplicate_percentage":0 } }, { - "data": { - "id": "edge_mnxf20jpi9lk28vbr2", - "source": "host_1", - "target": "l2sw1", - "loss_percentage": 0, - "duplicate_percentage": 0 + "data":{ + "id":"edge_mnxf20jpi9lk28vbr2", + "source":"host_1", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 } } ], "jobs": [ { - "arg_1": "172.16.10.10", - "arg_2": "172.16.10.100", - "arg_3": "24", - "arg_4": "172.16.10.3", - "arg_5": "iface_16417632", - "host_id": "server_1", - "id": "c124a6208e0441478f7548a14003b8b5", - "job_id": 203, - "level": 3, - "print_cmd": "dhcp ip range: 172.16.10.10,172.16.10.100/24 gw: 172.16.10.3" + "arg_1":"172.16.10.10", + "arg_2":"172.16.10.100", + "arg_3":"24", + "arg_4":"172.16.10.3", + "arg_5":"iface_16417632", + "host_id":"server_1", + "id":"c124a6208e0441478f7548a14003b8b5", + "job_id":203, + "level":3, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3" }, { - "id": "406fa1c5e3794d36b40c920dc80f129e", - "job_id": 1, - "print_cmd": "ping -c 1 192.168.10.2", - "arg_1": "192.168.10.2", - "level": 2, - "host_id": "router_1" - }, + "id":"406fa1c5e3794d36b40c920dc80f129e", + "job_id":1, + "print_cmd":"ping -c 1 192.168.10.2", + "arg_1":"192.168.10.2", + "level":2, + "host_id":"router_1" + }, { - "id": "edf96de59a6a4430a7719670b23fa5af", - "job_id": 204, - "print_cmd": "dhcp-helper -s 192.168.10.2 -i iface_20417632", - "arg_1": "192.168.10.2", - "arg_2": "24", - "arg_3": "iface_20417632", - "level": 2, - "host_id": "router_1" + "id":"2e320d269cf841aa977817f5f21fb14e", + "job_id":204, + "print_cmd":"dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1":"192.168.10.2", + "arg_2":"172.16.10.3", + "level":2, + "host_id":"router_1" } ], "config": { diff --git a/back/tests/test_json/dhcp_relay_no_gateway_answer.json b/back/tests/test_json/dhcp_relay_no_gateway_answer.json new file mode 100644 index 00000000..fbc4b478 --- /dev/null +++ b/back/tests/test_json/dhcp_relay_no_gateway_answer.json @@ -0,0 +1 @@ +[[{"data": {"id": "pkt_57448WIK", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275940616600"}], [{"data": {"id": "pkt_HANS8A4M", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275940632726"}], [{"data": {"id": "pkt_JIATC2IM", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275940648266"}], [{"data": {"id": "pkt_VK4RTY1D", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275940672473"}], [{"data": {"id": "pkt_R9BDLMKS", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275941678060"}], [{"data": {"id": "pkt_AUHPWQY3", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275941693430"}], [{"data": {"id": "pkt_EQY7NYFC", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275942702422"}], [{"data": {"id": "pkt_TJ0JAYUO", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275942718230"}], [{"data": {"id": "pkt_WJ7SM6D5", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275943572633"}], [{"data": {"id": "pkt_E8Z0HLZ3", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275943597792"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_no_gateway_network.json b/back/tests/test_json/dhcp_relay_no_gateway_network.json new file mode 100644 index 00000000..674e493c --- /dev/null +++ b/back/tests/test_json/dhcp_relay_no_gateway_network.json @@ -0,0 +1,233 @@ +{ + "nodes": [ + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw1", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw1", + "label":"l2sw1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"l2sw1_1", + "name":"l2sw1_1", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnym51eah6wx0v6s9h", + "id":"l2sw1_2", + "name":"l2sw1_2", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":250, + "y":200 + } + }, + { + "classes":[ + "l2_switch" + ], + "config":{ + "label":"l2sw2", + "stp":0, + "type":"l2_switch" + }, + "data":{ + "id":"l2sw2", + "label":"l2sw2" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"l2sw2_2", + "name":"l2sw2_2", + "type_connection":null, + "vlan":null + }, + { + "connect":"edge_mnym5331cjpgqzraqy4", + "id":"l2sw2_3", + "name":"l2sw2_3", + "type_connection":null, + "vlan":null + } + ], + "position":{ + "x":450, + "y":200 + } + }, + { + "classes":[ + "server" + ], + "config":{ + "default_gw":"", + "label":"server_1", + "type":"server" + }, + "data":{ + "id":"server_1", + "label":"server_1" + }, + "interface":[ + { + "connect":"edge_mnwcvw5j8b38v1xr5sj", + "id":"iface_16417632", + "ip":"192.168.10.2", + "name":"iface_16417632", + "netmask":24 + } + ], + "position":{ + "x":450, + "y":300 + } + }, + { + "classes":[ + "host" + ], + "config":{ + "default_gw":"", + "label":"host_1", + "type":"host" + }, + "data":{ + "id":"host_1", + "label":"host_1" + }, + "interface":[ + { + "connect":"edge_mnxf20jpi9lk28vbr2", + "id":"iface_46653148", + "name":"iface_46653148" + } + ], + "position":{ + "x":250, + "y":300 + } + }, + { + "classes":[ + "l3_router" + ], + "config":{ + "default_gw":"", + "label":"router_1", + "type":"router" + }, + "data":{ + "id":"router_2", + "label":"router_1" + }, + "interface":[ + { + "connect":"edge_mnym51eah6wx0v6s9h", + "id":"iface_02514152", + "ip":"172.16.10.3", + "name":"iface_02514152", + "netmask":24 + }, + { + "connect":"edge_mnym5331cjpgqzraqy4", + "id":"iface_64411470", + "ip":"192.168.10.3", + "name":"iface_64411470", + "netmask":24 + } + ], + "position":{ + "x":350, + "y":100 + } + } + ], + "edges": [ + { + "data":{ + "id":"edge_mnwcvw5j8b38v1xr5sj", + "source":"l2sw2", + "target":"server_1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnxf20jpi9lk28vbr2", + "source":"host_1", + "target":"l2sw1", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnym51eah6wx0v6s9h", + "source":"l2sw1", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + }, + { + "data":{ + "id":"edge_mnym5331cjpgqzraqy4", + "source":"l2sw2", + "target":"router_2", + "loss_percentage":0, + "duplicate_percentage":0 + } + } + ], + "jobs": [ + { + "id":"2fb202bfe7bd48d390734b68f0e2a61d", + "job_id":203, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3", + "arg_1":"172.16.10.10", + "arg_2":"172.16.10.100", + "arg_3":"24", + "arg_4":"172.16.10.3", + "arg_5":"iface_16417632", + "level":1, + "host_id":"server_1" + }, + { + "id":"773ccad1dc9244ca84603adfc4996b13", + "job_id":108, + "print_cmd":"dhcp client", + "arg_1":"iface_46653148", + "level":2, + "host_id":"host_1" + }, + { + "id":"b9a5d85ff6824c77ac6b79916868dde9", + "job_id":204, + "print_cmd":"dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1":"192.168.10.2", + "arg_2":"172.16.10.3", + "level":2, + "host_id":"router_2" + } + ], + "config": { + "zoom": 2, + "pan_x": 226, + "pan_y": 32 + }, + "pcap": [], + "packets": "[]" +} \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_one_host_answer.json b/back/tests/test_json/dhcp_relay_one_host_answer.json index 3dd25d0d..5baffaa1 100644 --- a/back/tests/test_json/dhcp_relay_one_host_answer.json +++ b/back/tests/test_json/dhcp_relay_one_host_answer.json @@ -1 +1 @@ -[[{"data": {"id": "pkt_W0XDDYJD", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703487820"}], [{"data": {"id": "pkt_Y0WH9UK8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703506938"}], [{"data": {"id": "pkt_7COWAFF7", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703523266"}], [{"data": {"id": "pkt_ZTFNG52S", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703540468"}], [{"data": {"id": "pkt_P19NKSF0", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703556123"}], [{"data": {"id": "pkt_AZ16YEMU", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703571557"}], [{"data": {"id": "pkt_6PDQZ0SG", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703588706"}], [{"data": {"id": "pkt_H8DYZ23U", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170703605053"}], [{"data": {"id": "pkt_IN2PNVQ8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706142123"}], [{"data": {"id": "pkt_GQX57TJ9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706157607"}], [{"data": {"id": "pkt_M72WFGTE", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706172938"}], [{"data": {"id": "pkt_ZOX6JXM8", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706188085"}], [{"data": {"id": "pkt_PPPBMV1T", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706636786"}], [{"data": {"id": "pkt_4U2BP6YS", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706652292"}], [{"data": {"id": "pkt_R1Y69UE0", "label": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706667924"}], [{"data": {"id": "pkt_MKOFD7I4", "label": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at f2:ec:01:39:b2:fa", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706683782"}], [{"data": {"id": "pkt_76B1UB4B", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706703746"}, {"data": {"id": "pkt_PXZOEMV3", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706703752"}], [{"data": {"id": "pkt_UBQ22Q9M", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706719152"}, {"data": {"id": "pkt_JNRFARAI", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706719172"}], [{"data": {"id": "pkt_UNCQO7YI", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706734541"}, {"data": {"id": "pkt_5246P396", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706734575"}], [{"data": {"id": "pkt_J5DZO3TB", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706751558"}, {"data": {"id": "pkt_OS03BIKA", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706751579"}], [{"data": {"id": "pkt_O2UN0XFT", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706767129"}], [{"data": {"id": "pkt_VVBTTX7F", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706784393"}], [{"data": {"id": "pkt_YG51ZRQW", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706799751"}], [{"data": {"id": "pkt_0ANFGCS1", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706815533"}], [{"data": {"id": "pkt_0Z6VMNLD", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706841292"}], [{"data": {"id": "pkt_I1KH7J2D", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706856545"}], [{"data": {"id": "pkt_S5AFSACM", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706875219"}], [{"data": {"id": "pkt_716CTVDO", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776170706890737"}]] \ No newline at end of file +[[{"data": {"id": "pkt_AXCL63GP", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458598371"}], [{"data": {"id": "pkt_3HIXS5PZ", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458617785"}], [{"data": {"id": "pkt_9JD4CGL7", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458635547"}], [{"data": {"id": "pkt_RGLR8ZZU", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458650834"}], [{"data": {"id": "pkt_J18K75BO", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458668841"}], [{"data": {"id": "pkt_GUW7LSIK", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:02", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458684908"}], [{"data": {"id": "pkt_S4MPKFCQ", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458700631"}], [{"data": {"id": "pkt_9X4HLA3K", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458716180"}], [{"data": {"id": "pkt_Y97GBZD3", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458731971"}], [{"data": {"id": "pkt_PS3HPWBN", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458749686"}], [{"data": {"id": "pkt_J8A9M2WL", "label": "ARP-response\n192.168.10.3 at b6:26:e1:dc:04:3d", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at b6:26:e1:dc:04:3d", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458767553"}], [{"data": {"id": "pkt_0JP2K6LE", "label": "ARP-response\n192.168.10.3 at b6:26:e1:dc:04:3d", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at b6:26:e1:dc:04:3d", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458784013"}], [{"data": {"id": "pkt_K4GOSPAU", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458803871"}], [{"data": {"id": "pkt_3HBQ2GCX", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458824362"}], [{"data": {"id": "pkt_P0ZD1ER9", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458839747"}], [{"data": {"id": "pkt_ZFUP1M50", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274458855049"}], [{"data": {"id": "pkt_HXXDBDTS", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274459886331"}], [{"data": {"id": "pkt_O3ZHEUY7", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274459902402"}], [{"data": {"id": "pkt_LX4LL32B", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274460909267"}], [{"data": {"id": "pkt_UZD6JTH5", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274460924472"}], [{"data": {"id": "pkt_M8XYB04Z", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461124444"}], [{"data": {"id": "pkt_JWTVLIVK", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461141033"}], [{"data": {"id": "pkt_V6PXSKCC", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461157135"}], [{"data": {"id": "pkt_KZHHJSUF", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461181723"}], [{"data": {"id": "pkt_2ZOK158O", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461749118"}, {"data": {"id": "pkt_1F4ID9XE", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461749495"}], [{"data": {"id": "pkt_U5WUUZIP", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461764435"}, {"data": {"id": "pkt_4Q5P76EP", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461764518"}], [{"data": {"id": "pkt_A7M6HSSN", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461780240"}, {"data": {"id": "pkt_I0DLSYW5", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461780297"}, {"data": {"id": "pkt_VUXA96EB", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461780327"}], [{"data": {"id": "pkt_4UQMDCHD", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461795643"}, {"data": {"id": "pkt_ASR42W0A", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461795669"}, {"data": {"id": "pkt_94QMROKZ", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461795676"}], [{"data": {"id": "pkt_JWZD1IPO", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461811492"}], [{"data": {"id": "pkt_C7V9PV0K", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnym51eah6wx0v6s9h", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461830787"}], [{"data": {"id": "pkt_UOFM0RW3", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnym5331cjpgqzraqy4", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461847123"}], [{"data": {"id": "pkt_SNL7BILN", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461867744"}], [{"data": {"id": "pkt_GX9TXBCM", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461887205"}], [{"data": {"id": "pkt_8B7FO3UC", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnym5331cjpgqzraqy4", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461902698"}], [{"data": {"id": "pkt_WGR692VK", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnym51eah6wx0v6s9h", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461917959"}], [{"data": {"id": "pkt_X3GNFLA1", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776274461933400"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_one_host_network.json b/back/tests/test_json/dhcp_relay_one_host_network.json index 9397ea8f..f5e3d19d 100644 --- a/back/tests/test_json/dhcp_relay_one_host_network.json +++ b/back/tests/test_json/dhcp_relay_one_host_network.json @@ -73,7 +73,7 @@ "server" ], "config":{ - "default_gw":"", + "default_gw":"192.168.10.3", "label":"server_1", "type":"server" }, @@ -195,40 +195,38 @@ ], "jobs": [ { + "id":"2fb202bfe7bd48d390734b68f0e2a61d", + "job_id":203, + "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3", "arg_1":"172.16.10.10", "arg_2":"172.16.10.100", "arg_3":"24", "arg_4":"172.16.10.3", "arg_5":"iface_16417632", - "host_id":"server_1", - "id":"c124a6208e0441478f7548a14003b8b5", - "job_id":203, - "level":3, - "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3" + "level":1, + "host_id":"server_1" }, { - "arg_1":"iface_46653148", - "host_id":"host_1", - "id":"64ef46e73ec84b15b2f661a8aada7b8a", + "id":"773ccad1dc9244ca84603adfc4996b13", "job_id":108, + "print_cmd":"dhcp client", + "arg_1":"iface_46653148", "level":2, - "print_cmd":"dhcp client" + "host_id":"host_1" }, { - "id":"053d51a340b843a697a213cdda070b0c", + "id":"b9a5d85ff6824c77ac6b79916868dde9", "job_id":204, - "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_02514152", - "arg_1":"192.168.10.2", - "arg_2":"24", - "arg_3":"iface_02514152", + "print_cmd":"dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1":"192.168.10.2", + "arg_2":"172.16.10.3", "level":2, "host_id":"router_2" } ], "config": { "zoom": 2, - "pan_x": 295, - "pan_y": 25 + "pan_x": 226, + "pan_y": 32 }, "pcap": [], "packets": "[]" diff --git a/back/tests/test_json/dhcp_relay_two_host_answer.json b/back/tests/test_json/dhcp_relay_two_host_answer.json index 51e0ab42..2dcc24d3 100644 --- a/back/tests/test_json/dhcp_relay_two_host_answer.json +++ b/back/tests/test_json/dhcp_relay_two_host_answer.json @@ -1 +1 @@ -[[{"data": {"id": "pkt_GZGHM9R3", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567813859"}], [{"data": {"id": "pkt_RE1PAF8X", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567829713"}, {"data": {"id": "pkt_TZ3R5P6W", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567829719"}], [{"data": {"id": "pkt_VB6M19KR", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567845460"}], [{"data": {"id": "pkt_HTUUC8L3", "label": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 192.168.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567863164"}], [{"data": {"id": "pkt_VQ5640NJ", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567878248"}], [{"data": {"id": "pkt_IJCUQJXV", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567894325"}], [{"data": {"id": "pkt_BV05229C", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567909445"}], [{"data": {"id": "pkt_MVIJMVPM", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171567930733"}], [{"data": {"id": "pkt_P0OYYY5R", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570061773"}], [{"data": {"id": "pkt_BX7I51X9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570077678"}, {"data": {"id": "pkt_WFXGPQOS", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570077684"}], [{"data": {"id": "pkt_H95FS6UD", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570093048"}], [{"data": {"id": "pkt_7SRDDX1Z", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570108087"}], [{"data": {"id": "pkt_7621MXOK", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570970824"}], [{"data": {"id": "pkt_IES3OF65", "label": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.3? Tell 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171570986236"}], [{"data": {"id": "pkt_E7U4KX47", "label": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571001325"}], [{"data": {"id": "pkt_N9MUYU8T", "label": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.3 at de:32:55:d1:d1:0d", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571017365"}], [{"data": {"id": "pkt_MJC3FEJL", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571032423"}, {"data": {"id": "pkt_FX1H78ZR", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571032426"}], [{"data": {"id": "pkt_D54PMZUX", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571049477"}, {"data": {"id": "pkt_YSMLHHTO", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571049495"}], [{"data": {"id": "pkt_1XVEAPTS", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571065116"}, {"data": {"id": "pkt_V59GSUL7", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571065147"}], [{"data": {"id": "pkt_VZKWYRR9", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571080874"}, {"data": {"id": "pkt_FW6PLKX6", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571080891"}], [{"data": {"id": "pkt_JZ3R3US7", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571099188"}], [{"data": {"id": "pkt_DQ1528CS", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571118703"}, {"data": {"id": "pkt_K7NDI1V0", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571118712"}], [{"data": {"id": "pkt_B0O36Y8K", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571134073"}], [{"data": {"id": "pkt_AVBSE16F", "label": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571171887"}], [{"data": {"id": "pkt_SFI8ZIMH", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571196063"}], [{"data": {"id": "pkt_GH3Y2UX3", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571211259"}], [{"data": {"id": "pkt_32345LCB", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571226612"}], [{"data": {"id": "pkt_HHWEWEYI", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171571241712"}], [{"data": {"id": "pkt_84CAA4XS", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572829404"}], [{"data": {"id": "pkt_NNWYSL1X", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572845972"}, {"data": {"id": "pkt_95BJLBZL", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572845983"}], [{"data": {"id": "pkt_7XT2S70N", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572862758"}], [{"data": {"id": "pkt_NRZBUYDR", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171572878108"}], [{"data": {"id": "pkt_BRK6HIKY", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575612281"}], [{"data": {"id": "pkt_VN8HD34O", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575628801"}, {"data": {"id": "pkt_VAGGG2OB", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575628807"}], [{"data": {"id": "pkt_HGJOJV42", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575659153"}], [{"data": {"id": "pkt_XS3W74UV", "label": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575674515"}], [{"data": {"id": "pkt_TM0SPLTY", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575911043"}, {"data": {"id": "pkt_J8RMBTJ8", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575911324"}], [{"data": {"id": "pkt_B0NRUTCQ", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575928246"}, {"data": {"id": "pkt_8UXD5QS9", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575928257"}], [{"data": {"id": "pkt_KVRXMR80", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575946645"}, {"data": {"id": "pkt_BA5EN5G5", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575946695"}], [{"data": {"id": "pkt_8VFUZZM6", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575962139"}, {"data": {"id": "pkt_2D8FZHH6", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575962155"}], [{"data": {"id": "pkt_PE1PPLGZ", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575979282"}], [{"data": {"id": "pkt_AFZSAYRY", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575994437"}, {"data": {"id": "pkt_6HWS7KKK", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171575994445"}], [{"data": {"id": "pkt_9CMT64QT", "label": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576010028"}], [{"data": {"id": "pkt_5QY10AP9", "label": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n192.168.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576025936"}], [{"data": {"id": "pkt_7I3JEUSZ", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576046063"}], [{"data": {"id": "pkt_NJU50EAD", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576062002"}], [{"data": {"id": "pkt_22ISEQWE", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576077423"}], [{"data": {"id": "pkt_VH3QU2JN", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576093003"}], [{"data": {"id": "pkt_Z7PBVGRF", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576583038"}], [{"data": {"id": "pkt_K2J254EB", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576599406"}], [{"data": {"id": "pkt_S7148IHR", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576618681"}], [{"data": {"id": "pkt_64S051LE", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776171576633923"}]] \ No newline at end of file +[[{"data": {"id": "pkt_7DYLD3RW", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485578966"}], [{"data": {"id": "pkt_XRW4BO3J", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485594751"}, {"data": {"id": "pkt_B3RQIKS5", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485594759"}], [{"data": {"id": "pkt_KSUJIR7T", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485611007"}], [{"data": {"id": "pkt_1VP4I9Q6", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485626725"}], [{"data": {"id": "pkt_KZ5J5VQY", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485642010"}], [{"data": {"id": "pkt_QUGND8PQ", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485657784"}], [{"data": {"id": "pkt_0PU2XHFS", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485672956"}], [{"data": {"id": "pkt_Z66CMJVQ", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485688441"}], [{"data": {"id": "pkt_CE07C43F", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485703846"}], [{"data": {"id": "pkt_MQBGV81E", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485719409"}], [{"data": {"id": "pkt_UH1ZW70Q", "label": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485734579"}], [{"data": {"id": "pkt_SAPZP6M8", "label": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485750139"}], [{"data": {"id": "pkt_8QHAV8QO", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485765318"}], [{"data": {"id": "pkt_9PAT2EKA", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485780648"}], [{"data": {"id": "pkt_NMB65CK6", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485796023"}], [{"data": {"id": "pkt_J20NCFW2", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485811212"}, {"data": {"id": "pkt_4O8DVAET", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485811218"}], [{"data": {"id": "pkt_80B4ZM3N", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486829934"}], [{"data": {"id": "pkt_CZ6RU65F", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486845510"}, {"data": {"id": "pkt_SFAK9D4A", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486845517"}], [{"data": {"id": "pkt_YBRAYHNG", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487853447"}], [{"data": {"id": "pkt_BWMP5J2L", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487869070"}, {"data": {"id": "pkt_1ODBFCDJ", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487869075"}], [{"data": {"id": "pkt_8P1VF4B8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488266789"}], [{"data": {"id": "pkt_04H91S5B", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488284882"}, {"data": {"id": "pkt_ZNUUJJT0", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488284891"}], [{"data": {"id": "pkt_W46QHGKS", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488300614"}], [{"data": {"id": "pkt_K0ZVKFC8", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488318543"}], [{"data": {"id": "pkt_DL3MMSQ7", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488717269"}, {"data": {"id": "pkt_GB2DD7BJ", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488717569"}], [{"data": {"id": "pkt_A1N4718M", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488734966"}, {"data": {"id": "pkt_RCHX4YH3", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488734977"}], [{"data": {"id": "pkt_EK5J6ZUQ", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755442"}, {"data": {"id": "pkt_64SMXRUL", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755628"}, {"data": {"id": "pkt_7G3NPH3D", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755756"}], [{"data": {"id": "pkt_439PPY6A", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771507"}, {"data": {"id": "pkt_186YOVFB", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771558"}, {"data": {"id": "pkt_IYU4WHBH", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771576"}], [{"data": {"id": "pkt_S82MO63A", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488787059"}], [{"data": {"id": "pkt_VC1PTDWE", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488802634"}, {"data": {"id": "pkt_4IUVYQ43", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488802643"}], [{"data": {"id": "pkt_3YB15GXW", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488825437"}], [{"data": {"id": "pkt_X5ADCEMB", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488840690"}], [{"data": {"id": "pkt_ZQCFK0WN", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488863705"}], [{"data": {"id": "pkt_NYFQSSZM", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488878774"}], [{"data": {"id": "pkt_ZN0FBMR4", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488894706"}], [{"data": {"id": "pkt_C9J75HYH", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488910250"}], [{"data": {"id": "pkt_VLZJDFS9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490598138"}], [{"data": {"id": "pkt_TGTYWWYT", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490613936"}, {"data": {"id": "pkt_EF44J75F", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490613943"}], [{"data": {"id": "pkt_IBRKHR72", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490630408"}], [{"data": {"id": "pkt_FJQ38LG2", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490646315"}], [{"data": {"id": "pkt_A87CCTFD", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490662455"}], [{"data": {"id": "pkt_XDGZCLGQ", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490677548"}], [{"data": {"id": "pkt_1UZZ8UGB", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490694970"}], [{"data": {"id": "pkt_4VBTUBSJ", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490713005"}, {"data": {"id": "pkt_TYPTLTVT", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490713013"}], [{"data": {"id": "pkt_YY1WLMWM", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491757910"}], [{"data": {"id": "pkt_M4PT9UUZ", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491776192"}, {"data": {"id": "pkt_4X1995FP", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491776198"}], [{"data": {"id": "pkt_LSO095FX", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492782911"}], [{"data": {"id": "pkt_750A6S0Y", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492798061"}, {"data": {"id": "pkt_CLNX1U76", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492798073"}], [{"data": {"id": "pkt_VYIMT6YO", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493404745"}], [{"data": {"id": "pkt_H0DYSJK3", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493419816"}, {"data": {"id": "pkt_ROA59UJ5", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493419824"}], [{"data": {"id": "pkt_S4SKMXOO", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493435637"}], [{"data": {"id": "pkt_3P4FS5G0", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493450700"}], [{"data": {"id": "pkt_G0MU86KQ", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493681778"}, {"data": {"id": "pkt_GDRNRP72", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493682213"}], [{"data": {"id": "pkt_2V8FFT1O", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493697530"}, {"data": {"id": "pkt_QWZ0LU6T", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493697541"}], [{"data": {"id": "pkt_TZR6AEI7", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714220"}, {"data": {"id": "pkt_V9USMB0V", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714278"}, {"data": {"id": "pkt_5YL157XI", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714333"}], [{"data": {"id": "pkt_8SL9SH5O", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729873"}, {"data": {"id": "pkt_QNY3CQKG", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729905"}, {"data": {"id": "pkt_W4584I5N", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729914"}], [{"data": {"id": "pkt_3Z6DWUT0", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493745363"}], [{"data": {"id": "pkt_E2U6I66I", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493761583"}, {"data": {"id": "pkt_0ZLU96EI", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493761590"}], [{"data": {"id": "pkt_79D8KCZG", "label": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493777178"}], [{"data": {"id": "pkt_ML90O41R", "label": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493792650"}], [{"data": {"id": "pkt_UJQP1MNI", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493815452"}], [{"data": {"id": "pkt_1SMUACEH", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493833716"}], [{"data": {"id": "pkt_GTCUW72S", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493849595"}], [{"data": {"id": "pkt_DAH55GFC", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493872598"}], [{"data": {"id": "pkt_FGDFIE8F", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494386776"}], [{"data": {"id": "pkt_MCDSWQDA", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494403738"}], [{"data": {"id": "pkt_TQWYB80J", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494419681"}], [{"data": {"id": "pkt_0PCZE73H", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494434965"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_two_host_network.json b/back/tests/test_json/dhcp_relay_two_host_network.json index a62f6267..172535ed 100644 --- a/back/tests/test_json/dhcp_relay_two_host_network.json +++ b/back/tests/test_json/dhcp_relay_two_host_network.json @@ -80,7 +80,7 @@ "server" ], "config":{ - "default_gw":"", + "default_gw":"192.168.10.3", "label":"server_1", "type":"server" }, @@ -264,20 +264,18 @@ "print_cmd":"dhcp client" }, { - "id":"9a28a24a9ddc452580b1f17860774129", + "id":"711e8834714846359a90fce7b9810976", "job_id":204, - "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_58425861", - "arg_1":"192.168.10.2", - "arg_2":"24", - "arg_3":"iface_58425861", + "print_cmd":"dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1":"192.168.10.2", + "arg_2":"172.16.10.3", "level":3, "host_id":"router_2" } ], "config": { "zoom": 2, - "pan_x": 295, - "pan_y": 25 + "pan_x": 169, + "pan_y": 19 }, "pcap": [], "packets": "[]" diff --git a/front/.env b/front/.env index 6b694e49..118ca745 100755 --- a/front/.env +++ b/front/.env @@ -22,4 +22,4 @@ POSTGRES_HOST=172.18.0.4 # YANDEX_POSTGRES_SSLMODE=verify-full # Режим работы: dev (локальный PostgreSQL) или prod (Yandex Cloud PostgreSQL) -MODE=dev +MODE=prod \ No newline at end of file diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index f3910092..4b7ae12c 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -32,16 +32,14 @@ def network(self, selenium: MiminetTester): host_config.submit() # configure router - router_iface = network.nodes[2]["interface"][0]["id"] router_config = network.open_node_config(2) router_config.fill_link("172.16.10.3", 24) router_config.fill_link("192.168.10.3", 24, 1) router_config.add_jobs( 204, { - Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_IP_INPUT_FIELD.selector: "192.168.10.2", - Location.Network.ConfigPanel.Router.Job.ADD_ROUTE_MASK_FIELD.selector: "24", - Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_SELECT_IFACE_FIELD: router_iface, + Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_SERVER_IP_INPUT_FIELD.selector: "192.168.10.2", + Location.Network.ConfigPanel.Router.Job.DHCP_RELAY_LISTENING_IP_INPUT_FIELD.selector: "172.16.10.3", }, ) router_config.submit() @@ -50,6 +48,7 @@ def network(self, selenium: MiminetTester): server_iface = network.nodes[4]["interface"][0]["id"] server_config = network.open_node_config(4) server_config.fill_link("192.168.10.2", 24) + server_config.fill_default_gw("192.168.10.3") server_config.add_jobs( 203, { @@ -91,9 +90,9 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface":[ { - "id":"iface_61426530", - "name":"iface_61426530", - "connect":"edge_mnysboa63sl7masz29i" + "id":"iface_61426530", + "name":"iface_61426530", + "connect":"edge_mnysboa63sl7masz29i" } ] }, @@ -116,18 +115,18 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface":[ { - "id":"l2sw1_1", - "name":"l2sw1_1", - "connect":"edge_mnysboa63sl7masz29i", - "vlan":None, - "type_connection":None + "id":"l2sw1_1", + "name":"l2sw1_1", + "connect":"edge_mnysboa63sl7masz29i", + "vlan":None, + "type_connection":None }, { - "id":"l2sw1_2", - "name":"l2sw1_2", - "connect":"edge_mnysbpcfq1uwnl5unw", - "vlan":None, - "type_connection":None + "id":"l2sw1_2", + "name":"l2sw1_2", + "connect":"edge_mnysbpcfq1uwnl5unw", + "vlan":None, + "type_connection":None } ] }, @@ -150,18 +149,18 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface":[ { - "id":"iface_73510361", - "name":"iface_73510361", - "connect":"edge_mnysbpcfq1uwnl5unw", - "ip":"172.16.10.3", - "netmask":24 + "id":"iface_73510361", + "name":"iface_73510361", + "connect":"edge_mnysbpcfq1uwnl5unw", + "ip":"172.16.10.3", + "netmask":24 }, { - "id":"iface_37513030", - "name":"iface_37513030", - "connect":"edge_mnysbqjka0cbjig1jb7", - "ip":"192.168.10.3", - "netmask":24 + "id":"iface_37513030", + "name":"iface_37513030", + "connect":"edge_mnysbqjka0cbjig1jb7", + "ip":"192.168.10.3", + "netmask":24 } ] }, @@ -184,18 +183,18 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface":[ { - "id":"l2sw2_1", - "name":"l2sw2_1", - "connect":"edge_mnysbqjka0cbjig1jb7", - "vlan":None, - "type_connection":None + "id":"l2sw2_1", + "name":"l2sw2_1", + "connect":"edge_mnysbqjka0cbjig1jb7", + "vlan":None, + "type_connection":None }, { - "id":"l2sw2_2", - "name":"l2sw2_2", - "connect":"edge_mnysbrok5nl01pdvoe3", - "vlan":None, - "type_connection":None + "id":"l2sw2_2", + "name":"l2sw2_2", + "connect":"edge_mnysbrok5nl01pdvoe3", + "vlan":None, + "type_connection":None } ] }, @@ -214,15 +213,15 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "config":{ "type":"server", "label":"server_1", - "default_gw":"" + "default_gw":"192.168.10.3" }, "interface":[ { - "id":"iface_84271537", - "name":"iface_84271537", - "connect":"edge_mnysbrok5nl01pdvoe3", - "ip":"192.168.10.2", - "netmask":24 + "id":"iface_84271537", + "name":"iface_84271537", + "connect":"edge_mnysbrok5nl01pdvoe3", + "ip":"192.168.10.2", + "netmask":24 } ] } @@ -265,35 +264,33 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): } } ] - JSON_JOBS = [ + JSON_JOBS = [ { - "id":"6a39abbd1e7246cdb17f73544745c73f", - "job_id":108, - "print_cmd":"dhcp client", - "arg_1":"iface_61426530", - "level":0, - "host_id":"host_1" + 'id':'90f1af9818c24105b9418c1a503eb04d', + 'job_id':108, + 'print_cmd':'dhcp client', + 'arg_1':'iface_61426530', + 'level':0, + 'host_id':'host_1' }, { - "id":"e796339025e747ccb06421d7c42d897e", - "job_id":204, - "print_cmd":"dhcp-helper -s 192.168.10.2 -i iface_73510361", - "arg_1":"192.168.10.2", - "arg_2":"24", - "arg_3":"iface_73510361", - "level":1, - "host_id":"router_1" + 'id':'60b97a16a1cd4ae2aaa921b77f7ec2fd', + 'job_id':204, + 'print_cmd':'dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2', 'arg_1':'192.168.10.2', + 'arg_2':'172.16.10.3', + 'level':1, + 'host_id':'router_1' }, { - "id":"64ef30fbc1ea4322a6c85b52739322d8", - "job_id":203, - "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3", - "arg_1":"172.16.10.10", - "arg_2":"172.16.10.100", - "arg_3":"24", - "arg_4":"172.16.10.3", - "arg_5":"iface_84271537", - "level":2, - "host_id":"server_1" + 'id':'1ed7256caf6f4f75ae50eddb5607920c', + 'job_id':203, + 'print_cmd':'dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3', + 'arg_1':'172.16.10.10', + 'arg_2':'172.16.10.100', + 'arg_3':'24', + 'arg_4':'172.16.10.3', + 'arg_5':'iface_84271537', + 'level':2, + 'host_id':'server_1' } ] diff --git a/front/tests/utils/locators.py b/front/tests/utils/locators.py index c6c6e774..867aa134 100644 --- a/front/tests/utils/locators.py +++ b/front/tests/utils/locators.py @@ -286,14 +286,11 @@ class Job: PORT_FORWARDING_UDP_DEST_PORT_FIELD = Locator( "#config_router_add_port_forwarding_udp_dest_port_input_field" ) - DHCP_RELAY_IP_INPUT_FIELD = Locator( - "#config_router_dhcp_relay_ip_input_field" + DHCP_RELAY_SERVER_IP_INPUT_FIELD = Locator( + "#config_router_dhcp_relay_server_ip_input_field" ) - DHCP_RELAY_MASK_INPUT_FIELD = Locator( - "#config_router_dhcp_relay_mask_input_field" - ) - DHCP_RELAY_SELECT_IFACE_FIELD = Locator( - "#config_router_dhcp_relay_select_iface_field" + DHCP_RELAY_LISTENING_IP_INPUT_FIELD = Locator( + "#config_router_dhcp_relay_listening_ip_input_field" ) class Server(CommonDevice): From 1ce93717aad0e46ac59b526e2e39173b10ed33a8 Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 15 Apr 2026 23:51:31 +0300 Subject: [PATCH 06/13] Hopefully tests are passed now --- .../test_json/dhcp_relay_two_host_answer.json | 1 - .../dhcp_relay_two_host_network.json | 282 --------------- front/tests/test_dhcp_relay.py | 327 +++++++++--------- 3 files changed, 159 insertions(+), 451 deletions(-) delete mode 100644 back/tests/test_json/dhcp_relay_two_host_answer.json delete mode 100644 back/tests/test_json/dhcp_relay_two_host_network.json diff --git a/back/tests/test_json/dhcp_relay_two_host_answer.json b/back/tests/test_json/dhcp_relay_two_host_answer.json deleted file mode 100644 index 2dcc24d3..00000000 --- a/back/tests/test_json/dhcp_relay_two_host_answer.json +++ /dev/null @@ -1 +0,0 @@ -[[{"data": {"id": "pkt_7DYLD3RW", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485578966"}], [{"data": {"id": "pkt_XRW4BO3J", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485594751"}, {"data": {"id": "pkt_B3RQIKS5", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485594759"}], [{"data": {"id": "pkt_KSUJIR7T", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485611007"}], [{"data": {"id": "pkt_1VP4I9Q6", "label": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.2? Tell 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485626725"}], [{"data": {"id": "pkt_KZ5J5VQY", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485642010"}], [{"data": {"id": "pkt_QUGND8PQ", "label": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.2 at 00:00:00:00:00:03", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485657784"}], [{"data": {"id": "pkt_0PU2XHFS", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485672956"}], [{"data": {"id": "pkt_Z66CMJVQ", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485688441"}], [{"data": {"id": "pkt_CE07C43F", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485703846"}], [{"data": {"id": "pkt_MQBGV81E", "label": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "type": "packet"}, "config": {"type": "ARP-request\nWho has 192.168.10.3? Tell 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485719409"}], [{"data": {"id": "pkt_UH1ZW70Q", "label": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485734579"}], [{"data": {"id": "pkt_SAPZP6M8", "label": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "type": "packet"}, "config": {"type": "ARP-response\n192.168.10.3 at ea:ac:29:f5:8e:91", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485750139"}], [{"data": {"id": "pkt_8QHAV8QO", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485765318"}], [{"data": {"id": "pkt_9PAT2EKA", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485780648"}], [{"data": {"id": "pkt_NMB65CK6", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485796023"}], [{"data": {"id": "pkt_J20NCFW2", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485811212"}, {"data": {"id": "pkt_4O8DVAET", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275485811218"}], [{"data": {"id": "pkt_80B4ZM3N", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486829934"}], [{"data": {"id": "pkt_CZ6RU65F", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486845510"}, {"data": {"id": "pkt_SFAK9D4A", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275486845517"}], [{"data": {"id": "pkt_YBRAYHNG", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487853447"}], [{"data": {"id": "pkt_BWMP5J2L", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487869070"}, {"data": {"id": "pkt_1ODBFCDJ", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275487869075"}], [{"data": {"id": "pkt_8P1VF4B8", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488266789"}], [{"data": {"id": "pkt_04H91S5B", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488284882"}, {"data": {"id": "pkt_ZNUUJJT0", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488284891"}], [{"data": {"id": "pkt_W46QHGKS", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488300614"}], [{"data": {"id": "pkt_K0ZVKFC8", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488318543"}], [{"data": {"id": "pkt_DL3MMSQ7", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488717269"}, {"data": {"id": "pkt_GB2DD7BJ", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488717569"}], [{"data": {"id": "pkt_A1N4718M", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488734966"}, {"data": {"id": "pkt_RCHX4YH3", "label": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488734977"}], [{"data": {"id": "pkt_EK5J6ZUQ", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755442"}, {"data": {"id": "pkt_64SMXRUL", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755628"}, {"data": {"id": "pkt_7G3NPH3D", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488755756"}], [{"data": {"id": "pkt_439PPY6A", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771507"}, {"data": {"id": "pkt_186YOVFB", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771558"}, {"data": {"id": "pkt_IYU4WHBH", "label": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.11/16\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488771576"}], [{"data": {"id": "pkt_S82MO63A", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488787059"}], [{"data": {"id": "pkt_VC1PTDWE", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488802634"}, {"data": {"id": "pkt_4IUVYQ43", "label": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488802643"}], [{"data": {"id": "pkt_3YB15GXW", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488825437"}], [{"data": {"id": "pkt_X5ADCEMB", "label": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.11\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488840690"}], [{"data": {"id": "pkt_ZQCFK0WN", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488863705"}], [{"data": {"id": "pkt_NYFQSSZM", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488878774"}], [{"data": {"id": "pkt_ZN0FBMR4", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488894706"}], [{"data": {"id": "pkt_C9J75HYH", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.11", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275488910250"}], [{"data": {"id": "pkt_VLZJDFS9", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490598138"}], [{"data": {"id": "pkt_TGTYWWYT", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490613936"}, {"data": {"id": "pkt_EF44J75F", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490613943"}], [{"data": {"id": "pkt_IBRKHR72", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490630408"}], [{"data": {"id": "pkt_FJQ38LG2", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490646315"}], [{"data": {"id": "pkt_A87CCTFD", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490662455"}], [{"data": {"id": "pkt_XDGZCLGQ", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490677548"}], [{"data": {"id": "pkt_1UZZ8UGB", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490694970"}], [{"data": {"id": "pkt_4VBTUBSJ", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490713005"}, {"data": {"id": "pkt_TYPTLTVT", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275490713013"}], [{"data": {"id": "pkt_YY1WLMWM", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491757910"}], [{"data": {"id": "pkt_M4PT9UUZ", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491776192"}, {"data": {"id": "pkt_4X1995FP", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275491776198"}], [{"data": {"id": "pkt_LSO095FX", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492782911"}], [{"data": {"id": "pkt_750A6S0Y", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492798061"}, {"data": {"id": "pkt_CLNX1U76", "label": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.12? Tell 172.16.10.3", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275492798073"}], [{"data": {"id": "pkt_VYIMT6YO", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493404745"}], [{"data": {"id": "pkt_H0DYSJK3", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493419816"}, {"data": {"id": "pkt_ROA59UJ5", "label": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Discover\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493419824"}], [{"data": {"id": "pkt_S4SKMXOO", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493435637"}], [{"data": {"id": "pkt_3P4FS5G0", "label": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Discover\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493450700"}], [{"data": {"id": "pkt_G0MU86KQ", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493681778"}, {"data": {"id": "pkt_GDRNRP72", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493682213"}], [{"data": {"id": "pkt_2V8FFT1O", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493697530"}, {"data": {"id": "pkt_QWZ0LU6T", "label": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493697541"}], [{"data": {"id": "pkt_TZR6AEI7", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714220"}, {"data": {"id": "pkt_V9USMB0V", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714278"}, {"data": {"id": "pkt_5YL157XI", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493714333"}], [{"data": {"id": "pkt_8SL9SH5O", "label": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "type": "packet"}, "config": {"type": "ICMP echo-request\n192.168.10.2 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729873"}, {"data": {"id": "pkt_QNY3CQKG", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729905"}, {"data": {"id": "pkt_W4584I5N", "label": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP Offer 172.16.10.12/16\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493729914"}], [{"data": {"id": "pkt_3Z6DWUT0", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "host_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493745363"}], [{"data": {"id": "pkt_E2U6I66I", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493761583"}, {"data": {"id": "pkt_0ZLU96EI", "label": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n0.0.0.0 > 255.255.255.255", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493761590"}], [{"data": {"id": "pkt_79D8KCZG", "label": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "path": "edge_mnymnwaol5jotl3mig", "source": "router_2", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493777178"}], [{"data": {"id": "pkt_ML90O41R", "label": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "type": "packet"}, "config": {"type": "DHCP Request 172.16.10.12\n172.16.10.3 > 192.168.10.2", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "l2sw2", "target": "server_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493792650"}], [{"data": {"id": "pkt_UJQP1MNI", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnwcvw5j8b38v1xr5sj", "source": "server_1", "target": "l2sw2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493815452"}], [{"data": {"id": "pkt_1SMUACEH", "label": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "type": "packet"}, "config": {"type": "DHCP ACK\n192.168.10.2 > 172.16.10.3", "path": "edge_mnymnwaol5jotl3mig", "source": "l2sw2", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493833716"}], [{"data": {"id": "pkt_GTCUW72S", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493849595"}], [{"data": {"id": "pkt_DAH55GFC", "label": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "type": "packet"}, "config": {"type": "DHCP ACK\n172.16.10.3 > 172.16.10.12", "path": "edge_mnxhr0ryr17gulcfmsp", "source": "l2sw1", "target": "host_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275493872598"}], [{"data": {"id": "pkt_FGDFIE8F", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnymnv682oxza36u70v", "source": "router_2", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494386776"}], [{"data": {"id": "pkt_MCDSWQDA", "label": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "type": "packet"}, "config": {"type": "ARP-request\nWho has 172.16.10.11? Tell 172.16.10.3", "path": "edge_mnxf20jpi9lk28vbr2", "source": "l2sw1", "target": "host_1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494403738"}], [{"data": {"id": "pkt_TQWYB80J", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnxf20jpi9lk28vbr2", "source": "host_1", "target": "l2sw1", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494419681"}], [{"data": {"id": "pkt_0PCZE73H", "label": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "type": "packet"}, "config": {"type": "ARP-response\n172.16.10.11 at 00:00:00:00:00:01", "path": "edge_mnymnv682oxza36u70v", "source": "l2sw1", "target": "router_2", "loss_percentage": 0.0, "duplicate_percentage": 0.0}, "timestamp": "1776275494434965"}]] \ No newline at end of file diff --git a/back/tests/test_json/dhcp_relay_two_host_network.json b/back/tests/test_json/dhcp_relay_two_host_network.json deleted file mode 100644 index 172535ed..00000000 --- a/back/tests/test_json/dhcp_relay_two_host_network.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "nodes": [ - { - "classes":[ - "l2_switch" - ], - "config":{ - "label":"l2sw1", - "stp":0, - "type":"l2_switch" - }, - "data":{ - "id":"l2sw1", - "label":"l2sw1" - }, - "interface":[ - { - "connect":"edge_mnxf20jpi9lk28vbr2", - "id":"l2sw1_1", - "name":"l2sw1_1", - "type_connection":null, - "vlan":null - }, - { - "connect":"edge_mnxhr0ryr17gulcfmsp", - "id":"l2sw1_2", - "name":"l2sw1_2", - "type_connection":null, - "vlan":null - }, - { - "connect":"edge_mnymnv682oxza36u70v", - "id":"l2sw1_4", - "name":"l2sw1_4", - "type_connection":null, - "vlan":null - } - ], - "position":{ - "x":250, - "y":200 - } - }, - { - "classes":[ - "l2_switch" - ], - "config":{ - "label":"l2sw2", - "stp":0, - "type":"l2_switch" - }, - "data":{ - "id":"l2sw2", - "label":"l2sw2" - }, - "interface":[ - { - "connect":"edge_mnwcvw5j8b38v1xr5sj", - "id":"l2sw2_2", - "name":"l2sw2_2", - "type_connection":null, - "vlan":null - }, - { - "connect":"edge_mnymnwaol5jotl3mig", - "id":"l2sw2_3", - "name":"l2sw2_3", - "type_connection":null, - "vlan":null - } - ], - "position":{ - "x":450, - "y":200 - } - }, - { - "classes":[ - "server" - ], - "config":{ - "default_gw":"192.168.10.3", - "label":"server_1", - "type":"server" - }, - "data":{ - "id":"server_1", - "label":"server_1" - }, - "interface":[ - { - "connect":"edge_mnwcvw5j8b38v1xr5sj", - "id":"iface_16417632", - "ip":"192.168.10.2", - "name":"iface_16417632", - "netmask":24 - } - ], - "position":{ - "x":450, - "y":300 - } - }, - { - "classes":[ - "host" - ], - "config":{ - "default_gw":"", - "label":"host_1", - "type":"host" - }, - "data":{ - "id":"host_1", - "label":"host_1" - }, - "interface":[ - { - "connect":"edge_mnxf20jpi9lk28vbr2", - "id":"iface_46653148", - "name":"iface_46653148" - } - ], - "position":{ - "x":250, - "y":300 - } - }, - { - "classes":[ - "host" - ], - "config":{ - "default_gw":"", - "label":"host_2", - "type":"host" - }, - "data":{ - "id":"host_2", - "label":"host_2" - }, - "interface":[ - { - "connect":"edge_mnxhr0ryr17gulcfmsp", - "id":"iface_44772062", - "name":"iface_44772062" - } - ], - "position":{ - "x":150, - "y":300 - } - }, - { - "classes":[ - "l3_router" - ], - "config":{ - "default_gw":"", - "label":"router_1", - "type":"router" - }, - "data":{ - "id":"router_2", - "label":"router_1" - }, - "interface":[ - { - "connect":"edge_mnymnv682oxza36u70v", - "id":"iface_58425861", - "ip":"172.16.10.3", - "name":"iface_58425861", - "netmask":24 - }, - { - "connect":"edge_mnymnwaol5jotl3mig", - "id":"iface_15453503", - "ip":"192.168.10.3", - "name":"iface_15453503", - "netmask":24 - } - ], - "position":{ - "x":350, - "y":100 - } - } - ], - "edges": [ - { - "data":{ - "id":"edge_mnwcvw5j8b38v1xr5sj", - "source":"l2sw2", - "target":"server_1", - "loss_percentage":0, - "duplicate_percentage":0 - } - }, - { - "data":{ - "id":"edge_mnxf20jpi9lk28vbr2", - "source":"host_1", - "target":"l2sw1", - "loss_percentage":0, - "duplicate_percentage":0 - } - }, - { - "data":{ - "id":"edge_mnxhr0ryr17gulcfmsp", - "source":"host_2", - "target":"l2sw1", - "loss_percentage":0, - "duplicate_percentage":0 - } - }, - { - "data":{ - "id":"edge_mnymnv682oxza36u70v", - "source":"l2sw1", - "target":"router_2", - "loss_percentage":0, - "duplicate_percentage":0 - } - }, - { - "data":{ - "id":"edge_mnymnwaol5jotl3mig", - "source":"l2sw2", - "target":"router_2", - "loss_percentage":0, - "duplicate_percentage":0 - } - } - ], - "jobs": [ - { - "arg_1":"172.16.10.10", - "arg_2":"172.16.10.100", - "arg_3":"24", - "arg_4":"172.16.10.3", - "arg_5":"iface_16417632", - "host_id":"server_1", - "id":"c124a6208e0441478f7548a14003b8b5", - "job_id":203, - "level":3, - "print_cmd":"dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3" - }, - { - "arg_1":"iface_46653148", - "host_id":"host_1", - "id":"64ef46e73ec84b15b2f661a8aada7b8a", - "job_id":108, - "level":2, - "print_cmd":"dhcp client" - }, - { - "arg_1":"iface_44772062", - "host_id":"host_2", - "id":"ac3e90f6bc8e41229ae518ed44dba495", - "job_id":108, - "level":3, - "print_cmd":"dhcp client" - }, - { - "id":"711e8834714846359a90fce7b9810976", - "job_id":204, - "print_cmd":"dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1":"192.168.10.2", - "arg_2":"172.16.10.3", - "level":3, - "host_id":"router_2" - } - ], - "config": { - "zoom": 2, - "pan_x": 169, - "pan_y": 19 - }, - "pcap": [], - "packets": "[]" -} \ No newline at end of file diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index 4b7ae12c..9380193d 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -72,225 +72,216 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): JSON_NODES = [ { - "data":{ - "id":"host_1", - "label":"host_1" + "classes": ["l2_switch"], + "config": { + "label": "l2sw1", + "stp": 0, + "type": "l2_switch" }, - "position":{ - "x":250, - "y":275 + "data": { + "id": "l2sw1", + "label": "l2sw1" }, - "classes":[ - "host" - ], - "config":{ - "type":"host", - "label":"host_1", - "default_gw":"" - }, - "interface":[ + "interface": [ + { + "connect": "edge_mnxf20jpi9lk28vbr2", + "id": "l2sw1_1", + "name": "l2sw1_1", + "type_connection": None, + "vlan": None + }, { - "id":"iface_61426530", - "name":"iface_61426530", - "connect":"edge_mnysboa63sl7masz29i" + "connect": "edge_mnym51eah6wx0v6s9h", + "id": "l2sw1_2", + "name": "l2sw1_2", + "type_connection": None, + "vlan": None } - ] + ], + "position": { + "x": 25, + "y": 50 + } }, { - "data":{ - "id":"l2sw1", - "label":"l2sw1" - }, - "position":{ - "x":250, - "y":175 + "classes": ["l2_switch"], + "config": { + "label": "l2sw2", + "stp": 0, + "type": "l2_switch" }, - "classes":[ - "l2_switch" - ], - "config":{ - "type":"l2_switch", - "label":"l2sw1", - "stp":0 + "data": { + "id": "l2sw2", + "label": "l2sw2" }, - "interface":[ + "interface": [ { - "id":"l2sw1_1", - "name":"l2sw1_1", - "connect":"edge_mnysboa63sl7masz29i", - "vlan":None, - "type_connection":None + "connect": "edge_mnwcvw5j8b38v1xr5sj", + "id": "l2sw2_2", + "name": "l2sw2_2", + "type_connection": None, + "vlan": None }, { - "id":"l2sw1_2", - "name":"l2sw1_2", - "connect":"edge_mnysbpcfq1uwnl5unw", - "vlan":None, - "type_connection":None + "connect": "edge_mnym5331cjpgqzraqy4", + "id": "l2sw2_3", + "name": "l2sw2_3", + "type_connection": None, + "vlan": None } - ] + ], + "position": { + "x": 100, + "y": 50 + } }, { - "data":{ - "id":"router_1", - "label":"router_1" + "classes": ["server"], + "config": { + "default_gw": "", + "label": "server_1", + "type": "server" }, - "position":{ - "x":350, - "y":75 + "data": { + "id": "server_1", + "label": "server_1" }, - "classes":[ - "l3_router" - ], - "config":{ - "type":"router", - "label":"router_1", - "default_gw":"" - }, - "interface":[ - { - "id":"iface_73510361", - "name":"iface_73510361", - "connect":"edge_mnysbpcfq1uwnl5unw", - "ip":"172.16.10.3", - "netmask":24 - }, + "interface": [ { - "id":"iface_37513030", - "name":"iface_37513030", - "connect":"edge_mnysbqjka0cbjig1jb7", - "ip":"192.168.10.3", - "netmask":24 + "connect": "edge_mnwcvw5j8b38v1xr5sj", + "id": "iface_16417632", + "ip": "192.168.10.2", + "name": "iface_16417632", + "netmask": 24 } - ] + ], + "position": { + "x": 100, + "y": 100 + } }, { - "data":{ - "id":"l2sw2", - "label":"l2sw2" + "classes": ["host"], + "config": { + "default_gw": "", + "label": "host_1", + "type": "host" }, - "position":{ - "x":400, - "y":175 - }, - "classes":[ - "l2_switch" - ], - "config":{ - "type":"l2_switch", - "label":"l2sw2", - "stp":0 + "data": { + "id": "host_1", + "label": "host_1" }, - "interface":[ + "interface": [ { - "id":"l2sw2_1", - "name":"l2sw2_1", - "connect":"edge_mnysbqjka0cbjig1jb7", - "vlan":None, - "type_connection":None - }, - { - "id":"l2sw2_2", - "name":"l2sw2_2", - "connect":"edge_mnysbrok5nl01pdvoe3", - "vlan":None, - "type_connection":None + "connect": "edge_mnxf20jpi9lk28vbr2", + "id": "iface_46653148", + "name": "iface_46653148" } - ] + ], + "position": { + "x": 25, + "y": 100 + } }, { - "data":{ - "id":"server_1", - "label":"server_1" - }, - "position":{ - "x":400, - "y":275 + "classes": ["l3_router"], + "config": { + "default_gw": "", + "label": "router_1", + "type": "router" }, - "classes":[ - "server" - ], - "config":{ - "type":"server", - "label":"server_1", - "default_gw":"192.168.10.3" + "data": { + "id": "router_2", + "label": "router_1" }, - "interface":[ + "interface": [ { - "id":"iface_84271537", - "name":"iface_84271537", - "connect":"edge_mnysbrok5nl01pdvoe3", - "ip":"192.168.10.2", - "netmask":24 + "connect": "edge_mnym51eah6wx0v6s9h", + "id": "iface_02514152", + "ip": "172.16.10.3", + "name": "iface_02514152", + "netmask": 24 + }, + { + "connect": "edge_mnym5331cjpgqzraqy4", + "id": "iface_64411470", + "ip": "192.168.10.3", + "name": "iface_64411470", + "netmask": 24 } - ] + ], + "position": { + "x": 75, + "y": 0 + } } ] JSON_EDGES = [ { - "data":{ - "id":"edge_mnysboa63sl7masz29i", - "source":"host_1", - "target":"l2sw1", - "loss_percentage":0, - "duplicate_percentage":0 + "data": { + "id": "edge_mnysboa63sl7masz29i", + "source": "host_1", + "target": "l2sw1", + "loss_percentage": 0, + "duplicate_percentage": 0 } }, { - "data":{ - "id":"edge_mnysbpcfq1uwnl5unw", - "source":"l2sw1", - "target":"router_1", - "loss_percentage":0, - "duplicate_percentage":0 + "data": { + "id": "edge_mnysbpcfq1uwnl5unw", + "source": "l2sw1", + "target": "router_1", + "loss_percentage": 0, + "duplicate_percentage": 0 } }, { - "data":{ - "id":"edge_mnysbqjka0cbjig1jb7", - "source":"router_1", - "target":"l2sw2", - "loss_percentage":0, - "duplicate_percentage":0 + "data": { + "id": "edge_mnysbqjka0cbjig1jb7", + "source": "router_1", + "target": "l2sw2", + "loss_percentage": 0, + "duplicate_percentage": 0 } }, { - "data":{ - "id":"edge_mnysbrok5nl01pdvoe3", - "source":"l2sw2", - "target":"server_1", - "loss_percentage":0, - "duplicate_percentage":0 + "data": { + "id": "edge_mnysbrok5nl01pdvoe3", + "source": "l2sw2", + "target": "server_1", + "loss_percentage": 0, + "duplicate_percentage": 0 } } ] JSON_JOBS = [ { - 'id':'90f1af9818c24105b9418c1a503eb04d', - 'job_id':108, - 'print_cmd':'dhcp client', - 'arg_1':'iface_61426530', - 'level':0, - 'host_id':'host_1' + "id": "90f1af9818c24105b9418c1a503eb04d", + "job_id": 108, + "print_cmd": "dhcp client", + "arg_1": "iface_61426530", + "level": 0, + "host_id": "host_1" }, { - 'id':'60b97a16a1cd4ae2aaa921b77f7ec2fd', - 'job_id':204, - 'print_cmd':'dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2', 'arg_1':'192.168.10.2', - 'arg_2':'172.16.10.3', - 'level':1, - 'host_id':'router_1' + "id": "60b97a16a1cd4ae2aaa921b77f7ec2fd", + "job_id": 204, + "print_cmd": "dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", + "arg_1": "192.168.10.2", + "arg_2": "172.16.10.3", + "level": 1, + "host_id": "router_1" }, { - 'id':'1ed7256caf6f4f75ae50eddb5607920c', - 'job_id':203, - 'print_cmd':'dhcp ip range: 172.16.10.10,172.16.10.100/24 gw:172.16.10.3', - 'arg_1':'172.16.10.10', - 'arg_2':'172.16.10.100', - 'arg_3':'24', - 'arg_4':'172.16.10.3', - 'arg_5':'iface_84271537', - 'level':2, - 'host_id':'server_1' + "id": "1ed7256caf6f4f75ae50eddb5607920c", + "job_id": 203, + "print_cmd": "dhcp ip range: 172.16.10.10,172.16.10.100/24 gw: 172.16.10.3", + "arg_1": "172.16.10.10", + "arg_2": "172.16.10.100", + "arg_3": "24", + "arg_4": "172.16.10.3", + "arg_5": "iface_84271537", + "level": 2, + "host_id": "server_1" } ] From 196e7c4c9a9190f945df5590549bd9311c676544 Mon Sep 17 00:00:00 2001 From: igor Date: Thu, 16 Apr 2026 00:38:57 +0300 Subject: [PATCH 07/13] Forgor to change coords for the nodes in the test --- front/tests/test_dhcp_relay.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index 9380193d..64bae694 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -10,11 +10,11 @@ def network(self, selenium: MiminetTester): network = MiminetTestNetwork(selenium) # nodes - network.add_node(NodeType.Host, 250, 275) # host - network.add_node(NodeType.Switch, 250, 175) # switch 1 - network.add_node(NodeType.Router, 350, 75) # router - network.add_node(NodeType.Switch, 400, 175) # switch 2 - network.add_node(NodeType.Server, 400, 275) # server + network.add_node(NodeType.Host, 25, 100) # host + network.add_node(NodeType.Switch, 25, 50) # switch 1 + network.add_node(NodeType.Router, 75, 0) # router + network.add_node(NodeType.Switch, 100, 50) # switch 2 + network.add_node(NodeType.Server, 100, 100) # server # edges network.add_edge(0, 1) # host -> switch 1 From 24c38c771bcf0cb8cfd3a25bdbe924938ad9a959 Mon Sep 17 00:00:00 2001 From: igor Date: Thu, 16 Apr 2026 01:12:01 +0300 Subject: [PATCH 08/13] Reordered nodes for a right way --- front/tests/test_dhcp_relay.py | 154 ++++++++++++++++----------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index 64bae694..8281d213 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -71,6 +71,29 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): assert TestNetworkComparator.compare_jobs(network.jobs, self.JSON_JOBS) JSON_NODES = [ + { + "classes": ["host"], + "config": { + "default_gw": "", + "label": "host_1", + "type": "host" + }, + "data": { + "id": "host_1", + "label": "host_1" + }, + "interface": [ + { + "connect": "edge_mo0ldvxj74nu3vhlaio", + "id": "iface_16773533", + "name": "iface_16773533" + } + ], + "position": { + "x": 25, + "y": 100 + } + }, { "classes": ["l2_switch"], "config": { @@ -84,14 +107,14 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface": [ { - "connect": "edge_mnxf20jpi9lk28vbr2", + "connect": "edge_mo0ldvxj74nu3vhlaio", "id": "l2sw1_1", "name": "l2sw1_1", "type_connection": None, "vlan": None }, { - "connect": "edge_mnym51eah6wx0v6s9h", + "connect": "edge_mo0ldxdrueu0023e09", "id": "l2sw1_2", "name": "l2sw1_2", "type_connection": None, @@ -103,6 +126,38 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "y": 50 } }, + { + "classes": ["l3_router"], + "config": { + "default_gw": "", + "label": "router_1", + "type": "router" + }, + "data": { + "id": "router_1", + "label": "router_1" + }, + "interface": [ + { + "connect": "edge_mo0ldxdrueu0023e09", + "id": "iface_40424245", + "ip": "172.16.10.3", + "name": "iface_40424245", + "netmask": 24 + }, + { + "connect": "edge_mo0ldyffpg9scxw32yq", + "id": "iface_77344228", + "ip": "192.168.10.3", + "name": "iface_77344228", + "netmask": 24 + } + ], + "position": { + "x": 75, + "y": 0 + } + }, { "classes": ["l2_switch"], "config": { @@ -116,16 +171,16 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface": [ { - "connect": "edge_mnwcvw5j8b38v1xr5sj", - "id": "l2sw2_2", - "name": "l2sw2_2", + "connect": "edge_mo0ldyffpg9scxw32yq", + "id": "l2sw2_1", + "name": "l2sw2_1", "type_connection": None, "vlan": None }, { - "connect": "edge_mnym5331cjpgqzraqy4", - "id": "l2sw2_3", - "name": "l2sw2_3", + "connect": "edge_mo0ldzsfp1nakly2jf", + "id": "l2sw2_2", + "name": "l2sw2_2", "type_connection": None, "vlan": None } @@ -138,7 +193,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): { "classes": ["server"], "config": { - "default_gw": "", + "default_gw": "192.168.10.3", "label": "server_1", "type": "server" }, @@ -148,10 +203,10 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, "interface": [ { - "connect": "edge_mnwcvw5j8b38v1xr5sj", - "id": "iface_16417632", + "connect": "edge_mo0ldzsfp1nakly2jf", + "id": "iface_28835140", "ip": "192.168.10.2", - "name": "iface_16417632", + "name": "iface_28835140", "netmask": 24 } ], @@ -159,67 +214,12 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "x": 100, "y": 100 } - }, - { - "classes": ["host"], - "config": { - "default_gw": "", - "label": "host_1", - "type": "host" - }, - "data": { - "id": "host_1", - "label": "host_1" - }, - "interface": [ - { - "connect": "edge_mnxf20jpi9lk28vbr2", - "id": "iface_46653148", - "name": "iface_46653148" - } - ], - "position": { - "x": 25, - "y": 100 - } - }, - { - "classes": ["l3_router"], - "config": { - "default_gw": "", - "label": "router_1", - "type": "router" - }, - "data": { - "id": "router_2", - "label": "router_1" - }, - "interface": [ - { - "connect": "edge_mnym51eah6wx0v6s9h", - "id": "iface_02514152", - "ip": "172.16.10.3", - "name": "iface_02514152", - "netmask": 24 - }, - { - "connect": "edge_mnym5331cjpgqzraqy4", - "id": "iface_64411470", - "ip": "192.168.10.3", - "name": "iface_64411470", - "netmask": 24 - } - ], - "position": { - "x": 75, - "y": 0 - } } ] JSON_EDGES = [ { "data": { - "id": "edge_mnysboa63sl7masz29i", + "id": "edge_mo0ldvxj74nu3vhlaio", "source": "host_1", "target": "l2sw1", "loss_percentage": 0, @@ -228,7 +228,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, { "data": { - "id": "edge_mnysbpcfq1uwnl5unw", + "id": "edge_mo0ldxdrueu0023e09", "source": "l2sw1", "target": "router_1", "loss_percentage": 0, @@ -237,7 +237,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, { "data": { - "id": "edge_mnysbqjka0cbjig1jb7", + "id": "edge_mo0ldyffpg9scxw32yq", "source": "router_1", "target": "l2sw2", "loss_percentage": 0, @@ -246,7 +246,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): }, { "data": { - "id": "edge_mnysbrok5nl01pdvoe3", + "id": "edge_mo0ldzsfp1nakly2jf", "source": "l2sw2", "target": "server_1", "loss_percentage": 0, @@ -256,31 +256,31 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): ] JSON_JOBS = [ { - "id": "90f1af9818c24105b9418c1a503eb04d", + "id": "e8611d72c979483b940ddc5d2acebe6d", "job_id": 108, "print_cmd": "dhcp client", - "arg_1": "iface_61426530", + "arg_1": "iface_16773533", "level": 0, "host_id": "host_1" }, { - "id": "60b97a16a1cd4ae2aaa921b77f7ec2fd", + "id": "317a8189832c4477a8c34f916c9d8dbe", "job_id": 204, - "print_cmd": "dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", + "print_cmd": "dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1": "192.168.10.2", "arg_2": "172.16.10.3", "level": 1, "host_id": "router_1" }, { - "id": "1ed7256caf6f4f75ae50eddb5607920c", + "id": "437af3d8726a4363940552c89c201693", "job_id": 203, "print_cmd": "dhcp ip range: 172.16.10.10,172.16.10.100/24 gw: 172.16.10.3", "arg_1": "172.16.10.10", "arg_2": "172.16.10.100", "arg_3": "24", "arg_4": "172.16.10.3", - "arg_5": "iface_84271537", + "arg_5": "iface_28835140", "level": 2, "host_id": "server_1" } From e893f486df0911b9718d34fc6c272111663cc10a Mon Sep 17 00:00:00 2001 From: igor Date: Thu, 16 Apr 2026 11:52:15 +0300 Subject: [PATCH 09/13] Linter fix --- front/tests/test_dhcp_relay.py | 124 +++++++++++---------------------- 1 file changed, 40 insertions(+), 84 deletions(-) diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index 8281d213..69dab1e6 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -4,7 +4,9 @@ from utils.locators import Location from utils.checkers import TestNetworkComparator + class TestDHCPRelay: + @pytest.fixture(scope="class") def network(self, selenium: MiminetTester): network = MiminetTestNetwork(selenium) @@ -12,7 +14,7 @@ def network(self, selenium: MiminetTester): # nodes network.add_node(NodeType.Host, 25, 100) # host network.add_node(NodeType.Switch, 25, 50) # switch 1 - network.add_node(NodeType.Router, 75, 0) # router + network.add_node(NodeType.Router, 75, 0) # router network.add_node(NodeType.Switch, 100, 50) # switch 2 network.add_node(NodeType.Server, 100, 100) # server @@ -64,7 +66,7 @@ def network(self, selenium: MiminetTester): yield network network.delete() - + def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): assert TestNetworkComparator.compare_nodes(network.nodes, self.JSON_NODES) assert TestNetworkComparator.compare_edges(network.edges, self.JSON_EDGES) @@ -73,70 +75,43 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): JSON_NODES = [ { "classes": ["host"], - "config": { - "default_gw": "", - "label": "host_1", - "type": "host" - }, - "data": { - "id": "host_1", - "label": "host_1" - }, + "config": {"default_gw": "", "label": "host_1", "type": "host"}, + "data": {"id": "host_1", "label": "host_1"}, "interface": [ { "connect": "edge_mo0ldvxj74nu3vhlaio", "id": "iface_16773533", - "name": "iface_16773533" + "name": "iface_16773533", } ], - "position": { - "x": 25, - "y": 100 - } + "position": {"x": 25, "y": 100}, }, { "classes": ["l2_switch"], - "config": { - "label": "l2sw1", - "stp": 0, - "type": "l2_switch" - }, - "data": { - "id": "l2sw1", - "label": "l2sw1" - }, + "config": {"label": "l2sw1", "stp": 0, "type": "l2_switch"}, + "data": {"id": "l2sw1", "label": "l2sw1"}, "interface": [ { "connect": "edge_mo0ldvxj74nu3vhlaio", "id": "l2sw1_1", "name": "l2sw1_1", "type_connection": None, - "vlan": None + "vlan": None, }, { "connect": "edge_mo0ldxdrueu0023e09", "id": "l2sw1_2", "name": "l2sw1_2", "type_connection": None, - "vlan": None - } + "vlan": None, + }, ], - "position": { - "x": 25, - "y": 50 - } + "position": {"x": 25, "y": 50}, }, { "classes": ["l3_router"], - "config": { - "default_gw": "", - "label": "router_1", - "type": "router" - }, - "data": { - "id": "router_1", - "label": "router_1" - }, + "config": {"default_gw": "", "label": "router_1", "type": "router"}, + "data": {"id": "router_1", "label": "router_1"}, "interface": [ { "connect": "edge_mo0ldxdrueu0023e09", @@ -150,71 +125,52 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "id": "iface_77344228", "ip": "192.168.10.3", "name": "iface_77344228", - "netmask": 24 - } + "netmask": 24, + }, ], - "position": { - "x": 75, - "y": 0 - } + "position": {"x": 75, "y": 0}, }, { "classes": ["l2_switch"], - "config": { - "label": "l2sw2", - "stp": 0, - "type": "l2_switch" - }, - "data": { - "id": "l2sw2", - "label": "l2sw2" - }, + "config": {"label": "l2sw2", "stp": 0, "type": "l2_switch"}, + "data": {"id": "l2sw2", "label": "l2sw2"}, "interface": [ { "connect": "edge_mo0ldyffpg9scxw32yq", "id": "l2sw2_1", "name": "l2sw2_1", "type_connection": None, - "vlan": None + "vlan": None, }, { "connect": "edge_mo0ldzsfp1nakly2jf", "id": "l2sw2_2", "name": "l2sw2_2", "type_connection": None, - "vlan": None - } + "vlan": None, + }, ], - "position": { - "x": 100, - "y": 50 - } + "position": {"x": 100, "y": 50}, }, { "classes": ["server"], "config": { "default_gw": "192.168.10.3", "label": "server_1", - "type": "server" - }, - "data": { - "id": "server_1", - "label": "server_1" + "type": "server", }, + "data": {"id": "server_1", "label": "server_1"}, "interface": [ { "connect": "edge_mo0ldzsfp1nakly2jf", "id": "iface_28835140", "ip": "192.168.10.2", "name": "iface_28835140", - "netmask": 24 + "netmask": 24, } ], - "position": { - "x": 100, - "y": 100 - } - } + "position": {"x": 100, "y": 100}, + }, ] JSON_EDGES = [ { @@ -223,7 +179,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "source": "host_1", "target": "l2sw1", "loss_percentage": 0, - "duplicate_percentage": 0 + "duplicate_percentage": 0, } }, { @@ -232,7 +188,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "source": "l2sw1", "target": "router_1", "loss_percentage": 0, - "duplicate_percentage": 0 + "duplicate_percentage": 0, } }, { @@ -241,7 +197,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "source": "router_1", "target": "l2sw2", "loss_percentage": 0, - "duplicate_percentage": 0 + "duplicate_percentage": 0, } }, { @@ -250,9 +206,9 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "source": "l2sw2", "target": "server_1", "loss_percentage": 0, - "duplicate_percentage": 0 + "duplicate_percentage": 0, } - } + }, ] JSON_JOBS = [ { @@ -261,16 +217,16 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "print_cmd": "dhcp client", "arg_1": "iface_16773533", "level": 0, - "host_id": "host_1" + "host_id": "host_1", }, { "id": "317a8189832c4477a8c34f916c9d8dbe", "job_id": 204, - "print_cmd": "dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", + "print_cmd": "dnsmasq --dhcp-relay=172.16.10.3,192.168.10.2", "arg_1": "192.168.10.2", "arg_2": "172.16.10.3", "level": 1, - "host_id": "router_1" + "host_id": "router_1", }, { "id": "437af3d8726a4363940552c89c201693", @@ -282,6 +238,6 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "arg_4": "172.16.10.3", "arg_5": "iface_28835140", "level": 2, - "host_id": "server_1" - } + "host_id": "server_1", + }, ] From 4f1c3bca96e111beacfa7fd399613990d3f6cec2 Mon Sep 17 00:00:00 2001 From: igor Date: Thu, 16 Apr 2026 19:00:16 +0300 Subject: [PATCH 10/13] Linter fix v2 --- front/tests/test_dhcp_relay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/tests/test_dhcp_relay.py b/front/tests/test_dhcp_relay.py index 69dab1e6..5f4edabd 100644 --- a/front/tests/test_dhcp_relay.py +++ b/front/tests/test_dhcp_relay.py @@ -118,7 +118,7 @@ def test_dhcp(self, selenium: MiminetTester, network: MiminetTestNetwork): "id": "iface_40424245", "ip": "172.16.10.3", "name": "iface_40424245", - "netmask": 24 + "netmask": 24, }, { "connect": "edge_mo0ldyffpg9scxw32yq", From ffd11e8af75fd3661dbc42920646c4bd22be3f35 Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 22 Apr 2026 14:02:06 +0300 Subject: [PATCH 11/13] Changed back/requirements so ipmininet isn't from a local repo --- back/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back/requirements.txt b/back/requirements.txt index 8d949ec2..00cb0354 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -4,4 +4,4 @@ python-dotenv==1.1.1 marshmallow_dataclass==8.7.1 psutil==7.0.0 netaddr==1.3.0 -ipmininet @ git+https://github.com/IgorFilimonov/ipmininet.git@4cff7aa0c6ca99f802d31434a0fc310e34a28d57 \ No newline at end of file +ipmininet @ git+https://github.com/mimi-net/ipmininet.git@75290b939bcda3fc43494d8e305c0f1bf0e6d122 \ No newline at end of file From d1cf2897fac1bd4da2f7b089e28a4c5adef370bc Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 22 Apr 2026 14:24:48 +0300 Subject: [PATCH 12/13] Now reqs uses the latest ipmininet release --- back/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back/requirements.txt b/back/requirements.txt index 00cb0354..1cb334da 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -4,4 +4,4 @@ python-dotenv==1.1.1 marshmallow_dataclass==8.7.1 psutil==7.0.0 netaddr==1.3.0 -ipmininet @ git+https://github.com/mimi-net/ipmininet.git@75290b939bcda3fc43494d8e305c0f1bf0e6d122 \ No newline at end of file +ipmininet @ git+https://github.com/mimi-net/ipmininet.git@1.2.5 \ No newline at end of file From b8b39d2826314cb92f6d6bd31847c90154878df0 Mon Sep 17 00:00:00 2001 From: igor Date: Thu, 14 May 2026 14:19:40 +0300 Subject: [PATCH 13/13] Checking if front tests are passed now --- front/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/.env b/front/.env index 6df934b1..b8d53e48 100755 --- a/front/.env +++ b/front/.env @@ -32,4 +32,4 @@ REFRESH_TOKEN_EXPIRES=12 # YANDEX_POSTGRES_SSLMODE=verify-full # Режим работы: dev (локальный PostgreSQL) или prod (Yandex Cloud PostgreSQL) -MODE=dev \ No newline at end of file +MODE=prod \ No newline at end of file