Use run_command instead of system
authorFabian Gr├╝nbichler <f.gruenbichler@proxmox.com>
Mon, 2 May 2016 13:03:03 +0000 (15:03 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 3 May 2016 05:03:10 +0000 (07:03 +0200)
and explicitly note that those calls are allowed to fail and
are wrapped in eval {} on purpose.

src/PVE/Network.pm

index bda2067..be26132 100644 (file)
@@ -76,10 +76,11 @@ our $ipv4_mask_hash_localnet = {
 sub setup_tc_rate_limit {
     my ($iface, $rate, $burst, $debug) = @_;
 
-    system("/sbin/tc class del dev $iface parent 1: classid 1:1 >/dev/null 2>&1");
-    system("/sbin/tc filter del dev $iface parent ffff: protocol all pref 50 u32 >/dev/null 2>&1");
-    system("/sbin/tc qdisc del dev $iface ingress >/dev/null 2>&1");
-    system("/sbin/tc qdisc del dev $iface root >/dev/null 2>&1");
+    # these are allowed / expected to fail, e.g. when there is no previous rate limit to remove
+    eval { run_command("/sbin/tc class del dev $iface parent 1: classid 1:1 >/dev/null 2>&1"); };
+    eval { run_command("/sbin/tc filter del dev $iface parent ffff: protocol all pref 50 u32 >/dev/null 2>&1"); };
+    eval { run_command("/sbin/tc qdisc del dev $iface ingress >/dev/null 2>&1"); };
+    eval { run_command("/sbin/tc qdisc del dev $iface root >/dev/null 2>&1"); };
 
     return if !$rate;