On Wed, Jan 06, 2010 at 10:36:06PM +0900, Yuji NISHIDA wrote: > Dear all > > This is to fix multiple veth problem. > NETIF setting was overwritten after first CT because any CT could not be found by character name. > I found that old patch that we apparently forgot. > --- > src/openvz/openvz_conf.c | 38 ++++++++++++++++++++++++++++++++++++++ > src/openvz/openvz_conf.h | 1 + > src/openvz/openvz_driver.c | 2 +- > 3 files changed, 40 insertions(+), 1 deletions(-) > > diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c > index 43bbaf2..9fb9f7e 100644 > --- a/src/openvz/openvz_conf.c > +++ b/src/openvz/openvz_conf.c > @@ -948,3 +948,41 @@ static int openvzAssignUUIDs(void) > VIR_FREE(conf_dir); > return 0; > } > + > + > +/* > + * Return CTID from name > + * > + */ > + > +int openvzGetVEID(char *name) { name is actually a "const char *" > + char cmd[64]; > + int veid; > + FILE *fp; > + > + strcpy( cmd, VZLIST ); > + strcat( cmd, " " ); > + strcat( cmd, name ); > + strcat( cmd, " -ovpsid -H" ); and to avoid an horrible out of buffer write if name or VZLIST path is too long I fixed this to use virAsprintf() to allocate and format the command. > + if ((fp = popen(cmd, "r")) == NULL) { > + openvzError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", _("popen failed")); > + return -1; > + } > + > + if (fscanf(fp, "%d\n", &veid ) != 1) { > + if (feof(fp)) > + return -1; > + > + openvzError(NULL, VIR_ERR_INTERNAL_ERROR, > + "%s", _("Failed to parse vzlist output")); > + goto cleanup; > + } > + > + return veid; > + > + cleanup: > + fclose(fp); > + return -1; > +} > diff --git a/src/openvz/openvz_conf.h b/src/openvz/openvz_conf.h > index 00e18b4..518c267 100644 > --- a/src/openvz/openvz_conf.h > +++ b/src/openvz/openvz_conf.h > @@ -66,5 +66,6 @@ void openvzFreeDriver(struct openvz_driver *driver); > int strtoI(const char *str); > int openvzSetDefinedUUID(int vpsid, unsigned char *uuid); > unsigned int openvzGetNodeCPUs(void); > +int openvzGetVEID(char *name); made the parameter const > #endif /* OPENVZ_CONF_H */ > diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c > index 196fd8c..879b5d0 100644 > --- a/src/openvz/openvz_driver.c > +++ b/src/openvz/openvz_driver.c > @@ -667,7 +667,7 @@ openvzDomainSetNetwork(virConnectPtr conn, const char *vpsid, > if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) { > virBuffer buf = VIR_BUFFER_INITIALIZER; > char *dev_name_ve; > - int veid = strtoI(vpsid); > + int veid = openvzGetVEID(vpsid); > > //--netif_add ifname[,mac,host_ifname,host_mac] > ADD_ARG_LIT("--netif_add") ; That said the patch looks reasonable once those are fixed, so I pushed this, please double check, thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list