From 38176e6d58ae196d3c6181e07295303ca8c3ea92 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Mon, 1 Oct 2018 20:46:24 +0200 Subject: [PATCH] Fix SQM and QOS when an interface is added via wizard --- .../luasrc/controller/openmptcprouter.lua | 59 ++++++++++++++++--- .../root/etc/init.d/openmptcprouter | 1 + .../files/etc/uci-defaults/2040-omr-sqm | 12 ++-- 3 files changed, 61 insertions(+), 11 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 5ab7056dd..443bbdc53 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -81,6 +81,29 @@ function wizard_add() ucic:set("network","wan" .. i,"defaultroute","0") ucic:save("network") ucic:commit("network") + + ucic:set("qos","wan" .. i,"interface") + ucic:set("qos","wan" .. i,"classgroup","Default") + ucic:set("qos","wan" .. i,"enabled","0") + ucic:set("qos","wan" .. i,"upload","4000") + ucic:set("qos","wan" .. i,"download","100000") + ucic:save("qos") + ucic:commit("qos") + + ucic:set("sqm","wan" .. i,"queue") + ucic:set("sqm","wan" .. i,"interface",defif) + ucic:set("sqm","wan" .. i,"qdisc","fq_codel") + ucic:set("sqm","wan" .. i,"script","simple.qos") + ucic:set("sqm","wan" .. i,"qdisc_advanced","0") + ucic:set("sqm","wan" .. i,"linklayer","none") + ucic:set("sqm","wan" .. i,"enabled","0") + ucic:set("sqm","wan" .. i,"debug_logging","0") + ucic:set("sqm","wan" .. i,"verbosity","5") + ucic:set("sqm","wan" .. i,"download","0") + ucic:set("sqm","wan" .. i,"upload","0") + ucic:save("sqm") + ucic:commit("sqm") + -- Dirty way to add new interface to firewall... luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i) luci.sys.call("uci -q commit firewall") @@ -96,6 +119,12 @@ function wizard_add() ucic:delete("network",intf .. "_dev") ucic:save("network") ucic:commit("network") + ucic:delete("sqm",intf) + ucic:save("sqm") + ucic:commit("sqm") + ucic:delete("qos",intf) + ucic:save("qos") + ucic:commit("qos") end gostatus = false end @@ -896,29 +925,45 @@ function mptcp_check_trace(iface) end function set_ipv6_state(disable_ipv6) + -- Disable/Enable IPv6 support luci.sys.exec("sysctl -w net.ipv6.conf.all.disable_ipv6=%s" % disable_ipv6) luci.sys.exec("sed -i 's:^net.ipv6.conf.all.disable_ipv6=[0-9]*:net.ipv6.conf.all.disable_ipv6=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % disable_ipv6) - luci.sys.exec("/etc/init.d/odhcpd stop >/dev/null 2>&1") - luci.sys.exec("/etc/init.d/odhcpd disable >/dev/null 2>&1") + + -- Disable/Enable IPv6 for firewall ucic:set("firewall",ucic:get_first("firewall","defaults"),"disable_ipv6",disable_ipv6) ucic:save("firewall") ucic:commit("firewall") + + -- Disable/Enable IPv6 in OpenMPTCProuter settings + ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) + ucic:commit("openmptcprouter") + + -- Disable/Enable route announce of IPv6 if disable_ipv6 == "1" then ucic:set("dhcp","lan","ra_default","0") - else - ucic:set("dhcp","lan","ra_default","1") + --else + -- ucic:set("dhcp","lan","ra_default","1") end + + -- Disable/Enable IPv6 DHCP and change Shadowsocks listen address if disable_ipv6 == "1" then luci.sys.call("uci -q del dhcp.lan.dhcpv6") luci.sys.call("uci -q del dhcp.lan.ra") luci.sys.call("uci -q del dhcp.lan.ra_default") ucic:set("shadowsocks-libev","hi","local_address","0.0.0.0") else - ucic:set("dhcp","lan","dhcpv6","server") - ucic:set("dhcp","lan","ra","server") - ucic:set("dhcp","lan","ra_default","0") + -- ucic:set("dhcp","lan","dhcpv6","server") + -- ucic:set("dhcp","lan","ra","server") + -- ucic:set("dhcp","lan","ra_default","0") ucic:set("shadowsocks-libev","hi","local_address","::") end ucic:save("dhcp") ucic:commit("dhcp") + if disable_ipv6 == "1" then + luci.sys.exec("/etc/init.d/odhcpd stop >/dev/null 2>&1") + luci.sys.exec("/etc/init.d/odhcpd disable >/dev/null 2>&1") + --else + -- luci.sys.exec("/etc/init.d/odhcpd start >/dev/null 2>&1") + -- luci.sys.exec("/etc/init.d/odhcpd enable >/dev/null 2>&1") + end end \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 27c920d6f..67272330f 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -15,6 +15,7 @@ omr_intf_set() { uci -q set openmptcprouter.settings.scaling_max_freq=800000 } [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return + uci -q set openmptcprouter.$1=interface } diff --git a/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm b/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm index ce70640d5..bf9b8252f 100755 --- a/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm +++ b/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm @@ -1,6 +1,8 @@ #!/bin/sh if [ "$(uci -q get sqm.wan1)" = "" ]; then + wan1="$(uci -q get network.wan1.ifname)" + wan2="$(uci -q get network.wan2.ifname)" uci -q batch <<-EOF >/dev/null delete sqm.eth1 set sqm.wan1=queue @@ -9,7 +11,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then set sqm.wan1.qdisc_advanced='0' set sqm.wan1.linklayer='none' set sqm.wan1.enabled='0' - set sqm.wan1.interface='wan1' + set sqm.wan1.interface=$wan1 set sqm.wan1.download='' set sqm.wan1.upload='' set sqm.wan1.debug_logging='0' @@ -20,7 +22,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then set sqm.wan2.qdisc_advanced='0' set sqm.wan2.linklayer='none' set sqm.wan2.enabled='0' - set sqm.wan2.interface='wan2' + set sqm.wan2.interface=$wan2 set sqm.wan2.download='' set sqm.wan2.upload='' set sqm.wan2.debug_logging='0' @@ -28,6 +30,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then commit sqm EOF if [ "$(uci -q get network.wan3)" != "" ]; then + wan3="$(uci -q get network.wan3.ifname)" uci -q batch <<-EOF >/dev/null set sqm.wan3=queue set sqm.wan3.qdisc="fq_codel" @@ -35,7 +38,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then set sqm.wan3.qdisc_advanced='0' set sqm.wan3.linklayer='none' set sqm.wan3.enabled='0' - set sqm.wan3.interface='wan3' + set sqm.wan3.interface=$wan3 set sqm.wan3.download='' set sqm.wan3.upload='' set sqm.wan3.debug_logging='0' @@ -44,6 +47,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then EOF fi if [ "$(uci -q get network.wan4)" != "" ]; then + wan4="$(uci -q get network.wan4.ifname)" uci -q batch <<-EOF >/dev/null set sqm.wan4=queue set sqm.wan4.qdisc="fq_codel" @@ -51,7 +55,7 @@ if [ "$(uci -q get sqm.wan1)" = "" ]; then set sqm.wan4.qdisc_advanced='0' set sqm.wan4.linklayer='none' set sqm.wan4.enabled='0' - set sqm.wan4.interface='wan4' + set sqm.wan4.interface=$wan4 set sqm.wan4.download='' set sqm.wan4.upload='' set sqm.wan4.debug_logging='0'