[libvirt] [PATCH 3/3] networking API for hostonly networks in VirtualBox driver in libvirt
Daniel P. Berrange
berrange at redhat.com
Mon May 11 10:15:54 UTC 2009
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 :|
More information about the libvir-list
mailing list