mirror of
https://github.com/Heleguo/lede.git
synced 2025-12-16 19:01:32 +00:00
Revert "dnsmasq: Support nftables nftsets"
This reverts commit d46de3cb7a.
This commit is contained in:
parent
5e3ea29112
commit
86255ea911
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006-2016 OpenWrt.org
|
# Copyright (C) 2006-2022 OpenWrt.org
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
PKG_NAME:=dnsmasq
|
PKG_NAME:=dnsmasq
|
||||||
PKG_UPSTREAM_VERSION:=2.91
|
PKG_UPSTREAM_VERSION:=2.91
|
||||||
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
|
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
|
PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
|
||||||
@ -24,7 +24,6 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_UPSTR
|
|||||||
|
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_BUILD_FLAGS:=lto
|
|
||||||
PKG_ASLR_PIE_REGULAR:=1
|
PKG_ASLR_PIE_REGULAR:=1
|
||||||
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcp \
|
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcp \
|
||||||
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6 \
|
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6 \
|
||||||
@ -109,16 +108,16 @@ define Package/dnsmasq-full/config
|
|||||||
default n
|
default n
|
||||||
config PACKAGE_dnsmasq_full_auth
|
config PACKAGE_dnsmasq_full_auth
|
||||||
bool "Build with the facility to act as an authoritative DNS server."
|
bool "Build with the facility to act as an authoritative DNS server."
|
||||||
default y
|
default n
|
||||||
config PACKAGE_dnsmasq_full_ipset
|
config PACKAGE_dnsmasq_full_ipset
|
||||||
bool "Build with IPset support."
|
bool "Build with IPset support."
|
||||||
default y
|
default y
|
||||||
config PACKAGE_dnsmasq_full_nftset
|
config PACKAGE_dnsmasq_full_nftset
|
||||||
bool "Build with Nftset support."
|
bool "Build with Nftset support."
|
||||||
default y
|
default n
|
||||||
config PACKAGE_dnsmasq_full_conntrack
|
config PACKAGE_dnsmasq_full_conntrack
|
||||||
bool "Build with Conntrack support."
|
bool "Build with Conntrack support."
|
||||||
default y
|
default n
|
||||||
config PACKAGE_dnsmasq_full_noid
|
config PACKAGE_dnsmasq_full_noid
|
||||||
bool "Build with NO_ID. (hide *.bind pseudo domain)"
|
bool "Build with NO_ID. (hide *.bind pseudo domain)"
|
||||||
default n
|
default n
|
||||||
@ -134,6 +133,9 @@ endef
|
|||||||
Package/dnsmasq-dhcpv6/conffiles = $(Package/dnsmasq/conffiles)
|
Package/dnsmasq-dhcpv6/conffiles = $(Package/dnsmasq/conffiles)
|
||||||
Package/dnsmasq-full/conffiles = $(Package/dnsmasq/conffiles)
|
Package/dnsmasq-full/conffiles = $(Package/dnsmasq/conffiles)
|
||||||
|
|
||||||
|
TARGET_CFLAGS += -flto
|
||||||
|
TARGET_LDFLAGS += -flto=jobserver
|
||||||
|
|
||||||
COPTS = -DHAVE_UBUS -DHAVE_POLL_H \
|
COPTS = -DHAVE_UBUS -DHAVE_POLL_H \
|
||||||
$(if $(CONFIG_IPV6),,-DNO_IPV6)
|
$(if $(CONFIG_IPV6),,-DNO_IPV6)
|
||||||
|
|
||||||
|
|||||||
@ -8,15 +8,6 @@ json_init
|
|||||||
json_add_array env
|
json_add_array env
|
||||||
hotplugobj=""
|
hotplugobj=""
|
||||||
|
|
||||||
oldIFS=$IFS
|
|
||||||
IFS=$'\n'
|
|
||||||
for var in $(env); do
|
|
||||||
if [ "${var}" != "${var#DNSMASQ_}" ]; then
|
|
||||||
json_add_string "" "${var%%=*}=${var#*=}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS=$oldIFS
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
add | del | old | arp-add | arp-del)
|
add | del | old | arp-add | arp-del)
|
||||||
json_add_string "" "MACADDR=$2"
|
json_add_string "" "MACADDR=$2"
|
||||||
|
|||||||
@ -10,7 +10,7 @@ config dnsmasq
|
|||||||
option domain 'lan'
|
option domain 'lan'
|
||||||
option expandhosts 1
|
option expandhosts 1
|
||||||
option nonegcache 0
|
option nonegcache 0
|
||||||
option cachesize 1000
|
option cachesize 8192
|
||||||
option authoritative 1
|
option authoritative 1
|
||||||
option readethers 1
|
option readethers 1
|
||||||
option leasefile '/tmp/dhcp.leases'
|
option leasefile '/tmp/dhcp.leases'
|
||||||
|
|||||||
@ -12,7 +12,6 @@ ADD_WAN_FQDN=0
|
|||||||
ADD_LOCAL_FQDN=""
|
ADD_LOCAL_FQDN=""
|
||||||
|
|
||||||
BASECONFIGFILE="/var/etc/dnsmasq.conf"
|
BASECONFIGFILE="/var/etc/dnsmasq.conf"
|
||||||
EXTRACONFFILE="extraconfig.conf"
|
|
||||||
BASEHOSTFILE="/tmp/hosts/dhcp"
|
BASEHOSTFILE="/tmp/hosts/dhcp"
|
||||||
TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
|
TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
|
||||||
TIMEVALIDFILE="/var/state/dnsmasqsec"
|
TIMEVALIDFILE="/var/state/dnsmasqsec"
|
||||||
@ -20,7 +19,7 @@ BASEDHCPSTAMPFILE="/var/run/dnsmasq"
|
|||||||
DHCPBOGUSHOSTNAMEFILE="/usr/share/dnsmasq/dhcpbogushostname.conf"
|
DHCPBOGUSHOSTNAMEFILE="/usr/share/dnsmasq/dhcpbogushostname.conf"
|
||||||
RFC6761FILE="/usr/share/dnsmasq/rfc6761.conf"
|
RFC6761FILE="/usr/share/dnsmasq/rfc6761.conf"
|
||||||
DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh"
|
DHCPSCRIPT="/usr/lib/dnsmasq/dhcp-script.sh"
|
||||||
DHCPSCRIPT_DEPENDS="/usr/share/libubox/jshn.sh /usr/bin/jshn /bin/ubus /usr/bin/env"
|
DHCPSCRIPT_DEPENDS="/usr/share/libubox/jshn.sh /usr/bin/jshn /bin/ubus"
|
||||||
|
|
||||||
DNSMASQ_DHCP_VER=4
|
DNSMASQ_DHCP_VER=4
|
||||||
|
|
||||||
@ -34,7 +33,6 @@ dnsmasq_ignore_opt() {
|
|||||||
[ "${dnsmasq_features#* DNSSEC }" = "$dnsmasq_features" ] || dnsmasq_has_dnssec=1
|
[ "${dnsmasq_features#* DNSSEC }" = "$dnsmasq_features" ] || dnsmasq_has_dnssec=1
|
||||||
[ "${dnsmasq_features#* TFTP }" = "$dnsmasq_features" ] || dnsmasq_has_tftp=1
|
[ "${dnsmasq_features#* TFTP }" = "$dnsmasq_features" ] || dnsmasq_has_tftp=1
|
||||||
[ "${dnsmasq_features#* ipset }" = "$dnsmasq_features" ] || dnsmasq_has_ipset=1
|
[ "${dnsmasq_features#* ipset }" = "$dnsmasq_features" ] || dnsmasq_has_ipset=1
|
||||||
[ "${dnsmasq_features#* nftset }" = "$dnsmasq_features" ] || dnsmasq_has_nftset=1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
@ -57,8 +55,6 @@ dnsmasq_ignore_opt() {
|
|||||||
[ -z "$dnsmasq_has_tftp" ] ;;
|
[ -z "$dnsmasq_has_tftp" ] ;;
|
||||||
ipset)
|
ipset)
|
||||||
[ -z "$dnsmasq_has_ipset" ] ;;
|
[ -z "$dnsmasq_has_ipset" ] ;;
|
||||||
nftset)
|
|
||||||
[ -z "$dnsmasq_has_nftset" ] ;;
|
|
||||||
*)
|
*)
|
||||||
return 1
|
return 1
|
||||||
esac
|
esac
|
||||||
@ -69,7 +65,7 @@ xappend() {
|
|||||||
local opt="${value%%=*}"
|
local opt="${value%%=*}"
|
||||||
|
|
||||||
if ! dnsmasq_ignore_opt "$opt"; then
|
if ! dnsmasq_ignore_opt "$opt"; then
|
||||||
echo "$value" >>"$CONFIGFILE_TMP"
|
echo "$value" >>$CONFIGFILE_TMP
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,6 +169,10 @@ append_address() {
|
|||||||
xappend "--address=$1"
|
xappend "--address=$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
append_ipset() {
|
||||||
|
xappend "--ipset=$1"
|
||||||
|
}
|
||||||
|
|
||||||
append_connmark_allowlist() {
|
append_connmark_allowlist() {
|
||||||
xappend "--connmark-allowlist=$1"
|
xappend "--connmark-allowlist=$1"
|
||||||
}
|
}
|
||||||
@ -205,12 +205,8 @@ ismounted() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
append_extramount() {
|
|
||||||
ismounted "$1" || append EXTRA_MOUNT "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
append_addnhosts() {
|
append_addnhosts() {
|
||||||
append_extramount "$1"
|
ismounted "$1" || append EXTRA_MOUNT "$1"
|
||||||
xappend "--addn-hosts=$1"
|
xappend "--addn-hosts=$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,14 +222,6 @@ append_interface_name() {
|
|||||||
xappend "--interface-name=$1,$2"
|
xappend "--interface-name=$1,$2"
|
||||||
}
|
}
|
||||||
|
|
||||||
append_filter_rr() {
|
|
||||||
xappend "--filter-rr=$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
append_cache_rr() {
|
|
||||||
xappend "--cache-rr=$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
filter_dnsmasq() {
|
filter_dnsmasq() {
|
||||||
local cfg="$1" func="$2" match_cfg="$3" found_cfg
|
local cfg="$1" func="$2" match_cfg="$3" found_cfg
|
||||||
|
|
||||||
@ -362,7 +350,7 @@ dhcp_host_add() {
|
|||||||
|
|
||||||
config_get_bool dns "$cfg" dns 0
|
config_get_bool dns "$cfg" dns 0
|
||||||
[ "$dns" = "1" ] && [ -n "$ip" ] && [ -n "$name" ] && {
|
[ "$dns" = "1" ] && [ -n "$ip" ] && [ -n "$name" ] && {
|
||||||
echo "$ip $name${DOMAIN:+.$DOMAIN}" >> "$HOSTFILE_TMP"
|
echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE_TMP
|
||||||
}
|
}
|
||||||
|
|
||||||
config_get mac "$cfg" mac
|
config_get mac "$cfg" mac
|
||||||
@ -511,13 +499,14 @@ dhcp_boot_add() {
|
|||||||
|
|
||||||
[ -n "$serveraddress" ] && [ ! -n "$servername" ] && return 0
|
[ -n "$serveraddress" ] && [ ! -n "$servername" ] && return 0
|
||||||
|
|
||||||
xappend "--dhcp-boot=${networkid:+tag:$networkid,}${filename}${servername:+,$servername}${serveraddress:+,$serveraddress}"
|
xappend "--dhcp-boot=${networkid:+net:$networkid,}${filename}${servername:+,$servername}${serveraddress:+,$serveraddress}"
|
||||||
|
|
||||||
config_get_bool force "$cfg" force 0
|
config_get_bool force "$cfg" force 0
|
||||||
|
|
||||||
dhcp_option_add "$cfg" "$networkid" "$force"
|
dhcp_option_add "$cfg" "$networkid" "$force"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dhcp_add() {
|
dhcp_add() {
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local dhcp6range="::"
|
local dhcp6range="::"
|
||||||
@ -548,13 +537,8 @@ dhcp_add() {
|
|||||||
# Do not support non-static interfaces for now
|
# Do not support non-static interfaces for now
|
||||||
[ static = "$proto" ] || return 0
|
[ static = "$proto" ] || return 0
|
||||||
|
|
||||||
ipaddr="${subnet%%/*}"
|
|
||||||
prefix_or_netmask="${subnet##*/}"
|
|
||||||
|
|
||||||
# Override interface netmask with dhcp config if applicable
|
# Override interface netmask with dhcp config if applicable
|
||||||
config_get netmask "$cfg" netmask
|
config_get netmask "$cfg" netmask "${subnet##*/}"
|
||||||
|
|
||||||
[ -n "$netmask" ] && prefix_or_netmask="$netmask"
|
|
||||||
|
|
||||||
#check for an already active dhcp server on the interface, unless 'force' is set
|
#check for an already active dhcp server on the interface, unless 'force' is set
|
||||||
config_get_bool force "$cfg" force 0
|
config_get_bool force "$cfg" force 0
|
||||||
@ -570,8 +554,6 @@ dhcp_add() {
|
|||||||
config_get leasetime "$cfg" leasetime 12h
|
config_get leasetime "$cfg" leasetime 12h
|
||||||
config_get options "$cfg" options
|
config_get options "$cfg" options
|
||||||
config_get_bool dynamicdhcp "$cfg" dynamicdhcp 1
|
config_get_bool dynamicdhcp "$cfg" dynamicdhcp 1
|
||||||
config_get_bool dynamicdhcpv4 "$cfg" dynamicdhcpv4 $dynamicdhcp
|
|
||||||
config_get_bool dynamicdhcpv6 "$cfg" dynamicdhcpv6 $dynamicdhcp
|
|
||||||
|
|
||||||
config_get dhcpv4 "$cfg" dhcpv4
|
config_get dhcpv4 "$cfg" dhcpv4
|
||||||
config_get dhcpv6 "$cfg" dhcpv6
|
config_get dhcpv6 "$cfg" dhcpv6
|
||||||
@ -596,30 +578,25 @@ dhcp_add() {
|
|||||||
|
|
||||||
nettag="${networkid:+set:${networkid},}"
|
nettag="${networkid:+set:${networkid},}"
|
||||||
|
|
||||||
# make sure the DHCP range is not empty
|
if [ "$limit" -gt 0 ] ; then
|
||||||
if [ "$dhcpv4" != "disabled" ]; then
|
limit=$((limit-1))
|
||||||
unset START
|
|
||||||
unset END
|
|
||||||
unset NETMASK
|
|
||||||
ipcalc "$ipaddr/$prefix_or_netmask" "$start" "$limit"
|
|
||||||
|
|
||||||
if [ -z "$START" ] || [ -z "$END" ] || [ -z "$NETMASK" ]; then
|
|
||||||
logger -t dnsmasq \
|
|
||||||
"unable to set dhcp-range for dhcp uci config section '$cfg'" \
|
|
||||||
"on interface '$ifname', please check your config"
|
|
||||||
else
|
|
||||||
[ "$dynamicdhcpv4" = "0" ] && END="static"
|
|
||||||
xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$dynamicdhcpv6" = "0" ] ; then
|
eval "$(ipcalc.sh "${subnet%%/*}" $netmask $start $limit)"
|
||||||
|
|
||||||
|
if [ "$dynamicdhcp" = "0" ] ; then
|
||||||
|
END="static"
|
||||||
dhcp6range="::,static"
|
dhcp6range="::,static"
|
||||||
else
|
else
|
||||||
dhcp6range="::1000,::ffff"
|
dhcp6range="::1000,::ffff"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$dhcpv4" != "disabled" ] ; then
|
||||||
|
xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ $DNSMASQ_DHCP_VER -eq 6 ] && [ "$ra" = "server" ] ; then
|
if [ $DNSMASQ_DHCP_VER -eq 6 ] && [ "$ra" = "server" ] ; then
|
||||||
# Note: dnsmasq cannot just be a DHCPv6 server (all-in-1)
|
# Note: dnsmasq cannot just be a DHCPv6 server (all-in-1)
|
||||||
# and let some other machine(s) send RA pointing to it.
|
# and let some other machine(s) send RA pointing to it.
|
||||||
@ -732,7 +709,7 @@ dhcp_domain_add() {
|
|||||||
record="${record:+$record }$name"
|
record="${record:+$record }$name"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "$ip $record" >> "$HOSTFILE_TMP"
|
echo "$ip $record" >> $HOSTFILE_TMP
|
||||||
}
|
}
|
||||||
|
|
||||||
dhcp_srv_add() {
|
dhcp_srv_add() {
|
||||||
@ -806,29 +783,6 @@ dhcp_hostrecord_add() {
|
|||||||
xappend "--host-record=$record"
|
xappend "--host-record=$record"
|
||||||
}
|
}
|
||||||
|
|
||||||
dhcp_dnsrr_add() {
|
|
||||||
#This adds arbitrary resource record types (of IN class) whose optional data must be hex
|
|
||||||
local cfg="$1"
|
|
||||||
local rrname rrnumber hexdata
|
|
||||||
|
|
||||||
config_get rrname "$cfg" rrname
|
|
||||||
[ -n "$rrname" ] || return 0
|
|
||||||
|
|
||||||
config_get rrnumber "$cfg" rrnumber
|
|
||||||
[ -n "$rrnumber" ] && [ "$rrnumber" -gt 0 ] || return 0
|
|
||||||
|
|
||||||
config_get hexdata "$cfg" hexdata
|
|
||||||
|
|
||||||
# dnsmasq accepts colon XX:XX:.., space XX XX .., or contiguous XXXX.. hex forms or mixtures thereof
|
|
||||||
if [ -n "${hexdata//[0-9a-fA-F\:\ ]/}" ]; then
|
|
||||||
# is invalid hex literal
|
|
||||||
echo "dnsmasq: \"$hexdata\" is malformed hexadecimal (separate hex with colon, space or not at all)." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
xappend "--dns-rr=${rrname},${rrnumber}${hexdata:+,$hexdata}"
|
|
||||||
}
|
|
||||||
|
|
||||||
dhcp_relay_add() {
|
dhcp_relay_add() {
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local local_addr server_addr interface
|
local local_addr server_addr interface
|
||||||
@ -850,61 +804,30 @@ dhcp_relay_add() {
|
|||||||
|
|
||||||
dnsmasq_ipset_add() {
|
dnsmasq_ipset_add() {
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local ipsets nftsets domains
|
local ipsets
|
||||||
|
|
||||||
add_ipset() {
|
add_ipset() {
|
||||||
ipsets="${ipsets:+$ipsets,}$1"
|
ipsets="${ipsets:+$ipsets,}$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
add_nftset() {
|
|
||||||
local IFS=,
|
|
||||||
for set in $1; do
|
|
||||||
local fam="$family"
|
|
||||||
[ -n "$fam" ] || fam=$(echo "$set" | sed -nre \
|
|
||||||
's#^.*[^0-9]([46])$|^.*[-_]([46])[-_].*$|^([46])[^0-9].*$#\1\2\3#p')
|
|
||||||
[ -n "$fam" ] || \
|
|
||||||
fam=$(nft -t list set "$table_family" "$table" "$set" 2>&1 | sed -nre \
|
|
||||||
's#^\t\ttype .*\bipv([46])_addr\b.*$#\1#p')
|
|
||||||
|
|
||||||
[ -n "$fam" ] || \
|
|
||||||
logger -t dnsmasq "Cannot infer address family from non-existent nftables set '$set'"
|
|
||||||
|
|
||||||
nftsets="${nftsets:+$nftsets,}${fam:+$fam#}$table_family#$table#$set"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
add_domain() {
|
add_domain() {
|
||||||
# leading '/' is expected
|
xappend "--ipset=/$1/$ipsets"
|
||||||
domains="$domains/$1"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config_get table "$cfg" table 'fw4'
|
|
||||||
config_get table_family "$cfg" table_family 'inet'
|
|
||||||
if [ "$table_family" = "ip" ] ; then
|
|
||||||
family="4"
|
|
||||||
elif [ "$table_family" = "ip6" ] ; then
|
|
||||||
family="6"
|
|
||||||
else
|
|
||||||
config_get family "$cfg" family
|
|
||||||
fi
|
|
||||||
|
|
||||||
config_list_foreach "$cfg" "name" add_ipset
|
config_list_foreach "$cfg" "name" add_ipset
|
||||||
config_list_foreach "$cfg" "name" add_nftset
|
|
||||||
config_list_foreach "$cfg" "domain" add_domain
|
|
||||||
|
|
||||||
if [ -z "$ipsets" ] || [ -z "$nftsets" ] || [ -z "$domains" ]; then
|
if [ -z "$ipsets" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
xappend "--ipset=$domains/$ipsets"
|
config_list_foreach "$cfg" "domain" add_domain
|
||||||
xappend "--nftset=$domains/$nftsets"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dnsmasq_start()
|
dnsmasq_start()
|
||||||
{
|
{
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local disabled user_dhcpscript logfacility
|
local disabled user_dhcpscript
|
||||||
local resolvfile resolvdir localuse=1
|
local resolvfile resolvdir localuse=0
|
||||||
|
|
||||||
config_get_bool disabled "$cfg" disabled 0
|
config_get_bool disabled "$cfg" disabled 0
|
||||||
[ "$disabled" -gt 0 ] && return 0
|
[ "$disabled" -gt 0 ] && return 0
|
||||||
@ -923,13 +846,13 @@ dnsmasq_start()
|
|||||||
# before we can call xappend
|
# before we can call xappend
|
||||||
umask u=rwx,g=rx,o=rx
|
umask u=rwx,g=rx,o=rx
|
||||||
mkdir -p /var/run/dnsmasq/
|
mkdir -p /var/run/dnsmasq/
|
||||||
mkdir -p "$(dirname "$CONFIGFILE")"
|
mkdir -p $(dirname $CONFIGFILE)
|
||||||
mkdir -p "$HOSTFILE_DIR"
|
mkdir -p "$HOSTFILE_DIR"
|
||||||
mkdir -p /var/lib/misc
|
mkdir -p /var/lib/misc
|
||||||
chown dnsmasq:dnsmasq /var/run/dnsmasq
|
chown dnsmasq:dnsmasq /var/run/dnsmasq
|
||||||
|
|
||||||
echo "# auto-generated config file from /etc/config/dhcp" > "$CONFIGFILE_TMP"
|
echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE_TMP
|
||||||
echo "# auto-generated config file from /etc/config/dhcp" > "$HOSTFILE_TMP"
|
echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE_TMP
|
||||||
|
|
||||||
local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf"
|
local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf"
|
||||||
if [ ! -r "$dnsmasqconffile" ]; then
|
if [ ! -r "$dnsmasqconffile" ]; then
|
||||||
@ -1015,14 +938,11 @@ dnsmasq_start()
|
|||||||
append_bool "$cfg" rapidcommit "--dhcp-rapid-commit"
|
append_bool "$cfg" rapidcommit "--dhcp-rapid-commit"
|
||||||
append_bool "$cfg" scriptarp "--script-arp"
|
append_bool "$cfg" scriptarp "--script-arp"
|
||||||
|
|
||||||
# deprecate or remove filter-X in favor of filter-rr?
|
|
||||||
append_bool "$cfg" filter_aaaa "--filter-AAAA"
|
append_bool "$cfg" filter_aaaa "--filter-AAAA"
|
||||||
append_bool "$cfg" filter_a "--filter-A"
|
append_bool "$cfg" filter_a "--filter-A"
|
||||||
config_list_foreach "$cfg" filter_rr append_filter_rr
|
|
||||||
config_list_foreach "$cfg" cache_rr append_cache_rr
|
|
||||||
|
|
||||||
append_parm "$cfg" logfacility "--log-facility"
|
append_parm "$cfg" logfacility "--log-facility"
|
||||||
config_get logfacility "$cfg" "logfacility"
|
|
||||||
append_parm "$cfg" cachesize "--cache-size"
|
append_parm "$cfg" cachesize "--cache-size"
|
||||||
append_parm "$cfg" dnsforwardmax "--dns-forward-max"
|
append_parm "$cfg" dnsforwardmax "--dns-forward-max"
|
||||||
append_parm "$cfg" port "--port"
|
append_parm "$cfg" port "--port"
|
||||||
@ -1037,6 +957,7 @@ dnsmasq_start()
|
|||||||
config_list_foreach "$cfg" "server" append_server
|
config_list_foreach "$cfg" "server" append_server
|
||||||
config_list_foreach "$cfg" "rev_server" append_rev_server
|
config_list_foreach "$cfg" "rev_server" append_rev_server
|
||||||
config_list_foreach "$cfg" "address" append_address
|
config_list_foreach "$cfg" "address" append_address
|
||||||
|
config_list_foreach "$cfg" "ipset" append_ipset
|
||||||
|
|
||||||
local connmark_allowlist_enable
|
local connmark_allowlist_enable
|
||||||
config_get connmark_allowlist_enable "$cfg" connmark_allowlist_enable 0
|
config_get connmark_allowlist_enable "$cfg" connmark_allowlist_enable 0
|
||||||
@ -1060,14 +981,7 @@ dnsmasq_start()
|
|||||||
config_list_foreach "$cfg" "addnhosts" append_addnhosts
|
config_list_foreach "$cfg" "addnhosts" append_addnhosts
|
||||||
config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain
|
config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain
|
||||||
append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases"
|
append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases"
|
||||||
|
append_parm "$cfg" "serversfile" "--servers-file"
|
||||||
local serversfile
|
|
||||||
config_get serversfile "$cfg" "serversfile"
|
|
||||||
[ -n "$serversfile" ] && {
|
|
||||||
xappend "--servers-file=$serversfile"
|
|
||||||
append EXTRA_MOUNT "$serversfile"
|
|
||||||
}
|
|
||||||
|
|
||||||
append_parm "$cfg" "tftp_root" "--tftp-root"
|
append_parm "$cfg" "tftp_root" "--tftp-root"
|
||||||
append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
|
append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
|
||||||
append_parm "$cfg" "local_ttl" "--local-ttl"
|
append_parm "$cfg" "local_ttl" "--local-ttl"
|
||||||
@ -1104,7 +1018,7 @@ dnsmasq_start()
|
|||||||
config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.d/resolv.conf.auto
|
config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.d/resolv.conf.auto
|
||||||
[ -n "$resolvfile" ] && [ ! -e "$resolvfile" ] && touch "$resolvfile"
|
[ -n "$resolvfile" ] && [ ! -e "$resolvfile" ] && touch "$resolvfile"
|
||||||
xappend "--resolv-file=$resolvfile"
|
xappend "--resolv-file=$resolvfile"
|
||||||
[ "$resolvfile" != "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=0
|
[ "$resolvfile" = "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=1
|
||||||
resolvdir="$(dirname "$resolvfile")"
|
resolvdir="$(dirname "$resolvfile")"
|
||||||
fi
|
fi
|
||||||
config_get_bool localuse "$cfg" localuse "$localuse"
|
config_get_bool localuse "$cfg" localuse "$localuse"
|
||||||
@ -1153,9 +1067,6 @@ dnsmasq_start()
|
|||||||
[ "$addmac" = "1" ] && addmac=
|
[ "$addmac" = "1" ] && addmac=
|
||||||
xappend "--add-mac${addmac:+="$addmac"}"
|
xappend "--add-mac${addmac:+="$addmac"}"
|
||||||
}
|
}
|
||||||
append_bool "$cfg" stripmac "--strip-mac"
|
|
||||||
append_parm "$cfg" addsubnet "--add-subnet"
|
|
||||||
append_bool "$cfg" stripsubnet "--strip-subnet"
|
|
||||||
|
|
||||||
dhcp_option_add "$cfg" "" 0
|
dhcp_option_add "$cfg" "" 0
|
||||||
dhcp_option_add "$cfg" "" 2
|
dhcp_option_add "$cfg" "" 2
|
||||||
@ -1169,7 +1080,7 @@ dnsmasq_start()
|
|||||||
[ ! -d "$dnsmasqconfdir" ] && mkdir -p $dnsmasqconfdir
|
[ ! -d "$dnsmasqconfdir" ] && mkdir -p $dnsmasqconfdir
|
||||||
xappend "--user=dnsmasq"
|
xappend "--user=dnsmasq"
|
||||||
xappend "--group=dnsmasq"
|
xappend "--group=dnsmasq"
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
|
|
||||||
config_get_bool enable_tftp "$cfg" enable_tftp 0
|
config_get_bool enable_tftp "$cfg" enable_tftp 0
|
||||||
[ "$enable_tftp" -gt 0 ] && {
|
[ "$enable_tftp" -gt 0 ] && {
|
||||||
@ -1178,7 +1089,7 @@ dnsmasq_start()
|
|||||||
}
|
}
|
||||||
|
|
||||||
config_foreach filter_dnsmasq host dhcp_host_add "$cfg"
|
config_foreach filter_dnsmasq host dhcp_host_add "$cfg"
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
|
|
||||||
config_get_bool dhcpbogushostname "$cfg" dhcpbogushostname 1
|
config_get_bool dhcpbogushostname "$cfg" dhcpbogushostname 1
|
||||||
[ "$dhcpbogushostname" -gt 0 ] && {
|
[ "$dhcpbogushostname" -gt 0 ] && {
|
||||||
@ -1197,13 +1108,12 @@ dnsmasq_start()
|
|||||||
config_foreach filter_dnsmasq match dhcp_match_add "$cfg"
|
config_foreach filter_dnsmasq match dhcp_match_add "$cfg"
|
||||||
config_foreach filter_dnsmasq domain dhcp_domain_add "$cfg"
|
config_foreach filter_dnsmasq domain dhcp_domain_add "$cfg"
|
||||||
config_foreach filter_dnsmasq hostrecord dhcp_hostrecord_add "$cfg"
|
config_foreach filter_dnsmasq hostrecord dhcp_hostrecord_add "$cfg"
|
||||||
config_foreach filter_dnsmasq dnsrr dhcp_dnsrr_add "$cfg"
|
|
||||||
[ -n "$BOOT" ] || config_foreach filter_dnsmasq relay dhcp_relay_add "$cfg"
|
[ -n "$BOOT" ] || config_foreach filter_dnsmasq relay dhcp_relay_add "$cfg"
|
||||||
|
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
config_foreach filter_dnsmasq srvhost dhcp_srv_add "$cfg"
|
config_foreach filter_dnsmasq srvhost dhcp_srv_add "$cfg"
|
||||||
config_foreach filter_dnsmasq mxhost dhcp_mx_add "$cfg"
|
config_foreach filter_dnsmasq mxhost dhcp_mx_add "$cfg"
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
|
|
||||||
config_get_bool boguspriv "$cfg" boguspriv 1
|
config_get_bool boguspriv "$cfg" boguspriv 1
|
||||||
[ "$boguspriv" -gt 0 ] && {
|
[ "$boguspriv" -gt 0 ] && {
|
||||||
@ -1225,16 +1135,16 @@ dnsmasq_start()
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg"
|
config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg"
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
|
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
config_foreach filter_dnsmasq ipset dnsmasq_ipset_add "$cfg"
|
config_foreach filter_dnsmasq ipset dnsmasq_ipset_add "$cfg"
|
||||||
echo >> "$CONFIGFILE_TMP"
|
echo >> $CONFIGFILE_TMP
|
||||||
|
|
||||||
mv -f "$CONFIGFILE_TMP" "$CONFIGFILE"
|
mv -f $CONFIGFILE_TMP $CONFIGFILE
|
||||||
mv -f "$HOSTFILE_TMP" "$HOSTFILE"
|
mv -f $HOSTFILE_TMP $HOSTFILE
|
||||||
|
|
||||||
[ "$localuse" -gt 0 ] && {
|
[ "$localuse" -gt 0 ] && {
|
||||||
rm -f /tmp/resolv.conf
|
rm -f /tmp/resolv.conf
|
||||||
@ -1248,30 +1158,18 @@ dnsmasq_start()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
config_list_foreach "$cfg" addnmount append_extramount
|
|
||||||
|
|
||||||
procd_open_instance $cfg
|
procd_open_instance $cfg
|
||||||
procd_set_param command $PROG -C $CONFIGFILE -k -x /var/run/dnsmasq/dnsmasq."${cfg}".pid
|
procd_set_param command $PROG -C $CONFIGFILE -k -x /var/run/dnsmasq/dnsmasq."${cfg}".pid
|
||||||
procd_set_param file $CONFIGFILE
|
procd_set_param file $CONFIGFILE
|
||||||
[ -n "$user_dhcpscript" ] && procd_set_param env USER_DHCPSCRIPT="$user_dhcpscript"
|
[ -n "$user_dhcpscript" ] && procd_set_param env USER_DHCPSCRIPT="$user_dhcpscript"
|
||||||
procd_set_param respawn
|
procd_set_param respawn
|
||||||
|
|
||||||
local instance_ifc instance_netdev
|
|
||||||
config_get instance_ifc "$cfg" interface
|
|
||||||
[ -n "$instance_ifc" ] && network_get_device instance_netdev "$instance_ifc" &&
|
|
||||||
[ -n "$instance_netdev" ] && procd_set_param netdev $instance_netdev
|
|
||||||
|
|
||||||
procd_add_jail dnsmasq ubus log
|
procd_add_jail dnsmasq ubus log
|
||||||
procd_add_jail_mount $CONFIGFILE $DHCPBOGUSHOSTNAMEFILE $DHCPSCRIPT $DHCPSCRIPT_DEPENDS
|
procd_add_jail_mount $CONFIGFILE $DHCPBOGUSHOSTNAMEFILE $DHCPSCRIPT $DHCPSCRIPT_DEPENDS
|
||||||
procd_add_jail_mount $EXTRA_MOUNT $RFC6761FILE $TRUSTANCHORSFILE
|
procd_add_jail_mount $EXTRA_MOUNT $RFC6761FILE $TRUSTANCHORSFILE
|
||||||
procd_add_jail_mount $dnsmasqconffile $dnsmasqconfdir $resolvdir $user_dhcpscript
|
procd_add_jail_mount $dnsmasqconffile $dnsmasqconfdir $resolvdir $user_dhcpscript
|
||||||
procd_add_jail_mount /etc/passwd /etc/group /etc/TZ /etc/hosts /etc/ethers
|
procd_add_jail_mount /etc/passwd /etc/group /etc/TZ /etc/hosts /etc/ethers
|
||||||
procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile
|
procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile
|
||||||
case "$logfacility" in */*)
|
|
||||||
[ ! -e "$logfacility" ] && touch "$logfacility"
|
|
||||||
procd_add_jail_mount_rw "$logfacility"
|
|
||||||
esac
|
|
||||||
[ -e "$hostsfile" ] && procd_add_jail_mount $hostsfile
|
|
||||||
|
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
@ -1279,12 +1177,12 @@ dnsmasq_start()
|
|||||||
dnsmasq_stop()
|
dnsmasq_stop()
|
||||||
{
|
{
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local noresolv resolvfile localuse=1
|
local noresolv resolvfile localuse=0
|
||||||
|
|
||||||
config_get_bool noresolv "$cfg" noresolv 0
|
config_get_bool noresolv "$cfg" noresolv 0
|
||||||
config_get resolvfile "$cfg" "resolvfile"
|
config_get resolvfile "$cfg" "resolvfile"
|
||||||
|
|
||||||
[ "$noresolv" = 0 ] && [ "$resolvfile" != "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=0
|
[ "$noresolv" = 0 ] && [ "$resolvfile" = "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=1
|
||||||
config_get_bool localuse "$cfg" localuse "$localuse"
|
config_get_bool localuse "$cfg" localuse "$localuse"
|
||||||
[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.d/resolv.conf.auto" /tmp/resolv.conf
|
[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.d/resolv.conf.auto" /tmp/resolv.conf
|
||||||
|
|
||||||
@ -1293,11 +1191,10 @@ dnsmasq_stop()
|
|||||||
|
|
||||||
add_interface_trigger()
|
add_interface_trigger()
|
||||||
{
|
{
|
||||||
local interface ifname ignore
|
local interface ignore
|
||||||
|
|
||||||
config_get interface "$1" interface
|
config_get interface "$1" interface
|
||||||
config_get_bool ignore "$1" ignore 0
|
config_get_bool ignore "$1" ignore 0
|
||||||
network_get_device ifname "$interface" || ignore=0
|
|
||||||
|
|
||||||
[ -n "$interface" ] && [ $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload
|
[ -n "$interface" ] && [ $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload
|
||||||
}
|
}
|
||||||
|
|||||||
@ -275,4 +275,4 @@
|
|||||||
+
|
+
|
||||||
void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface)
|
void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface)
|
||||||
{
|
{
|
||||||
struct ubus_context *ubus = (struct ubus_context *)daemon->ubus;
|
struct ubus_context *ubus = (struct ubus_context *)daemon->ubus;
|
||||||
Loading…
Reference in New Issue
Block a user