From d700dbc00e6e22ea9521d3b359f0d3635d9af682 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 25 Mar 2023 22:33:02 +0100 Subject: dhcp-to-dns: support host name from dhcp lease comment The lease comment is supposed to be a human readable string... But we could allow parsable information. --- dhcp-to-dns.rsc | 4 +++- doc/dhcp-to-dns.md | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dhcp-to-dns.rsc b/dhcp-to-dns.rsc index b925fdb..259a904 100644 --- a/dhcp-to-dns.rsc +++ b/dhcp-to-dns.rsc @@ -19,8 +19,10 @@ :global ServerNameInZone; :global CharacterReplace; +:global EitherOr; :global IfThenElse; :global LogPrintExit2; +:global ParseKeyValueStore; :global ScriptLock; $ScriptLock $0 false 10; @@ -62,7 +64,7 @@ $ScriptLock $0 false 10; :if ([ :len ($LeaseVal->"address") ] > 0) do={ :local Comment ($CommentPrefix . $LeaseVal->"mac-address"); :local MacDash [ $CharacterReplace ($LeaseVal->"mac-address") ":" "-" ]; - :local HostName [ $CharacterReplace ($LeaseVal->"host-name") " " "" ]; + :local HostName [ $CharacterReplace [ $EitherOr ([ $ParseKeyValueStore ($LeaseVal->"comment") ]->"hostname") ($LeaseVal->"host-name") ] " " "" ]; :local Domain ([ $IfThenElse ($ServerNameInZone = true) ($LeaseVal->"server" . ".") ] . $Zone); :local DnsRecord [ /ip/dns/static/find where name=($MacDash . "." . $Domain) ]; diff --git a/doc/dhcp-to-dns.md b/doc/dhcp-to-dns.md index 7229c9a..a2caf0c 100644 --- a/doc/dhcp-to-dns.md +++ b/doc/dhcp-to-dns.md @@ -41,6 +41,19 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `PrefixInZone`: whether or not to add prefix `dhcp` * `ServerNameInZone`: whether or not to add DHCP server name +### Host name from DHCP lease comment + +Overwriting the host name from dhcp lease comment is supported, just add +something like `hostname=new-hostname` in comment, and separate it by comma +from other information if required: + + /ip/dhcp-server/lease/add address=10.0.0.50 comment="my device, hostname=new-hostname" mac-address=00:11:22:33:44:55 server=dhcp; + +Note this information can be configured in wireless access list with +[dhcp-lease-comment](dhcp-lease-comment.md), though it comes with a delay +then due to script execution order. Decrease the scheduler interval to +reduce the effect. + See also -------- -- cgit v1.2.3-54-g00ecf