This allows virNetDevBandwidthSet to clear only the interface's qdisc
for directions where bandwidth is defined (see the next patch)

Signed-off-by: Wesley Hershberger <[email protected]>
---
 src/util/virnetdevbandwidth.c | 52 +++++++++++++++++++++++++++++--------------
 src/util/virnetdevbandwidth.h |  2 ++
 2 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c
index b141a38b10..8de0b57943 100644
--- a/src/util/virnetdevbandwidth.c
+++ b/src/util/virnetdevbandwidth.c
@@ -427,6 +427,38 @@ virNetDevBandwidthSet(const char *ifname,
     return ret;
 }
 
+int
+virNetDevBandwidthClearRoot(const char *ifname)
+{
+    int ret = 0;
+    int dummy; /* for ignoring the exit status */
+    g_autoptr(virCommand) cmd = NULL;
+
+    cmd = virCommandNew("tc");
+    virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, "root", NULL);
+
+    if (virCommandRun(cmd, &dummy) < 0)
+        ret = -1;
+
+    return ret;
+}
+
+int
+virNetDevBandwidthClearIngress(const char *ifname)
+{
+    int ret = 0;
+    int dummy; /* for ignoring the exit status */
+    g_autoptr(virCommand) cmd = NULL;
+
+    cmd = virCommandNew("tc");
+    virCommandAddArgList(cmd, "qdisc",  "del", "dev", ifname, "ingress", NULL);
+
+    if (virCommandRun(cmd, &dummy) < 0)
+        ret = -1;
+
+    return ret;
+}
+
 /**
  * virNetDevBandwidthClear:
  * @ifname: on which interface
@@ -440,27 +472,13 @@ virNetDevBandwidthSet(const char *ifname,
 int
 virNetDevBandwidthClear(const char *ifname)
 {
-    int ret = 0;
-    int dummy; /* for ignoring the exit status */
-    g_autoptr(virCommand) rootcmd = NULL;
-    g_autoptr(virCommand) ingresscmd = NULL;
-
     if (!ifname)
        return 0;
 
-    rootcmd = virCommandNew("tc");
-    virCommandAddArgList(rootcmd, "qdisc", "del", "dev", ifname, "root", NULL);
+    if (virNetDevBandwidthClearRoot(ifname) < 0)
+        return -1;
 
-    if (virCommandRun(rootcmd, &dummy) < 0)
-        ret = -1;
-
-    ingresscmd = virCommandNew("tc");
-    virCommandAddArgList(ingresscmd, "qdisc",  "del", "dev", ifname, 
"ingress", NULL);
-
-    if (virCommandRun(ingresscmd, &dummy) < 0)
-        ret = -1;
-
-    return ret;
+    return virNetDevBandwidthClearIngress(ifname);
 }
 
 /*
diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h
index 9f271c5283..eaddb4f3d7 100644
--- a/src/util/virnetdevbandwidth.h
+++ b/src/util/virnetdevbandwidth.h
@@ -50,6 +50,8 @@ int virNetDevBandwidthSet(const char *ifname,
                           unsigned int flags)
     G_GNUC_WARN_UNUSED_RESULT;
 
+int virNetDevBandwidthClearRoot(const char *ifname);
+int virNetDevBandwidthClearIngress(const char *ifname);
 int virNetDevBandwidthClear(const char *ifname);
 int virNetDevBandwidthCopy(virNetDevBandwidth **dest,
                            const virNetDevBandwidth *src)

-- 
2.53.0

Reply via email to