From 0c360d1c6ba1d4fb2b51450911a3949542e3dff1 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Thu, 4 Feb 2021 14:55:30 -0700 Subject: [PATCH] isc-dhcp: treat 'config host' like superset of 'config domain' Not including an A record mapping will cause nsupdate to balk at CNAME and MX records (and probably SRV as well) because the target will be unknown at the time of parsing, until the lease gets activated. We need these RR's to be in place well before the servers even come up. Signed-off-by: Philip Prindeville --- net/isc-dhcp/Makefile | 2 +- net/isc-dhcp/files/dhcpd.init | 37 +++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/net/isc-dhcp/Makefile b/net/isc-dhcp/Makefile index ee5b51320..8db25d841 100644 --- a/net/isc-dhcp/Makefile +++ b/net/isc-dhcp/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=isc-dhcp UPSTREAM_NAME:=dhcp PKG_VERSION:=4.4.1 -PKG_RELEASE:=14 +PKG_RELEASE:=15 PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE diff --git a/net/isc-dhcp/files/dhcpd.init b/net/isc-dhcp/files/dhcpd.init index 14b4a2748..414c17956 100755 --- a/net/isc-dhcp/files/dhcpd.init +++ b/net/isc-dhcp/files/dhcpd.init @@ -82,7 +82,8 @@ update() { local lhs="$1" family="$2" type="$3" shift 3 - echo -e "$PREFIX" "$lhs $family $type $@\nsend" + [ $dynamicdns -eq 1 ] && \ + echo -e "$PREFIX" "$lhs $family $type $@\nsend" >> $dyn_file } explode() { @@ -245,7 +246,7 @@ static_srvhosts() { static_host_add() { local cfg="$1" - local broadcast hostid macn macs mac name ip leasetime + local broadcast hostid macn macs mac name ip ips revip leasetime config_get macs "$cfg" "mac" [ -n "$macs" ] || return 0 @@ -302,6 +303,14 @@ static_host_add() { config_list_foreach "$cfg" "dhcp_option" append_dhcp_options echo "}" done + + ips="$ip" + for ip in $ips; do + revip="$(rev_str "$ip" ".")" + + update "$name.$domain." IN A "$ip" + update "$revip.in-addr.arpa." IN PTR "$name.$domain." + done } static_hosts() { @@ -396,7 +405,7 @@ dhcpd_add() { gateway="$IP" fi - gen_dhcp_subnet "$cfg" >> $config_file + gen_dhcp_subnet "$cfg" } general_config() { @@ -540,12 +549,6 @@ start_service() { general_config > $config_file - rfc1918_nets= - - config_foreach dhcpd_add dhcp 1 - - static_hosts >> $config_file - if [ $dynamicdns -eq 1 ]; then cat < $dyn_file ; Generated by /etc/init.d/dhcpd at $(date) @@ -553,15 +556,23 @@ start_service() { ttl $TTL EOF + fi + + rfc1918_nets= + + config_foreach dhcpd_add dhcp 1 >> $config_file - static_cnames >> $dyn_file + static_hosts >> $config_file - static_domains >> $dyn_file + static_cnames >> $config_file - static_mxhosts >> $dyn_file + static_domains >> $config_file - static_srvhosts >> $dyn_file + static_mxhosts >> $config_file + static_srvhosts >> $config_file + + if [ $dynamicdns -eq 1 ]; then nsupdate -l -v $dyn_file rm -f $dyn_file