Package: dnsmasq
Version: 2.76-5
Followup-For: Bug #858506

Dear Maintainer,

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?

   A format change in a file from package dns-root-data forces an error
   in dnsmasq startup

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

     Upgrade to the latest strech release

   * What was the outcome of this action?

   dnsmasq no longer starts.

   * What outcome did you expect instead?

   dnsmasq starts normally

*** End of the template - remove these template lines ***

A format change in file /usr/share/dns/root.ds made the sed expressions
no longer valid.

If I use the line in file /etc/init.d/dnsmasq

   DNSMASQ_OPTS="$DNSMASQ_OPTS `sed -e 
s/'.*IN[[:space:]]DS[[:space:]]'/--trust-anchor=.,/ -e s/'[[:space:]]'/,/g 
$ROOT_DS | tr '\n' ' '`" 

everything is OK again.

-- System Information:
Debian Release: 9.0
  APT prefers testing
  APT policy: (500, 'testing'), (1, 'experimental')
Architecture: amd64
 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-3-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages dnsmasq depends on:
ii  dnsmasq-base         2.76-5+b1
ii  init-system-helpers  1.48
ii  netbase              5.4

dnsmasq recommends no packages.

Versions of packages dnsmasq suggests:
pn  resolvconf  <none>

-- Configuration Files:
/etc/dnsmasq.conf changed:
resolv-file=/run/systemd/resolve/resolv.conf
no-dhcp-interface=wlp2s0
no-dhcp-interface=lo
expand-hosts
domain=jpnet
tftp-root=/srv/tftp

/etc/init.d/dnsmasq changed:
set +e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/dnsmasq
NAME=dnsmasq
DESC="DNS forwarder and DHCP server"
ENABLED=1
if [ -r /etc/default/$NAME ]; then
        . /etc/default/$NAME
fi
if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG
fi
test -e /usr/share/dnsmasq/installed-marker || exit 0
 
test -x $DAEMON || exit 0
if [ -f /lib/lsb/init-functions ]; then
         . /lib/lsb/init-functions
else
         log_warning_msg () {
            echo "${@}."
         }
         log_success_msg () {
            echo "${@}."
         }
         log_daemon_msg () {
            echo -n "${1}: $2"
         }
         log_end_msg () {
            if [ $1 -eq 0 ]; then
              echo "."
            elif [ $1 -eq 255 ]; then
              /bin/echo -e " (warning)."
            else
              /bin/echo -e " failed!"
            fi
         }
fi
if [ ! "$RESOLV_CONF" ] &&
   [ "$IGNORE_RESOLVCONF" != "yes" ] &&
   [ -x /sbin/resolvconf ]
then
        RESOLV_CONF=/run/dnsmasq/resolv.conf
fi
for INTERFACE in $DNSMASQ_INTERFACE; do
        DNSMASQ_INTERFACES="$DNSMASQ_INTERFACES -i $INTERFACE"
done
for INTERFACE in $DNSMASQ_EXCEPT; do
        DNSMASQ_INTERFACES="$DNSMASQ_INTERFACES -I $INTERFACE"
done
if [ ! "$DNSMASQ_USER" ]; then
   DNSMASQ_USER="dnsmasq"
fi
DNSMASQ_OPTS="$DNSMASQ_OPTS --local-service"
ROOT_DS="/usr/share/dns/root.ds"
if [ -f $ROOT_DS ]; then
   DNSMASQ_OPTS="$DNSMASQ_OPTS `sed -e 
s/'.*IN[[:space:]]DS[[:space:]]'/--trust-anchor=.,/ -e s/'[[:space:]]'/,/g 
$ROOT_DS | tr '\n' ' '`" 
fi
start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        # /run may be volatile, so we need to ensure that
        # /run/dnsmasq exists here as well as in postinst
        if [ ! -d /run/dnsmasq ]; then
           mkdir /run/dnsmasq || return 2
           chown dnsmasq:nogroup /run/dnsmasq || return 2
        fi
        start-stop-daemon --start --quiet --pidfile /run/dnsmasq/$NAME.pid 
--exec $DAEMON --test > /dev/null || return 1
        start-stop-daemon --start --quiet --pidfile /run/dnsmasq/$NAME.pid 
--exec $DAEMON -- \
                -x /run/dnsmasq/$NAME.pid \
                ${MAILHOSTNAME:+ -m $MAILHOSTNAME} \
                ${MAILTARGET:+ -t $MAILTARGET} \
                ${DNSMASQ_USER:+ -u $DNSMASQ_USER} \
                ${DNSMASQ_INTERFACES:+ $DNSMASQ_INTERFACES} \
                ${DHCP_LEASE:+ -l $DHCP_LEASE} \
                ${DOMAIN_SUFFIX:+ -s $DOMAIN_SUFFIX} \
                ${RESOLV_CONF:+ -r $RESOLV_CONF} \
                ${CACHESIZE:+ -c $CACHESIZE} \
                ${CONFIG_DIR:+ -7 $CONFIG_DIR} \
                ${DNSMASQ_OPTS:+ $DNSMASQ_OPTS} \
                || return 2
}
start_resolvconf()
{
        for interface in $DNSMASQ_EXCEPT
        do
                [ $interface = lo ] && return
        done
        if [ -x /sbin/resolvconf ] ; then
                echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.$NAME
        fi
        return 0
}
stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile 
/run/dnsmasq/$NAME.pid --name $NAME
}
stop_resolvconf()
{
        if [ -x /sbin/resolvconf ] ; then
                /sbin/resolvconf -d lo.$NAME
        fi
        return 0
}
status()
{
        # Return
        #   0 if daemon is running
        #   1 if daemon is dead and pid file exists
        #   3 if daemon is not running
        #   4 if daemon status is unknown
        start-stop-daemon --start --quiet --pidfile /run/dnsmasq/$NAME.pid 
--exec $DAEMON --test > /dev/null
        case "$?" in
                0) [ -e "/run/dnsmasq/$NAME.pid" ] && return 1 ; return 3 ;;
                1) return 0 ;;
                *) return 4 ;;
        esac
}
case "$1" in
  start)
        test "$ENABLED" != "0" || exit 0
        log_daemon_msg "Starting $DESC" "$NAME"
        start
        case "$?" in
                0)
                        log_end_msg 0
                        start_resolvconf
                        exit 0
                        ;;
                1)
                        log_success_msg "(already running)"
                        exit 0
                        ;;
                *)
                        log_end_msg 1
                        exit 1
                        ;;
        esac
        ;;
  stop)
        stop_resolvconf
        if [ "$ENABLED" != "0" ]; then
             log_daemon_msg "Stopping $DESC" "$NAME"
        fi
        stop
        RETVAL="$?"
        if [ "$ENABLED" = "0" ]; then
            case "$RETVAL" in
               0) log_daemon_msg "Stopping $DESC" "$NAME"; log_end_msg 0 ;;
            esac 
            exit 0
        fi
        case "$RETVAL" in
                0) log_end_msg 0 ; exit 0 ;;
                1) log_warning_msg "(not running)" ; exit 0 ;;
                *) log_end_msg 1; exit 1 ;;
        esac
        ;;
  restart|force-reload)
        test "$ENABLED" != "0" || exit 1
        $DAEMON --test ${CONFIG_DIR:+ -7 $CONFIG_DIR} ${DNSMASQ_OPTS:+ 
$DNSMASQ_OPTS} >/dev/null 2>&1
        if [ $? -ne 0 ]; then
            NAME="configuration syntax check"
            RETVAL="2"
        else   
            stop_resolvconf
            stop
            RETVAL="$?"
        fi
        log_daemon_msg "Restarting $DESC" "$NAME"
        case "$RETVAL" in
                0|1)
                        sleep 2
                        start
                        case "$?" in
                                0)
                                        log_end_msg 0
                                        start_resolvconf
                                        exit 0
                                        ;;
                                *)
                                        log_end_msg 1
                                        exit 1
                                        ;;
                        esac
                        ;;
                *)
                        log_end_msg 1
                        exit 1
                        ;;
        esac
        ;;
  status)
        log_daemon_msg "Checking $DESC" "$NAME"
        status
        case "$?" in
                0) log_success_msg "(running)" ; exit 0 ;;
                1) log_success_msg "(dead, pid file exists)" ; exit 1 ;;
                3) log_success_msg "(not running)" ; exit 3 ;;
                *) log_success_msg "(unknown)" ; exit 4 ;;
        esac
        ;;
  dump-stats)
        kill -s USR1 `cat /run/dnsmasq/$NAME.pid`
        ;;
  systemd-start-resolvconf)
        start_resolvconf
        ;;
  systemd-stop-resolvconf)
        stop_resolvconf
        ;;
  systemd-exec)
        # /run/dnsmasq exists here as well as in postinst
        if [ ! -d /run/dnsmasq ]; then
           mkdir /run/dnsmasq || return 2
           chown dnsmasq:nogroup /run/dnsmasq || return 2
        fi
        exec $DAEMON -x /run/dnsmasq/$NAME.pid \
            ${MAILHOSTNAME:+ -m $MAILHOSTNAME} \
            ${MAILTARGET:+ -t $MAILTARGET} \
            ${DNSMASQ_USER:+ -u $DNSMASQ_USER} \
            ${DNSMASQ_INTERFACES:+ $DNSMASQ_INTERFACES} \
            ${DHCP_LEASE:+ -l $DHCP_LEASE} \
            ${DOMAIN_SUFFIX:+ -s $DOMAIN_SUFFIX} \
            ${RESOLV_CONF:+ -r $RESOLV_CONF} \
            ${CACHESIZE:+ -c $CACHESIZE} \
            ${CONFIG_DIR:+ -7 $CONFIG_DIR} \
            ${DNSMASQ_OPTS:+ $DNSMASQ_OPTS} 
        ;;
  *)
        echo "Usage: /etc/init.d/$NAME 
{start|stop|restart|force-reload|dump-stats|status}" >&2
        exit 3
        ;;
esac
exit 0


-- no debconf information

Reply via email to