netifd: initialize the switch early at start time and on reload (fixes #13015)
[openwrt.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 }