mwan3: use sticky ipset generation mwan3_push_update pattern
authorFlorian Eckert <redacted>
Fri, 25 Feb 2022 15:02:49 +0000 (16:02 +0100)
committerFlorian Eckert <redacted>
Mon, 14 Mar 2022 08:34:49 +0000 (09:34 +0100)
Signed-off-by: Florian Eckert <redacted>
net/mwan3/files/lib/mwan3/mwan3.sh

index 34932a8a792acf725f858a2a149acdb4bd2964cf..7db12f9d0a6709dc71f063ad278855c3ce3d646a 100644 (file)
@@ -707,6 +707,33 @@ mwan3_set_sticky_iptables()
        done
 }
 
+mwan3_set_sticky_ipset()
+{
+       local rule="$1"
+       local mmx="$2"
+       local timeout="$3"
+
+       local error
+       local update=""
+
+       mwan3_push_update -! create "mwan3_sticky_v4_$rule" \
+               hash:ip,mark markmask "$mmx" \
+               timeout "$timeout"
+
+       [ $NO_IPV6 -eq 0 ] &&
+               mwan3_push_update -! create "mwan3_sticky_v6_$rule" \
+                       hash:ip,mark markmask "$mmx" \
+                       timeout "$timeout" family inet6
+
+       mwan3_push_update -! create "mwan3_sticky_$rule" list:set
+
+       mwan3_push_update -! add "mwan3_sticky_$rule" "mwan3_sticky_v4_$rule"
+       [ $NO_IPV6 -eq 0 ] &&
+               mwan3_push_update -! add "mwan3_sticky_$rule" "mwan3_sticky_v6_$rule"
+
+       error=$(echo "$update" | $IPS restore 2>&1) || LOG error "set_sticky_ipset_${rule}: $error"
+}
+
 mwan3_set_user_iptables_rule()
 {
        local ipset family proto policy src_ip src_port src_iface src_dev
@@ -790,17 +817,7 @@ mwan3_set_user_iptables_rule()
                rule_policy=1
                policy="mwan3_policy_$use_policy"
                if [ "$sticky" -eq 1 ]; then
-                       $IPS -! create "mwan3_sticky_v4_$rule" \
-                            hash:ip,mark markmask "$MMX_MASK" \
-                            timeout "$timeout"
-                       [ $NO_IPV6 -eq 0 ] &&
-                               $IPS -! create "mwan3_sticky_v6_$rule" \
-                                    hash:ip,mark markmask "$MMX_MASK" \
-                                    timeout "$timeout" family inet6
-                       $IPS -! create "mwan3_sticky_$rule" list:set
-                       $IPS -! add "mwan3_sticky_$rule" "mwan3_sticky_v4_$rule"
-                       [ $NO_IPV6 -eq 0 ] &&
-                               $IPS -! add "mwan3_sticky_$rule" "mwan3_sticky_v6_$rule"
+                       mwan3_set_sticky_ipset "$rule" "$MMX_MASK" "$timeout"
                fi
        fi
 
git clone https://git.99rst.org/PROJECT