X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fconfig%2Fnetifd%2Ffiles%2Fetc%2Finit.d%2Fnetwork;h=6cd167d19d221dead5e0dc28a518c21c8c120dbb;hp=28b1ba3dde1af1465a54479ccc101e00987b852a;hb=a1392e08c56e01f27e1312e59f4d90a50ed7d0bd;hpb=405e21d16731b2764ab82aaaadcf36a813b105f7 diff --git a/package/network/config/netifd/files/etc/init.d/network b/package/network/config/netifd/files/etc/init.d/network index 28b1ba3dde..6cd167d19d 100755 --- a/package/network/config/netifd/files/etc/init.d/network +++ b/package/network/config/netifd/files/etc/init.d/network @@ -3,45 +3,145 @@ START=20 STOP=90 -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 - -start() { - stop - [ -e /proc/sys/kernel/core_pattern ] && { - ulimit -c unlimited - echo '/tmp/%e.%p.%s.%t.core' > /proc/sys/kernel/core_pattern - } - service_start /sbin/netifd +USE_PROCD=1 +init_switch() { setup_switch() { return 0; } include /lib/network setup_switch +} - sleep 1 +start_service() { + init_switch - /sbin/wifi down - /sbin/wifi up + procd_open_instance + procd_set_param command /sbin/netifd + procd_set_param respawn + procd_set_param watch network.interface + [ -e /proc/sys/kernel/core_pattern ] && { + procd_set_param limits core="unlimited" + } + procd_close_instance } -restart() { +reload_service() { + local rv=0 + + init_switch + ubus call network reload || rv=1 + /sbin/wifi reload_legacy + return $rv +} + +stop_service() { + /sbin/wifi down ifdown -a sleep 1 - start } -shutdown() { - ifdown -a - stop +service_running() { + ubus -t 30 wait_for network.interface + /sbin/wifi reload_legacy } -stop() { - service_stop /sbin/netifd +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' } -reload() { - ubus call network reload - /sbin/wifi down - /sbin/wifi up +validate_route_section() +{ + uci_validate_section network route "${1}" \ + 'interface:string' \ + 'target:cidr4' \ + 'netmask:netmask4' \ + 'gateway:ip4addr' \ + 'metric:uinteger' \ + 'mtu:uinteger' \ + 'table:or(range(0,65535),string)' +} + +validate_route6_section() +{ + uci_validate_section network route6 "${1}" \ + 'interface:string' \ + 'target:cidr6' \ + 'gateway:ip6addr' \ + 'metric:uinteger' \ + 'mtu:uinteger' \ + 'table:or(range(0,65535),string)' +} + +validate_rule_section() +{ + uci_validate_section network rule "${1}" \ + 'in:string' \ + 'out:string' \ + 'src:cidr4' \ + 'dest:cidr4' \ + 'tos:range(0,31)' \ + 'mark:string' \ + 'invert:bool' \ + 'lookup:or(range(0,65535),string)' \ + 'goto:range(0,65535)' \ + 'action:or("prohibit", "unreachable", "blackhole", "throw")' +} + +validate_rule6_section() +{ + uci_validate_section network rule6 "${1}" \ + 'in:string' \ + 'out:string' \ + 'src:cidr6' \ + 'dest:cidr6' \ + 'tos:range(0,31)' \ + 'mark:string' \ + 'invert:bool' \ + 'lookup:or(range(0,65535),string)' \ + 'goto:range(0,65535)' \ + 'action:or("prohibit", "unreachable", "blackhole", "throw")' +} + +validate_switch_section() +{ + uci_validate_section network switch "${1}" \ + 'name:string' \ + 'enable:bool' \ + 'enable_vlan:bool' \ + 'reset:bool' +} + +validate_switch_vlan() +{ + uci_validate_section network switch_vlan "${1}" \ + 'device:string' \ + 'vlan:uinteger' \ + 'ports:list(ports)' +} + +service_triggers() +{ + procd_add_reload_trigger network wireless + + 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 +} + +shutdown() { + ifdown -a + sleep 1 }