Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
bf70fe48
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
bf70fe48
编写于
10月 10, 2007
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix virtual networking XML -> XM config file conversion & a mem leak
上级
aa826860
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
6 deletion
+35
-6
ChangeLog
ChangeLog
+7
-0
src/xm_internal.c
src/xm_internal.c
+25
-6
src/xml.c
src/xml.c
+3
-0
未找到文件。
ChangeLog
浏览文件 @
bf70fe48
Wed Oct 10 13:13:53 EST 2007 Daniel P. Berrange <berrange@redhat.com>
* src/xm_internal.c: Fix XML -> XM config file conversion to
include bridge name for virtual networks
* src/xml.c: Fix memory leak handling XML -> SEXPR conversion
of virtual network bridge devices
Mon Oct 8 17:01:53 CEST 2007 Daniel Veillard <veillard@redhat.com>
Mon Oct 8 17:01:53 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/xend_internal.c: applied patch from Beth Kon to fix
* src/xend_internal.c: applied patch from Beth Kon to fix
...
...
src/xm_internal.c
浏览文件 @
bf70fe48
...
@@ -1635,7 +1635,7 @@ static int xenXMParseXMLDisk(xmlNodePtr node, int hvm, int xendConfigVersion, ch
...
@@ -1635,7 +1635,7 @@ static int xenXMParseXMLDisk(xmlNodePtr node, int hvm, int xendConfigVersion, ch
return
(
ret
);
return
(
ret
);
}
}
static
char
*
xenXMParseXMLVif
(
xmlNodePtr
node
,
int
hvm
)
{
static
char
*
xenXMParseXMLVif
(
virConnectPtr
conn
,
xmlNodePtr
node
,
int
hvm
)
{
xmlNodePtr
cur
;
xmlNodePtr
cur
;
xmlChar
*
type
=
NULL
;
xmlChar
*
type
=
NULL
;
xmlChar
*
source
=
NULL
;
xmlChar
*
source
=
NULL
;
...
@@ -1645,6 +1645,7 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1645,6 +1645,7 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
int
typ
=
0
;
int
typ
=
0
;
char
*
buf
=
NULL
;
char
*
buf
=
NULL
;
int
buflen
=
0
;
int
buflen
=
0
;
char
*
bridge
=
NULL
;
type
=
xmlGetProp
(
node
,
BAD_CAST
"type"
);
type
=
xmlGetProp
(
node
,
BAD_CAST
"type"
);
if
(
type
!=
NULL
)
{
if
(
type
!=
NULL
)
{
...
@@ -1652,6 +1653,8 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1652,6 +1653,8 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
typ
=
0
;
typ
=
0
;
else
if
(
xmlStrEqual
(
type
,
BAD_CAST
"ethernet"
))
else
if
(
xmlStrEqual
(
type
,
BAD_CAST
"ethernet"
))
typ
=
1
;
typ
=
1
;
else
if
(
xmlStrEqual
(
type
,
BAD_CAST
"network"
))
typ
=
2
;
xmlFree
(
type
);
xmlFree
(
type
);
}
}
cur
=
node
->
children
;
cur
=
node
->
children
;
...
@@ -1662,8 +1665,10 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1662,8 +1665,10 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
if
(
typ
==
0
)
if
(
typ
==
0
)
source
=
xmlGetProp
(
cur
,
BAD_CAST
"bridge"
);
source
=
xmlGetProp
(
cur
,
BAD_CAST
"bridge"
);
else
else
if
(
typ
==
1
)
source
=
xmlGetProp
(
cur
,
BAD_CAST
"dev"
);
source
=
xmlGetProp
(
cur
,
BAD_CAST
"dev"
);
else
source
=
xmlGetProp
(
cur
,
BAD_CAST
"network"
);
}
else
if
((
mac
==
NULL
)
&&
}
else
if
((
mac
==
NULL
)
&&
(
xmlStrEqual
(
cur
->
name
,
BAD_CAST
"mac"
)))
{
(
xmlStrEqual
(
cur
->
name
,
BAD_CAST
"mac"
)))
{
mac
=
xmlGetProp
(
cur
,
BAD_CAST
"address"
);
mac
=
xmlGetProp
(
cur
,
BAD_CAST
"address"
);
...
@@ -1685,8 +1690,17 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1685,8 +1690,17 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
if
(
source
)
{
if
(
source
)
{
if
(
typ
==
0
)
{
if
(
typ
==
0
)
{
buflen
+=
8
+
strlen
((
const
char
*
)
source
);
buflen
+=
8
+
strlen
((
const
char
*
)
source
);
}
else
{
}
else
if
(
typ
==
1
)
{
buflen
+=
5
+
strlen
((
const
char
*
)
source
);
buflen
+=
5
+
strlen
((
const
char
*
)
source
);
}
else
{
virNetworkPtr
network
=
virNetworkLookupByName
(
conn
,
(
const
char
*
)
source
);
if
(
!
network
||
!
(
bridge
=
virNetworkGetBridgeName
(
network
)))
{
if
(
network
)
virNetworkFree
(
network
);
goto
cleanup
;
}
virNetworkFree
(
network
);
buflen
+=
8
+
strlen
(
bridge
);
}
}
}
}
if
(
hvm
)
if
(
hvm
)
...
@@ -1705,9 +1719,12 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1705,9 +1719,12 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
if
(
typ
==
0
)
{
if
(
typ
==
0
)
{
strcat
(
buf
,
",bridge="
);
strcat
(
buf
,
",bridge="
);
strcat
(
buf
,
(
const
char
*
)
source
);
strcat
(
buf
,
(
const
char
*
)
source
);
}
else
{
}
else
if
(
typ
==
1
)
{
strcat
(
buf
,
",
mac
="
);
strcat
(
buf
,
",
dev
="
);
strcat
(
buf
,
(
const
char
*
)
source
);
strcat
(
buf
,
(
const
char
*
)
source
);
}
else
{
strcat
(
buf
,
",bridge="
);
strcat
(
buf
,
bridge
);
}
}
}
}
if
(
hvm
)
{
if
(
hvm
)
{
...
@@ -1723,6 +1740,8 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
...
@@ -1723,6 +1740,8 @@ static char *xenXMParseXMLVif(xmlNodePtr node, int hvm) {
}
}
cleanup:
cleanup:
if
(
bridge
!=
NULL
)
free
(
bridge
);
if
(
mac
!=
NULL
)
if
(
mac
!=
NULL
)
xmlFree
(
mac
);
xmlFree
(
mac
);
if
(
source
!=
NULL
)
if
(
source
!=
NULL
)
...
@@ -2058,7 +2077,7 @@ virConfPtr xenXMParseXMLToConfig(virConnectPtr conn, const char *xml) {
...
@@ -2058,7 +2077,7 @@ virConfPtr xenXMParseXMLToConfig(virConnectPtr conn, const char *xml) {
vifs
->
list
=
NULL
;
vifs
->
list
=
NULL
;
for
(
i
=
0
;
i
<
obj
->
nodesetval
->
nodeNr
;
i
++
)
{
for
(
i
=
0
;
i
<
obj
->
nodesetval
->
nodeNr
;
i
++
)
{
virConfValuePtr
thisVif
;
virConfValuePtr
thisVif
;
char
*
vif
=
xenXMParseXMLVif
(
obj
->
nodesetval
->
nodeTab
[
i
],
hvm
);
char
*
vif
=
xenXMParseXMLVif
(
conn
,
obj
->
nodesetval
->
nodeTab
[
i
],
hvm
);
if
(
!
vif
)
if
(
!
vif
)
goto
error
;
goto
error
;
if
(
!
(
thisVif
=
malloc
(
sizeof
(
virConfValue
))))
{
if
(
!
(
thisVif
=
malloc
(
sizeof
(
virConfValue
))))
{
...
...
src/xml.c
浏览文件 @
bf70fe48
...
@@ -1023,9 +1023,12 @@ virDomainParseXMLIfDesc(virConnectPtr conn ATTRIBUTE_UNUSED, xmlNodePtr node, vi
...
@@ -1023,9 +1023,12 @@ virDomainParseXMLIfDesc(virConnectPtr conn ATTRIBUTE_UNUSED, xmlNodePtr node, vi
virNetworkPtr
network
=
virNetworkLookupByName
(
conn
,
(
const
char
*
)
source
);
virNetworkPtr
network
=
virNetworkLookupByName
(
conn
,
(
const
char
*
)
source
);
char
*
bridge
;
char
*
bridge
;
if
(
!
network
||
!
(
bridge
=
virNetworkGetBridgeName
(
network
)))
{
if
(
!
network
||
!
(
bridge
=
virNetworkGetBridgeName
(
network
)))
{
if
(
network
)
virNetworkFree
(
network
);
virXMLError
(
conn
,
VIR_ERR_NO_SOURCE
,
(
const
char
*
)
source
,
0
);
virXMLError
(
conn
,
VIR_ERR_NO_SOURCE
,
(
const
char
*
)
source
,
0
);
goto
error
;
goto
error
;
}
}
virNetworkFree
(
network
);
virBufferVSprintf
(
buf
,
"(bridge '%s')"
,
bridge
);
virBufferVSprintf
(
buf
,
"(bridge '%s')"
,
bridge
);
free
(
bridge
);
free
(
bridge
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录