提交 79c3fe4d 编写于 作者: M Michal Novotny 提交者: Eric Blake

Fix port value parsing for serial and parallel ports

this is the patch to fix the virDomainChrDefParseTargetXML() functionality
to parse the target port from XML if available. This is necessary for
multiple serial port support which is the second part of this patch.
Signed-off-by: NMichal Novotny <minovotn@redhat.com>
上级 33191b41
...@@ -2974,7 +2974,8 @@ virDomainChrDefParseTargetXML(virCapsPtr caps, ...@@ -2974,7 +2974,8 @@ virDomainChrDefParseTargetXML(virCapsPtr caps,
default: default:
portStr = virXMLPropString(cur, "port"); portStr = virXMLPropString(cur, "port");
if (portStr == NULL) { if (portStr == NULL) {
/* Not required. It will be assigned automatically later */ /* Set to negative value to indicate we should set it later */
def->target.port = -1;
break; break;
} }
...@@ -2984,6 +2985,7 @@ virDomainChrDefParseTargetXML(virCapsPtr caps, ...@@ -2984,6 +2985,7 @@ virDomainChrDefParseTargetXML(virCapsPtr caps,
portStr); portStr);
goto error; goto error;
} }
def->target.port = port;
break; break;
} }
...@@ -5547,7 +5549,15 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, ...@@ -5547,7 +5549,15 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
if (!chr) if (!chr)
goto error; goto error;
chr->target.port = i; if (chr->target.port == -1) {
int maxport = -1;
int j;
for (j = 0 ; j < i ; j++) {
if (def->parallels[j]->target.port > maxport)
maxport = def->parallels[j]->target.port;
}
chr->target.port = maxport + 1;
}
def->parallels[def->nparallels++] = chr; def->parallels[def->nparallels++] = chr;
} }
VIR_FREE(nodes); VIR_FREE(nodes);
...@@ -5567,7 +5577,15 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, ...@@ -5567,7 +5577,15 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
if (!chr) if (!chr)
goto error; goto error;
chr->target.port = i; if (chr->target.port == -1) {
int maxport = -1;
int j;
for (j = 0 ; j < i ; j++) {
if (def->serials[j]->target.port > maxport)
maxport = def->serials[j]->target.port;
}
chr->target.port = maxport + 1;
}
def->serials[def->nserials++] = chr; def->serials[def->nserials++] = chr;
} }
VIR_FREE(nodes); VIR_FREE(nodes);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册