> +/** > + * @name: Name from a wwnn/wwpn lookup > + * > + * Validate that the @name fetched from the wwnn/wwpn is a vHBA > + * and not an HBA as that should be a configuration error. It's only > + * possible to use an existing wwnn/wwpn of a vHBA because that's > + * what someone would have created using the node device create via XML > + * functionality. Using the HBA "just because" it has a wwnn/wwpn and > + * the characteristics of a vHBA is just not valid > + * > + * Returns true if the @name is OK, false on error > + */ > +static bool > +checkName(const char *name) > +{ > + unsigned int host_num; > + > + if (virSCSIHostGetNumber(name, &host_num) && I expressed my doubts about ^this if it fails...I was wrong, if that fails, we've got other problems, IOW virVHBAGetHostByWWN always must feed us a valid name, since it's fetching it from the filesystem, so we should not have any problem parsing it, thus extracting @host_num from it. So, I'm sorry I didn't see it right away, ACK. Erik > + virVHBAIsVportCapable(NULL, host_num)) > + return true; > + > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("the wwnn/wwpn for '%s' are assigned to an HBA"), name); > + return false; > +} > + > + > /* > * Using the host# name found via wwnn/wwpn lookup in the fc_host > * sysfs tree to get the parent 'scsi_host#' to ensure it matches. > @@ -288,6 +315,9 @@ createVport(virConnectPtr conn, > * this pool and we don't have to create the vHBA > */ > if ((name = virVHBAGetHostByWWN(NULL, fchost->wwnn, fchost->wwpn))) { > + if (!(checkName(name))) > + goto cleanup; > + > /* If a parent was provided, let's make sure the 'name' we've > * retrieved has the same parent. If not this will cause failure. */ > if (!fchost->parent || checkParent(conn, name, fchost->parent)) > -- > 2.9.4 > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list