dnsmasq: remove check for existing dhcp server
[openwrt/staging/jow.git] / package / network / services / dnsmasq / files / dnsmasq.init
index 184e7ff0ed571b62bde2a1268fb3b74a9420e7c6..fd2ce3d2de0c1342e85dcee810250c0c08a50af4 100755 (executable)
@@ -1,8 +1,6 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2007-2012 OpenWrt.org
 
-. /lib/functions.sh
-
 START=19
 
 USE_PROCD=1
@@ -541,17 +539,13 @@ dhcp_add() {
        # Do not support non-static interfaces for now
        [ static = "$proto" ] || return 0
 
+       ipaddr="${subnet%%/*}"
+       prefix_or_netmask="${subnet##*/}"
+
        # Override interface netmask with dhcp config if applicable
-       config_get netmask "$cfg" netmask "${subnet##*/}"
+       config_get netmask "$cfg" netmask
 
-       #check for an already active dhcp server on the interface, unless 'force' is set
-       config_get_bool force "$cfg" force 0
-       [ $force -gt 0 ] || dhcp_check "$ifname" || {
-               logger -t dnsmasq \
-                       "found already running DHCP-server on interface '$ifname'" \
-                       "refusing to start, use 'option force 1' to override"
-               return 0
-       }
+       [ -n "$netmask" ] && prefix_or_netmask="$netmask"
 
        config_get start "$cfg" start 100
        config_get limit "$cfg" limit 150
@@ -568,6 +562,7 @@ dhcp_add() {
        config_get ra_management "$cfg" ra_management
        config_get ra_preference "$cfg" ra_preference
        config_get dns "$cfg" dns
+       config_get dns_sl "$cfg" domain
 
        config_list_foreach "$cfg" "interface_name" append_interface_name "$ifname"
 
@@ -583,12 +578,8 @@ dhcp_add() {
 
        nettag="${networkid:+set:${networkid},}"
 
-       if [ "$limit" -gt 0 ] ; then
-               limit=$((limit-1))
-       fi
-
        # make sure the DHCP range is not empty
-       if [ "$dhcpv4" != "disabled" ] && ipcalc "${subnet%%/*}" "$netmask" "$start" "$limit" ; then
+       if [ "$dhcpv4" != "disabled" ] && ipcalc "$ipaddr/$prefix_or_netmask" "$start" "$limit" ; then
                [ "$dynamicdhcpv4" = "0" ] && END="static"
 
                xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
@@ -651,6 +642,13 @@ dhcp_add() {
                fi
 
                dhcp_option_append "option6:dns-server,$dnss" "$networkid"
+
+               if [ -n "$dns_sl" ]; then
+                       ddssl=""
+                       for dd in $dns_sl; do append ddssl "$dd" ","; done
+               fi
+
+               dhcp_option_append "option6:domain-search,$ddssl" "$networkid"
        fi
 
        dhcp_option_add "$cfg" "$networkid" 0
@@ -855,7 +853,7 @@ dnsmasq_start()
 {
        local cfg="$1"
        local disabled user_dhcpscript logfacility
-       local resolvfile resolvdir localuse=0
+       local resolvfile resolvdir localuse=1
 
        config_get_bool disabled "$cfg" disabled 0
        [ "$disabled" -gt 0 ] && return 0
@@ -1052,7 +1050,7 @@ dnsmasq_start()
                config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.d/resolv.conf.auto
                [ -n "$resolvfile" ] && [ ! -e "$resolvfile" ] && touch "$resolvfile"
                xappend "--resolv-file=$resolvfile"
-               [ "$resolvfile" = "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=1
+               [ "$resolvfile" != "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=0
                resolvdir="$(dirname "$resolvfile")"
        fi
        config_get_bool localuse "$cfg" localuse "$localuse"
@@ -1223,12 +1221,12 @@ dnsmasq_start()
 dnsmasq_stop()
 {
        local cfg="$1"
-       local noresolv resolvfile localuse=0
+       local noresolv resolvfile localuse=1
 
        config_get_bool noresolv "$cfg" noresolv 0
        config_get resolvfile "$cfg" "resolvfile"
 
-       [ "$noresolv" = 0 ] && [ "$resolvfile" = "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=1
+       [ "$noresolv" = 0 ] && [ "$resolvfile" != "/tmp/resolv.conf.d/resolv.conf.auto" ] && localuse=0
        config_get_bool localuse "$cfg" localuse "$localuse"
        [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.d/resolv.conf.auto" /tmp/resolv.conf