projects
/
openwrt
/
svn-archive
/
archive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dnsmasq: backport --tftp-no-fail to ignore missing tftp root
[openwrt/svn-archive/archive.git]
/
package
/
network
/
services
/
dnsmasq
/
files
/
dnsmasq.init
diff --git
a/package/network/services/dnsmasq/files/dnsmasq.init
b/package/network/services/dnsmasq/files/dnsmasq.init
index b5fb58c524687b1081b2e20c1c3efdd540cb185e..9795d1aef89ca2730d809e57b975261576d3c2c3 100644
(file)
--- a/
package/network/services/dnsmasq/files/dnsmasq.init
+++ b/
package/network/services/dnsmasq/files/dnsmasq.init
@@
-13,6
+13,8
@@
ADD_LOCAL_DOMAIN=1
ADD_LOCAL_HOSTNAME=1
CONFIGFILE="/var/etc/dnsmasq.conf"
ADD_LOCAL_HOSTNAME=1
CONFIGFILE="/var/etc/dnsmasq.conf"
+HOSTFILE="/tmp/hosts/dhcp"
+TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
xappend() {
local value="$1"
xappend() {
local value="$1"
@@
-83,6
+85,10
@@
append_address() {
xappend "--address=$1"
}
xappend "--address=$1"
}
+append_ipset() {
+ xappend "--ipset=$1"
+}
+
append_interface() {
local ifname=$(uci_get_state network "$1" ifname "$1")
xappend "--interface=$ifname"
append_interface() {
local ifname=$(uci_get_state network "$1" ifname "$1")
xappend "--interface=$ifname"
@@
-101,6
+107,10
@@
append_bogusnxdomain() {
xappend "--bogus-nxdomain=$1"
}
xappend "--bogus-nxdomain=$1"
}
+append_pxe_service() {
+ xappend "--pxe-service=$1"
+}
+
dnsmasq() {
local cfg="$1"
append_bool "$cfg" authoritative "--dhcp-authoritative"
dnsmasq() {
local cfg="$1"
append_bool "$cfg" authoritative "--dhcp-authoritative"
@@
-118,9
+128,12
@@
dnsmasq() {
append_bool "$cfg" boguspriv "--bogus-priv"
append_bool "$cfg" expandhosts "--expand-hosts"
append_bool "$cfg" enable_tftp "--enable-tftp"
append_bool "$cfg" boguspriv "--bogus-priv"
append_bool "$cfg" expandhosts "--expand-hosts"
append_bool "$cfg" enable_tftp "--enable-tftp"
+ append_bool "$cfg" tftp_no_fail "--tftp-no-fail"
append_bool "$cfg" nonwildcard "--bind-interfaces"
append_bool "$cfg" fqdn "--dhcp-fqdn"
append_bool "$cfg" proxydnssec "--proxy-dnssec"
append_bool "$cfg" nonwildcard "--bind-interfaces"
append_bool "$cfg" fqdn "--dhcp-fqdn"
append_bool "$cfg" proxydnssec "--proxy-dnssec"
+ append_bool "$cfg" localservice "--local-service"
+ append_bool "$cfg" quietdhcp "--quiet-dhcp"
append_parm "$cfg" dhcpscript "--dhcp-script"
append_parm "$cfg" cachesize "--cache-size"
append_parm "$cfg" dhcpscript "--dhcp-script"
append_parm "$cfg" cachesize "--cache-size"
@@
-133,6
+146,7
@@
dnsmasq() {
append_parm "$cfg" "local" "--server"
config_list_foreach "$cfg" "server" append_server
config_list_foreach "$cfg" "address" append_address
append_parm "$cfg" "local" "--server"
config_list_foreach "$cfg" "server" append_server
config_list_foreach "$cfg" "address" append_address
+ config_list_foreach "$cfg" "ipset" append_ipset
config_list_foreach "$cfg" "interface" append_interface
config_list_foreach "$cfg" "notinterface" append_notinterface
config_list_foreach "$cfg" "addnhosts" append_addnhosts
config_list_foreach "$cfg" "interface" append_interface
config_list_foreach "$cfg" "notinterface" append_notinterface
config_list_foreach "$cfg" "addnhosts" append_addnhosts
@@
-142,7
+156,8
@@
dnsmasq() {
append_parm "$cfg" "tftp_root" "--tftp-root"
append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
append_parm "$cfg" "local_ttl" "--local-ttl"
append_parm "$cfg" "tftp_root" "--tftp-root"
append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
append_parm "$cfg" "local_ttl" "--local-ttl"
-
+ append_parm "$cfg" "pxe_prompt" "--pxe-prompt"
+ config_list_foreach "$cfg" "pxe_service" append_pxe_service
config_get DOMAIN "$cfg" domain
config_get_bool ADD_LOCAL_DOMAIN "$cfg" add_local_domain 1
config_get DOMAIN "$cfg" domain
config_get_bool ADD_LOCAL_DOMAIN "$cfg" add_local_domain 1
@@
-185,6
+200,13
@@
dnsmasq() {
config_list_foreach "$cfg" rebind_domain append_rebind_domain
}
config_list_foreach "$cfg" rebind_domain append_rebind_domain
}
+ config_get_bool dnssec "$cfg" dnssec 0
+ [ "$dnssec" -gt 0 ] && {
+ xappend "--conf-file=$TRUSTANCHORSFILE"
+ xappend "--dnssec"
+ append_bool "$cfg" dnsseccheckunsigned "--dnssec-check-unsigned"
+ }
+
dhcp_option_add "$cfg" "" 0
xappend "--dhcp-broadcast=tag:needs-broadcast"
dhcp_option_add "$cfg" "" 0
xappend "--dhcp-broadcast=tag:needs-broadcast"
@@
-284,15
+306,22
@@
dhcp_host_add() {
config_get ip "$cfg" ip
[ -n "$ip" -o -n "$name" ] || return 0
config_get ip "$cfg" ip
[ -n "$ip" -o -n "$name" ] || return 0
+ config_get_bool dns "$cfg" dns 0
+ [ "$dns" = "1" -a -n "$ip" -a -n "$name" ] && {
+ echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE
+ }
+
config_get mac "$cfg" mac
config_get mac "$cfg" mac
- [ -z "$mac" ] && {
+ if [ -n "$mac" ]; then
+ # --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap
+ macs=""
+ for m in $mac; do append macs "$m" ","; done
+ else
+ # --dhcp-host=lap,192.168.0.199
[ -n "$name" ] || return 0
[ -n "$name" ] || return 0
- mac="$name"
+ mac
s
="$name"
name=""
name=""
- }
-
- macs=""
- for m in $mac; do append macs "$m" ","; done
+ fi
config_get tag "$cfg" tag
config_get tag "$cfg" tag
@@
-341,12
+370,11
@@
dhcp_boot_add() {
[ -n "$filename" ] || return 0
config_get servername "$cfg" servername
[ -n "$filename" ] || return 0
config_get servername "$cfg" servername
- [ -n "$servername" ] || return 0
-
config_get serveraddress "$cfg" serveraddress
config_get serveraddress "$cfg" serveraddress
- [ -n "$serveraddress" ] || return 0
- xappend "--dhcp-boot=${networkid:+net:$networkid,}$filename,$servername,$serveraddress"
+ [ -n "$serveraddress" -a ! -n "$servername" ] && return 0
+
+ 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
@@
-359,6
+387,9
@@
dhcp_add() {
config_get net "$cfg" interface
[ -n "$net" ] || return 0
config_get net "$cfg" interface
[ -n "$net" ] || return 0
+ config_get dhcpv4 "$cfg" dhcpv4
+ [ "$dhcpv4" != "disabled" ] || return 0
+
config_get networkid "$cfg" networkid
[ -n "$networkid" ] || networkid="$net"
config_get networkid "$cfg" networkid
[ -n "$networkid" ] || networkid="$net"
@@
-424,13
+455,10
@@
dhcp_domain_add() {
[ -n "$ip" ] || return 0
for name in $names; do
[ -n "$ip" ] || return 0
for name in $names; do
- [ "${name%.*}" == "$name" ] && \
- name="$name${DOMAIN:+.$DOMAIN}"
-
- record="${record:+$record/}$name"
+ record="${record:+$record }$name"
done
done
- xappend "--address=/$record/$ip"
+ echo "$ip $record" >> $HOSTFILE
}
dhcp_srv_add() {
}
dhcp_srv_add() {
@@
-520,14
+548,25
@@
start_service() {
config_load dhcp
procd_open_instance
config_load dhcp
procd_open_instance
- procd_set_param command $PROG -C $CONFIGFILE -k
+ procd_set_param command $PROG -C $CONFIGFILE -k
-x /var/run/dnsmasq/dnsmasq.pid
procd_set_param file $CONFIGFILE
procd_set_param file $CONFIGFILE
+ procd_set_param respawn
+
+ procd_add_jail dnsmasq ubus log
+ procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE /etc/passwd /dev/urandom /etc/dnsmasq.conf /tmp/dnsmasq.d /tmp/resolv.conf.auto /etc/hosts /etc/ethers
+ procd_add_jail_mount_rw /var/run/dnsmasq/ /tmp/dhcp.leases
+
procd_close_instance
# before we can call xappend
procd_close_instance
# before we can call xappend
+ mkdir -p /var/run/dnsmasq/
mkdir -p $(dirname $CONFIGFILE)
mkdir -p $(dirname $CONFIGFILE)
+ mkdir -p /var/lib/misc
+ touch /tmp/dhcp.leases
+
echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE
echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE
+ echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE
# if we did this last, we could override auto-generated config
[ -f /etc/dnsmasq.conf ] && {
# if we did this last, we could override auto-generated config
[ -f /etc/dnsmasq.conf ] && {
@@
-553,7
+592,7
@@
start_service() {
local lanaddr
[ $ADD_LOCAL_HOSTNAME -eq 1 ] && network_get_ipaddr lanaddr "lan" && {
local hostname="$(uci_get system @system[0] hostname OpenWrt)"
local lanaddr
[ $ADD_LOCAL_HOSTNAME -eq 1 ] && network_get_ipaddr lanaddr "lan" && {
local hostname="$(uci_get system @system[0] hostname OpenWrt)"
- dhcp_
hostrecord_add "" "${hostname%.$DOMAIN}${DOMAIN:+.$DOMAIN ${hostname%.$DOMAIN}}
" "$lanaddr"
+ dhcp_
domain_add "" "$hostname
" "$lanaddr"
}
echo >> $CONFIGFILE
}
echo >> $CONFIGFILE