netifd: improve /sbin/ifup wifi hack, make it work properly with -a. fold /etc/init.d/netifd into /etc/init.d/network
SVN-Revision: 31850
This commit is contained in:
parent
267b414b4c
commit
b86652832e
3 changed files with 82 additions and 64 deletions
|
@ -1,31 +0,0 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=20
|
||||
|
||||
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
|
||||
sleep 1
|
||||
}
|
||||
|
||||
restart() {
|
||||
ifdown -a
|
||||
sleep 1
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
stop() {
|
||||
service_stop /sbin/netifd
|
||||
}
|
||||
|
||||
reload() {
|
||||
ubus call network reload
|
||||
}
|
|
@ -1,23 +1,43 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
START=40
|
||||
|
||||
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
|
||||
|
||||
setup_switch() { return 0; }
|
||||
|
||||
include /lib/network
|
||||
setup_switch
|
||||
|
||||
ifup -a
|
||||
grep -qs config /etc/config/wireless && {
|
||||
/sbin/wifi up
|
||||
}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
restart() {
|
||||
ifdown -a
|
||||
sleep 1
|
||||
start
|
||||
wifi
|
||||
}
|
||||
|
||||
shutdown() {
|
||||
ifdown -a
|
||||
stop
|
||||
}
|
||||
|
||||
stop() {
|
||||
/sbin/ifdown -a
|
||||
service_stop /sbin/netifd
|
||||
}
|
||||
|
||||
reload() {
|
||||
ubus call network reload
|
||||
}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
case "$0" in
|
||||
*ifdown) modes=down;;
|
||||
*ifup) modes="down up";;
|
||||
*) echo "Invalid command: $0";;
|
||||
esac
|
||||
ifup_all=
|
||||
setup_wifi=
|
||||
|
||||
if_call() {
|
||||
local interface="$1"
|
||||
|
@ -13,34 +10,66 @@ if_call() {
|
|||
done
|
||||
}
|
||||
|
||||
case "$0" in
|
||||
*ifdown) modes=down;;
|
||||
*ifup)
|
||||
modes="down up"
|
||||
setup_wifi=1
|
||||
;;
|
||||
*) echo "Invalid command: $0";;
|
||||
esac
|
||||
|
||||
while :; do
|
||||
case "$1" in
|
||||
-a)
|
||||
ifup_all=1
|
||||
shift
|
||||
;;
|
||||
-w)
|
||||
setup_wifi=
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ "$modes" = "down up" ] && ubus call network reload
|
||||
[[ "$1" == "-a" ]] && {
|
||||
if [ -n "$ifup_all" ]; then
|
||||
for interface in `ubus -S list 'network.interface.*'`; do
|
||||
if_call "$interface"
|
||||
done
|
||||
[ -n "$setup_wifi" ] && /sbin/wifi up
|
||||
exit
|
||||
}
|
||||
else
|
||||
ubus -S list "network.interface.$1" > /dev/null || {
|
||||
echo "Interface $1 not found"
|
||||
exit
|
||||
}
|
||||
if_call "network.interface.$1"
|
||||
fi
|
||||
|
||||
ubus -S list "network.interface.$1" > /dev/null || {
|
||||
echo "Interface $1 not found"
|
||||
exit
|
||||
}
|
||||
if_call "network.interface.$1"
|
||||
if [ -n "$setup_wifi" ] && grep -q config /etc/config/wireless; then
|
||||
. /etc/functions.sh
|
||||
|
||||
grep -sq ^config /etc/config/wireless && {
|
||||
local wdev
|
||||
for wdev in $(
|
||||
find_radio() {
|
||||
local wdev wnet
|
||||
config_get wdev "$1" device
|
||||
config_get wnet "$1" network
|
||||
[ -n "$wdev" ] && [ "$wnet" = "$2" ] && echo "$wdev"
|
||||
}
|
||||
find_related_radios() {
|
||||
local wdev wnet
|
||||
config_get wdev "$1" device
|
||||
config_get wnet "$1" network
|
||||
|
||||
source /lib/functions.sh
|
||||
config_load wireless
|
||||
config_foreach find_radio wifi-iface "$1" | sort -u
|
||||
); do
|
||||
/sbin/wifi up "$wdev"
|
||||
if [ -n "$wdev" ] && [ "$wnet" = "$network" ]; then
|
||||
append radio_devs "$wdev" "$N"
|
||||
fi
|
||||
}
|
||||
|
||||
local radio_devs
|
||||
local network="$1"
|
||||
config_load wireless
|
||||
config_foreach find_related_radios wifi-iface
|
||||
|
||||
local dev
|
||||
for dev in $(echo "$radio_devs" | sort -u); do
|
||||
/sbin/wifi up "$dev"
|
||||
done
|
||||
}
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue