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 enabled
"$1" enabled
0
59 device
=$
(uci
-p /var
/state get network.
$1.ifname
) &> /dev
/null
61 if [ -n "$device" ] ; then
62 [ "$enabled" -eq 1 ] && ACTION
=ifup INTERFACE
=$1 DEVICE
=$device /sbin
/hotplug-call iface
70 echo "Interface status:"
71 config_foreach mwan3_report_iface_status interface
77 echo "Current ipv4 policies:"
78 mwan3_report_policies_v4
80 echo "Current ipv6 policies:"
81 mwan3_report_policies_v6
87 echo "Directly connected ipv4 networks:"
88 mwan3_report_connected_v4
90 echo "Directly connected ipv6 networks:"
91 mwan3_report_connected_v6
97 echo "Active ipv4 user rules:"
100 echo "Active ipv6 user rules:"
101 mwan3_report_rules_v6
116 config_foreach ifup interface
121 local ipset route rule table IP IPT
123 killall mwan3track
&> /dev
/null
126 config_foreach mwan3_track_clean interface
128 for IP
in "$IP4" "$IP6"; do
130 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
131 $IP route flush table
$route &> /dev
/null
134 for rule
in $
($IP rule list |
egrep '^[1-2][0-9]{3}\:' | cut
-d ':' -f 1); do
135 $IP rule del pref
$rule &> /dev
/null
139 for IPT
in "$IPT4" "$IPT6"; do
141 $IPT -D PREROUTING
-j mwan3_hook
&> /dev
/null
142 $IPT -D OUTPUT
-j mwan3_hook
&> /dev
/null
144 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
145 $IPT -F $table &> /dev
/null
148 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
149 $IPT -X $table &> /dev
/null
153 for ipset
in $
($IPS -n list |
grep mwan3_
); do
154 $IPS -q destroy
$ipset
157 for ipset
in $
($IPS -n list |
grep mwan3 |
grep -E '_v4|_v6'); do
158 $IPS -q destroy
$ipset
170 ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart
)