diff options
5 files changed, 108 insertions, 23 deletions
diff --git a/meta-networking/recipes-support/dnsmasq/dnsmasq.inc b/meta-networking/recipes-support/dnsmasq/dnsmasq.inc index 622e630679..cc7f9e3be0 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 \ | |||
| 10 | SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV',1).split('.')[1]) > 15]}dnsmasq-${PV}.tar.gz;name=dnsmasq-${PV} \ | 10 | SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV',1).split('.')[1]) > 15]}dnsmasq-${PV}.tar.gz;name=dnsmasq-${PV} \ |
| 11 | file://init \ | 11 | file://init \ |
| 12 | file://dnsmasq.conf \ | 12 | file://dnsmasq.conf \ |
| 13 | file://dnsmasq.service \ | 13 | file://dnsmasq-resolvconf.service \ |
| 14 | file://dnsmasq-noresolvconf.service \ | ||
| 14 | " | 15 | " |
| 15 | 16 | ||
| 16 | inherit pkgconfig update-rc.d systemd | 17 | inherit pkgconfig update-rc.d systemd |
| @@ -33,7 +34,7 @@ EXTRA_OEMAKE = "\ | |||
| 33 | 'LDFLAGS=${LDFLAGS}' \ | 34 | 'LDFLAGS=${LDFLAGS}' \ |
| 34 | " | 35 | " |
| 35 | 36 | ||
| 36 | SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq', '', d)}" | 37 | SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}" |
| 37 | 38 | ||
| 38 | do_compile_append() { | 39 | do_compile_append() { |
| 39 | # build dhcp_release | 40 | # build dhcp_release |
| @@ -51,7 +52,12 @@ do_install () { | |||
| 51 | install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq | 52 | install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq |
| 52 | 53 | ||
| 53 | install -d ${D}${systemd_unitdir}/system | 54 | install -d ${D}${systemd_unitdir}/system |
| 54 | install -m 0644 ${WORKDIR}/dnsmasq.service ${D}${systemd_unitdir}/system | 55 | |
| 56 | if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then | ||
| 57 | install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service | ||
| 58 | else | ||
| 59 | install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service | ||
| 60 | fi | ||
| 55 | 61 | ||
| 56 | install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir} | 62 | install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir} |
| 57 | 63 | ||
| @@ -60,11 +66,12 @@ do_install () { | |||
| 60 | install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/ | 66 | install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/ |
| 61 | fi | 67 | fi |
| 62 | if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then | 68 | if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then |
| 63 | install -d ${D}${sysconfdir}/resolvconf/update.d/ | 69 | install -d ${D}${sysconfdir}/resolvconf/update.d/ |
| 64 | install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq | 70 | install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq |
| 65 | 71 | ||
| 66 | install -d ${D}${sysconfdir}/default/volatiles | 72 | install -d ${D}${sysconfdir}/default/volatiles |
| 67 | install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles | 73 | install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles |
| 74 | install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir} | ||
| 68 | fi | 75 | fi |
| 69 | } | 76 | } |
| 70 | 77 | ||
diff --git a/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service new file mode 100644 index 0000000000..cde2244c85 --- /dev/null +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=DNS forwarder and DHCP server | ||
| 3 | After=network.target | ||
| 4 | |||
| 5 | [Service] | ||
| 6 | Type=forking | ||
| 7 | PIDFile=/run/dnsmasq.pid | ||
| 8 | ExecStartPre=/usr/bin/dnsmasq --test | ||
| 9 | ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid | ||
| 10 | ExecStop=/bin/kill $MAINPID | ||
| 11 | ExecReload=/bin/kill -HUP $MAINPID | ||
| 12 | |||
| 13 | [Install] | ||
| 14 | WantedBy=multi-user.target | ||
| 15 | |||
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 0000000000..db54d467e6 --- /dev/null +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | # | ||
| 3 | # Borrowing heavily from the dnsmasq initscript's version of support for | ||
| 4 | # resolvconf, intended for use in systemd-only configurations. | ||
| 5 | # | ||
| 6 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||
| 7 | DAEMON=/usr/sbin/dnsmasq | ||
| 8 | NAME=dnsmasq | ||
| 9 | |||
| 10 | # Most configuration options in /etc/default/dnsmasq are deprecated | ||
| 11 | # but still honoured. | ||
| 12 | if [ -r /etc/default/$NAME ]; then | ||
| 13 | . /etc/default/$NAME | ||
| 14 | fi | ||
| 15 | |||
| 16 | start_resolvconf() | ||
| 17 | { | ||
| 18 | # If interface "lo" is explicitly disabled in /etc/default/dnsmasq | ||
| 19 | # Then dnsmasq won't be providing local DNS, so don't add it to | ||
| 20 | # the resolvconf server set. | ||
| 21 | for interface in $DNSMASQ_EXCEPT | ||
| 22 | do | ||
| 23 | [ $interface = lo ] && return | ||
| 24 | done | ||
| 25 | |||
| 26 | if [ -x /sbin/resolvconf ] ; then | ||
| 27 | echo "nameserver 127.0.0.1" | | ||
| 28 | /sbin/resolvconf -a lo.$NAME | ||
| 29 | fi | ||
| 30 | return 0 | ||
| 31 | } | ||
| 32 | |||
| 33 | stop_resolvconf() | ||
| 34 | { | ||
| 35 | if [ -x /sbin/resolvconf ] ; then | ||
| 36 | /sbin/resolvconf -d lo.$NAME | ||
| 37 | fi | ||
| 38 | return 0 | ||
| 39 | } | ||
| 40 | |||
| 41 | case "$1" in | ||
| 42 | start) | ||
| 43 | start_resolvconf | ||
| 44 | exit 0 | ||
| 45 | ;; | ||
| 46 | stop) | ||
| 47 | stop_resolvconf | ||
| 48 | exit 0 | ||
| 49 | ;; | ||
| 50 | restart) | ||
| 51 | stop_resolvconf | ||
| 52 | start_resolvconf | ||
| 53 | exit 0 | ||
| 54 | ;; | ||
| 55 | *) | ||
| 56 | echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >&2 | ||
| 57 | exit 3 | ||
| 58 | ;; | ||
| 59 | esac | ||
| 60 | |||
| 61 | exit 0 | ||
| 62 | |||
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 0000000000..68b175c1fb --- /dev/null +++ b/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=DNS forwarder and DHCP server | ||
| 3 | After=network.target | ||
| 4 | |||
| 5 | [Service] | ||
| 6 | Type=forking | ||
| 7 | PIDFile=/run/dnsmasq.pid | ||
| 8 | ExecStartPre=/usr/bin/dnsmasq --test | ||
| 9 | ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid | ||
| 10 | ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start | ||
| 11 | ExecStopPre=/usr/bin/dnsmasq-resolvconf-helper stop | ||
| 12 | ExecStop=/bin/kill $MAINPID | ||
| 13 | ExecReload=/bin/kill -HUP $MAINPID | ||
| 14 | |||
| 15 | [Install] | ||
| 16 | WantedBy=multi-user.target | ||
| 17 | |||
diff --git a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service b/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service deleted file mode 100644 index c3637e142b..0000000000 --- a/meta-networking/recipes-support/dnsmasq/files/dnsmasq.service +++ /dev/null | |||
| @@ -1,16 +0,0 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=DNS forwarder and DHCP server | ||
| 3 | After=network.target | ||
| 4 | |||
| 5 | [Service] | ||
| 6 | Type=forking | ||
| 7 | PIDFile=/run/dnsmasq.pid | ||
| 8 | ExecStartPre=/usr/sbin/dnsmasq --test | ||
| 9 | ExecStart=/etc/init.d/dnsmasq systemd-exec | ||
| 10 | ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf | ||
| 11 | ExecStopPre=/etc/init.d/dnsmasq systemd-stop-resolvconf | ||
| 12 | ExecReload=/bin/kill -HUP $MAINPID | ||
| 13 | |||
| 14 | [Install] | ||
| 15 | WantedBy=multi-user.target | ||
| 16 | |||
