mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-26 16:42: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_NAME:=dnsmasq
|
||||||
PKG_UPSTREAM_VERSION:=2.80
|
PKG_UPSTREAM_VERSION:=2.80
|
||||||
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
|
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:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
||||||
|
@ -22,10 +22,42 @@ DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh"
|
|||||||
|
|
||||||
DNSMASQ_DHCP_VER=4
|
DNSMASQ_DHCP_VER=4
|
||||||
|
|
||||||
xappend() {
|
dnsmasq_features="$(dnsmasq --version | grep -m1 'Compile time options:' | cut -d: -f2) "
|
||||||
local value="$1"
|
[ "${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() {
|
hex_to_hostid() {
|
||||||
|
Loading…
Reference in New Issue
Block a user