Browse Source

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 <philipp@redfish-solutions.com>
lilik-openwrt-22.03
Philip Prindeville 4 years ago
parent
commit
0c360d1c6b
2 changed files with 25 additions and 14 deletions
  1. +1
    -1
      net/isc-dhcp/Makefile
  2. +24
    -13
      net/isc-dhcp/files/dhcpd.init

+ 1
- 1
net/isc-dhcp/Makefile View File

@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=isc-dhcp PKG_NAME:=isc-dhcp
UPSTREAM_NAME:=dhcp UPSTREAM_NAME:=dhcp
PKG_VERSION:=4.4.1 PKG_VERSION:=4.4.1
PKG_RELEASE:=14
PKG_RELEASE:=15
PKG_LICENSE:=BSD-3-Clause PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE PKG_LICENSE_FILES:=LICENSE


+ 24
- 13
net/isc-dhcp/files/dhcpd.init View File

@ -82,7 +82,8 @@ update() {
local lhs="$1" family="$2" type="$3" local lhs="$1" family="$2" type="$3"
shift 3 shift 3
echo -e "$PREFIX" "$lhs $family $type $@\nsend"
[ $dynamicdns -eq 1 ] && \
echo -e "$PREFIX" "$lhs $family $type $@\nsend" >> $dyn_file
} }
explode() { explode() {
@ -245,7 +246,7 @@ static_srvhosts() {
static_host_add() { static_host_add() {
local cfg="$1" 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" config_get macs "$cfg" "mac"
[ -n "$macs" ] || return 0 [ -n "$macs" ] || return 0
@ -302,6 +303,14 @@ static_host_add() {
config_list_foreach "$cfg" "dhcp_option" append_dhcp_options config_list_foreach "$cfg" "dhcp_option" append_dhcp_options
echo "}" echo "}"
done 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() { static_hosts() {
@ -396,7 +405,7 @@ dhcpd_add() {
gateway="$IP" gateway="$IP"
fi fi
gen_dhcp_subnet "$cfg" >> $config_file
gen_dhcp_subnet "$cfg"
} }
general_config() { general_config() {
@ -540,12 +549,6 @@ start_service() {
general_config > $config_file general_config > $config_file
rfc1918_nets=
config_foreach dhcpd_add dhcp 1
static_hosts >> $config_file
if [ $dynamicdns -eq 1 ]; then if [ $dynamicdns -eq 1 ]; then
cat <<EOF > $dyn_file cat <<EOF > $dyn_file
; Generated by /etc/init.d/dhcpd at $(date) ; Generated by /etc/init.d/dhcpd at $(date)
@ -553,15 +556,23 @@ start_service() {
ttl $TTL ttl $TTL
EOF 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 nsupdate -l -v $dyn_file
rm -f $dyn_file rm -f $dyn_file


Loading…
Cancel
Save