[v12,2/5] fff-support: Update PoE passthrough code

Submitted by Adrian Schmutzler on Nov. 3, 2017, 2 p.m.

Details

Message ID 1509717604-3898-2-git-send-email-freifunk@adrianschmutzler.de
State Accepted
Headers show

Commit Message

Adrian Schmutzler Nov. 3, 2017, 2 p.m.
This implements an upgrade safe solution for the PoE passthrough
on multiple devices. Since LEDE already provides the relevant
settings, a check whether those are in place enables both
identification of affected devices and automatic deactivation
if parameters are changed.

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

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

---

Changes in v12:
- Fixed poe variable name in uci-default script
- Added "/etc/init.d/gpio_switch restart" to scripts
---
 .../fff/fff-config/files/etc/uci-defaults/98-configure-fff   |  5 +++++
 src/packages/fff/fff-support/Makefile                        |  2 +-
 .../ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh   |  9 +++++++++
 .../usr/lib/fff-support/cpe210_activate_poe_passthrough.sh   |  5 -----
 .../ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh    | 12 ++++++++++++
 .../ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh  |  9 +++++++++
 6 files changed, 36 insertions(+), 6 deletions(-)
 create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
 delete mode 100644 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
 create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
 create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
index 677da15..aa6ac42 100644
--- a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
+++ b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
@@ -23,3 +23,8 @@  uci -q set "simple-tc.example.limit_ingress=${traffic_in}"
 uci -q set "simple-tc.example.limit_egress=${traffic_out}"
 
 uci -q commit
+
+poe_passthrough=$(uci -q get "fff.poe_passthrough.active")
+if [ "$poe_passthrough" = "1" ] && [ -s /usr/lib/fff-support/activate_poe_passthrough.sh ] ; then
+	/usr/lib/fff-support/activate_poe_passthrough.sh
+fi
diff --git a/src/packages/fff/fff-support/Makefile b/src/packages/fff/fff-support/Makefile
index c255a8f..9fd2d2b 100644
--- a/src/packages/fff/fff-support/Makefile
+++ b/src/packages/fff/fff-support/Makefile
@@ -13,7 +13,7 @@  define Package/$(PKG_NAME)
     CATEGORY:=Freifunk
     TITLE:=Freifunk-Franken Support Scripts
     URL:=http://www.freifunk-franken.de
-    DEPENDS:=+@BUSYBOX_CONFIG_ASH
+    DEPENDS:=+@BUSYBOX_CONFIG_ASH +fff-config
 endef
 
 define Package/$(PKG_NAME)/description
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
new file mode 100755
index 0000000..a083d7b
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
@@ -0,0 +1,9 @@ 
+#!/bin/sh
+# This enables PoE passthrough so it is persistent through reboots,
+# but reset after firmware upgrade
+
+if uci -q get "system.poe_passthrough" > /dev/null ; then
+	uci -q set "system.poe_passthrough.value=1"
+	uci -q commit system
+	/etc/init.d/gpio_switch restart
+fi
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
deleted file mode 100644
index cb3508f..0000000
--- a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
+++ /dev/null
@@ -1,5 +0,0 @@ 
-if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
-  echo 20 > /sys/class/gpio/export
-  echo out > /sys/class/gpio/gpio20/direction
-  echo 1 > /sys/class/gpio/gpio20/value
-fi
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
new file mode 100755
index 0000000..b15271f
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
@@ -0,0 +1,12 @@ 
+#!/bin/sh
+# This disables PoE passthrough permanently
+
+uci -q set "fff.poe_passthrough=fff"
+uci -q set "fff.poe_passthrough.active=0"
+uci -q commit fff
+
+if uci -q get "system.poe_passthrough" > /dev/null ; then
+	uci -q set "system.poe_passthrough.value=0"
+	uci -q commit system
+	/etc/init.d/gpio_switch restart
+fi
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh
new file mode 100755
index 0000000..955a992
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh
@@ -0,0 +1,9 @@ 
+#!/bin/sh
+# This enables PoE passthrough permanently, so it is persistent
+# during firmware upgrades
+
+uci -q set "fff.poe_passthrough=fff"
+uci -q set "fff.poe_passthrough.active=1"
+uci -q commit fff
+
+/usr/lib/fff-support/activate_poe_passthrough.sh

Comments

Tim Niemeyer Nov. 12, 2017, 7:04 p.m.
Hi

Reviewed-by: Tim Niemeyer <tim@tn-x.org>

Tim

Am Freitag, den 03.11.2017, 15:00 +0100 schrieb Adrian Schmutzler:
> This implements an upgrade safe solution for the PoE passthrough
> on multiple devices. Since LEDE already provides the relevant
> settings, a check whether those are in place enables both
> identification of affected devices and automatic deactivation
> if parameters are changed.
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> ---
> 
> Changes in v12:
> - Fixed poe variable name in uci-default script
> - Added "/etc/init.d/gpio_switch restart" to scripts
> ---
>  .../fff/fff-config/files/etc/uci-defaults/98-configure-fff   |  5 +++++
>  src/packages/fff/fff-support/Makefile                        |  2 +-
>  .../ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh   |  9 +++++++++
>  .../usr/lib/fff-support/cpe210_activate_poe_passthrough.sh   |  5 -----
>  .../ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh    | 12 ++++++++++++
>  .../ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh  |  9 +++++++++
>  6 files changed, 36 insertions(+), 6 deletions(-)
>  create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
>  delete mode 100644 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
>  create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
>  create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh
> 
> diff --git a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> index 677da15..aa6ac42 100644
> --- a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> +++ b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> @@ -23,3 +23,8 @@ uci -q set "simple-tc.example.limit_ingress=${traffic_in}"
>  uci -q set "simple-tc.example.limit_egress=${traffic_out}"
>  
>  uci -q commit
> +
> +poe_passthrough=$(uci -q get "fff.poe_passthrough.active")
> +if [ "$poe_passthrough" = "1" ] && [ -s /usr/lib/fff-support/activate_poe_passthrough.sh ] ; then
> +	/usr/lib/fff-support/activate_poe_passthrough.sh
> +fi
> diff --git a/src/packages/fff/fff-support/Makefile b/src/packages/fff/fff-support/Makefile
> index c255a8f..9fd2d2b 100644
> --- a/src/packages/fff/fff-support/Makefile
> +++ b/src/packages/fff/fff-support/Makefile
> @@ -13,7 +13,7 @@ define Package/$(PKG_NAME)
>      CATEGORY:=Freifunk
>      TITLE:=Freifunk-Franken Support Scripts
>      URL:=http://www.freifunk-franken.de
> -    DEPENDS:=+@BUSYBOX_CONFIG_ASH
> +    DEPENDS:=+@BUSYBOX_CONFIG_ASH +fff-config
>  endef
>  
>  define Package/$(PKG_NAME)/description
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
> new file mode 100755
> index 0000000..a083d7b
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/activate_poe_passthrough.sh
> @@ -0,0 +1,9 @@
> +#!/bin/sh
> +# This enables PoE passthrough so it is persistent through reboots,
> +# but reset after firmware upgrade
> +
> +if uci -q get "system.poe_passthrough" > /dev/null ; then
> +	uci -q set "system.poe_passthrough.value=1"
> +	uci -q commit system
> +	/etc/init.d/gpio_switch restart
> +fi
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> deleted file mode 100644
> index cb3508f..0000000
> --- a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
> -  echo 20 > /sys/class/gpio/export
> -  echo out > /sys/class/gpio/gpio20/direction
> -  echo 1 > /sys/class/gpio/gpio20/value
> -fi
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
> new file mode 100755
> index 0000000..b15271f
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/disable_poe_passthrough.sh
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +# This disables PoE passthrough permanently
> +
> +uci -q set "fff.poe_passthrough=fff"
> +uci -q set "fff.poe_passthrough.active=0"
> +uci -q commit fff
> +
> +if uci -q get "system.poe_passthrough" > /dev/null ; then
> +	uci -q set "system.poe_passthrough.value=0"
> +	uci -q commit system
> +	/etc/init.d/gpio_switch restart
> +fi
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh
> new file mode 100755
> index 0000000..955a992
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/permanent_poe_passthrough.sh
> @@ -0,0 +1,9 @@
> +#!/bin/sh
> +# This enables PoE passthrough permanently, so it is persistent
> +# during firmware upgrades
> +
> +uci -q set "fff.poe_passthrough=fff"
> +uci -q set "fff.poe_passthrough.active=1"
> +uci -q commit fff
> +
> +/usr/lib/fff-support/activate_poe_passthrough.sh
> -- 
> 2.7.4
>