Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
15b64ef0
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
15b64ef0
编写于
4月 24, 2011
作者:
M
Matthias Bolte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remote generator, client: Handle arguments with limited length
This adds length checks to all affected functions.
上级
b5041a49
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
287 addition
and
256 deletion
+287
-256
daemon/remote_generator.pl
daemon/remote_generator.pl
+40
-9
src/remote/remote_client_bodies.c
src/remote/remote_client_bodies.c
+247
-20
src/remote/remote_driver.c
src/remote/remote_driver.c
+0
-227
未找到文件。
daemon/remote_generator.pl
浏览文件 @
15b64ef0
...
...
@@ -737,7 +737,6 @@ elsif ($opt_k) {
"
DomainEventsRegisterAny
",
"
DomainMigratePrepareTunnel
",
"
DomainOpenConsole
",
"
DomainPinVcpu
",
"
DomainSetSchedulerParameters
",
"
DomainSetMemoryParameters
",
"
DomainSetBlkioParameters
",
...
...
@@ -751,19 +750,13 @@ elsif ($opt_k) {
"
AuthSaslStep
",
"
AuthPolkit
",
"
CPUBaseline
",
"
DomainCreate
",
"
DomainDestroy
",
"
DomainMigrateFinish
",
"
NWFilterDefineXML
",
# public API and XDR protocol mismatch
"
DomainMigratePerform
",
"
DomainMigrateFinish2
",
"
FindStoragePoolSources
",
"
IsSecure
",
"
SupportsFeature
",
"
NodeGetCellsFreeMemory
",
"
ListDomains
",
"
SecretSetValue
",
"
GetURI
",
"
NodeDeviceDettach
",
"
NodeDeviceReset
",
...
...
@@ -809,6 +802,7 @@ elsif ($opt_k) {
# handle arguments to the function
my
@args_list
=
();
my
@vars_list
=
();
my
@args_check_list
=
();
my
@setters_list
=
();
my
$priv_src
=
"
conn
";
my
$priv_name
=
"
privateData
";
...
...
@@ -862,11 +856,30 @@ elsif ($opt_k) {
}
elsif
(
$args_member
=~
m/^remote_string (\S+);/
)
{
push
(
@args_list
,
"
const char *$1
");
push
(
@setters_list
,
"
args.$1 = $1 ? (char **)&$1 : NULL;
");
}
elsif
(
$args_member
=~
m/^remote_nonnull_string (\S+)<(\S+)>;/
)
{
push
(
@args_list
,
"
const char **$1
");
push
(
@args_list
,
"
unsigned int
${
1
}
len
");
push
(
@setters_list
,
"
args.$1.
${
1
}
_val = (char **)$1;
");
push
(
@setters_list
,
"
args.$1.
${
1
}
_len =
${
1
}
len;
");
push
(
@args_check_list
,
{
name
=>
"
\"
$1
\"
",
arg
=>
"
${
1
}
len
",
limit
=>
$
2
});
}
elsif
(
$args_member
=~
m/^remote_nonnull_string (\S+);/
)
{
push
(
@args_list
,
"
const char *$1
");
push
(
@setters_list
,
"
args.$1 = (char *)$1;
");
}
elsif
(
$args_member
=~
m/(\S+)<\S+>;/
)
{
# ignored for now
}
elsif
(
$args_member
=~
m/(\S+)<(\S+)>;/
)
{
if
(
$call
->
{
ProcName
}
eq
"
SecretSetValue
")
{
push
(
@args_list
,
"
const unsigned char *$1
");
push
(
@args_list
,
"
size_t
${
1
}
len
");
}
elsif
(
$call
->
{
ProcName
}
eq
"
DomainPinVcpu
")
{
push
(
@args_list
,
"
unsigned char *$1
");
push
(
@args_list
,
"
int
${
1
}
len
");
}
else
{
push
(
@args_list
,
"
const char *$1
");
push
(
@args_list
,
"
int
${
1
}
len
");
}
push
(
@setters_list
,
"
args.$1.
${
1
}
_val = (char *)$1;
");
push
(
@setters_list
,
"
args.$1.
${
1
}
_len =
${
1
}
len;
");
push
(
@args_check_list
,
{
name
=>
"
\"
$1
\"
",
arg
=>
"
${
1
}
len
",
limit
=>
$
2
});
}
elsif
(
$args_member
=~
m/^(.*) (\S+);/
)
{
my
$type_name
=
$
1
;
my
$arg_name
=
$
2
;
...
...
@@ -885,6 +898,9 @@ elsif ($opt_k) {
}
elsif
(
$arg_name
eq
"
nvcpus
"
and
$call
->
{
ProcName
}
eq
"
DomainSetVcpus
")
{
$type_name
=
"
unsigned int
";
}
elsif
(
$arg_name
eq
"
vcpu
"
and
$call
->
{
ProcName
}
eq
"
DomainPinVcpu
")
{
$type_name
=
"
unsigned int
";
}
}
...
...
@@ -913,6 +929,11 @@ elsif ($opt_k) {
push
(
@args_list
,
"
virConnectPtr conn
");
}
if
(
$call
->
{
ProcName
}
eq
"
NWFilterDefineXML
")
{
# fix public API and XDR protocol mismatch
push
(
@args_list
,
"
unsigned int flags ATTRIBUTE_UNUSED
");
}
# fix priv_name for the NumOf* functions
if
(
$priv_name
eq
"
privateData
"
and
!
(
$call
->
{
ProcName
}
=~
m/(Domains|DomainSnapshot)/
)
and
...
...
@@ -1086,6 +1107,16 @@ elsif ($opt_k) {
print
"
\n
";
print
"
remoteDriverLock(priv);
\n
";
foreach
my
$args_check
(
@args_check_list
)
{
print
"
\n
";
print
"
if (
$args_check
->{arg} >
$args_check
->{limit}) {
\n
";
print
"
remoteError(VIR_ERR_RPC,
\n
";
print
"
_(
\"
%s length greater than maximum: %d > %d
\"
),
\n
";
print
"
$args_check
->{name}, (int)
$args_check
->{arg},
$args_check
->{limit});
\n
";
print
"
goto done;
\n
";
print
"
}
\n
";
}
if
(
$single_ret_as_list
)
{
print
"
\n
";
print
"
if (
$single_ret_list_max_var
>
$single_ret_list_max_define
) {
\n
";
...
...
src/remote/remote_client_bodies.c
浏览文件 @
15b64ef0
...
...
@@ -14,7 +14,40 @@
/* remoteDispatchClose has to be implemented manually */
/* remoteDispatchCPUBaseline has to be implemented manually */
static
char
*
remoteCPUBaseline
(
virConnectPtr
conn
,
const
char
**
xmlCPUs
,
unsigned
int
xmlCPUslen
,
unsigned
int
flags
)
{
char
*
rv
=
NULL
;
struct
private_data
*
priv
=
conn
->
privateData
;
remote_cpu_baseline_args
args
;
remote_cpu_baseline_ret
ret
;
remoteDriverLock
(
priv
);
if
(
xmlCPUslen
>
REMOTE_CPU_BASELINE_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"xmlCPUs"
,
(
int
)
xmlCPUslen
,
REMOTE_CPU_BASELINE_MAX
);
goto
done
;
}
args
.
xmlCPUs
.
xmlCPUs_val
=
(
char
**
)
xmlCPUs
;
args
.
xmlCPUs
.
xmlCPUs_len
=
xmlCPUslen
;
args
.
flags
=
flags
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_CPU_BASELINE
,
(
xdrproc_t
)
xdr_remote_cpu_baseline_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_cpu_baseline_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
rv
=
ret
.
cpu
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
int
remoteCPUCompare
(
virConnectPtr
conn
,
const
char
*
xml
,
unsigned
int
flags
)
...
...
@@ -863,11 +896,118 @@ done:
/* remoteDispatchDomainMemoryStats has to be implemented manually */
/* remoteDispatchDomainMigrateFinish has to be implemented manually */
static
virDomainPtr
remoteDomainMigrateFinish
(
virConnectPtr
conn
,
const
char
*
dname
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
)
{
virDomainPtr
rv
=
NULL
;
struct
private_data
*
priv
=
conn
->
privateData
;
remote_domain_migrate_finish_args
args
;
remote_domain_migrate_finish_ret
ret
;
remoteDriverLock
(
priv
);
if
(
cookielen
>
REMOTE_MIGRATE_COOKIE_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"cookie"
,
(
int
)
cookielen
,
REMOTE_MIGRATE_COOKIE_MAX
);
goto
done
;
}
args
.
dname
=
(
char
*
)
dname
;
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_FINISH
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
rv
=
get_nonnull_domain
(
conn
,
ret
.
ddom
);
xdr_free
((
xdrproc_t
)
xdr_remote_domain_migrate_finish_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
virDomainPtr
remoteDomainMigrateFinish2
(
virConnectPtr
conn
,
const
char
*
dname
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
,
int
retcode
)
{
virDomainPtr
rv
=
NULL
;
struct
private_data
*
priv
=
conn
->
privateData
;
remote_domain_migrate_finish2_args
args
;
remote_domain_migrate_finish2_ret
ret
;
remoteDriverLock
(
priv
);
if
(
cookielen
>
REMOTE_MIGRATE_COOKIE_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"cookie"
,
(
int
)
cookielen
,
REMOTE_MIGRATE_COOKIE_MAX
);
goto
done
;
}
args
.
dname
=
(
char
*
)
dname
;
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
args
.
retcode
=
retcode
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_FINISH2
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish2_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish2_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
rv
=
get_nonnull_domain
(
conn
,
ret
.
ddom
);
xdr_free
((
xdrproc_t
)
xdr_remote_domain_migrate_finish2_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
int
remoteDomainMigratePerform
(
virDomainPtr
dom
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
,
const
char
*
dname
,
unsigned
long
resource
)
{
int
rv
=
-
1
;
struct
private_data
*
priv
=
dom
->
conn
->
privateData
;
remote_domain_migrate_perform_args
args
;
remoteDriverLock
(
priv
);
if
(
cookielen
>
REMOTE_MIGRATE_COOKIE_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"cookie"
,
(
int
)
cookielen
,
REMOTE_MIGRATE_COOKIE_MAX
);
goto
done
;
}
make_nonnull_domain
(
&
args
.
dom
,
dom
);
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
args
.
dname
=
dname
?
(
char
**
)
&
dname
:
NULL
;
args
.
resource
=
resource
;
if
(
call
(
dom
->
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_PERFORM
,
(
xdrproc_t
)
xdr_remote_domain_migrate_perform_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */
rv
=
0
;
/* remoteDispatchDomainMigratePerform has to be implemented manually */
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
/* remoteDispatchDomainMigratePrepare has to be implemented manually */
...
...
@@ -927,7 +1067,38 @@ done:
/* remoteDispatchDomainOpenConsole has to be implemented manually */
/* remoteDispatchDomainPinVcpu has to be implemented manually */
static
int
remoteDomainPinVcpu
(
virDomainPtr
dom
,
unsigned
int
vcpu
,
unsigned
char
*
cpumap
,
int
cpumaplen
)
{
int
rv
=
-
1
;
struct
private_data
*
priv
=
dom
->
conn
->
privateData
;
remote_domain_pin_vcpu_args
args
;
remoteDriverLock
(
priv
);
if
(
cpumaplen
>
REMOTE_CPUMAP_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"cpumap"
,
(
int
)
cpumaplen
,
REMOTE_CPUMAP_MAX
);
goto
done
;
}
make_nonnull_domain
(
&
args
.
dom
,
dom
);
args
.
vcpu
=
vcpu
;
args
.
cpumap
.
cpumap_val
=
(
char
*
)
cpumap
;
args
.
cpumap
.
cpumap_len
=
cpumaplen
;
if
(
call
(
dom
->
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_PIN_VCPU
,
(
xdrproc_t
)
xdr_remote_domain_pin_vcpu_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
rv
=
0
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
int
remoteDomainReboot
(
virDomainPtr
dom
,
unsigned
int
flags
)
...
...
@@ -1343,7 +1514,7 @@ remoteDomainSnapshotListNames(virDomainPtr dom, char **const names, int maxnames
if
(
maxnames
>
REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX
);
goto
done
;
}
...
...
@@ -1948,7 +2119,7 @@ remoteListDefinedDomains(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_DOMAIN_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_DOMAIN_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2008,7 +2179,7 @@ remoteListDefinedInterfaces(virConnectPtr conn, char **const names, int maxnames
if
(
maxnames
>
REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2068,7 +2239,7 @@ remoteListDefinedNetworks(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_NETWORK_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_NETWORK_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2128,7 +2299,7 @@ remoteListDefinedStoragePools(virConnectPtr conn, char **const names, int maxnam
if
(
maxnames
>
REMOTE_STORAGE_POOL_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_STORAGE_POOL_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2190,7 +2361,7 @@ remoteListInterfaces(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_INTERFACE_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_INTERFACE_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2250,7 +2421,7 @@ remoteListNetworks(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_NETWORK_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_NETWORK_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2310,7 +2481,7 @@ remoteListNWFilters(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_NWFILTER_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_NWFILTER_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2370,7 +2541,7 @@ remoteListSecrets(virConnectPtr conn, char **const uuids, int maxuuids)
if
(
maxuuids
>
REMOTE_SECRET_UUID_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
uuid
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxuuids
,
REMOTE_SECRET_UUID_LIST_MAX
);
goto
done
;
}
...
...
@@ -2430,7 +2601,7 @@ remoteListStoragePools(virConnectPtr conn, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_STORAGE_POOL_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_STORAGE_POOL_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -2905,7 +3076,7 @@ remoteNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames)
if
(
maxnames
>
REMOTE_NODE_DEVICE_CAPS_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_NODE_DEVICE_CAPS_LIST_MAX
);
goto
done
;
}
...
...
@@ -3081,7 +3252,7 @@ remoteNodeListDevices(virConnectPtr conn, const char *cap, char **const names, i
if
(
maxnames
>
REMOTE_NODE_DEVICE_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_NODE_DEVICE_NAME_LIST_MAX
);
goto
done
;
}
...
...
@@ -3387,7 +3558,32 @@ done:
return
rv
;
}
/* remoteDispatchNWFilterDefineXML has to be implemented manually */
static
virNWFilterPtr
remoteNWFilterDefineXML
(
virConnectPtr
conn
,
const
char
*
xml
,
unsigned
int
flags
ATTRIBUTE_UNUSED
)
{
virNWFilterPtr
rv
=
NULL
;
struct
private_data
*
priv
=
conn
->
nwfilterPrivateData
;
remote_nwfilter_define_xml_args
args
;
remote_nwfilter_define_xml_ret
ret
;
remoteDriverLock
(
priv
);
args
.
xml
=
(
char
*
)
xml
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_NWFILTER_DEFINE_XML
,
(
xdrproc_t
)
xdr_remote_nwfilter_define_xml_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_nwfilter_define_xml_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
rv
=
get_nonnull_nwfilter
(
conn
,
ret
.
nwfilter
);
xdr_free
((
xdrproc_t
)
xdr_remote_nwfilter_define_xml_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
char
*
remoteNWFilterGetXMLDesc
(
virNWFilterPtr
nwfilter
,
unsigned
int
flags
)
...
...
@@ -3607,7 +3803,38 @@ done:
return
rv
;
}
/* remoteDispatchSecretSetValue has to be implemented manually */
static
int
remoteSecretSetValue
(
virSecretPtr
secret
,
const
unsigned
char
*
value
,
size_t
valuelen
,
unsigned
int
flags
)
{
int
rv
=
-
1
;
struct
private_data
*
priv
=
secret
->
conn
->
secretPrivateData
;
remote_secret_set_value_args
args
;
remoteDriverLock
(
priv
);
if
(
valuelen
>
REMOTE_SECRET_VALUE_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"%s length greater than maximum: %d > %d"
),
"value"
,
(
int
)
valuelen
,
REMOTE_SECRET_VALUE_MAX
);
goto
done
;
}
make_nonnull_secret
(
&
args
.
secret
,
secret
);
args
.
value
.
value_val
=
(
char
*
)
value
;
args
.
value
.
value_len
=
valuelen
;
args
.
flags
=
flags
;
if
(
call
(
secret
->
conn
,
priv
,
0
,
REMOTE_PROC_SECRET_SET_VALUE
,
(
xdrproc_t
)
xdr_remote_secret_set_value_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
rv
=
0
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
int
remoteSecretUndefine
(
virSecretPtr
secret
)
...
...
@@ -3932,7 +4159,7 @@ remoteStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int max
if
(
maxnames
>
REMOTE_STORAGE_VOL_NAME_LIST_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"too many remote undefined
name
s: %d > %d"
),
_
(
"too many remote undefineds: %d > %d"
),
maxnames
,
REMOTE_STORAGE_VOL_NAME_LIST_MAX
);
goto
done
;
}
...
...
src/remote/remote_driver.c
浏览文件 @
15b64ef0
...
...
@@ -2212,42 +2212,6 @@ done:
return
rv
;
}
static
int
remoteDomainPinVcpu
(
virDomainPtr
domain
,
unsigned
int
vcpu
,
unsigned
char
*
cpumap
,
int
maplen
)
{
int
rv
=
-
1
;
remote_domain_pin_vcpu_args
args
;
struct
private_data
*
priv
=
domain
->
conn
->
privateData
;
remoteDriverLock
(
priv
);
if
(
maplen
>
REMOTE_CPUMAP_MAX
)
{
remoteError
(
VIR_ERR_RPC
,
_
(
"map length greater than maximum: %d > %d"
),
maplen
,
REMOTE_CPUMAP_MAX
);
goto
done
;
}
make_nonnull_domain
(
&
args
.
dom
,
domain
);
args
.
vcpu
=
vcpu
;
args
.
cpumap
.
cpumap_len
=
maplen
;
args
.
cpumap
.
cpumap_val
=
(
char
*
)
cpumap
;
if
(
call
(
domain
->
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_PIN_VCPU
,
(
xdrproc_t
)
xdr_remote_domain_pin_vcpu_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
rv
=
0
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
int
remoteDomainGetVcpus
(
virDomainPtr
domain
,
virVcpuInfoPtr
info
,
...
...
@@ -2441,76 +2405,6 @@ done:
return
rv
;
}
static
int
remoteDomainMigratePerform
(
virDomainPtr
domain
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
,
const
char
*
dname
,
unsigned
long
resource
)
{
int
rv
=
-
1
;
remote_domain_migrate_perform_args
args
;
struct
private_data
*
priv
=
domain
->
conn
->
privateData
;
remoteDriverLock
(
priv
);
make_nonnull_domain
(
&
args
.
dom
,
domain
);
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
args
.
dname
=
dname
==
NULL
?
NULL
:
(
char
**
)
&
dname
;
args
.
resource
=
resource
;
if
(
call
(
domain
->
conn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_PERFORM
,
(
xdrproc_t
)
xdr_remote_domain_migrate_perform_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
rv
=
0
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
virDomainPtr
remoteDomainMigrateFinish
(
virConnectPtr
dconn
,
const
char
*
dname
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
)
{
virDomainPtr
ddom
=
NULL
;
remote_domain_migrate_finish_args
args
;
remote_domain_migrate_finish_ret
ret
;
struct
private_data
*
priv
=
dconn
->
privateData
;
remoteDriverLock
(
priv
);
args
.
dname
=
(
char
*
)
dname
;
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
dconn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_FINISH
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
ddom
=
get_nonnull_domain
(
dconn
,
ret
.
ddom
);
xdr_free
((
xdrproc_t
)
&
xdr_remote_domain_migrate_finish_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
ddom
;
}
static
int
remoteDomainMigratePrepare2
(
virConnectPtr
dconn
,
char
**
cookie
,
int
*
cookielen
,
...
...
@@ -2569,43 +2463,6 @@ error:
goto
done
;
}
static
virDomainPtr
remoteDomainMigrateFinish2
(
virConnectPtr
dconn
,
const
char
*
dname
,
const
char
*
cookie
,
int
cookielen
,
const
char
*
uri
,
unsigned
long
flags
,
int
retcode
)
{
virDomainPtr
ddom
=
NULL
;
remote_domain_migrate_finish2_args
args
;
remote_domain_migrate_finish2_ret
ret
;
struct
private_data
*
priv
=
dconn
->
privateData
;
remoteDriverLock
(
priv
);
args
.
dname
=
(
char
*
)
dname
;
args
.
cookie
.
cookie_len
=
cookielen
;
args
.
cookie
.
cookie_val
=
(
char
*
)
cookie
;
args
.
uri
=
(
char
*
)
uri
;
args
.
flags
=
flags
;
args
.
retcode
=
retcode
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
dconn
,
priv
,
0
,
REMOTE_PROC_DOMAIN_MIGRATE_FINISH2
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish2_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_domain_migrate_finish2_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
ddom
=
get_nonnull_domain
(
dconn
,
ret
.
ddom
);
xdr_free
((
xdrproc_t
)
&
xdr_remote_domain_migrate_finish2_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
ddom
;
}
static
int
remoteDomainCreate
(
virDomainPtr
domain
)
{
...
...
@@ -3265,33 +3122,6 @@ remoteNWFilterClose(virConnectPtr conn)
return
remoteGenericClose
(
conn
,
&
conn
->
nwfilterPrivateData
);
}
static
virNWFilterPtr
remoteNWFilterDefineXML
(
virConnectPtr
conn
,
const
char
*
xmlDesc
,
unsigned
int
flags
ATTRIBUTE_UNUSED
)
{
virNWFilterPtr
net
=
NULL
;
remote_nwfilter_define_xml_args
args
;
remote_nwfilter_define_xml_ret
ret
;
struct
private_data
*
priv
=
conn
->
nwfilterPrivateData
;
remoteDriverLock
(
priv
);
args
.
xml
=
(
char
*
)
xmlDesc
;
memset
(
&
ret
,
0
,
sizeof
ret
);
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_NWFILTER_DEFINE_XML
,
(
xdrproc_t
)
xdr_remote_nwfilter_define_xml_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_nwfilter_define_xml_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
net
=
get_nonnull_nwfilter
(
conn
,
ret
.
nwfilter
);
xdr_free
((
xdrproc_t
)
&
xdr_remote_nwfilter_define_xml_ret
,
(
char
*
)
&
ret
);
done:
remoteDriverUnlock
(
priv
);
return
net
;
}
/*----------------------------------------------------------------------*/
static
int
...
...
@@ -4298,33 +4128,6 @@ remoteSecretClose (virConnectPtr conn)
return
remoteGenericClose
(
conn
,
&
conn
->
secretPrivateData
);
}
static
int
remoteSecretSetValue
(
virSecretPtr
secret
,
const
unsigned
char
*
value
,
size_t
value_size
,
unsigned
int
flags
)
{
int
rv
=
-
1
;
remote_secret_set_value_args
args
;
struct
private_data
*
priv
=
secret
->
conn
->
secretPrivateData
;
remoteDriverLock
(
priv
);
make_nonnull_secret
(
&
args
.
secret
,
secret
);
args
.
value
.
value_len
=
value_size
;
args
.
value
.
value_val
=
(
char
*
)
value
;
args
.
flags
=
flags
;
if
(
call
(
secret
->
conn
,
priv
,
0
,
REMOTE_PROC_SECRET_SET_VALUE
,
(
xdrproc_t
)
xdr_remote_secret_set_value_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_void
,
(
char
*
)
NULL
)
==
-
1
)
goto
done
;
rv
=
0
;
done:
remoteDriverUnlock
(
priv
);
return
rv
;
}
static
unsigned
char
*
remoteSecretGetValue
(
virSecretPtr
secret
,
size_t
*
value_size
,
unsigned
int
flags
)
...
...
@@ -4901,36 +4704,6 @@ done:
return
rv
;
}
static
char
*
remoteCPUBaseline
(
virConnectPtr
conn
,
const
char
**
xmlCPUs
,
unsigned
int
ncpus
,
unsigned
int
flags
)
{
struct
private_data
*
priv
=
conn
->
privateData
;
remote_cpu_baseline_args
args
;
remote_cpu_baseline_ret
ret
;
char
*
cpu
=
NULL
;
remoteDriverLock
(
priv
);
args
.
xmlCPUs
.
xmlCPUs_len
=
ncpus
;
args
.
xmlCPUs
.
xmlCPUs_val
=
(
char
**
)
xmlCPUs
;
args
.
flags
=
flags
;
memset
(
&
ret
,
0
,
sizeof
(
ret
));
if
(
call
(
conn
,
priv
,
0
,
REMOTE_PROC_CPU_BASELINE
,
(
xdrproc_t
)
xdr_remote_cpu_baseline_args
,
(
char
*
)
&
args
,
(
xdrproc_t
)
xdr_remote_cpu_baseline_ret
,
(
char
*
)
&
ret
)
==
-
1
)
goto
done
;
cpu
=
ret
.
cpu
;
done:
remoteDriverUnlock
(
priv
);
return
cpu
;
}
static
int
remoteDomainEventRegisterAny
(
virConnectPtr
conn
,
virDomainPtr
dom
,
int
eventID
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录