#!/bin/sh . /lib/functions.sh config_file='/etc/multiaccountdial/config' syncdial_num=2 macvlan_index=0 command=$1 track_ip='119.29.29.29 www.baidu.com 114.114.114.114' add_mwan=$(uci -q get multiaccountdial.@base_setting[0].add_mwan) dial_num=$(uci -q get multiaccountdial.@base_setting[0].dial_num) if [ "$dial_num" != "" ]; then syncdial_num=$dial_num fi mwan_cfg_add() { #gen mwan3_interface uci set mwan3.${1}=interface uci set mwan3.${1}.enabled=1 uci set mwan3.${1}.count=2 uci set mwan3.${1}.timeout=2 uci set mwan3.${1}.interval=5 uci set mwan3.${1}.down=4 uci set mwan3.${1}.up=1 for i in $chk_ip_list do uci add_list mwan3.${1}.track_ip="$track_ip" done uci set mwan3.${1}.reliability=1 uci set mwan3.${1}.initial_state=online uci set mwan3.${1}.family=ipv4 uci set mwan3.${1}.track_method=ping uci set mwan3.${1}.size=56 uci set mwan3.${1}.failure_interval=5 uci set mwan3.${1}.recovery_interval=5 uci set mwan3.${1}.flush_conntrack=never #gen mwan3_member uci set mwan3.${1}_m1_w1=member uci set mwan3.${1}_m1_w1.interface=${1} uci set mwan3.${1}_m1_w1.metric=1 uci set mwan3.${1}_m1_w1.weight=1 #gen mwan3_policy uci add_list mwan3.balanced.use_member=${1}_m1_w1 } #删除MWAN负载均衡相关配置 #$1:接口名称 mwan_cfg_del() { uci del mwan3.${1} uci del mwan3.${1}_m1_w1 uci del_list mwan3.balanced.use_member=${1}_m1_w1 } #$1 parent interface , $2 macvlan_index , $3 vlan_tag #会创建一个macvlan接口,ifname为mac_${parent_ifname} create_macvlan_if(){ local ifname=$1 local macvlan_index=$2 local vlan_tag=$3 local macvlan_name=${ifname}.${vlan_tag}mac${macvlan_index} local config_name=mac_${macvlan_name} echo "create macvlan $macvlan_name with ifname $ifname" uci batch </dev/null && { local up=$(ifstatus ${if_cfg} |grep '"up": true,' |wc -l ) local down=$(ifstatus ${if_cfg} |grep '"up": false,' |wc -l ) if [ $up -eq 1 ];then online=${online}1;fi if [ $down -eq 1 ];then offline=${offline}1;fi } } count_all(){ config_load network config_foreach count_if interface } case $command in "add") add_vwan uci commit network uci commit firewall uci commit mwan3 ;; "del") remove_vwan uci commit network uci commit firewall uci commit mwan3 ;; "redial") redial_all ;; "count_online") count_all echo 在线:$(echo -e $online | wc -L) echo 离线:$(echo -e $offline | wc -L) ;; *) echo "unknown command $command" ;; esac