From e1d95f25cc9cf96303e3fdfbdccb3e4a23d96a89 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 25 Nov 2014 11:02:07 +0100 Subject: [PATCH] meta-digi-dey: provide DNS configuration at build time Allows to configure static DNS servers in resolv.conf setting following variables in your project's config file: ETH0_STATIC_DNS, ETH1_STATIC_DNS, WLAN0_STATIC_DNS Those variables accept multiple dns servers (separated by spaces) https://jira.digi.com/browse/DEL-1266 Signed-off-by: Javier Viguera --- .../init-ifupdown-1.0/interfaces.eth0.static | 1 + .../init-ifupdown-1.0/interfaces.eth1.static | 1 + .../init-ifupdown-1.0/interfaces.wlan0.static | 1 + .../init-ifupdown/init-ifupdown-1.0/resolv | 30 ++++++++++++++++++ .../init-ifupdown/init-ifupdown_1.0.bbappend | 31 +++++++++++++------ 5 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/resolv diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth0.static b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth0.static index 187528d4d..70e73c131 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth0.static +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth0.static @@ -4,3 +4,4 @@ iface eth0 inet static address ##ETH0_STATIC_IP## netmask ##ETH0_STATIC_NETMASK## gateway ##ETH0_STATIC_GATEWAY## + dns-nameservers ##ETH0_STATIC_DNS## diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth1.static b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth1.static index 6de0f64d5..6fbdc7a23 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth1.static +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.eth1.static @@ -3,3 +3,4 @@ auto eth1 iface eth1 inet static address ##ETH1_STATIC_IP## netmask ##ETH1_STATIC_NETMASK## + dns-nameservers ##ETH1_STATIC_DNS## diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan0.static b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan0.static index ffbf88867..273f3147d 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan0.static +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/interfaces.wlan0.static @@ -3,5 +3,6 @@ auto wlan0 iface wlan0 inet static address ##WLAN0_STATIC_IP## netmask ##WLAN0_STATIC_NETMASK## + dns-nameservers ##WLAN0_STATIC_DNS## wpa-driver ##WPA_DRIVER## wpa-conf /etc/wpa_supplicant.conf diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/resolv b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/resolv new file mode 100644 index 000000000..ecc0b4070 --- /dev/null +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown-1.0/resolv @@ -0,0 +1,30 @@ +#!/bin/sh +#=============================================================================== +# +# resolv +# +# Copyright (C) 2014 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# +# !Description: Configure static DNS servers with ifup +# +#=============================================================================== + +# Only for static method +[ "${METHOD}" != "static" ] && exit 0 + +RESOLVCONF="$(readlink /etc/resolv.conf)" + +NAMESERVERS="" +for NS in ${IF_DNS_NAMESERVER} ${IF_DNS_NAMESERVERS}; do + NAMESERVERS="${NAMESERVERS:+${NAMESERVERS}\n}nameserver ${NS}" +done + +if [ -n "${RESOLVCONF}" -a -n "${NAMESERVERS}" ]; then + printf "${NAMESERVERS}\n" > "${RESOLVCONF}" +fi diff --git a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend index c653fe30a..2a505cf88 100644 --- a/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend +++ b/meta-digi-dey/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend @@ -8,7 +8,9 @@ SRC_URI_append = " \ file://interfaces.eth1.static \ file://interfaces.eth1.dhcp \ file://interfaces.wlan0.static \ - file://interfaces.wlan0.dhcp" + file://interfaces.wlan0.dhcp \ + file://resolv \ +" SRC_URI_append_mx5 = " file://ifup" @@ -20,16 +22,25 @@ do_install_append() { [ -n "${HAVE_EXT_ETH}" ] && cat ${WORKDIR}/interfaces.eth1.${ETH1_MODE} >> ${D}${sysconfdir}/network/interfaces [ -n "${HAVE_WIFI}" ] && cat ${WORKDIR}/interfaces.wlan0.${WLAN0_MODE} >> ${D}${sysconfdir}/network/interfaces + # Install DNS servers handler but remove DNS config lines if no DNS specified + install -m 0755 ${WORKDIR}/resolv ${D}${sysconfdir}/network/if-up.d/resolv + [ -z "${ETH0_STATIC_DNS}" ] && sed -i -e "/##ETH0_STATIC_DNS##/d" ${D}${sysconfdir}/network/interfaces + [ -z "${ETH1_STATIC_DNS}" ] && sed -i -e "/##ETH1_STATIC_DNS##/d" ${D}${sysconfdir}/network/interfaces + [ -z "${WLAN0_STATIC_DNS}" ] && sed -i -e "/##WLAN0_STATIC_DNS##/d" ${D}${sysconfdir}/network/interfaces + # Replace interface parameters - sed -i -e 's,##ETH0_STATIC_IP##,${ETH0_STATIC_IP},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##ETH0_STATIC_NETMASK##,${ETH0_STATIC_NETMASK},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##ETH0_STATIC_GATEWAY##,${ETH0_STATIC_GATEWAY},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##ETH1_STATIC_IP##,${ETH1_STATIC_IP},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##ETH1_STATIC_NETMASK##,${ETH1_STATIC_NETMASK},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##ETH1_STATIC_GATEWAY##,${ETH1_STATIC_GATEWAY},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##WLAN0_STATIC_IP##,${WLAN0_STATIC_IP},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##WLAN0_STATIC_NETMASK##,${WLAN0_STATIC_NETMASK},g' ${D}${sysconfdir}/network/interfaces - sed -i -e 's,##WLAN0_STATIC_GATEWAY##,${WLAN0_STATIC_GATEWAY},g' ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH0_STATIC_IP##,${ETH0_STATIC_IP},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH0_STATIC_NETMASK##,${ETH0_STATIC_NETMASK},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH0_STATIC_GATEWAY##,${ETH0_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH0_STATIC_DNS##,${ETH0_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH1_STATIC_IP##,${ETH1_STATIC_IP},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH1_STATIC_NETMASK##,${ETH1_STATIC_NETMASK},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH1_STATIC_GATEWAY##,${ETH1_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##ETH1_STATIC_DNS##,${ETH1_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN0_STATIC_IP##,${WLAN0_STATIC_IP},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN0_STATIC_NETMASK##,${WLAN0_STATIC_NETMASK},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN0_STATIC_GATEWAY##,${WLAN0_STATIC_GATEWAY},g" ${D}${sysconfdir}/network/interfaces + sed -i -e "s,##WLAN0_STATIC_DNS##,${WLAN0_STATIC_DNS},g" ${D}${sysconfdir}/network/interfaces sed -i -e "s,##WPA_DRIVER##,${WPA_DRIVER},g" ${D}${sysconfdir}/network/interfaces }