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
40 mwan3_delete_iface_iptables
$1
51 echo "Expecting interface. Usage: mwan3 ifup <interface>" && exit 0
55 echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
58 config_get enabled
"$1" enabled
0
60 device
=$
(uci
-p /var
/state get network.
$1.ifname
) &> /dev
/null
62 if [ -n "$device" ] ; then
63 [ "$enabled" -eq 1 ] && ACTION
=ifup INTERFACE
=$1 DEVICE
=$device /sbin
/hotplug-call iface
71 echo "Interface status:"
72 config_foreach mwan3_report_iface_status interface
78 echo "Current ipv4 policies:"
79 mwan3_report_policies_v4
81 echo "Current ipv6 policies:"
82 mwan3_report_policies_v6
88 echo "Directly connected ipv4 networks:"
89 mwan3_report_connected_v4
91 echo "Directly connected ipv6 networks:"
92 mwan3_report_connected_v6
98 echo "Active ipv4 user rules:"
101 echo "Active ipv6 user rules:"
102 mwan3_report_rules_v6
117 config_foreach ifup interface
122 local ipset route rule table IP IPT
124 killall mwan3track
&> /dev
/null
127 config_foreach mwan3_track_clean interface
129 for IP
in "$IP4" "$IP6"; do
131 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
132 $IP route flush table
$route &> /dev
/null
135 for rule
in $
($IP rule list |
egrep '^[1-2][0-9]{3}\:' | cut
-d ':' -f 1); do
136 $IP rule del pref
$rule &> /dev
/null
140 for IPT
in "$IPT4" "$IPT6"; do
142 $IPT -D PREROUTING
-j mwan3_hook
&> /dev
/null
143 $IPT -D OUTPUT
-j mwan3_hook
&> /dev
/null
145 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
146 $IPT -F $table &> /dev
/null
149 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
150 $IPT -X $table &> /dev
/null
154 for ipset
in $
($IPS -n list |
grep mwan3_
); do
155 $IPS -q destroy
$ipset
158 for ipset
in $
($IPS -n list |
grep mwan3 |
grep -E '_v4|_v6'); do
159 $IPS -q destroy
$ipset
171 ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart
)