From: Mark Asselstine <[email protected]> The changes made in commit 2497cf2960537152427c99629b2af412787eb6c2 [dnsmasq: steal resolvconf support from Ubuntu] broke systemd only dnsmasq runtime. No sysvinit scripts are included in systemd only builds (and should not be) and the dnsmasq executable has not moved to /usr/sbin.
Reverting to the previous version of the systemd service file. If folks want the local dnsmasq instance to be queried before going to an external DNS they should add 'nameserver 127.0.0.1' to /etc/resolv.conf. Or submit a change which will work with systemd. Signed-off-by: Mark Asselstine <[email protected]> Signed-off-by: Joe MacDonald <[email protected]> --- Mark, Thanks for the patch. In the interests of not causing any more hassle than I already have, I'm proposing this as an alternative to what you sent earlier today. This hopefully preserves the resolvconf/start-stop functionality while not relying on any sysvinit-ness. What do you think about this as a middle-ground? Anders, I trust that nothing Mark and I are discussing here changes the issue you noted about dnsmasq just falling over after a few minutes. I propose we dig into that separately, since it looks like a different problem probably related to the uprev. If it turns out that once we merge something to support systemd-only builds that resolves the 'dnsmasq vandalizes itself' issue, even better. -J. .../recipes-support/dnsmasq/dnsmasq.inc | 9 ++-- .../dnsmasq/files/dnsmasq-resolvconf-helper | 62 ++++++++++++++++++++++ .../recipes-support/dnsmasq/files/dnsmasq.service | 9 ++-- 3 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper diff --git a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc index 622e630..df58e5c 100644 --- a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc +++ b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc @@ -60,11 +60,12 @@ do_install () { install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/ fi if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then - install -d ${D}${sysconfdir}/resolvconf/update.d/ - install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq + install -d ${D}${sysconfdir}/resolvconf/update.d/ + install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq - install -d ${D}${sysconfdir}/default/volatiles - install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles + install -d ${D}${sysconfdir}/default/volatiles + install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles + install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir} fi } diff --git a/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper new file mode 100644 index 0000000..db54d46 --- /dev/null +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Borrowing heavily from the dnsmasq initscript's version of support for +# resolvconf, intended for use in systemd-only configurations. +# +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/dnsmasq +NAME=dnsmasq + +# Most configuration options in /etc/default/dnsmasq are deprecated +# but still honoured. +if [ -r /etc/default/$NAME ]; then + . /etc/default/$NAME +fi + +start_resolvconf() +{ + # If interface "lo" is explicitly disabled in /etc/default/dnsmasq + # Then dnsmasq won't be providing local DNS, so don't add it to + # the resolvconf server set. + 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_resolvconf() +{ + if [ -x /sbin/resolvconf ] ; then + /sbin/resolvconf -d lo.$NAME + fi + return 0 +} + +case "$1" in + start) + start_resolvconf + exit 0 + ;; + stop) + stop_resolvconf + exit 0 + ;; + restart) + stop_resolvconf + start_resolvconf + exit 0 + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >&2 + exit 3 + ;; +esac + +exit 0 + diff --git a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service b/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service index c3637e1..5824b62 100644 --- a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service @@ -5,10 +5,10 @@ After=network.target [Service] Type=forking PIDFile=/run/dnsmasq.pid -ExecStartPre=/usr/sbin/dnsmasq --test -ExecStart=/etc/init.d/dnsmasq systemd-exec -ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf -ExecStopPre=/etc/init.d/dnsmasq systemd-stop-resolvconf +ExecStartPre=/usr/bin/dnsmasq --test +ExecStart=/usr/bin/dnsmasq -x $MAINPID +ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start +ExecStop=/usr/bin/dnsmasq-resolvconf-helper stop ExecReload=/bin/kill -HUP $MAINPID [Install] -- 1.9.1 -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
