#!/bin/sh /etc/rc.common
# Copyright (C) 2007-2012 OpenWrt.org
-. /lib/functions.sh
-
START=19
USE_PROCD=1
# 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
nettag="${networkid:+set:${networkid},}"
# 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}"
{
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
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"
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