diff --git a/Shorewall/Perl/Shorewall/Providers.pm b/Shorewall/Perl/Shorewall/Providers.pm index 51fec6bf4..32eae9b7a 100644 --- a/Shorewall/Perl/Shorewall/Providers.pm +++ b/Shorewall/Perl/Shorewall/Providers.pm @@ -608,7 +608,8 @@ sub add_a_provider( $$ ) { } } - emit( qq(echo $load > \${VARDIR}/${physical}_load) ) if $load; + emit( "echo $load > \${VARDIR}/${physical}_load", + 'echo ' . in_hex( $mark ) . '/' . in_hex( $globals{PROVIDER_MASK} ) . " > \${VARDIR}/${physical}_mark" ) if $load; emit( '', "cat <> \${VARDIR}/undo_${table}_routing" ); @@ -618,6 +619,7 @@ sub add_a_provider( $$ ) { emit_unindented ' ;;'; emit_unindented ' *)'; emit_unindented " rm -f \${VARDIR}/${physical}_load" if $load; + emit_unindented " rm -f \${VARDIR}/${physical}_mark" if $load; emit_unindented <<"CEOF", 1; rm -f \${VARDIR}/${physical}.status ;; diff --git a/Shorewall/lib.core b/Shorewall/lib.core index f5a1f1046..77d00ca9b 100644 --- a/Shorewall/lib.core +++ b/Shorewall/lib.core @@ -594,6 +594,7 @@ distribute_load() { local interface local totalload local load + local mark local maxload maxload=$1 @@ -605,6 +606,8 @@ distribute_load() { if interface_up $interface; then load=$(cat ${VARDIR}/${interface}_load) eval ${interface}_load=$load + mark=$(cat ${VARDIR}/${interface}_mark) + eval ${interface}_mark=$mark totalload=$( bc <