[libvirt] [PATCH 1/2] parallels: fix crash in prlsdkAddNet in case of CT definition
Maxim Nestratov
mnestratov at parallels.com
Thu Apr 23 12:51:06 UTC 2015
23.04.2015 15:44, Dmitry Guryanov пишет:
> On 04/22/2015 10:49 PM, Maxim Nestratov wrote:
>> Since net->model is not defined for containers we shouldn't touch it
>>
>> Signed-off-by: Maxim Nestratov <mnestratov at parallels.com>
>> ---
>> src/parallels/parallels_sdk.c | 27 +++++++++++++++------------
>> 1 files changed, 15 insertions(+), 12 deletions(-)
>>
>> diff --git a/src/parallels/parallels_sdk.c
>> b/src/parallels/parallels_sdk.c
>> index 59ca62e..988bcc6 100644
>> --- a/src/parallels/parallels_sdk.c
>> +++ b/src/parallels/parallels_sdk.c
>> @@ -2728,7 +2728,8 @@ static const char *
>> prlsdkFormatMac(virMacAddrPtr mac, char *macstr)
>> static int prlsdkAddNet(PRL_HANDLE sdkdom,
>> parallelsConnPtr privconn,
>> - virDomainNetDefPtr net)
>> + virDomainNetDefPtr net,
>> + bool isCt)
>> {
>> PRL_RESULT pret;
>> PRL_HANDLE sdknet = PRL_INVALID_HANDLE;
>> @@ -2760,19 +2761,21 @@ static int prlsdkAddNet(PRL_HANDLE sdkdom,
>> pret = PrlVmDevNet_SetMacAddress(sdknet, macstr);
>> prlsdkCheckRetGoto(pret, cleanup);
>> - if (STREQ(net->model, "rtl8139")) {
>> - pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_RTL);
>> - } else if (STREQ(net->model, "e1000")) {
>> - pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_E1000);
>> - } else if (STREQ(net->model, "virtio")) {
>> - pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_VIRTIO);
>> - } else {
>> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> + if (!isCt) {
>> + if (STREQ(net->model, "rtl8139")) {
>> + pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_RTL);
>> + } else if (STREQ(net->model, "e1000")) {
>> + pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_E1000);
>> + } else if (STREQ(net->model, "virtio")) {
>> + pret = PrlVmDevNet_SetAdapterType(sdknet, PNT_VIRTIO);
>> + } else {
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> _("Specified network adapter model is not "
>> "supported by Parallels Cloud Server."));
>> - goto cleanup;
>> + goto cleanup;
>> + }
>> + prlsdkCheckRetGoto(pret, cleanup);
>> }
> Could you, please, show some warning in case adapter model is
> specified for a container?
>
Ok.
>> - prlsdkCheckRetGoto(pret, cleanup);
>> if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
>> if (STREQ(net->data.network.name,
>> PARALLELS_DOMAIN_ROUTED_NETWORK_NAME)) {
>> @@ -3156,7 +3159,7 @@ prlsdkDoApplyConfig(virConnectPtr conn,
>> }
>> for (i = 0; i < def->nnets; i++) {
>> - if (prlsdkAddNet(sdkdom, conn->privateData, def->nets[i]) < 0)
>> + if (prlsdkAddNet(sdkdom, conn->privateData, def->nets[i],
>> IS_CT(def)) < 0)
>> goto error;
>> }
>
More information about the libvir-list
mailing list