[Re: [oe] [meta-networking][PATCH v3] dnsmasq: get systemd only working again] 
On 16.04.20 (Wed 14:56) Joe MacDonald wrote:

> Wow this one is kind of thorny, huh?
> 
> How about the attached patch?  I hope it strikes the right balance
> between not duplicating too much and not making things too complex to
> maintain later on.

Or, rather, this one.  :-)

-J.

> 
> -J.
> 
> [Re: [meta-networking][PATCH v3] dnsmasq: get systemd only working again] On 
> 16.04.20 (Wed 10:29) Anders Darander wrote:
> 
> > * Anders Darander <and...@chargestorm.se> [160420 10:24]:
> > 
> > > * Joe MacDonald <joe_macdon...@mentor.com> [160419 17:36]:
> > 
> > > > From: Mark Asselstine <mark.asselst...@windriver.com>
> > 
> > > > 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 <mark.asselst...@windriver.com>
> > > > Signed-off-by: Joe MacDonald <joe_macdon...@mentor.com>
> > > > ---
> > 
> > > > The previous one should've been v2, so I've named this one v3 
> > > > explicitly.
> > > > After reading more of the systemd documentation I think this approach in
> > > > the service file is the current best option available.  It would 
> > > > certainly
> > > > be cleaner to store the pidfile name in an environment variable but it
> > > > turns out on further inspection that if you pass a varaible to PIDFile,
> > > > you get errors (that you only see when the service is stopped, not while
> > > > it is running) indicating essentially that it is falling back to the
> > > > "guess the MAINPID value" behaviour.  So this seems to be the way we're
> > > > supposed to do this type of thing now.
> > 
> > > > -J.
> > 
> > > >  .../recipes-support/dnsmasq/dnsmasq.inc            |  9 ++--
> > > >  .../dnsmasq/files/dnsmasq-resolvconf-helper        | 62 
> > > > ++++++++++++++++++++++
> > 
> > > This file, dnsmasq-resolvconf-helper, isn't include in SRC_URI, neither
> > > in do_install(). However it is referenced in the dnsmasq.service, which
> > > leads to:
> > 
> > > Apr 08 11:07:27 ccu dnsmasq[384]: started, version 2.75 cachesize 150
> > > Apr 08 11:07:27 ccu dnsmasq[384]: compile time options: IPv6 GNU-getopt 
> > > no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth 
> > > no-DNSSEC loop- detect inotify
> > > Apr 08 11:07:27 ccu dnsmasq-dhcp[384]: DHCP, IP range 192.168.7.1 -- 
> > > 192.168.7.1, lease time 2m
> > > Apr 08 11:07:27 ccu dnsmasq[384]: [[0;1;39mno servers found in 
> > > /etc/resolv.conf, will retry[[0m
> > > Apr 08 11:07:27 ccu dnsmasq[384]: read /etc/hosts - 2 addresses Apr 08 
> > > 11:07:27 ccu systemd[386]: [[0;1;31mdnsmasq.service: Failed at
> > > step EXEC spawning /usr/bin/dnsmasq-resolvconf-helper: No such file or 
> > > directory[[0m
> > 
> > This is the actual issue, the dnsmasq.service file will unconditionally
> > execute dnsmasq-resolvconf-helper, while it's only installed if the
> > PACKAGECONFIG resolved is set.
> > 
> > Could you add the line 
> > 
> > ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start
> > 
> > to dnsmasq.service conditionally on the PACKAGECONFIG resolved? (Using sed
> >  is an option).
> > 
> > > Apr 08 11:07:27 ccu systemd[1]: [[0;1;39mdnsmasq.service: Control process 
> > > exited, code=exited status=203[[0m
> > > Apr 08 11:07:27 ccu systemd[1]: [[0;1;31mFailed to start DNS forwarder 
> > > and DHCP server.[[0m
> > > Apr 08 11:07:27 ccu systemd[1]: [[0;1;39mdnsmasq.service: Unit entered 
> > > failed state.[[0m
> > > Apr 08 11:07:27 ccu systemd[1]: [[0;1;39mdnsmasq.service: Failed with 
> > > result 'exit-code'.[[0m
> > 
> > 
> > > Thus, with the following patch amended, I'm happy with this patch!
> > 
> > No, I was slightly wrong...
> > 
> > > Cheers,
> > > Anders
> > 
> > > diff --git a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc 
> > > b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> > > index df58e5c..db54658 100644
> > > --- a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> > > +++ b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> > > @@ -11,6 +11,7 @@ SRC_URI = 
> > > "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getV
> > >             file://init \
> > >             file://dnsmasq.conf \
> > >             file://dnsmasq.service \
> > > +           file://dnsmasq-resolvconf-helper \
> > >  "
> > 
> > >  inherit pkgconfig update-rc.d systemd
> > > @@ -54,7 +55,7 @@ do_install () {
> > >      install -m 0644 ${WORKDIR}/dnsmasq.service 
> > > ${D}${systemd_unitdir}/system
> > 
> > >      install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir}
> > > -
> > > +    install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper 
> > > ${D}${bindir}/dnsmasq-resolvconf-helper
> > 
> > This line should obviously not be here, as you're actually installing
> > dnsmasq-resolvconf-helper, if the PACKAGECONFIG resolved is set.
> > 
> > >      if [ "${@base_contains('PACKAGECONFIG', 'dbus', 'dbus', '', d)}" != 
> > > "" ]; then
> > >          install -d ${D}${sysconfdir}/dbus-1/system.d
> > >          install -m 644 dbus/dnsmasq.conf 
> > > ${D}${sysconfdir}/dbus-1/system.d/
> -- 
> -Joe MacDonald.
> :wq

> From 8247d6d515be338aeef58978f5d52ce08f637adf Mon Sep 17 00:00:00 2001
> From: Mark Asselstine <mark.asselst...@windriver.com>
> Date: Mon, 18 Apr 2016 16:34:36 -0400
> Subject: [PATCH 01/10] dnsmasq: get systemd only working again
> 
> 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 <mark.asselst...@windriver.com>
> Acked-by: Anders Darander <and...@chargestorm.se>
> Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
> Signed-off-by: Joe MacDonald <joe_macdon...@mentor.com>
> ---
>  .../recipes-support/dnsmasq/dnsmasq.inc            | 18 ++++---
>  ...nsmasq.service => dnsmasq-noresolvconf.service} |  7 ++-
>  .../dnsmasq/files/dnsmasq-resolvconf-helper        | 62 
> ++++++++++++++++++++++
>  .../dnsmasq/files/dnsmasq-resolvconf.service       | 17 ++++++
>  4 files changed, 94 insertions(+), 10 deletions(-)
>  rename meta-networking/recipes-support/dnsmasq/files/{dnsmasq.service => 
> dnsmasq-noresolvconf.service} (49%)
>  create mode 100644 
> meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper
>  create mode 100644 
> meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
> 
> diff --git a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc 
> b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> index 622e630..1f74156 100644
> --- a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> +++ b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
> @@ -33,7 +33,7 @@ EXTRA_OEMAKE = "\
>      'LDFLAGS=${LDFLAGS}' \
>  "
>  
> -SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 
> 'file://dnsmasq.resolvconf file://99_dnsmasq', '', d)}"
> +SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 
> 'file://dnsmasq.resolvconf file://99_dnsmasq 
> file://dnsmasq-resolvconf-helper', '', d)}"
>  
>  do_compile_append() {
>      # build dhcp_release
> @@ -51,7 +51,12 @@ do_install () {
>      install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq
>  
>      install -d ${D}${systemd_unitdir}/system
> -    install -m 0644 ${WORKDIR}/dnsmasq.service ${D}${systemd_unitdir}/system
> +
> +    if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', 
> d)}" != "" ]; then
> +        install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service 
> ${D}${systemd_unitdir}/system/dnsmasq.service
> +    else
> +        install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service 
> ${D}${systemd_unitdir}/system/dnsmasq.service
> +    fi
>  
>      install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir}
>  
> @@ -60,11 +65,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.service 
> b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
> similarity index 49%
> rename from meta-networking/recipes-support/dnsmasq/files/dnsmasq.service
> rename to 
> meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
> index c3637e1..cde2244 100644
> --- a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service
> +++ 
> b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
> @@ -5,10 +5,9 @@ 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 /run/dnsmasq.pid
> +ExecStop=/bin/kill $MAINPID
>  ExecReload=/bin/kill -HUP $MAINPID
>  
>  [Install]
> 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-resolvconf.service 
> b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
> new file mode 100644
> index 0000000..68b175c
> --- /dev/null
> +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
> @@ -0,0 +1,17 @@
> +[Unit]
> +Description=DNS forwarder and DHCP server
> +After=network.target
> +
> +[Service]
> +Type=forking
> +PIDFile=/run/dnsmasq.pid
> +ExecStartPre=/usr/bin/dnsmasq --test
> +ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid
> +ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start
> +ExecStopPre=/usr/bin/dnsmasq-resolvconf-helper stop
> +ExecStop=/bin/kill $MAINPID
> +ExecReload=/bin/kill -HUP $MAINPID
> +
> +[Install]
> +WantedBy=multi-user.target
> +
> -- 
> 1.9.1
> 




-- 
-Joe MacDonald.
:wq
From 237ade5065aee5290288febfbbae90145c2c7764 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselst...@windriver.com>
Date: Mon, 18 Apr 2016 16:34:36 -0400
Subject: [PATCH] dnsmasq: get systemd only working again

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 <mark.asselst...@windriver.com>
Acked-by: Anders Darander <and...@chargestorm.se>
Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdon...@mentor.com>
---
 .../recipes-support/dnsmasq/dnsmasq.inc            | 21 +++++---
 ...nsmasq.service => dnsmasq-noresolvconf.service} |  7 ++-
 .../dnsmasq/files/dnsmasq-resolvconf-helper        | 62 ++++++++++++++++++++++
 .../dnsmasq/files/dnsmasq-resolvconf.service       | 17 ++++++
 4 files changed, 96 insertions(+), 11 deletions(-)
 rename meta-networking/recipes-support/dnsmasq/files/{dnsmasq.service => dnsmasq-noresolvconf.service} (49%)
 create mode 100644 meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper
 create mode 100644 meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service

diff --git a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
index 622e630..cc7f9e3 100644
--- a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
+++ b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
@@ -10,7 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
 SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV',1).split('.')[1]) > 15]}dnsmasq-${PV}.tar.gz;name=dnsmasq-${PV} \
            file://init \
            file://dnsmasq.conf \
-           file://dnsmasq.service \
+           file://dnsmasq-resolvconf.service \
+           file://dnsmasq-noresolvconf.service \
 "
 
 inherit pkgconfig update-rc.d systemd
@@ -33,7 +34,7 @@ EXTRA_OEMAKE = "\
     'LDFLAGS=${LDFLAGS}' \
 "
 
-SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq', '', d)}"
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}"
 
 do_compile_append() {
     # build dhcp_release
@@ -51,7 +52,12 @@ do_install () {
     install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq
 
     install -d ${D}${systemd_unitdir}/system
-    install -m 0644 ${WORKDIR}/dnsmasq.service ${D}${systemd_unitdir}/system
+
+    if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then
+        install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
+    else
+        install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
+    fi
 
     install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir}
 
@@ -60,11 +66,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.service b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
similarity index 49%
rename from meta-networking/recipes-support/dnsmasq/files/dnsmasq.service
rename to meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
index c3637e1..cde2244 100644
--- a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service
+++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
@@ -5,10 +5,9 @@ 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 /run/dnsmasq.pid
+ExecStop=/bin/kill $MAINPID
 ExecReload=/bin/kill -HUP $MAINPID
 
 [Install]
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-resolvconf.service b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
new file mode 100644
index 0000000..68b175c
--- /dev/null
+++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=DNS forwarder and DHCP server
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/dnsmasq.pid
+ExecStartPre=/usr/bin/dnsmasq --test
+ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid
+ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start
+ExecStopPre=/usr/bin/dnsmasq-resolvconf-helper stop
+ExecStop=/bin/kill $MAINPID
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
-- 
1.9.1

Attachment: signature.asc
Description: Digital signature

-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to