From 0247252474ca7bd4eee4761bbdc07a1418c8cb8c Mon Sep 17 00:00:00 2001 From: Sylvain Tremblay Date: Wed, 18 Dec 2024 10:46:36 -0500 Subject: [PATCH] feat: don't crash if ip:mac already exist, just skip it --- harmony-rs/opnsense-config/src/modules/dhcp.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/harmony-rs/opnsense-config/src/modules/dhcp.rs b/harmony-rs/opnsense-config/src/modules/dhcp.rs index ae9ccbc..deacda3 100644 --- a/harmony-rs/opnsense-config/src/modules/dhcp.rs +++ b/harmony-rs/opnsense-config/src/modules/dhcp.rs @@ -1,3 +1,4 @@ +use log::info; use opnsense_config_xml::MaybeString; use opnsense_config_xml::Range; use opnsense_config_xml::StaticMap; @@ -93,6 +94,21 @@ impl<'a> DhcpConfig<'a> { // return Err(DhcpError::IpAddressOutOfRange(ipaddr.to_string())); // } + if existing_mappings.iter().any(|m| { + m.ipaddr + .parse::() + .expect("Mapping contains invalid ipv4") + == ipaddr + && m.mac == mac + }) { + info!( + "Mapping already exists for {} [{}], skipping", + ipaddr.to_string(), + mac + ); + return Ok(()); + } + if existing_mappings.iter().any(|m| { m.ipaddr .parse::()