mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-26 00:22:47 +00:00
dnsmasq: skip options that are not compiled in
This is to make life easier for users with customized build of dnsmasq-full variant. Currently dnsmasq config generated by current service script will be rejected by dnsmasq build lacking DHCP feature - Options like --dhcp-leasefile have default values. Deleting them from uci config or setting them to empty value will make them take on default value in the end - Options like --dhcp-broadcast are output unconditionally Tackle this by - Check availablility of features from output of "dnsmasq --version" - Make a list of options guarded by HAVE_xx macros in src/options.c of dnsmasq source code - Ignore these options in xappend() Two things to note in this implementation - The option list is not exhaustive. Supposedly only those options that may cause dnsmasq to reject with "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DNSSEC/DBus support)" are taken into account here - This provides a way out but users' cooperation is still needed. E.g. option dnssec needs to be turned off, otherwise the service script will try to add --conf-file pointing to dnssec specific anchor file which dnsmasq lacking dnssec support will reject Resolves FS#2281 Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
parent
6b762dd75f
commit
0299a4b73e
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=dnsmasq
|
||||
PKG_UPSTREAM_VERSION:=2.80
|
||||
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
|
||||
PKG_RELEASE:=11
|
||||
PKG_RELEASE:=12
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
||||
|
@ -22,10 +22,42 @@ DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh"
|
||||
|
||||
DNSMASQ_DHCP_VER=4
|
||||
|
||||
xappend() {
|
||||
local value="$1"
|
||||
dnsmasq_features="$(dnsmasq --version | grep -m1 'Compile time options:' | cut -d: -f2) "
|
||||
[ "${dnsmasq_features#* DHCP }" = "$dnsmasq_features" ] || dnsmasq_has_dhcp=1
|
||||
[ "${dnsmasq_features#* DHCPv6 }" = "$dnsmasq_features" ] || dnsmasq_has_dhcp6=1
|
||||
[ "${dnsmasq_features#* DNSSEC }" = "$dnsmasq_features" ] || dnsmasq_has_dnssec=1
|
||||
[ "${dnsmasq_features#* TFTP }" = "$dnsmasq_features" ] || dnsmasq_has_tftp=1
|
||||
[ "${dnsmasq_features#* ipset }" = "$dnsmasq_features" ] || dnsmasq_has_ipset=1
|
||||
dnsmasq_ignore_opt() {
|
||||
local opt="$1"
|
||||
|
||||
echo "${value#--}" >> $CONFIGFILE_TMP
|
||||
case "$opt" in
|
||||
dhcp-duid|\
|
||||
ra-param)
|
||||
[ -z "$dnsmasq_has_dhcp6" ] ;;
|
||||
dhcp-*|\
|
||||
bootp-*|\
|
||||
pxe-*)
|
||||
[ -z "$dnsmasq_has_dhcp" ] ;;
|
||||
dnssec-*|\
|
||||
trust-anchor)
|
||||
[ -z "$dnsmasq_has_dnssec" ] ;;
|
||||
tftp-*)
|
||||
[ -z "$dnsmasq_has_tftp" ] ;;
|
||||
ipset)
|
||||
[ -z "$dnsmasq_has_ipset" ] ;;
|
||||
*)
|
||||
return 1
|
||||
esac
|
||||
}
|
||||
|
||||
xappend() {
|
||||
local value="${1#--}"
|
||||
local opt="${value%%=*}"
|
||||
|
||||
if ! dnsmasq_ignore_opt "$opt"; then
|
||||
echo "$value" >>$CONFIGFILE_TMP
|
||||
fi
|
||||
}
|
||||
|
||||
hex_to_hostid() {
|
||||
|
Loading…
Reference in New Issue
Block a user