mirror of
https://gitlab.com/shorewall/code.git
synced 2025-06-16 22:56:42 +02:00
Clean up distribute_load()
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
93c7e2c2f7
commit
18348ef6f1
@ -604,11 +604,12 @@ interface_enabled() {
|
|||||||
|
|
||||||
distribute_load() {
|
distribute_load() {
|
||||||
local interface
|
local interface
|
||||||
local currentload
|
local currentload # Total load of enabled interfaces
|
||||||
local load
|
local load # Specified load of an enabled interface
|
||||||
local mark
|
local mark # Mark of an enabled interface
|
||||||
local totalload
|
local totalload # Total load of all interfaces - usually 1.000000
|
||||||
local temp
|
local nload # Normalized load of an enabled interface
|
||||||
|
local var # Interface name to embed in a variable name
|
||||||
|
|
||||||
totalload=$1
|
totalload=$1
|
||||||
shift
|
shift
|
||||||
@ -617,10 +618,11 @@ distribute_load() {
|
|||||||
|
|
||||||
for interface in $@; do
|
for interface in $@; do
|
||||||
if interface_enabled $interface; then
|
if interface_enabled $interface; then
|
||||||
|
var=$(echo $interface | sed 's/[.-]/_/g')
|
||||||
load=$(cat ${VARDIR}/${interface}_load)
|
load=$(cat ${VARDIR}/${interface}_load)
|
||||||
eval ${interface}_load=$load
|
eval ${var}_load=$load
|
||||||
mark=$(cat ${VARDIR}/${interface}_mark)
|
mark=$(cat ${VARDIR}/${interface}_mark)
|
||||||
eval ${interface}_mark=$mark
|
eval ${var}_mark=$mark
|
||||||
currentload=$( bc <<EOF
|
currentload=$( bc <<EOF
|
||||||
scale=8
|
scale=8
|
||||||
$currentload + $load
|
$currentload + $load
|
||||||
@ -633,25 +635,25 @@ EOF
|
|||||||
for interface in $@; do
|
for interface in $@; do
|
||||||
qt $g_tool -t mangle -F ~$interface
|
qt $g_tool -t mangle -F ~$interface
|
||||||
|
|
||||||
eval load=\$${interface}_load
|
var=$(echo $interface | sed 's/[.-]/_/g')
|
||||||
eval mark=\$${interface}_mark
|
eval load=\$${var}_load
|
||||||
|
eval mark=\$${var}_mark
|
||||||
|
|
||||||
if [ -n "$load" ]; then
|
if [ -n "$load" ]; then
|
||||||
temp=$load
|
nload=$(bc <<EOF
|
||||||
load=$(bc <<EOF
|
|
||||||
scale=8
|
scale=8
|
||||||
( $load / $currentload ) * $totalload
|
( $load / $currentload ) * $totalload
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
currentload=$(bc <<EOF
|
currentload=$(bc <<EOF
|
||||||
scale=8
|
scale=8
|
||||||
$currentload - $temp
|
$currentload - $load
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
case $load in
|
case $nload in
|
||||||
.*|0.*)
|
.*|0.*)
|
||||||
run_iptables -t mangle -A ~$interface -m statistic --mode random --probability $load -j MARK --set-mark $mark
|
run_iptables -t mangle -A ~$interface -m statistic --mode random --probability $nload -j MARK --set-mark $mark
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
run_iptables -t mangle -A ~$interface -j MARK --set-mark $mark
|
run_iptables -t mangle -A ~$interface -j MARK --set-mark $mark
|
||||||
|
Loading…
x
Reference in New Issue
Block a user