From c90c0594117265f868f8d0cee740d0708f2d0fa3 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 14 Jun 2024 14:48:28 +0000 Subject: [PATCH] fix infini-ARP bug when pinging broadcast/network address --- src/primaite/simulator/system/services/arp/arp.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/primaite/simulator/system/services/arp/arp.py b/src/primaite/simulator/system/services/arp/arp.py index e24e8980..d7ab99a3 100644 --- a/src/primaite/simulator/system/services/arp/arp.py +++ b/src/primaite/simulator/system/services/arp/arp.py @@ -138,6 +138,16 @@ class ARP(Service): target_ip_address ) if outbound_network_interface: + # ensure we are not attempting to find the network address or broadcast address (not useable IPs) + intf_network_address = outbound_network_interface.ip_network.network_address + intf_broadcast_address = outbound_network_interface.ip_network.broadcast_address + if target_ip_address == intf_network_address: + self.sys_log.info(f"Cannot send ARP request to a network address {str(target_ip_address)}") + return + if target_ip_address == intf_broadcast_address: + self.sys_log.info(f"Cannot send ARP request to a broadcast addresss {str(target_ip_address)}") + return + self.sys_log.info(f"Sending ARP request from NIC {outbound_network_interface} for ip {target_ip_address}") arp_packet = ARPPacket( sender_ip_address=outbound_network_interface.ip_address,