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::()