From b1a753e1c5c5cf98a43f3253a451bdf7d7f3ad58 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sat, 30 Jul 2016 00:00:39 +0200
Subject: [PATCH] gluon-core: allow setting PoE passthrough default setting
 from site.conf

---
 docs/user/site.rst                                  |  3 +++
 package/gluon-core/check_site.lua                   |  2 ++
 .../luasrc/lib/gluon/upgrade/150-poe-passthrough    | 13 +++++++++++++
 3 files changed, 18 insertions(+)
 create mode 100755 package/gluon-core/luasrc/lib/gluon/upgrade/150-poe-passthrough

diff --git a/docs/user/site.rst b/docs/user/site.rst
index a206c1d1f..7097a3e00 100644
--- a/docs/user/site.rst
+++ b/docs/user/site.rst
@@ -229,6 +229,9 @@ mesh_on_wan \: optional
 mesh_on_lan \: optional
     Enables the mesh on the LAN port (``true`` or ``false``).
 
+poe_passthrough \: optional
+    Enable PoE passthrough by default on hardware with such a feature.
+
 autoupdater \: package
     Configuration for the autoupdater feature of Gluon.
 
diff --git a/package/gluon-core/check_site.lua b/package/gluon-core/check_site.lua
index 1647d778e..1c81371e0 100644
--- a/package/gluon-core/check_site.lua
+++ b/package/gluon-core/check_site.lua
@@ -30,3 +30,5 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do
     need_number(config .. '.channel')
   end
 end
+
+need_boolean('poe_passthrough', false)
diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/150-poe-passthrough b/package/gluon-core/luasrc/lib/gluon/upgrade/150-poe-passthrough
new file mode 100755
index 000000000..81e6740bf
--- /dev/null
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/150-poe-passthrough
@@ -0,0 +1,13 @@
+#!/usr/bin/lua
+
+local sysconfig = require 'gluon.sysconfig'
+local site = require 'gluon.site_config'
+
+if (not sysconfig.gluon_version) and (site.poe_passthrough == true) then
+	local uci = require('luci.model.uci').cursor()
+
+  if uci:get('system', 'gpio_switch_poe_passthrough') then
+    uci:set('system', 'gpio_switch_poe_passthrough', 'value', 1)
+    uci:save('system')
+  end
+end
-- 
GitLab