aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2019-11-12 12:49:28 +0100
committerGravatar Christian Hesse <mail@eworm.de>2019-11-12 12:49:28 +0100
commit91776d3388e3b0d8082d7e5acaa18e7116080d7c (patch)
tree19777eb084c8fe9eca6694b57d902db76af5ecc2
parent9d5c566b1cce5cd24dab0087ea94fcaa582794c8 (diff)
dhcp-to-dns: handle duplicate mac-address and host-name
* several leases for one mac address (changed client id, different net): -> take address from last lease Most likely this is the same devices which booted different OS or changed to different network. * several leases for one host name: -> take address from first lease We see either different devices with same name or one device with several network interfaces. Keep the first name to mitigate stealing dns name.
-rw-r--r--dhcp-to-dns11
1 files changed, 8 insertions, 3 deletions
diff --git a/dhcp-to-dns b/dhcp-to-dns
index 7cd7fa0..e403881 100644
--- a/dhcp-to-dns
+++ b/dhcp-to-dns
@@ -44,9 +44,14 @@
:if ([ :len $DnsRecord ] > 0) do={
:local DnsIp [ / ip dns static get $DnsRecord address ];
- :local HostLeases [ / ip dhcp-server lease find where mac-address=($LeaseVal->"mac-address") dynamic=yes ];
- :if ([ :len $HostLeases ] > 1) do={
- :set ($LeaseVal->"address") [ / ip dhcp-server lease get ($HostLeases->([ :len $HostLeases ] - 1)) address ];
+ :local DupMacLeases [ / ip dhcp-server lease find where mac-address=($LeaseVal->"mac-address") dynamic=yes ];
+ :if ([ :len $DupMacLeases ] > 1) do={
+ :set ($LeaseVal->"address") [ / ip dhcp-server lease get ($DupMacLeases->([ :len $DupMacLeases ] - 1)) address ];
+ }
+
+ :local DupHostLeases [ / ip dhcp-server lease find where host-name=($LeaseVal->"host-name") dynamic=yes ];
+ :if ([ :len $DupHostLeases ] > 1) do={
+ :set ($LeaseVal->"address") [ / ip dhcp-server lease get ($DupHostLeases->0) address ];
}
:if ($DnsIp = $LeaseVal->"address") do={