[v5] simple-tc: Fix simple-tc not being active if set (alternative)

Submitted by Adrian Schmutzler on Aug. 2, 2017, 2:28 p.m.

Details

Message ID 1501684137-6897-2-git-send-email-freifunk@adrianschmutzler.de
State Superseded
Headers show

Commit Message

Adrian Schmutzler Aug. 2, 2017, 2:28 p.m.
Fixes: #55

Alternative 2: Selection based on logical device (wan, mesh,
ethmesh or loopback). Physical devices are still possible,
as the original simple-tc hotplug script is still present.

Final patch not tested on device so far.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 src/packages/fff/fff-network/Makefile              |  2 +-
 .../files/etc/hotplug.d/iface/50-fff-simple-tc     | 25 ++++++++++++++++++++++
 .../fff-web/files/www/ssl/cgi-bin/settings.html    |  5 ++++-
 3 files changed, 30 insertions(+), 2 deletions(-)
 create mode 100644 src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simple-tc

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-network/Makefile b/src/packages/fff/fff-network/Makefile
index fee3f98..f7dc63c 100644
--- a/src/packages/fff/fff-network/Makefile
+++ b/src/packages/fff/fff-network/Makefile
@@ -1,7 +1,7 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-network
-PKG_VERSION:=0.0.6
+PKG_VERSION:=7
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/fff-network
diff --git a/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simple-tc b/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simple-tc
new file mode 100644
index 0000000..ef8bd17
--- /dev/null
+++ b/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simple-tc
@@ -0,0 +1,25 @@ 
+[ "$ACTION" = 'ifup' ] || exit 0
+
+config_load simple-tc
+
+tc_interface() {
+	local iface="$1"
+
+	config_get ifname "$iface" ifname
+
+	[ "$INTERFACE" = "$ifname" ] || return
+
+	config_get_bool enabled "$iface" enabled 0
+
+	[ "$enabled" -eq 1 ] || return
+
+	config_get limit_ingress "$iface" limit_ingress
+	config_get limit_egress "$iface" limit_egress
+
+	[ "$limit_ingress" ] || limit_ingress=-
+	[ "$limit_egress" ] || limit_egress=-
+
+	simple-tc "$DEVICE" "$limit_ingress" "$limit_egress"
+}
+
+config_foreach tc_interface 'interface'
diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
index 18d37d3..2aa9fa2 100755
--- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
+++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
@@ -23,7 +23,7 @@  if [ "$REQUEST_METHOD" == "POST" ] ; then
 
 		# Bitratenbegrenzung
 		if [ "$POST_traffic_limit" == "on" ] ; then
-			uci -q set "simple-tc.example.ifname=$(uci -q get network.wan.ifname)"
+			uci -q set "simple-tc.example.ifname=wan"
 			uci -q set "simple-tc.example.enabled=1"
 		else
 			uci -q set "simple-tc.example.enabled=0"
@@ -32,6 +32,9 @@  if [ "$REQUEST_METHOD" == "POST" ] ; then
 		uci -q set "simple-tc.example.limit_egress=${POST_limit_egress}"
 
 		uci commit
+		
+		/etc/init.d/network restart # Bitratenbegrenzung ohne Neustart
+		
 		MSG='<span class="green">Daten gespeichert! - Bitte Router neustarten.</span>'
 	fi
 fi

Comments

Adrian Schmutzler Aug. 3, 2017, 9:12 a.m.
Hallo,

ausführliche Diskussion siehe Patch Alternative 1.

Ich würde jedoch inzwischen diesen Patch (Alternative 2) vorziehen, da hier
als ifname direkt "wan" gesetzt wird. Damit ist die Wahrscheinlichkeit einer
Doppelausführung in hotplug.d/net UND hotplug.d/iface geringer.

Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Adrian Schmutzler
> Sent: Mittwoch, 2. August 2017 16:29
> To: franken-dev@freifunk.net
> Subject: [PATCH v5] simple-tc: Fix simple-tc not being active if set
> (alternative)
> 
> Fixes: #55
> 
> Alternative 2: Selection based on logical device (wan, mesh, ethmesh or
> loopback). Physical devices are still possible, as the original simple-tc
hotplug
> script is still present.
> 
> Final patch not tested on device so far.
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  src/packages/fff/fff-network/Makefile              |  2 +-
>  .../files/etc/hotplug.d/iface/50-fff-simple-tc     | 25
> ++++++++++++++++++++++
>  .../fff-web/files/www/ssl/cgi-bin/settings.html    |  5 ++++-
>  3 files changed, 30 insertions(+), 2 deletions(-)  create mode 100644
> src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simple-tc
> 
> diff --git a/src/packages/fff/fff-network/Makefile b/src/packages/fff/fff-
> network/Makefile
> index fee3f98..f7dc63c 100644
> --- a/src/packages/fff/fff-network/Makefile
> +++ b/src/packages/fff/fff-network/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
> 
>  PKG_NAME:=fff-network
> -PKG_VERSION:=0.0.6
> +PKG_VERSION:=7
>  PKG_RELEASE:=1
> 
>  PKG_BUILD_DIR:=$(BUILD_DIR)/fff-network
> diff --git
a/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-
> simple-tc b/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-
> simple-tc
> new file mode 100644
> index 0000000..ef8bd17
> --- /dev/null
> +++ b/src/packages/fff/fff-network/files/etc/hotplug.d/iface/50-fff-simp
> +++ le-tc
> @@ -0,0 +1,25 @@
> +[ "$ACTION" = 'ifup' ] || exit 0
> +
> +config_load simple-tc
> +
> +tc_interface() {
> +	local iface="$1"
> +
> +	config_get ifname "$iface" ifname
> +
> +	[ "$INTERFACE" = "$ifname" ] || return
> +
> +	config_get_bool enabled "$iface" enabled 0
> +
> +	[ "$enabled" -eq 1 ] || return
> +
> +	config_get limit_ingress "$iface" limit_ingress
> +	config_get limit_egress "$iface" limit_egress
> +
> +	[ "$limit_ingress" ] || limit_ingress=-
> +	[ "$limit_egress" ] || limit_egress=-
> +
> +	simple-tc "$DEVICE" "$limit_ingress" "$limit_egress"
> +}
> +
> +config_foreach tc_interface 'interface'
> diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
> b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
> index 18d37d3..2aa9fa2 100755
> --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
> +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/settings.html
> @@ -23,7 +23,7 @@ if [ "$REQUEST_METHOD" == "POST" ] ; then
> 
>  		# Bitratenbegrenzung
>  		if [ "$POST_traffic_limit" == "on" ] ; then
> -			uci -q set "simple-tc.example.ifname=$(uci -q get
> network.wan.ifname)"
> +			uci -q set "simple-tc.example.ifname=wan"
>  			uci -q set "simple-tc.example.enabled=1"
>  		else
>  			uci -q set "simple-tc.example.enabled=0"
> @@ -32,6 +32,9 @@ if [ "$REQUEST_METHOD" == "POST" ] ; then
>  		uci -q set "simple-
> tc.example.limit_egress=${POST_limit_egress}"
> 
>  		uci commit
> +
> +		/etc/init.d/network restart # Bitratenbegrenzung ohne
> Neustart
> +
>  		MSG='<span class="green">Daten gespeichert! - Bitte Router
> neustarten.</span>'
>  	fi
>  fi
> --
> 2.7.4
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net