dnsmasq: use host-record instead of address
Using "--address" for individual host A records is broken, use "--host-record" instead. The following patch changes dnsmasq.init to build individual host records using "--host-record" instead of "--address". Signed-off-by: Adam Gensler <openwrt at gnslr.us> [jow: shorter description, simplified shell script code] SVN-Revision: 36943
This commit is contained in:
parent
265a2deba3
commit
dfea3bae11
2 changed files with 35 additions and 23 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dnsmasq
|
PKG_NAME:=dnsmasq
|
||||||
PKG_VERSION:=2.66
|
PKG_VERSION:=2.66
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
||||||
|
|
|
@ -393,7 +393,7 @@ dhcp_option_add() {
|
||||||
|
|
||||||
dhcp_domain_add() {
|
dhcp_domain_add() {
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local ip name names
|
local ip name names record
|
||||||
|
|
||||||
config_get names "$cfg" name "$2"
|
config_get names "$cfg" name "$2"
|
||||||
[ -n "$names" ] || return 0
|
[ -n "$names" ] || return 0
|
||||||
|
@ -401,22 +401,11 @@ dhcp_domain_add() {
|
||||||
config_get ip "$cfg" ip "$3"
|
config_get ip "$cfg" ip "$3"
|
||||||
[ -n "$ip" ] || return 0
|
[ -n "$ip" ] || return 0
|
||||||
|
|
||||||
local oIFS="$IFS"; IFS="."; set -- $ip; IFS="$oIFS"
|
|
||||||
local raddr="${4:+$4.$3.$2.$1.in-addr.arpa}"
|
|
||||||
|
|
||||||
for name in $names; do
|
for name in $names; do
|
||||||
local fqdn="$name"
|
record="${record:+$record/}$name"
|
||||||
|
|
||||||
[ "${fqdn%.*}" == "$fqdn" ] && \
|
|
||||||
fqdn="$fqdn${DOMAIN:+.$DOMAIN}"
|
|
||||||
|
|
||||||
xappend "--address=/$fqdn/$ip"
|
|
||||||
|
|
||||||
[ -n "$raddr" ] && {
|
|
||||||
xappend "--ptr-record=$raddr,$fqdn"
|
|
||||||
raddr=""
|
|
||||||
}
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
xappend "--address=/$record/$ip"
|
||||||
}
|
}
|
||||||
|
|
||||||
dhcp_srv_add() {
|
dhcp_srv_add() {
|
||||||
|
@ -469,6 +458,27 @@ dhcp_cname_add() {
|
||||||
xappend "--cname=${cname},${target}"
|
xappend "--cname=${cname},${target}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dhcp_hostrecord_add() {
|
||||||
|
local cfg="$1"
|
||||||
|
local names addresses record val
|
||||||
|
|
||||||
|
config_get names "$cfg" name "$2"
|
||||||
|
if [ -z "$names" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
config_get addresses "$cfg" ip "$3"
|
||||||
|
if [ -z "$addresses" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
for val in $names $addresses; do
|
||||||
|
record="${record:+$record,}$val"
|
||||||
|
done
|
||||||
|
|
||||||
|
xappend "--host-record=$record"
|
||||||
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
include /lib/network
|
include /lib/network
|
||||||
scan_interfaces
|
scan_interfaces
|
||||||
|
@ -501,6 +511,14 @@ start() {
|
||||||
config_foreach dhcp_remoteid_add remoteid
|
config_foreach dhcp_remoteid_add remoteid
|
||||||
config_foreach dhcp_subscrid_add subscrid
|
config_foreach dhcp_subscrid_add subscrid
|
||||||
config_foreach dhcp_domain_add domain
|
config_foreach dhcp_domain_add domain
|
||||||
|
config_foreach dhcp_hostrecord_add hostrecord
|
||||||
|
|
||||||
|
# add own hostname
|
||||||
|
[ $ADD_LOCAL_HOSTNAME -eq 1 ] && [ -n "$lanaddr" ] && {
|
||||||
|
local hostname="$(uci_get system @system[0] hostname OpenWrt)"
|
||||||
|
dhcp_hostrecord_add "" "$hostname${DOMAIN:+.$DOMAIN $hostname}" "$lanaddr"
|
||||||
|
}
|
||||||
|
|
||||||
echo >> $CONFIGFILE
|
echo >> $CONFIGFILE
|
||||||
config_foreach dhcp_srv_add srvhost
|
config_foreach dhcp_srv_add srvhost
|
||||||
config_foreach dhcp_mx_add mxhost
|
config_foreach dhcp_mx_add mxhost
|
||||||
|
@ -510,12 +528,6 @@ start() {
|
||||||
config_foreach dhcp_cname_add cname
|
config_foreach dhcp_cname_add cname
|
||||||
echo >> $CONFIGFILE
|
echo >> $CONFIGFILE
|
||||||
|
|
||||||
# add own hostname
|
|
||||||
[ $ADD_LOCAL_HOSTNAME -eq 1 ] && [ -n "$lanaddr" ] && {
|
|
||||||
local hostname="$(uci_get system.@system[0].hostname)"
|
|
||||||
dhcp_domain_add "" "${hostname:-OpenWrt}" "$lanaddr"
|
|
||||||
}
|
|
||||||
|
|
||||||
service_start /usr/sbin/dnsmasq -C $CONFIGFILE && {
|
service_start /usr/sbin/dnsmasq -C $CONFIGFILE && {
|
||||||
rm -f /tmp/resolv.conf
|
rm -f /tmp/resolv.conf
|
||||||
[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
|
[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
|
||||||
|
|
Loading…
Reference in a new issue