
On Wed, May 06, 2009 at 06:12:21PM +0200, Pritesh Kothari wrote:
+ +static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) { + vboxGlobalData *data = conn->privateData; + virNetworkDefPtr def = NULL; + virNetworkPtr ret = NULL; + nsID *iid = NULL; + char *networkNameUtf8 = NULL; + int i = 0; + + if ((def = virNetworkDefParseString(conn, xml)) == NULL) + goto cleanup; + + if (VIR_ALLOC(iid) < 0) { + virReportOOMError(conn); + goto cleanup; + } + + if (VIR_ALLOC_N(networkNameUtf8, sizeof("HostInterfaceNetworking-") + + sizeof(def->name) + 1) < 0) {
Fairly sure that should be 'strlen()' there.
+ virReportOOMError(conn); + goto cleanup; + } + + strcpy (networkNameUtf8, "HostInterfaceNetworking-"); + strcat (networkNameUtf8, def->name);
That said, how about just using virAsprintf(&nmetworkNameUtf8.. instead of alloc+strcpy
+ + nsIDFromChar(iid, def->uuid); + + DEBUG("Network Name: %s", def->name); + DEBUG("Network UUID: " + "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", + (unsigned)iid->m0, (unsigned)iid->m1, + (unsigned)iid->m2, (unsigned)iid->m3[0], + (unsigned)iid->m3[1], (unsigned)iid->m3[2], + (unsigned)iid->m3[3], (unsigned)iid->m3[4], + (unsigned)iid->m3[5], (unsigned)iid->m3[6], + (unsigned)iid->m3[7]); + DEBUG("bridge : %s", def->bridge); + DEBUG("domain : %s", def->domain); + DEBUG("forwardType : %d", def->forwardType); + DEBUG("forwardDev : %s", def->forwardDev); + DEBUG("ipAddress : %s", def->ipAddress); + DEBUG("netmask : %s", def->netmask); + DEBUG("network : %s", def->network); + for (i = 0; i < def->nranges; i++) { + DEBUG("DHCP(%d) start: %s", i, def->ranges[i].start); + DEBUG("DHCP(%d) end : %s", i, def->ranges[i].end); + } + for (i = 0; i < def->nhosts; i++) { + DEBUG("DHCP Host(%d) mac : %s", i, def->hosts[i].mac); + DEBUG("DHCP Host(%d) name: %s", i, def->hosts[i].name); + DEBUG("DHCP Host(%d) ip : %s", i, def->hosts[i].ip); + }
This is rather overkill, since we already log the entire XML document passed into the public API which has all this info
+ +static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { + vboxGlobalData *data = conn->privateData; + virNetworkDefPtr def = NULL; + virNetworkPtr ret = NULL; + nsID *iid = NULL; + char *networkNameUtf8 = NULL; + int i = 0; + + /* vboxNetworkDefineXML() is not exactly "network definition" + * as the network is up and running, only the DHCP server is off, + * so you can always assign static IP and get the network running. + */ + if ((def = virNetworkDefParseString(conn, xml)) == NULL) + goto cleanup; + + if (VIR_ALLOC(iid) < 0) { + virReportOOMError(conn); + goto cleanup; + } + + if (VIR_ALLOC_N(networkNameUtf8, sizeof("HostInterfaceNetworking-") + + sizeof(def->name) + 1) < 0) { + virReportOOMError(conn); + goto cleanup; + } + + strcpy (networkNameUtf8, "HostInterfaceNetworking-"); + strcat (networkNameUtf8, def->name);
Same note here, as before, and is most other methods that follow Regards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|