]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Validate QoS values
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 13 Aug 2024 11:39:16 +0000 (13:39 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 20 Aug 2024 07:19:28 +0000 (09:19 +0200)
Since we use 'tc' to set QoS, or we instruct OVS which then uses
'tc', we have to make sure values are within range acceptable to
'tc'.

Resolves: https://issues.redhat.com/browse/RHEL-45200
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/domain_validate.c
src/conf/schemas/networkcommon.rng
src/network/bridge_driver.c

index 39b8d67928d6afc3af972ba3a28702ffe09c2836..ab1caadc7af8e93342f6ce1fae7dbb7bce65aa04 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "domain_validate.h"
 #include "domain_conf.h"
+#include "netdev_bandwidth_conf.h"
 #include "vircgroup.h"
 #include "virconftypes.h"
 #include "virlog.h"
@@ -2068,6 +2069,10 @@ virDomainActualNetDefValidate(const virDomainNetDef *net)
         return -1;
     }
 
+    if (!virNetDevBandwidthValidate(bandwidth)) {
+        return -1;
+    }
+
     if (virDomainNetDefValidatePortOptions(macstr, actualType, vport,
                                            virDomainNetGetActualPortOptionsIsolated(net)) < 0) {
         return -1;
@@ -2143,6 +2148,10 @@ virDomainNetDefValidate(const virDomainNetDef *net)
         return -1;
     }
 
+    if (!virNetDevBandwidthValidate(net->bandwidth)) {
+        return -1;
+    }
+
     switch (net->type) {
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
         if (!virDomainNetIsVirtioModel(net)) {
index 6df6d43f54a6581fe97acacfabf77cac72f9662a..28424f9abdd71f02bb94b815497f0276589fa716 100644 (file)
   </define>
 
   <define name="speed">
-    <data type="unsignedInt">
+    <data type="unsignedLong">
       <param name="pattern">[0-9]+</param>
       <param name="minInclusive">1</param>
+      <param name="maxInclusive">18014398509481984</param>
     </data>
   </define>
   <define name="BurstSize">
index 32572c755fb1ab164425810edd883343f78b7be5..915211d1b590424384aaea029a1a18487d17149d 100644 (file)
@@ -2838,6 +2838,10 @@ networkValidate(virNetworkDriverState *driver,
         return -1;
     }
 
+    if (!virNetDevBandwidthValidate(def->bandwidth)) {
+        return -1;
+    }
+
     /* we support configs with a single PF defined:
      *   <pf dev='eth0'/>
      * or with a list of netdev names: