0ded45edc4e24f8e45ceb83f26c89b55084f1a16
[openwrt/staging/wigyori.git] / package / network / config / netifd / files / lib / network / config.sh
1 #!/bin/sh
2 # Copyright (C) 2011 OpenWrt.org
3
4 . /usr/share/libubox/jshn.sh
5
6 find_config() {
7 local device="$1"
8 local ifdev ifl3dev ifobj
9 for ifobj in `ubus list network.interface.\*`; do
10 interface="${ifobj##network.interface.}"
11 (
12 json_load "$(ifstatus $interface)"
13 json_get_var ifdev device
14 json_get_var ifl3dev l3_device
15 if [[ "$device" = "$ifdev" ]] || [[ "$device" = "$ifl3dev" ]]; then
16 echo "$interface"
17 exit 0
18 else
19 exit 1
20 fi
21 ) && return
22 done
23 }
24
25 unbridge() {
26 return
27 }
28
29 ubus_call() {
30 json_init
31 local _data="$(ubus -S call "$1" "$2")"
32 [ -z "$_data" ] && return 1
33 json_load "$_data"
34 return 0
35 }
36
37
38 fixup_interface() {
39 local config="$1"
40 local ifname type device l3dev
41
42 config_get type "$config" type
43 config_get ifname "$config" ifname
44 [ "bridge" = "$type" ] && ifname="br-$config"
45 ubus_call "network.interface.$config" status || return 0
46 json_get_var l3dev l3_device
47 [ -n "$l3dev" ] && ifname="$l3dev"
48 json_init
49 config_set "$config" ifname "$ifname"
50 }
51
52 scan_interfaces() {
53 config_load network
54 config_foreach fixup_interface interface
55 }
56
57 prepare_interface_bridge() {
58 local config="$1"
59
60 [ -n "$config" ] || return 0
61 ubus call network.interface."$config" prepare
62 }
63
64 setup_interface() {
65 local iface="$1"
66 local config="$2"
67
68 [ -n "$config" ] || return 0
69 ubus call network.interface."$config" add_device "{ \"name\": \"$iface\" }"
70 }
71
72 do_sysctl() {
73 [ -n "$2" ] && \
74 sysctl -n -e -w "$1=$2" >/dev/null || \
75 sysctl -n -e "$1"
76 }