4 .
/lib
/functions
/network.sh
10 Syntax: mwan3 [command]
13 start Load iptables rules, ip rules and ip routes
14 stop Unload iptables rules, ip rules and ip routes
15 restart Reload iptables rules, ip rules and ip routes
16 ifup <iface> Load rules and routes for specific interface
17 ifdown <iface> Unload rules and routes for specific interface
18 interfaces Show interfaces status
19 policies Show currently active policy
20 connected Show directly connected networks
21 rules Show active rules
22 status Show all status
30 echo "Error: Expecting interface. Usage: mwan3 ifdown <interface>" && exit 0
34 echo "Error: Too many arguments. Usage: mwan3 ifdown <interface>" && exit 0
37 ACTION
=ifdown INTERFACE
=$1 /sbin
/hotplug-call iface
39 kill $
(pgrep
-f "mwan3track $1 $2") &> /dev
/null
50 echo "Expecting interface. Usage: mwan3 ifup <interface>" && exit 0
54 echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
57 config_get_bool enabled globals
'enabled' 0
58 [ ${enabled} -gt 0 ] ||
{
59 echo "Warning: mwan3 is global disabled. Usage: /etc/init.d/mwan3 start"
63 config_get enabled
"$1" enabled
0
65 device
=$
(uci
-p /var
/state get network.
$1.ifname
) &> /dev
/null
67 if [ -n "$device" ] ; then
68 [ "$enabled" -eq 1 ] && ACTION
=ifup INTERFACE
=$1 DEVICE
=$device /sbin
/hotplug-call iface
76 echo "Interface status:"
77 config_foreach mwan3_report_iface_status interface
83 echo "Current ipv4 policies:"
84 mwan3_report_policies_v4
86 echo "Current ipv6 policies:"
87 mwan3_report_policies_v6
93 echo "Directly connected ipv4 networks:"
94 mwan3_report_connected_v4
96 echo "Directly connected ipv6 networks:"
97 mwan3_report_connected_v6
103 echo "Active ipv4 user rules:"
104 mwan3_report_rules_v4
106 echo "Active ipv6 user rules:"
107 mwan3_report_rules_v6
124 config_get_bool enabled globals
'enabled' 0
125 [ ${enabled} -gt 0 ] ||
{
126 echo "Warning: mwan3 is global disabled. Usage: /etc/init.d/mwan3 start"
130 config_foreach ifup interface
135 local ipset route rule table IP IPT pid
137 for pid
in $
(pgrep
-f "mwan3track"); do
138 kill -TERM "$pid" > /dev
/null
2>&1
140 kill -KILL "$pid" > /dev
/null
2>&1
144 config_foreach mwan3_track_clean interface
146 for IP
in "$IP4" "$IP6"; do
148 for route
in $
($IP route list table all |
sed 's/.*table \([^ ]*\) .*/\1/' |
awk '{print $1}' |
awk '{for(i=1;i<=NF;i++) if($i+0>0) if($i+0<255) {print;break}}'); do
149 $IP route flush table
$route &> /dev
/null
152 for rule
in $
($IP rule list |
egrep '^[1-2][0-9]{3}\:' | cut
-d ':' -f 1); do
153 $IP rule del pref
$rule &> /dev
/null
157 for IPT
in "$IPT4" "$IPT6"; do
159 $IPT -D PREROUTING
-j mwan3_hook
&> /dev
/null
160 $IPT -D OUTPUT
-j mwan3_hook
&> /dev
/null
162 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
163 $IPT -F $table &> /dev
/null
166 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
167 $IPT -X $table &> /dev
/null
171 for ipset
in $
($IPS -n list |
grep mwan3_
); do
172 $IPS -q destroy
$ipset
175 for ipset
in $
($IPS -n list |
grep mwan3 |
grep -E '_v4|_v6'); do
176 $IPS -q destroy
$ipset
180 rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR
189 ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart
)