]> xenbits.xensource.com Git - libvirt.git/commitdiff
virNetDevMacVLanTapSetup: Work around older systems
authorMichal Privoznik <mprivozn@redhat.com>
Sat, 12 Dec 2015 07:05:17 +0000 (08:05 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Sun, 13 Dec 2015 07:35:46 +0000 (08:35 +0100)
Some older systems, e.g. RHEL-6 do not have IFF_MULTI_QUEUE flag
which we use to enable multiqueue feature. Therefore one gets the
following compile error there:

  CC     util/libvirt_util_la-virnetdevmacvlan.lo
util/virnetdevmacvlan.c: In function 'virNetDevMacVLanTapSetup':
util/virnetdevmacvlan.c:338: error: 'IFF_MULTI_QUEUE' undeclared (first use in this function)
util/virnetdevmacvlan.c:338: error: (Each undeclared identifier is reported only once
util/virnetdevmacvlan.c:338: error: for each function it appears in.)
make[3]: *** [util/libvirt_util_la-virnetdevmacvlan.lo] Error 1

So, whenever user wants us to enable the feature on such systems,
we will just throw a runtime error instead.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virnetdevmacvlan.c

index d8d1d901f922e7cbd40d61ac78dce3c7793d983b..8fc71af4354550767a697b5fbfa631d8071cf9dd 100644 (file)
@@ -334,10 +334,18 @@ virNetDevMacVLanTapSetup(int *tapfd, size_t tapfdSize, bool vnet_hdr, bool multi
             new_flags &= ~IFF_VNET_HDR;
         }
 
+# ifdef IFF_MULTI_QUEUE
         if (multiqueue)
             new_flags |= IFF_MULTI_QUEUE;
         else
             new_flags &= ~IFF_MULTI_QUEUE;
+# else
+        if (multiqueue) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("Multiqueue devices are not supported on this system"));
+            return -1;
+        }
+# endif
 
         if (new_flags != ifreq.ifr_flags) {
             ifreq.ifr_flags = new_flags;