dnsmasq: make tftp root if not existing
[openwrt/openwrt.git] / package / network / services / dnsmasq / files / dnsmasq.init
index bac5fd7a88eebc01083ef5c5eacc64e7c41e9181..5b4de32181ab04b1088c94ca40f7bce5f276a0bc 100644 (file)
@@ -526,13 +526,14 @@ dhcp_relay_add() {
        if [ -z "$interface" ]; then
                xappend "--dhcp-relay=$local_addr,$server_addr"
        else
-               xappend "--dhcp-relay=$local_addr,$server_addr,$interface"
+               network_get_device ifname "$interface" || return
+               xappend "--dhcp-relay=$local_addr,$server_addr,$ifname"
        fi
 }
 
 dnsmasq_start()
 {
-       local cfg="$1" disabled
+       local cfg="$1" disabled resolvfile
 
        config_get_bool disabled "$cfg" disabled 0
        [ "$disabled" -gt 0 ] && return 0
@@ -580,7 +581,7 @@ dnsmasq_start()
        append_bool "$cfg" boguspriv "--bogus-priv"
        append_bool "$cfg" expandhosts "--expand-hosts"
        config_get tftp_root "$cfg" "tftp_root"
-       [ -d "$tftp_root" ] && append_bool "$cfg" enable_tftp "--enable-tftp"
+       [ -n "$tftp_root" ] && mkdir -p "$tftp_root" && append_bool "$cfg" enable_tftp "--enable-tftp"
        append_bool "$cfg" tftp_no_fail "--tftp-no-fail"
        append_bool "$cfg" nonwildcard "--bind-dynamic"
        append_bool "$cfg" fqdn "--dhcp-fqdn"
@@ -612,7 +613,6 @@ dnsmasq_start()
        config_list_foreach "$cfg" "addnhosts" append_addnhosts
        config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain
        append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases"
-       append_parm "$cfg" "resolvfile" "--resolv-file" "/tmp/resolv.conf.auto"
        append_parm "$cfg" "serversfile" "--servers-file"
        append_parm "$cfg" "tftp_root" "--tftp-root"
        append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
@@ -627,7 +627,6 @@ dnsmasq_start()
        config_get_bool readethers "$cfg" readethers
        [ "$readethers" = "1" -a \! -e "/etc/ethers" ] && touch /etc/ethers
 
-       config_get resolvfile $cfg resolvfile
        config_get dhcpscript $cfg dhcpscript
 
        config_get leasefile $cfg leasefile "/tmp/dhcp.leases"
@@ -641,6 +640,8 @@ dnsmasq_start()
                [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
        fi
 
+       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
+
        config_get hostsfile "$cfg" dhcphostsfile
        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"