aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/config/netifd/files/etc
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2014-02-18 13:34:04 +0000
committerJohn Crispin <john@openwrt.org>2014-02-18 13:34:04 +0000
commit8fb44e0d1ec60393b76cf31427b0d2db1893e5d8 (patch)
tree6d55ba6aea47984498e1bdd9dc8c7b65ceb57765 /package/network/config/netifd/files/etc
parent26e850dafab44cc42e72123951bfa4064eec1919 (diff)
downloadupstream-8fb44e0d1ec60393b76cf31427b0d2db1893e5d8.tar.gz
upstream-8fb44e0d1ec60393b76cf31427b0d2db1893e5d8.tar.bz2
upstream-8fb44e0d1ec60393b76cf31427b0d2db1893e5d8.zip
netifd: add validation support
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 39621
Diffstat (limited to 'package/network/config/netifd/files/etc')
-rwxr-xr-xpackage/network/config/netifd/files/etc/init.d/network105
1 files changed, 105 insertions, 0 deletions
diff --git a/package/network/config/netifd/files/etc/init.d/network b/package/network/config/netifd/files/etc/init.d/network
index e117463ad1..848336f4fa 100755
--- a/package/network/config/netifd/files/etc/init.d/network
+++ b/package/network/config/netifd/files/etc/init.d/network
@@ -40,12 +40,117 @@ service_running() {
/sbin/wifi reload_legacy
}
+validate_atm_bridge_section()
+{
+ uci_validate_section network "atm-bridge" "${1}" \
+ 'unit:uinteger:0' \
+ 'vci:range(32, 65535):35' \
+ 'vpi:range(0, 255):8' \
+ 'atmdev:uinteger:0' \
+ 'encaps:or("llc", "vc"):llc' \
+ 'payload:or("bridged", "routed"):bridged'
+
+ return $?
+}
+
+validate_route_section()
+{
+ uci_validate_section network route "${1}" \
+ 'interface:string' \
+ 'target:ip4addr' \
+ 'netmask:ip4prefix' \
+ 'gateway:ip4addr' \
+ 'metric:uinteger' \
+ 'mtu:uinteger' \
+ 'table:range(0,65535)'
+
+ return $?
+}
+
+validate_route6_section()
+{
+ uci_validate_section network route6 "${1}" \
+ 'interface:string' \
+ 'target:ip6addr' \
+ 'gateway:ip6addr' \
+ 'metric:uinteger' \
+ 'mtu:uinteger' \
+ 'table:range(0,65535)'
+
+ return $?
+}
+
+validate_rule_section()
+{
+ uci_validate_section network rule "${1}" \
+ 'in:string' \
+ 'out:string' \
+ 'src:ip4prefix' \
+ 'dest:ip4prefix' \
+ 'tos:rage(0.31)' \
+ 'string:mark' \
+ 'invert:bool' \
+ 'lookup:range(0,65535)' \
+ 'goto:range(0,65535)' \
+ 'action:or("prohibit", "unreachable", "blackhole", "throw")'
+
+ return $?
+}
+
+validate_rule6_section()
+{
+ uci_validate_section network rule6 "${1}" \
+ 'in:string' \
+ 'out:string' \
+ 'src:ip4prefix' \
+ 'dest:ip4prefix' \
+ 'tos:rage(0.31)' \
+ 'string:mark' \
+ 'invert:bool' \
+ 'lookup:range(0,65535)' \
+ 'goto:range(0,65535)' \
+ 'action:or("prohibit", "unreachable", "blackhole", "throw")'
+
+ return $?
+}
+
+validate_switch_section()
+{
+ uci_validate_section network switch "${1}" \
+ 'name:string' \
+ 'enable:bool' \
+ 'enable_vlan:bool' \
+ 'reset:bool'
+
+ return $?
+}
+
+validate_switch_vlan()
+{
+ uci_validate_section network switch_vlan "${1}" \
+ 'device:string' \
+ 'vlan:uinteger' \
+ 'ports:list(ports)'
+
+ return $?
+}
+
service_triggers()
{
procd_open_trigger
procd_add_config_trigger "config.change" "network" /etc/init.d/network reload
procd_add_config_trigger "config.change" "wireless" /etc/init.d/network reload
procd_close_trigger
+
+ procd_open_validate
+ validate_atm_bridge_section
+ validate_route_section
+ validate_route6_section
+ validate_rule_section
+ validate_rule6_section
+ validate_switch_section
+ validate_switch_vlan
+ procd_close_validate
}
restart() {