virPortAllocatorPtr virPortAllocatorNew(const char *name, unsigned short start, unsigned short end) { virPortAllocatorPtr pa; if (start >= end) { virReportInvalidArg(start, "start port %d must be less than end port %d", start, end); return NULL; } if (virPortAllocatorInitialize() < 0) return NULL; if (!(pa = virObjectLockableNew(virPortAllocatorClass))) return NULL; pa->start = start; pa->end = end; if (!(pa->bitmap = virBitmapNew((end-start)+1)) || VIR_STRDUP(pa->name, name) < 0) { virObjectUnref(pa); return NULL; } return pa; }
static virPortAllocatorPtr virPortAllocatorGet(void) { if (virPortAllocatorInitialize() < 0) return NULL; return virPortAllocatorInstance; }