diff options
author | Karel Kočí <cynerd@email.cz> | 2020-05-28 11:29:34 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2020-05-28 11:29:34 +0200 |
commit | c606e009f2639c6b0518c9ad2bdf2b77c35ca6e5 (patch) | |
tree | 23efbf3e0456a78bb4a820037789477b8ab8881d /netifd/files/lib/network/config.sh | |
parent | 68bf801ffbda2868703db98cfb2625232da9535c (diff) | |
download | openwrt-personal-pkgs-c606e009f2639c6b0518c9ad2bdf2b77c35ca6e5.tar.gz openwrt-personal-pkgs-c606e009f2639c6b0518c9ad2bdf2b77c35ca6e5.tar.bz2 openwrt-personal-pkgs-c606e009f2639c6b0518c9ad2bdf2b77c35ca6e5.zip |
Add netifd with patch to fix service restart
Diffstat (limited to 'netifd/files/lib/network/config.sh')
-rwxr-xr-x | netifd/files/lib/network/config.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/netifd/files/lib/network/config.sh b/netifd/files/lib/network/config.sh new file mode 100755 index 0000000..0ded45e --- /dev/null +++ b/netifd/files/lib/network/config.sh @@ -0,0 +1,76 @@ +#!/bin/sh +# Copyright (C) 2011 OpenWrt.org + +. /usr/share/libubox/jshn.sh + +find_config() { + local device="$1" + local ifdev ifl3dev ifobj + for ifobj in `ubus list network.interface.\*`; do + interface="${ifobj##network.interface.}" + ( + json_load "$(ifstatus $interface)" + json_get_var ifdev device + json_get_var ifl3dev l3_device + if [[ "$device" = "$ifdev" ]] || [[ "$device" = "$ifl3dev" ]]; then + echo "$interface" + exit 0 + else + exit 1 + fi + ) && return + done +} + +unbridge() { + return +} + +ubus_call() { + json_init + local _data="$(ubus -S call "$1" "$2")" + [ -z "$_data" ] && return 1 + json_load "$_data" + return 0 +} + + +fixup_interface() { + local config="$1" + local ifname type device l3dev + + config_get type "$config" type + config_get ifname "$config" ifname + [ "bridge" = "$type" ] && ifname="br-$config" + ubus_call "network.interface.$config" status || return 0 + json_get_var l3dev l3_device + [ -n "$l3dev" ] && ifname="$l3dev" + json_init + config_set "$config" ifname "$ifname" +} + +scan_interfaces() { + config_load network + config_foreach fixup_interface interface +} + +prepare_interface_bridge() { + local config="$1" + + [ -n "$config" ] || return 0 + ubus call network.interface."$config" prepare +} + +setup_interface() { + local iface="$1" + local config="$2" + + [ -n "$config" ] || return 0 + ubus call network.interface."$config" add_device "{ \"name\": \"$iface\" }" +} + +do_sysctl() { + [ -n "$2" ] && \ + sysctl -n -e -w "$1=$2" >/dev/null || \ + sysctl -n -e "$1" +} |