netifd: initialize the switch early at start time and on reload (fixes #13015)
[openwrt/staging/ldir.git] / package / network / config / netifd / files / etc / init.d / network
1 #!/bin/sh /etc/rc.common
2
3 START=20
4 STOP=90
5
6 USE_PROCD=1
7
8 init_switch() {
9 setup_switch() { return 0; }
10
11 include /lib/network
12 setup_switch
13 }
14
15 start_service() {
16 init_switch
17
18 procd_open_instance
19 procd_set_param command /sbin/netifd
20 procd_set_param respawn
21 [ -e /proc/sys/kernel/core_pattern ] && {
22 procd_set_param limits core="unlimited"
23 echo '/tmp/%e.%p.%s.%t.core' > /proc/sys/kernel/core_pattern
24 }
25 procd_close_instance
26 }
27
28 reload_service() {
29 init_switch
30 ubus call network reload
31 /sbin/wifi reload_legacy
32 }
33
34 stop_service() {
35 /sbin/wifi down
36 }
37
38 service_running() {
39 sleep 5
40 /sbin/wifi reload_legacy
41 }
42
43 service_triggers()
44 {
45 procd_open_trigger
46 procd_add_config_trigger "config.change" "network" /etc/init.d/network reload
47 procd_add_config_trigger "config.change" "wireless" /etc/init.d/network reload
48 procd_close_trigger
49 }
50
51 restart() {
52 ifdown -a
53 sleep 1
54 trap '' TERM
55 stop "$@"
56 start "$@"
57 }
58
59 shutdown() {
60 ifdown -a
61 stop
62 }