2011-10-21 01:47:49 +00:00
|
|
|
#!/bin/sh
|
|
|
|
# Copyright (C) 2011 OpenWrt.org
|
|
|
|
|
|
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
|
|
|
|
find_config() {
|
2012-03-15 09:49:26 +00:00
|
|
|
local device="$1"
|
2012-06-11 13:25:58 +00:00
|
|
|
local ifdev ifl3dev ifobj
|
2012-03-15 09:49:26 +00:00
|
|
|
for ifobj in `ubus list network.interface.\*`; do
|
|
|
|
interface="${ifobj##network.interface.}"
|
|
|
|
(
|
|
|
|
json_load "$(ifstatus $interface)"
|
|
|
|
json_get_var ifdev device
|
2012-03-19 21:09:54 +00:00
|
|
|
json_get_var ifl3dev l3_device
|
|
|
|
if [[ "$device" = "$ifdev" ]] || [[ "$device" = "$ifl3dev" ]]; then
|
2012-03-15 09:49:26 +00:00
|
|
|
echo "$interface"
|
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
) && return
|
|
|
|
done
|
2011-10-21 01:47:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
unbridge() {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
ubus_call() {
|
|
|
|
json_init
|
2012-04-21 20:34:48 +00:00
|
|
|
local _data="$(ubus -S call "$1" "$2")"
|
|
|
|
[ -z "$_data" ] && return 1
|
2011-10-21 01:47:49 +00:00
|
|
|
json_load "$_data"
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fixup_interface() {
|
|
|
|
local config="$1"
|
2012-06-11 13:25:58 +00:00
|
|
|
local ifname type device l3dev
|
2011-10-21 01:47:49 +00:00
|
|
|
|
|
|
|
config_get type "$config" type
|
|
|
|
config_get ifname "$config" ifname
|
2012-02-02 23:01:02 +00:00
|
|
|
config_get device "$config" device "$ifname"
|
2011-10-21 01:47:49 +00:00
|
|
|
[ "bridge" = "$type" ] && ifname="br-$config"
|
|
|
|
config_set "$config" device "$ifname"
|
2012-04-21 20:34:48 +00:00
|
|
|
ubus_call "network.interface.$config" status || return 0
|
2011-10-21 01:47:49 +00:00
|
|
|
json_get_var l3dev l3_device
|
|
|
|
[ -n "$l3dev" ] && ifname="$l3dev"
|
|
|
|
json_init
|
|
|
|
config_set "$config" ifname "$ifname"
|
2012-02-02 23:01:02 +00:00
|
|
|
config_set "$config" device "$device"
|
2011-10-21 01:47:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
scan_interfaces() {
|
|
|
|
config_load network
|
|
|
|
config_foreach fixup_interface interface
|
|
|
|
}
|
|
|
|
|
2011-11-04 01:05:12 +00:00
|
|
|
prepare_interface_bridge() {
|
|
|
|
local config="$1"
|
|
|
|
|
|
|
|
[ -n "$config" ] || return 0
|
|
|
|
ubus call network.interface."$config" prepare
|
|
|
|
}
|
|
|
|
|
2011-10-21 01:47:49 +00:00
|
|
|
setup_interface() {
|
|
|
|
local iface="$1"
|
|
|
|
local config="$2"
|
|
|
|
|
|
|
|
[ -n "$config" ] || return 0
|
|
|
|
ubus call network.interface."$config" add_device "{ \"name\": \"$iface\" }"
|
|
|
|
}
|
|
|
|
|
2012-02-27 23:37:46 +00:00
|
|
|
do_sysctl() {
|
|
|
|
[ -n "$2" ] && \
|
|
|
|
sysctl -n -e -w "$1=$2" >/dev/null || \
|
|
|
|
sysctl -n -e "$1"
|
|
|
|
}
|