aboutsummaryrefslogtreecommitdiff
path: root/net/mwan3/files
diff options
context:
space:
mode:
authorAaron Goodman <aaronjg@stanford.edu>2020-05-29 19:47:38 -0400
committerAaron Goodman <aaronjg@stanford.edu>2020-07-16 02:03:21 -0400
commitda9a626f78791b953a58ccd30987983ff52c8afc (patch)
tree0f11027abcd9a2933a79adb5e8fa00a98ce0e029 /net/mwan3/files
parent9694fb2987f36e8a18ba59f519edd22649ea2cc4 (diff)
mwan3: don't add single ipv4 to connected list if already covered by a cidr
Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
Diffstat (limited to 'net/mwan3/files')
-rw-r--r--net/mwan3/files/lib/mwan3/mwan3.sh36
1 files changed, 29 insertions, 7 deletions
diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh
index 5ffef9405..eecd4a380 100644
--- a/net/mwan3/files/lib/mwan3/mwan3.sh
+++ b/net/mwan3/files/lib/mwan3/mwan3.sh
@@ -238,26 +238,48 @@ mwan3_set_custom_ipset()
$IPS -! add mwan3_connected mwan3_custom_v6
}
-mwan3_set_connected_iptables()
-{
- local connected_network_v4 connected_network_v6 source_network_v6
-
- $IPS -! create mwan3_connected_v4 hash:net
- $IPS create mwan3_connected_v4_temp hash:net
+mwan3_set_connected_ipv4()
+{
+ local connected_network_v4 candidate_list cidr_list
+ candidate_list=""
+ cidr_list=""
for connected_network_v4 in $($IP4 route | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
- $IPS -! add mwan3_connected_v4_temp "$connected_network_v4"
+ [ -z "${connected_network_v4##*/*}" ] &&
+ cidr_list="$cidr_list $connected_network_v4" ||
+ candidate_list="$candidate_list $connected_network_v4"
done
for connected_network_v4 in $($IP4 route list table 0 | awk '{print $2}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+ [ -z "${connected_network_v4##*/*}" ] &&
+ cidr_list="$cidr_list $connected_network_v4" ||
+ candidate_list="$candidate_list $connected_network_v4"
+ done
+
+ for connected_network_v4 in $cidr_list; do
$IPS -! add mwan3_connected_v4_temp "$connected_network_v4"
done
+ for connected_network_v4 in $candidate_list; do
+ ipset -q test mwan3_connected_v4_temp "$connected_network_v4" ||
+ $IPS -! add mwan3_connected_v4_temp "$connected_network_v4"
+ done
$IPS add mwan3_connected_v4_temp 224.0.0.0/3
$IPS swap mwan3_connected_v4_temp mwan3_connected_v4
$IPS destroy mwan3_connected_v4_temp
+}
+
+mwan3_set_connected_iptables()
+{
+ local connected_network_v6 source_network_v6
+
+ $IPS -! create mwan3_connected_v4 hash:net
+ $IPS create mwan3_connected_v4_temp hash:net
+
+ mwan3_set_connected_ipv4
+
$IPS -! create mwan3_connected_v6 hash:net family inet6
$IPS create mwan3_connected_v6_temp hash:net family inet6