[LEDE-DEV] [PATCH] dnsmasq: write atomic config file

2016-06-13 Thread Ulrich Weber
multiple invocation of dnsmasq script (e.g. by procd and hotplugd)
might cause procd to restart dnsmasq with an incomplete config file.
Config file generation might take quite a long time on larger configs
due ubus calls for each listening interface...

Signed-off-by: Ulrich Weber <ulrich.we...@riverbed.com>
---
 package/network/services/dnsmasq/files/dnsmasq.init | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init 
b/package/network/services/dnsmasq/files/dnsmasq.init
index 1a9903e..6967049 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -13,6 +13,7 @@ ADD_LOCAL_DOMAIN=1
 ADD_LOCAL_HOSTNAME=1
 
 CONFIGFILE="/var/etc/dnsmasq.conf"
+CONFIGFILE_TMP="/var/etc/dnsmasq.conf.$$"
 HOSTFILE="/tmp/hosts/dhcp"
 TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
 TIMESTAMPFILE="/etc/dnsmasq.time"
@@ -20,7 +21,7 @@ TIMESTAMPFILE="/etc/dnsmasq.time"
 xappend() {
local value="$1"
 
-   echo "${value#--}" >> $CONFIGFILE
+   echo "${value#--}" >> $CONFIGFILE_TMP
 }
 
 hex_to_hostid() {
@@ -249,7 +250,7 @@ dnsmasq() {
xappend "--user=dnsmasq"
xappend "--group=dnsmasq"
 
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
 
config_get_bool enable_tftp "$cfg" enable_tftp 0
[ "$enable_tftp" -gt 0 ] && {
@@ -632,7 +633,7 @@ start_service() {
chown dnsmasq.dnsmasq "$TIMESTAMPFILE"
fi
 
-   echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE
+   echo "# auto-generated config file from /etc/config/dhcp" > 
$CONFIGFILE_TMP
echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE
 
# if we did this last, we could override auto-generated config
@@ -645,7 +646,7 @@ start_service() {
args=""
config_foreach dnsmasq dnsmasq
config_foreach dhcp_host_add host
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
config_foreach dhcp_boot_add boot
config_foreach dhcp_mac_add mac
config_foreach dhcp_tag_add tag
@@ -679,19 +680,20 @@ start_service() {
}
}
 
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
config_foreach dhcp_srv_add srvhost
config_foreach dhcp_mx_add mxhost
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
 
config_get odhcpd_is_active odhcpd maindhcp
if [ "$odhcpd_is_active" != "1" ]; then
config_foreach dhcp_add dhcp
fi
 
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
config_foreach dhcp_cname_add cname
-   echo >> $CONFIGFILE
+   echo >> $CONFIGFILE_TMP
+   mv -f $CONFIGFILE_TMP $CONFIGFILE
 
rm -f /tmp/resolv.conf
[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
-- 
1.9.1


___
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev


[LEDE-DEV] [PATCH] ppp: honor ip6table for IPv6 PPP interfaces

2017-02-10 Thread Ulrich Weber
as we do for IPv4 PPP interfaces. When we create the
dynamic IPv6 inteface we should inherit ip6table from
main interface.

Signed-off-by: Ulrich Weber <ulrich.we...@riverbed.com>
---
 package/network/services/ppp/files/lib/netifd/ppp6-up | 1 +
 package/network/services/ppp/files/ppp.sh | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/network/services/ppp/files/lib/netifd/ppp6-up 
b/package/network/services/ppp/files/lib/netifd/ppp6-up
index 87ca63c..07b6a43 100644
--- a/package/network/services/ppp/files/lib/netifd/ppp6-up
+++ b/package/network/services/ppp/files/lib/netifd/ppp6-up
@@ -22,6 +22,7 @@ if [ -n "$AUTOIPV6" ]; then
json_add_string ifname "@$PPP_IPPARAM"
json_add_string proto "dhcpv6"
[ -n "$EXTENDPREFIX" ] && json_add_string extendprefix 1
+   [ -n "$IP6TABLE" ] && json_add_string ip6table $IP6TABLE
json_close_object
ubus call network add_dynamic "$(json_dump)"
 fi
diff --git a/package/network/services/ppp/files/ppp.sh 
b/package/network/services/ppp/files/ppp.sh
index 91452b4..9c27b3c 100755
--- a/package/network/services/ppp/files/ppp.sh
+++ b/package/network/services/ppp/files/ppp.sh
@@ -88,7 +88,7 @@ ppp_generic_setup() {
local config="$1"; shift
local localip
 
-   json_get_vars ipv6 demand keepalive keepalive_adaptive username 
password pppd_options pppname unnumbered persist maxfail holdoff
+   json_get_vars ipv6 ip6table demand keepalive keepalive_adaptive 
username password pppd_options pppname unnumbered persist maxfail holdoff
if [ "$ipv6" = 0 ]; then
ipv6=""
elif [ -z "$ipv6" -o "$ipv6" = auto ]; then
@@ -136,6 +136,7 @@ ppp_generic_setup() {
${lcp_failure:+lcp-echo-interval $lcp_interval lcp-echo-failure 
$lcp_failure $lcp_adaptive} \
${ipv6:++ipv6} \
${autoipv6:+set AUTOIPV6=1} \
+   ${ip6table:+set IP6TABLE=$ip6table} \
nodefaultroute \
usepeerdns \
$demand $persist maxfail $maxfail \
-- 
2.7.4


___
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev