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
49 echo "Expecting interface. Usage: mwan3 ifup <interface>" && exit 0
53 echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
56 config_get enabled
"$1" enabled
0
58 device
=$
(uci
-p /var
/state get network.
$1.ifname
) &> /dev
/null
60 if [ -n "$device" ] ; then
61 [ "$enabled" -eq 1 ] && ACTION
=ifup INTERFACE
=$1 DEVICE
=$device /sbin
/hotplug-call iface
69 echo "Interface status:"
70 config_foreach mwan3_report_iface_status interface
76 echo "Current ipv4 policies:"
77 mwan3_report_policies_v4
79 echo "Current ipv6 policies:"
80 mwan3_report_policies_v6
86 echo "Directly connected ipv4 networks:"
87 mwan3_report_connected_v4
89 echo "Directly connected ipv6 networks:"
90 mwan3_report_connected_v6
96 echo "Active ipv4 user rules:"
99 echo "Active ipv6 user rules:"
100 mwan3_report_rules_v6
115 config_foreach ifup interface
120 local ipset route rule table IP IPT
122 killall mwan3track
&> /dev
/null
124 for IP
in "$IP4" "$IP6"; do
126 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
127 $IP route flush table
$route &> /dev
/null
130 for rule
in $
($IP rule list |
egrep '^[1-2][0-9]{3}\:' | cut
-d ':' -f 1); do
131 $IP rule del pref
$rule &> /dev
/null
135 for IPT
in "$IPT4" "$IPT6"; do
137 $IPT -D PREROUTING
-j mwan3_hook
&> /dev
/null
138 $IPT -D OUTPUT
-j mwan3_hook
&> /dev
/null
140 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
141 $IPT -F $table &> /dev
/null
144 for table
in $
($IPT -S |
awk '{print $2}' |
grep mwan3 |
sort -u); do
145 $IPT -X $table &> /dev
/null
149 for ipset
in $
($IPS -n list |
grep mwan3_
); do
150 $IPS -q destroy
$ipset
153 for ipset
in $
($IPS -n list |
grep mwan3 |
grep -E '_v4|_v6'); do
154 $IPS -q destroy
$ipset
164 ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart
)