mirror of https://github.com/hak5/openwrt.git
netifd: improve /sbin/ifup wifi hack, make it work properly with -a. fold /etc/init.d/netifd into /etc/init.d/network
SVN-Revision: 31850lede-17.01
parent
267b414b4c
commit
b86652832e
|
@ -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
|
#!/bin/sh /etc/rc.common
|
||||||
START=40
|
|
||||||
|
START=20
|
||||||
STOP=90
|
STOP=90
|
||||||
|
|
||||||
|
SERVICE_DAEMONIZE=1
|
||||||
|
SERVICE_WRITE_PID=1
|
||||||
|
|
||||||
start() {
|
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; }
|
setup_switch() { return 0; }
|
||||||
|
|
||||||
include /lib/network
|
include /lib/network
|
||||||
setup_switch
|
setup_switch
|
||||||
|
|
||||||
ifup -a
|
sleep 1
|
||||||
grep -qs config /etc/config/wireless && {
|
|
||||||
/sbin/wifi up
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
restart() {
|
restart() {
|
||||||
|
ifdown -a
|
||||||
|
sleep 1
|
||||||
start
|
start
|
||||||
|
wifi
|
||||||
|
}
|
||||||
|
|
||||||
|
shutdown() {
|
||||||
|
ifdown -a
|
||||||
|
stop
|
||||||
}
|
}
|
||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
/sbin/ifdown -a
|
service_stop /sbin/netifd
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
ubus call network reload
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
case "$0" in
|
ifup_all=
|
||||||
*ifdown) modes=down;;
|
setup_wifi=
|
||||||
*ifup) modes="down up";;
|
|
||||||
*) echo "Invalid command: $0";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if_call() {
|
if_call() {
|
||||||
local interface="$1"
|
local interface="$1"
|
||||||
|
@ -13,34 +10,66 @@ if_call() {
|
||||||
done
|
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
|
[ "$modes" = "down up" ] && ubus call network reload
|
||||||
[[ "$1" == "-a" ]] && {
|
if [ -n "$ifup_all" ]; then
|
||||||
for interface in `ubus -S list 'network.interface.*'`; do
|
for interface in `ubus -S list 'network.interface.*'`; do
|
||||||
if_call "$interface"
|
if_call "$interface"
|
||||||
done
|
done
|
||||||
|
[ -n "$setup_wifi" ] && /sbin/wifi up
|
||||||
exit
|
exit
|
||||||
}
|
else
|
||||||
|
ubus -S list "network.interface.$1" > /dev/null || {
|
||||||
ubus -S list "network.interface.$1" > /dev/null || {
|
|
||||||
echo "Interface $1 not found"
|
echo "Interface $1 not found"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
if_call "network.interface.$1"
|
if_call "network.interface.$1"
|
||||||
|
fi
|
||||||
|
|
||||||
grep -sq ^config /etc/config/wireless && {
|
if [ -n "$setup_wifi" ] && grep -q config /etc/config/wireless; then
|
||||||
local wdev
|
. /etc/functions.sh
|
||||||
for wdev in $(
|
|
||||||
find_radio() {
|
find_related_radios() {
|
||||||
local wdev wnet
|
local wdev wnet
|
||||||
config_get wdev "$1" device
|
config_get wdev "$1" device
|
||||||
config_get wnet "$1" network
|
config_get wnet "$1" network
|
||||||
[ -n "$wdev" ] && [ "$wnet" = "$2" ] && echo "$wdev"
|
|
||||||
|
if [ -n "$wdev" ] && [ "$wnet" = "$network" ]; then
|
||||||
|
append radio_devs "$wdev" "$N"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
source /lib/functions.sh
|
local radio_devs
|
||||||
|
local network="$1"
|
||||||
config_load wireless
|
config_load wireless
|
||||||
config_foreach find_radio wifi-iface "$1" | sort -u
|
config_foreach find_related_radios wifi-iface
|
||||||
); do
|
|
||||||
/sbin/wifi up "$wdev"
|
local dev
|
||||||
|
for dev in $(echo "$radio_devs" | sort -u); do
|
||||||
|
/sbin/wifi up "$dev"
|
||||||
done
|
done
|
||||||
}
|
fi
|
||||||
|
|
Loading…
Reference in New Issue