mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 13:47:13 +03:00
remote generator, client: Handle arguments with limited length
This adds length checks to all affected functions.
This commit is contained in:
parent
b5041a49ec
commit
15b64ef0ed
@ -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";
|
||||
|
@ -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;
|
||||
|
||||
/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */
|
||||
remoteDriverLock(priv);
|
||||
|
||||
/* remoteDispatchDomainMigratePerform has to be implemented manually */
|
||||
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;
|
||||
|
||||
rv = 0;
|
||||
|
||||
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 names: %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 names: %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 names: %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 names: %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 names: %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 names: %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 names: %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 names: %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 uuids: %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 names: %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 names: %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 names: %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 names: %d > %d"),
|
||||
_("too many remote undefineds: %d > %d"),
|
||||
maxnames, REMOTE_STORAGE_VOL_NAME_LIST_MAX);
|
||||
goto done;
|
||||
}
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user