From 89d2ff16aba2eff4f32ee5d0ea72f0eb324d0a33 Mon Sep 17 00:00:00 2001 From: teastep Date: Wed, 11 Apr 2007 17:55:18 +0000 Subject: [PATCH] Don't specify MTU in tc add class commands unless necessary git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@5896 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb --- Shorewall-perl/Shorewall/Tc.pm | 5 +++-- Shorewall-perl/prog.functions | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Shorewall-perl/Shorewall/Tc.pm b/Shorewall-perl/Shorewall/Tc.pm index 6e6ec1e2b..b493bd883 100644 --- a/Shorewall-perl/Shorewall/Tc.pm +++ b/Shorewall-perl/Shorewall/Tc.pm @@ -414,7 +414,8 @@ sub setup_traffic_shaping() { "qt tc qdisc del dev $device ingress", "run_tc qdisc add dev $device root handle $devnum: htb default $defmark", "${dev}_mtu=\$(get_device_mtu $device)", - "run_tc class add dev $device parent $devnum: classid $devnum:1 htb rate $devref->{out_bandwidth} mtu \$${dev}_mtu" + "${dev}_mtu1=\$(get_device_mtu1 $device)", + "run_tc class add dev $device parent $devnum: classid $devnum:1 htb rate $devref->{out_bandwidth} \$${dev}_mtu1" ); my $inband = rate_to_kbit $devref->{in_bandwidth}; @@ -464,7 +465,7 @@ sub setup_traffic_shaping() { } emitj( "[ \$${dev}_mtu -gt $quantum ] && quantum=\$${dev}_mtu || quantum=$quantum", - "run_tc class add dev $device parent $devref->{number}:1 classid $classid htb rate $rate ceil $tcref->{ceiling} prio $tcref->{priority} mtu \$${dev}_mtu quantum \$quantum", + "run_tc class add dev $device parent $devref->{number}:1 classid $classid htb rate $rate ceil $tcref->{ceiling} prio $tcref->{priority} \$${dev}_mtu1 quantum \$quantum", "run_tc qdisc add dev $device parent $classid handle ${prefix}${mark}: sfq perturb 10" ); # diff --git a/Shorewall-perl/prog.functions b/Shorewall-perl/prog.functions index 906cf27fc..36c71b063 100644 --- a/Shorewall-perl/prog.functions +++ b/Shorewall-perl/prog.functions @@ -150,3 +150,18 @@ restore_dynamic_rules() { fi } +get_device_mtu1() # $1 = device +{ + local output="$(ip link ls dev $1 2> /dev/null)" # quotes required for /bin/ash + local mtu + + if [ -n "$output" ]; then + mtu=$(find_mtu $output) + else + return + fi + + if [ -n "$mtu" ]; then + [ $mtu = 1500 ] || echo mtu $(($mtu + 100)) + fi +}