This repository has been archived on 2024-05-11. You can view files and clone it, but cannot push or open issues or pull requests.
gluon-firmware/package/gluon-setup-mode/files/lib/gluon/setup-mode/rc.d/S20network

89 lines
1.6 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
SETUP_MODE_ADDR=192.168.1.1
SETUP_MODE_NETMASK=255.255.255.0
START=20
STOP=90
USE_PROCD=1
delete_interface() {
[ "$1" = 'loopback' ] || uci_remove network "$1"
}
prepare_config() {
(
export UCI_CONFIG_DIR=/var/gluon/setup-mode/config
mkdir -p "$UCI_CONFIG_DIR"
cp /etc/config/network "$UCI_CONFIG_DIR"
config_load network
config_foreach delete_interface interface
uci_add network interface setup
uci_set network setup ifname "$(lua -e 'print(require("gluon.sysconfig").setup_ifname)')"
uci_set network setup macaddr "$(lua -e 'print(require("gluon.sysconfig").primary_mac)')"
uci_set network setup type 'bridge'
uci_set network setup proto 'static'
uci_set network setup ipaddr "$SETUP_MODE_ADDR"
uci_set network setup netmask "$SETUP_MODE_NETMASK"
uci_commit network
)
}
init_switch() {
setup_switch() { return 0; }
include /lib/network
setup_switch
}
start_service() {
prepare_config
init_switch
iw reg set "$(lua -e 'print(require("gluon.site_config").regdom)')"
procd_open_instance
procd_set_param command /sbin/netifd -c /var/gluon/setup-mode/config
procd_set_param respawn
procd_set_param watch network.interface
[ -e /proc/sys/kernel/core_pattern ] && {
procd_set_param limits core="unlimited"
echo '/tmp/%e.%p.%s.%t.core' > /proc/sys/kernel/core_pattern
}
procd_close_instance
}
reload_service() {
init_switch
ubus call network reload
/sbin/wifi reload_legacy
}
stop_service() {
/sbin/wifi down
}
service_running() {
ubus -t 30 wait_for network.interface
/sbin/wifi reload_legacy
}
restart() {
ifdown -a
sleep 1
trap '' TERM
stop "$@"
start "$@"
}
shutdown() {
ifdown -a
stop
}