[libvirt] [PATCH v2 4/6] port allocator: drop skip bind check flag

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Tue Feb 6 09:09:09 UTC 2018


This flag is only used for tests. Let's instead overload bind syscall
in mocks where it is not done yet.
---
 src/bhyve/bhyve_driver.c       |  2 +-
 src/libxl/libxl_driver.c       |  5 ++---
 src/qemu/qemu_driver.c         |  9 +++------
 src/util/virportallocator.c    | 14 ++++----------
 src/util/virportallocator.h    |  7 +------
 tests/bhyvexml2argvmock.c      |  7 +++++++
 tests/bhyvexml2argvtest.c      |  3 +--
 tests/libxlxml2domconfigtest.c |  3 +--
 tests/virmocklibxl.c           |  7 +++++++
 tests/virportallocatortest.c   |  4 ++--
 10 files changed, 29 insertions(+), 32 deletions(-)

diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
index 913c7b1..849d3ab 100644
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -1268,7 +1268,7 @@ bhyveStateInitialize(bool privileged,
         goto cleanup;
 
     if (!(bhyve_driver->remotePorts = virPortAllocatorRangeNew(_("display"),
-                                                               5900, 65535, 0)))
+                                                               5900, 65535)))
         goto cleanup;
 
     bhyve_driver->hostsysinfo = virSysinfoRead();
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 5da9378..2a6bfc6 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -659,15 +659,14 @@ libxlStateInitialize(bool privileged,
     if (!(libxl_driver->reservedGraphicsPorts =
           virPortAllocatorRangeNew(_("VNC"),
                                    LIBXL_VNC_PORT_MIN,
-                                   LIBXL_VNC_PORT_MAX,
-                                   0)))
+                                   LIBXL_VNC_PORT_MAX)))
         goto error;
 
     /* Allocate bitmap for migration port reservation */
     if (!(libxl_driver->migrationPorts =
           virPortAllocatorRangeNew(_("migration"),
                                    LIBXL_MIGRATION_PORT_MIN,
-                                   LIBXL_MIGRATION_PORT_MAX, 0)))
+                                   LIBXL_MIGRATION_PORT_MAX)))
         goto error;
 
     if (!(libxl_driver->domains = virDomainObjListNew()))
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 9f0bab5..26ff03a 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -750,22 +750,19 @@ qemuStateInitialize(bool privileged,
     if ((qemu_driver->remotePorts =
          virPortAllocatorRangeNew(_("display"),
                                   cfg->remotePortMin,
-                                  cfg->remotePortMax,
-                                  0)) == NULL)
+                                  cfg->remotePortMax)) == NULL)
         goto error;
 
     if ((qemu_driver->webSocketPorts =
          virPortAllocatorRangeNew(_("webSocket"),
                                   cfg->webSocketPortMin,
-                                  cfg->webSocketPortMax,
-                                  0)) == NULL)
+                                  cfg->webSocketPortMax)) == NULL)
         goto error;
 
     if ((qemu_driver->migrationPorts =
          virPortAllocatorRangeNew(_("migration"),
                                   cfg->migrationPortMin,
-                                  cfg->migrationPortMax,
-                                  0)) == NULL)
+                                  cfg->migrationPortMax)) == NULL)
         goto error;
 
     if (qemuSecurityInit(qemu_driver) < 0)
diff --git a/src/util/virportallocator.c b/src/util/virportallocator.c
index 040d823..d800fdf 100644
--- a/src/util/virportallocator.c
+++ b/src/util/virportallocator.c
@@ -47,8 +47,6 @@ struct _virPortAllocatorRange {
 
     unsigned short start;
     unsigned short end;
-
-    unsigned int flags;
 };
 
 static virClassPtr virPortAllocatorClass;
@@ -99,8 +97,7 @@ VIR_ONCE_GLOBAL_INIT(virPortAllocator)
 virPortAllocatorRangePtr
 virPortAllocatorRangeNew(const char *name,
                          unsigned short start,
-                         unsigned short end,
-                         unsigned int flags)
+                         unsigned short end)
 {
     virPortAllocatorRangePtr range;
 
@@ -113,7 +110,6 @@ virPortAllocatorRangeNew(const char *name,
     if (VIR_ALLOC(range) < 0)
         return NULL;
 
-    range->flags = flags;
     range->start = start;
     range->end = end;
 
@@ -237,11 +233,9 @@ virPortAllocatorAcquire(virPortAllocatorRangePtr range,
         if (virBitmapIsBitSet(pa->bitmap, i))
             continue;
 
-        if (!(range->flags & VIR_PORT_ALLOCATOR_SKIP_BIND_CHECK)) {
-            if (virPortAllocatorBindToPort(&v6used, i, AF_INET6) < 0 ||
-                virPortAllocatorBindToPort(&used, i, AF_INET) < 0)
-                goto cleanup;
-        }
+        if (virPortAllocatorBindToPort(&v6used, i, AF_INET6) < 0 ||
+            virPortAllocatorBindToPort(&used, i, AF_INET) < 0)
+            goto cleanup;
 
         if (!used && !v6used) {
             /* Add port to bitmap of reserved ports */
diff --git a/src/util/virportallocator.h b/src/util/virportallocator.h
index 2e0ba46..1d7505f 100644
--- a/src/util/virportallocator.h
+++ b/src/util/virportallocator.h
@@ -28,15 +28,10 @@
 typedef struct _virPortAllocatorRange virPortAllocatorRange;
 typedef virPortAllocatorRange *virPortAllocatorRangePtr;
 
-typedef enum {
-    VIR_PORT_ALLOCATOR_SKIP_BIND_CHECK = (1 << 0),
-} virPortAllocatorFlags;
-
 virPortAllocatorRangePtr
 virPortAllocatorRangeNew(const char *name,
                          unsigned short start,
-                         unsigned short end,
-                         unsigned int flags);
+                         unsigned short end);
 
 void virPortAllocatorRangeFree(virPortAllocatorRangePtr range);
 
diff --git a/tests/bhyvexml2argvmock.c b/tests/bhyvexml2argvmock.c
index bec7f90..ebcaff4 100644
--- a/tests/bhyvexml2argvmock.c
+++ b/tests/bhyvexml2argvmock.c
@@ -54,3 +54,10 @@ int virNetDevSetOnline(const char *ifname ATTRIBUTE_UNUSED,
 {
     return 0;
 }
+
+int bind(int sockfd ATTRIBUTE_UNUSED,
+         const struct sockaddr *addr ATTRIBUTE_UNUSED,
+         socklen_t addrlen ATTRIBUTE_UNUSED)
+{
+    return 0;
+}
diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c
index a7d5ce4..eb0f548 100644
--- a/tests/bhyvexml2argvtest.c
+++ b/tests/bhyvexml2argvtest.c
@@ -154,8 +154,7 @@ mymain(void)
     if ((driver.xmlopt = virBhyveDriverCreateXMLConf(&driver)) == NULL)
         return EXIT_FAILURE;
 
-    if (!(driver.remotePorts = virPortAllocatorRangeNew("display", 5900, 65535,
-                                                        VIR_PORT_ALLOCATOR_SKIP_BIND_CHECK)))
+    if (!(driver.remotePorts = virPortAllocatorRangeNew("display", 5900, 65535)))
         return EXIT_FAILURE;
 
 
diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c
index d5ff596..0dc5709 100644
--- a/tests/libxlxml2domconfigtest.c
+++ b/tests/libxlxml2domconfigtest.c
@@ -74,8 +74,7 @@ testCompareXMLToDomConfig(const char *xmlfile,
     if (libxl_ctx_alloc(&ctx, LIBXL_VERSION, 0, log) < 0)
         goto cleanup;
 
-    if (!(gports = virPortAllocatorRangeNew("vnc", 5900, 6000,
-                                            VIR_PORT_ALLOCATOR_SKIP_BIND_CHECK)))
+    if (!(gports = virPortAllocatorRangeNew("vnc", 5900, 6000)))
         goto cleanup;
 
     if (!(xmlopt = libxlCreateXMLConf()))
diff --git a/tests/virmocklibxl.c b/tests/virmocklibxl.c
index 747f9f8..9735956 100644
--- a/tests/virmocklibxl.c
+++ b/tests/virmocklibxl.c
@@ -29,6 +29,7 @@
 # include <libxl.h>
 # include <xenstore.h>
 # include <xenctrl.h>
+# include <sys/socket.h>
 
 VIR_MOCK_IMPL_RET_VOID(xs_daemon_open,
                        struct xs_handle *)
@@ -68,6 +69,12 @@ VIR_MOCK_STUB_RET_ARGS(xc_sharing_used_frames,
 VIR_MOCK_STUB_VOID_ARGS(xs_daemon_close,
                         struct xs_handle *, handle)
 
+VIR_MOCK_STUB_RET_ARGS(bind,
+                       int, 0,
+                       int, sockfd,
+                       const struct sockaddr *, addr,
+                       socklen_t, addrlen)
+
 VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
                        int, ver,
                        const char *, path,
diff --git a/tests/virportallocatortest.c b/tests/virportallocatortest.c
index 86dd3bc..5e30b41 100644
--- a/tests/virportallocatortest.c
+++ b/tests/virportallocatortest.c
@@ -42,7 +42,7 @@ VIR_LOG_INIT("tests.portallocatortest");
 
 static int testAllocAll(const void *args ATTRIBUTE_UNUSED)
 {
-    virPortAllocatorRangePtr ports = virPortAllocatorRangeNew("test", 5900, 5909, 0);
+    virPortAllocatorRangePtr ports = virPortAllocatorRangeNew("test", 5900, 5909);
     int ret = -1;
     unsigned short p1 = 0, p2 = 0, p3 = 0, p4 = 0, p5 = 0, p6 = 0, p7 = 0;
 
@@ -114,7 +114,7 @@ static int testAllocAll(const void *args ATTRIBUTE_UNUSED)
 
 static int testAllocReuse(const void *args ATTRIBUTE_UNUSED)
 {
-    virPortAllocatorRangePtr ports = virPortAllocatorRangeNew("test", 5900, 5910, 0);
+    virPortAllocatorRangePtr ports = virPortAllocatorRangeNew("test", 5900, 5910);
     int ret = -1;
     unsigned short p1 = 0, p2 = 0, p3 = 0, p4 = 0;
 
-- 
1.8.3.1




More information about the libvir-list mailing list