Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
747fad66
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看板
提交
747fad66
编写于
7月 11, 2008
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Generic APIs for network XML configuration
上级
69582431
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
902 addition
and
0 deletion
+902
-0
ChangeLog
ChangeLog
+10
-0
include/libvirt/virterror.h
include/libvirt/virterror.h
+1
-0
po/POTFILES.in
po/POTFILES.in
+1
-0
src/Makefile.am
src/Makefile.am
+1
-0
src/network_conf.c
src/network_conf.c
+694
-0
src/network_conf.h
src/network_conf.h
+137
-0
src/virterror.c
src/virterror.c
+3
-0
src/xml.c
src/xml.c
+52
-0
src/xml.h
src/xml.h
+3
-0
未找到文件。
ChangeLog
浏览文件 @
747fad66
Fri Jul 11 11:35:59 BST 2008 Daniel P. Berrange <berrange@redhat.com>
Generic APIs for network XML configuration
* include/libvirt/virterror.h, src/virterror.c: Added new
scope VIR_FROM_NETWORK
* src/Makefile.am, po/POTFILES.in: Added network_conf.{c,h}
* src/xml.c, src/xml.h: Added virXPathULong function
* src/network_conf.c, src/network_conf.h: Added generic
APIs for network XML configuration
Fri Jul 11 10:55:59 BST 2008 Daniel P. Berrange <berrange@redhat.com>
Fri Jul 11 10:55:59 BST 2008 Daniel P. Berrange <berrange@redhat.com>
* src/qemu_conf.c: Fix booting off CDROM devices
* src/qemu_conf.c: Fix booting off CDROM devices
...
...
include/libvirt/virterror.h
浏览文件 @
747fad66
...
@@ -56,6 +56,7 @@ typedef enum {
...
@@ -56,6 +56,7 @@ typedef enum {
VIR_FROM_STATS_LINUX
,
/* Error in the Linux Stats code */
VIR_FROM_STATS_LINUX
,
/* Error in the Linux Stats code */
VIR_FROM_LXC
,
/* Error from Linux Container driver */
VIR_FROM_LXC
,
/* Error from Linux Container driver */
VIR_FROM_STORAGE
,
/* Error from storage driver */
VIR_FROM_STORAGE
,
/* Error from storage driver */
VIR_FROM_NETWORK
,
/* Error from network config */
}
virErrorDomain
;
}
virErrorDomain
;
...
...
po/POTFILES.in
浏览文件 @
747fad66
...
@@ -9,6 +9,7 @@ src/libvirt.c
...
@@ -9,6 +9,7 @@ src/libvirt.c
src/lxc_conf.c
src/lxc_conf.c
src/lxc_container.c
src/lxc_container.c
src/lxc_driver.c
src/lxc_driver.c
src/network_conf.c
src/openvz_conf.c
src/openvz_conf.c
src/openvz_driver.c
src/openvz_driver.c
src/proxy_internal.c
src/proxy_internal.c
...
...
src/Makefile.am
浏览文件 @
747fad66
...
@@ -52,6 +52,7 @@ CLIENT_SOURCES = \
...
@@ -52,6 +52,7 @@ CLIENT_SOURCES = \
driver.h
\
driver.h
\
proxy_internal.c proxy_internal.h
\
proxy_internal.c proxy_internal.h
\
conf.c conf.h
\
conf.c conf.h
\
network_conf.c network_conf.h
\
xm_internal.c xm_internal.h
\
xm_internal.c xm_internal.h
\
remote_internal.c remote_internal.h
\
remote_internal.c remote_internal.h
\
bridge.c bridge.h
\
bridge.c bridge.h
\
...
...
src/network_conf.c
0 → 100644
浏览文件 @
747fad66
此差异已折叠。
点击以展开。
src/network_conf.h
0 → 100644
浏览文件 @
747fad66
/*
* network_conf.h: network XML handling
*
* Copyright (C) 2006-2008 Red Hat, Inc.
* Copyright (C) 2006-2008 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Daniel P. Berrange <berrange@redhat.com>
*/
#ifndef __NETWORK_CONF_H__
#define __NETWORK_CONF_H__
#include "internal.h"
/* 2 possible types of forwarding */
enum
virNetworkForwardType
{
VIR_NETWORK_FORWARD_NONE
=
0
,
VIR_NETWORK_FORWARD_NAT
,
VIR_NETWORK_FORWARD_ROUTE
,
VIR_NETWORK_FORWARD_LAST
,
};
typedef
struct
_virNetworkDHCPRangeDef
virNetworkDHCPRangeDef
;
typedef
virNetworkDHCPRangeDef
*
virNetworkDHCPRangeDefPtr
;
struct
_virNetworkDHCPRangeDef
{
char
*
start
;
char
*
end
;
};
typedef
struct
_virNetworkDef
virNetworkDef
;
typedef
virNetworkDef
*
virNetworkDefPtr
;
struct
_virNetworkDef
{
unsigned
char
uuid
[
VIR_UUID_BUFLEN
];
char
*
name
;
char
*
bridge
;
/* Name of bridge device */
unsigned
long
delay
;
/* Bridge forward delay (ms) */
int
stp
:
1
;
/* Spanning tree protocol */
int
forwardType
;
/* One of virNetworkForwardType constants */
char
*
forwardDev
;
/* Destination device for forwarding */
char
*
ipAddress
;
/* Bridge IP address */
char
*
netmask
;
char
*
network
;
unsigned
int
nranges
;
/* Zero or more dhcp ranges */
virNetworkDHCPRangeDefPtr
ranges
;
};
typedef
struct
_virNetworkObj
virNetworkObj
;
typedef
virNetworkObj
*
virNetworkObjPtr
;
struct
_virNetworkObj
{
pid_t
dnsmasqPid
;
unsigned
int
active
:
1
;
unsigned
int
autostart
:
1
;
unsigned
int
persistent
:
1
;
char
*
configFile
;
/* Persistent config file path */
char
*
autostartLink
;
/* Symlink path for autostart */
virNetworkDefPtr
def
;
/* The current definition */
virNetworkDefPtr
newDef
;
/* New definition to activate at shutdown */
virNetworkObjPtr
next
;
};
static
inline
int
virNetworkIsActive
(
const
virNetworkObjPtr
net
)
{
return
net
->
active
;
}
virNetworkObjPtr
virNetworkFindByUUID
(
const
virNetworkObjPtr
nets
,
const
unsigned
char
*
uuid
);
virNetworkObjPtr
virNetworkFindByName
(
const
virNetworkObjPtr
nets
,
const
char
*
name
);
void
virNetworkDefFree
(
virNetworkDefPtr
def
);
void
virNetworkObjFree
(
virNetworkObjPtr
net
);
virNetworkObjPtr
virNetworkAssignDef
(
virConnectPtr
conn
,
virNetworkObjPtr
*
nets
,
const
virNetworkDefPtr
def
);
void
virNetworkRemoveInactive
(
virNetworkObjPtr
*
nets
,
const
virNetworkObjPtr
net
);
virNetworkDefPtr
virNetworkDefParseString
(
virConnectPtr
conn
,
const
char
*
xmlStr
);
virNetworkDefPtr
virNetworkDefParseFile
(
virConnectPtr
conn
,
const
char
*
filename
);
virNetworkDefPtr
virNetworkDefParseNode
(
virConnectPtr
conn
,
xmlDocPtr
xml
,
xmlNodePtr
root
);
char
*
virNetworkDefFormat
(
virConnectPtr
conn
,
const
virNetworkDefPtr
def
);
int
virNetworkSaveConfig
(
virConnectPtr
conn
,
const
char
*
configDir
,
const
char
*
autostartDir
,
virNetworkObjPtr
net
);
virNetworkObjPtr
virNetworkLoadConfig
(
virConnectPtr
conn
,
virNetworkObjPtr
*
nets
,
const
char
*
configDir
,
const
char
*
autostartDir
,
const
char
*
file
);
int
virNetworkLoadAllConfigs
(
virConnectPtr
conn
,
virNetworkObjPtr
*
nets
,
const
char
*
configDir
,
const
char
*
autostartDir
);
int
virNetworkDeleteConfig
(
virConnectPtr
conn
,
virNetworkObjPtr
net
);
#endif
/* __NETWORK_CONF_H__ */
src/virterror.c
浏览文件 @
747fad66
...
@@ -304,6 +304,9 @@ virDefaultErrorFunc(virErrorPtr err)
...
@@ -304,6 +304,9 @@ virDefaultErrorFunc(virErrorPtr err)
case
VIR_FROM_STORAGE
:
case
VIR_FROM_STORAGE
:
dom
=
"Storage "
;
dom
=
"Storage "
;
break
;
break
;
case
VIR_FROM_NETWORK
:
dom
=
"Network Config "
;
break
;
}
}
if
((
err
->
dom
!=
NULL
)
&&
(
err
->
code
!=
VIR_ERR_INVALID_DOMAIN
))
{
if
((
err
->
dom
!=
NULL
)
&&
(
err
->
code
!=
VIR_ERR_INVALID_DOMAIN
))
{
...
...
src/xml.c
浏览文件 @
747fad66
...
@@ -499,6 +499,58 @@ virXPathLong(const char *xpath, xmlXPathContextPtr ctxt, long *value)
...
@@ -499,6 +499,58 @@ virXPathLong(const char *xpath, xmlXPathContextPtr ctxt, long *value)
return
(
ret
);
return
(
ret
);
}
}
/**
* virXPathULong:
* @xpath: the XPath string to evaluate
* @ctxt: an XPath context
* @value: the returned long value
*
* Convenience function to evaluate an XPath number
*
* Returns 0 in case of success in which case @value is set,
* or -1 if the XPath evaluation failed or -2 if the
* value doesn't have a long format.
*/
int
virXPathULong
(
const
char
*
xpath
,
xmlXPathContextPtr
ctxt
,
unsigned
long
*
value
)
{
xmlXPathObjectPtr
obj
;
xmlNodePtr
relnode
;
int
ret
=
0
;
if
((
ctxt
==
NULL
)
||
(
xpath
==
NULL
)
||
(
value
==
NULL
))
{
virXMLError
(
NULL
,
VIR_ERR_INTERNAL_ERROR
,
_
(
"Invalid parameter to virXPathNumber()"
),
0
);
return
(
-
1
);
}
relnode
=
ctxt
->
node
;
obj
=
xmlXPathEval
(
BAD_CAST
xpath
,
ctxt
);
if
((
obj
!=
NULL
)
&&
(
obj
->
type
==
XPATH_STRING
)
&&
(
obj
->
stringval
!=
NULL
)
&&
(
obj
->
stringval
[
0
]
!=
0
))
{
char
*
conv
=
NULL
;
long
val
;
val
=
strtoul
((
const
char
*
)
obj
->
stringval
,
&
conv
,
10
);
if
(
conv
==
(
const
char
*
)
obj
->
stringval
)
{
ret
=
-
2
;
}
else
{
*
value
=
val
;
}
}
else
if
((
obj
!=
NULL
)
&&
(
obj
->
type
==
XPATH_NUMBER
)
&&
(
!
(
isnan
(
obj
->
floatval
))))
{
*
value
=
(
unsigned
long
)
obj
->
floatval
;
if
(
*
value
!=
obj
->
floatval
)
{
ret
=
-
2
;
}
}
else
{
ret
=
-
1
;
}
xmlXPathFreeObject
(
obj
);
ctxt
->
node
=
relnode
;
return
(
ret
);
}
/**
/**
* virXPathBoolean:
* virXPathBoolean:
* @xpath: the XPath string to evaluate
* @xpath: the XPath string to evaluate
...
...
src/xml.h
浏览文件 @
747fad66
...
@@ -26,6 +26,9 @@ int virXPathNumber (const char *xpath,
...
@@ -26,6 +26,9 @@ int virXPathNumber (const char *xpath,
int
virXPathLong
(
const
char
*
xpath
,
int
virXPathLong
(
const
char
*
xpath
,
xmlXPathContextPtr
ctxt
,
xmlXPathContextPtr
ctxt
,
long
*
value
);
long
*
value
);
int
virXPathULong
(
const
char
*
xpath
,
xmlXPathContextPtr
ctxt
,
unsigned
long
*
value
);
xmlNodePtr
virXPathNode
(
const
char
*
xpath
,
xmlNodePtr
virXPathNode
(
const
char
*
xpath
,
xmlXPathContextPtr
ctxt
);
xmlXPathContextPtr
ctxt
);
int
virXPathNodeSet
(
const
char
*
xpath
,
int
virXPathNodeSet
(
const
char
*
xpath
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录