[PATCH] interface: Fix udev backend bridge device display

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The bridge device was showing the vnet devices created for the domains
as connected to the bridge. libvirt should only show host devices when
trying to get the interface definition rather than the domain devices as
well.
---
Honestly this method sucks. But it makes the code path work and doesn't
result in brokenness. I was really thinking of sscanf() but I don't really
care to store the values. Suggestions?
---
 src/interface/interface_backend_udev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c
index bd83545..dca85b3 100644
--- a/src/interface/interface_backend_udev.c
+++ b/src/interface/interface_backend_udev.c
@@ -24,7 +24,9 @@
 #include <libudev.h>
 
 #include "virerror.h"
+#include "c-ctype.h"
 #include "datatypes.h"
+#include "domain_conf.h"
 #include "interface_driver.h"
 #include "interface_conf.h"
 #include "viralloc.h"
@@ -527,6 +529,16 @@ udevIfaceBridgeScanDirFilter(const struct dirent *entry)
     if (STREQ(entry->d_name, ".") || STREQ(entry->d_name, ".."))
         return 0;
 
+    /* Omit the domain interfaces from the list of bridge attached
+     * devices. All we can do is check for the device name matching
+     * vnet%d. Improvements to this check are welcome.
+     */
+    if (strlen(entry->d_name) >= 5) {
+        if (STRPREFIX(entry->d_name, VIR_NET_GENERATED_PREFIX) &&
+            c_isdigit(entry->d_name[4]))
+            return 0;
+    }
+
     return 1;
 }
 
-- 
1.7.12.4

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]