---
daemon/Makefile.am | 20 ++++-
daemon/qemu_dispatch.blacklist | 3 +
daemon/qemu_dispatch.whitelist | 1 +
daemon/remote_dispatch.blacklist | 37 ++++++++
daemon/remote_dispatch.whitelist | 169 +++++++++++++++++++++++++++++++++++
daemon/remote_generator.pl | 171 +++++++++++++-----------------------
src/Makefile.am | 24 ++++-
src/remote/qemu_client.blacklist | 3 +
src/remote/qemu_client.whitelist | 1 +
src/remote/remote_client.blacklist | 47 ++++++++++
src/remote/remote_client.whitelist | 159 +++++++++++++++++++++++++++++++++
11 files changed, 516 insertions(+), 119 deletions(-)
create mode 100644 daemon/qemu_dispatch.blacklist
create mode 100644 daemon/qemu_dispatch.whitelist
create mode 100644 daemon/remote_dispatch.blacklist
create mode 100644 daemon/remote_dispatch.whitelist
create mode 100644 src/remote/qemu_client.blacklist
create mode 100644 src/remote/qemu_client.whitelist
create mode 100644 src/remote/remote_client.blacklist
create mode 100644 src/remote/remote_client.whitelist
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 114adf3..6382878 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -30,7 +30,11 @@ DISTCLEANFILES =
EXTRA_DIST = \
remote_generator.pl \
remote_dispatch_bodies.h \
+ remote_dispatch.whitelist \
+ remote_dispatch.blacklist \
qemu_dispatch_bodies.h \
+ qemu_dispatch.whitelist \
+ qemu_dispatch.blacklist \
libvirtd.conf \
libvirtd.init.in \
libvirtd.upstart \
@@ -211,7 +215,11 @@ remote.c: $(DAEMON_GENERATED)
remote.h: $(DAEMON_GENERATED)
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
+REMOTE_PROTOCOL_WHITELIST = $(srcdir)/remote_dispatch.whitelist
+REMOTE_PROTOCOL_BLACKLIST = $(srcdir)/remote_dispatch.blacklist
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
+QEMU_PROTOCOL_WHITELIST = $(srcdir)/qemu_dispatch.whitelist
+QEMU_PROTOCOL_BLACKLIST = $(srcdir)/qemu_dispatch.blacklist
remote_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -p remote $(REMOTE_PROTOCOL) >
$@
@@ -225,8 +233,10 @@ remote_dispatch_args.h: $(srcdir)/remote_generator.pl
$(REMOTE_PROTOCOL)
remote_dispatch_ret.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -r remote $(REMOTE_PROTOCOL) >
$@
-remote_dispatch_bodies.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
- $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -b remote $(REMOTE_PROTOCOL) >
$@
+remote_dispatch_bodies.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) \
+ $(REMOTE_PROTOCOL_WHITELIST) $(REMOTE_PROTOCOL_BLACKLIST)
+ $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -b remote $(REMOTE_PROTOCOL) \
+ $(REMOTE_PROTOCOL_WHITELIST) $(REMOTE_PROTOCOL_BLACKLIST) > $@
qemu_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -p qemu $(QEMU_PROTOCOL) > $@
@@ -240,8 +250,10 @@ qemu_dispatch_args.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
qemu_dispatch_ret.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -r qemu $(QEMU_PROTOCOL) > $@
-qemu_dispatch_bodies.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
- $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -b qemu $(QEMU_PROTOCOL) > $@
+qemu_dispatch_bodies.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) \
+ $(QEMU_PROTOCOL_WHITELIST) $(QEMU_PROTOCOL_BLACKLIST)
+ $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -b qemu $(QEMU_PROTOCOL) \
+ $(QEMU_PROTOCOL_WHITELIST) $(QEMU_PROTOCOL_BLACKLIST) > $@
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
libvirtd.uml.logrotate libvirtd.logrotate
diff --git a/daemon/qemu_dispatch.blacklist b/daemon/qemu_dispatch.blacklist
new file mode 100644
index 0000000..3ed861f
--- /dev/null
+++ b/daemon/qemu_dispatch.blacklist
@@ -0,0 +1,3 @@
+# procedures in this list will not be handled by remote_generator.pl
+
+MonitorCommand
diff --git a/daemon/qemu_dispatch.whitelist b/daemon/qemu_dispatch.whitelist
new file mode 100644
index 0000000..dc1aca5
--- /dev/null
+++ b/daemon/qemu_dispatch.whitelist
@@ -0,0 +1 @@
+# procedures in this list will be handled by remote_generator.pl
diff --git a/daemon/remote_dispatch.blacklist b/daemon/remote_dispatch.blacklist
new file mode 100644
index 0000000..e53c8ae
--- /dev/null
+++ b/daemon/remote_dispatch.blacklist
@@ -0,0 +1,37 @@
+# procedures in this list will not be handled by remote_generator.pl
+
+AuthList
+AuthPolkit
+AuthSaslInit
+AuthSaslStart
+AuthSaslStep
+Close
+DomainBlockPeek
+DomainCreateWithFlags
+DomainEventsDeregister
+DomainEventsDeregisterAny
+DomainEventsRegister
+DomainEventsRegisterAny
+DomainGetBlkioParameters
+DomainGetMemoryParameters
+DomainGetSchedulerParameters
+DomainGetSchedulerType
+DomainGetSecurityLabel
+DomainGetVcpus
+DomainMigratePrepareTunnel
+DomainOpenConsole
+DomainPinVcpu
+DomainSetBlkioParameters
+DomainSetMemoryParameters
+DomainSetSchedulerParameters
+DomainMemoryPeek
+DomainMemoryStats
+DomainMigratePrepare
+DomainMigratePrepare2
+GetType
+NodeDeviceGetParent
+NodeGetSecurityModel
+Open
+SecretGetValue
+StorageVolDownload
+StorageVolUpload
diff --git a/daemon/remote_dispatch.whitelist b/daemon/remote_dispatch.whitelist
new file mode 100644
index 0000000..3f8e83b
--- /dev/null
+++ b/daemon/remote_dispatch.whitelist
@@ -0,0 +1,169 @@
+# procedures in this list will be handled by remote_generator.pl
+
+CPUBaseline
+CPUCompare
+DomainAbortJob
+DomainAttachDevice
+DomainAttachDeviceFlags
+DomainBlockStats
+DomainCoreDump
+DomainCreate
+DomainCreateXML
+DomainDefineXML
+DomainDestroy
+DomainDetachDevice
+DomainDetachDeviceFlags
+DomainGetAutostart
+DomainGetBlockInfo
+DomainGetInfo
+DomainGetJobInfo
+DomainGetMaxMemory
+DomainGetMaxVcpus
+DomainGetOSType
+DomainGetVcpusFlags
+DomainGetXMLDesc
+DomainHasCurrentSnapshot
+DomainHasManagedSaveImage
+DomainInterfaceStats
+DomainIsActive
+DomainIsPersistent
+DomainIsUpdated
+DomainLookupByID
+DomainLookupByName
+DomainLookupByUUID
+DomainManagedSave
+DomainManagedSaveRemove
+DomainMigrateFinish
+DomainMigrateFinish2
+DomainMigratePerform
+DomainMigrateSetMaxDowntime
+DomainMigrateSetMaxSpeed
+DomainReboot
+DomainRestore
+DomainResume
+DomainRevertToSnapshot
+DomainSave
+DomainSetAutostart
+DomainSetMaxMemory
+DomainSetMemory
+DomainSetMemoryFlags
+DomainSetVcpus
+DomainSetVcpusFlags
+DomainShutdown
+DomainSnapshotCreateXML
+DomainSnapshotCurrent
+DomainSnapshotDelete
+DomainSnapshotGetXMLDesc
+DomainSnapshotListNames
+DomainSnapshotLookupByName
+DomainSnapshotNum
+DomainSuspend
+DomainUndefine
+DomainUpdateDeviceFlags
+DomainXMLFromNative
+DomainXMLToNative
+FindStoragePoolSources
+GetCapabilities
+GetHostname
+GetLibVersion
+GetMaxVcpus
+GetSysinfo
+GetURI
+GetVersion
+InterfaceCreate
+InterfaceDefineXML
+InterfaceDestroy
+InterfaceGetXMLDesc
+InterfaceIsActive
+InterfaceLookupByMACString
+InterfaceLookupByName
+InterfaceUndefine
+IsSecure
+ListDefinedDomains
+ListDefinedInterfaces
+ListDefinedNetworks
+ListDefinedStoragePools
+ListDomains
+ListInterfaces
+ListNetworks
+ListNWFilters
+ListSecrets
+ListStoragePools
+NetworkCreate
+NetworkCreateXML
+NetworkDefineXML
+NetworkDestroy
+NetworkGetAutostart
+NetworkGetBridgeName
+NetworkGetXMLDesc
+NetworkIsActive
+NetworkIsPersistent
+NetworkLookupByName
+NetworkLookupByUUID
+NetworkSetAutostart
+NetworkUndefine
+NodeDeviceCreateXML
+NodeDeviceDestroy
+NodeDeviceDettach
+NodeDeviceGetXMLDesc
+NodeDeviceListCaps
+NodeDeviceLookupByName
+NodeDeviceNumOfCaps
+NodeDeviceReAttach
+NodeDeviceReset
+NodeGetCellsFreeMemory
+NodeGetFreeMemory
+NodeGetInfo
+NodeListDevices
+NodeNumOfDevices
+NumOfDefinedDomains
+NumOfDefinedInterfaces
+NumOfDefinedNetworks
+NumOfDefinedStoragePools
+NumOfDomains
+NumOfInterfaces
+NumOfNetworks
+NumOfNWFilters
+NumOfSecrets
+NumOfStoragePools
+NWFilterDefineXML
+NWFilterGetXMLDesc
+NWFilterLookupByName
+NWFilterLookupByUUID
+NWFilterUndefine
+SecretDefineXML
+SecretGetXMLDesc
+SecretLookupByUsage
+SecretLookupByUUID
+SecretSetValue
+SecretUndefine
+StoragePoolBuild
+StoragePoolCreate
+StoragePoolCreateXML
+StoragePoolDefineXML
+StoragePoolDelete
+StoragePoolDestroy
+StoragePoolGetAutostart
+StoragePoolGetInfo
+StoragePoolGetXMLDesc
+StoragePoolIsActive
+StoragePoolIsPersistent
+StoragePoolListVolumes
+StoragePoolLookupByName
+StoragePoolLookupByUUID
+StoragePoolLookupByVolume
+StoragePoolNumOfVolumes
+StoragePoolRefresh
+StoragePoolSetAutostart
+StoragePoolUndefine
+StorageVolCreateXML
+StorageVolCreateXMLFrom
+StorageVolDelete
+StorageVolGetInfo
+StorageVolGetPath
+StorageVolGetXMLDesc
+StorageVolLookupByKey
+StorageVolLookupByName
+StorageVolLookupByPath
+StorageVolWipe
+SupportsFeature
diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
index e57f34a..4c72e99 100755
--- a/daemon/remote_generator.pl
+++ b/daemon/remote_generator.pl
@@ -23,9 +23,29 @@ use Getopt::Std;
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c, $opt_b, $opt_k);
getopts ('ptardcbk');
-my $structprefix = $ARGV[0];
+my $structprefix = shift or die "missing prefix argument";
+my $protocol = shift or die "missing protocol argument";
+my $whitelistname;
+my $blacklistname;
+my @whitelist;
+my @blacklist;
+
+if ($opt_b or $opt_k) {
+ $whitelistname = shift or die "missing whitelist argument";
+ $blacklistname = shift or die "missing blacklist argument";
+
+ open(WHITELIST, "<$whitelistname") or die "cannot open
$whitelistname: $!";
+ @whitelist = <WHITELIST>;
+ close(WHITELIST);
+ chomp(@whitelist);
+
+ open(BLACKLIST, "<$blacklistname") or die "cannot open
$blacklistname: $!";
+ @blacklist = <BLACKLIST>;
+ close(BLACKLIST);
+ chomp(@blacklist);
+}
+
my $procprefix = uc $structprefix;
-shift;
# Convert name_of_call to NameOfCall.
sub name_to_ProcName {
@@ -59,7 +79,9 @@ my $collect_args_members = 0;
my $collect_ret_members = 0;
my $last_name;
-while (<>) {
+open PROTOCOL, "<$protocol" or die "cannot open $protocol: $!";
+
+while (<PROTOCOL>) {
if ($collect_args_members) {
if (/^};/) {
$collect_args_members = 0;
@@ -238,64 +260,32 @@ elsif ($opt_t) {
# Bodies for dispatch functions ("remote_dispatch_bodies.h").
elsif ($opt_b) {
- # list of functions that currently are not generatable
- my @ungeneratable;
-
- if ($structprefix eq "remote") {
- @ungeneratable = ("Close",
- "DomainEventsDeregisterAny",
- "DomainEventsRegisterAny",
- "DomainMigratePrepareTunnel",
- "DomainOpenConsole",
- "DomainPinVcpu",
- "DomainSetSchedulerParameters",
- "DomainSetMemoryParameters",
- "DomainSetBlkioParameters",
- "Open",
- "StorageVolUpload",
- "StorageVolDownload",
-
- "AuthList",
- "AuthSaslInit",
- "AuthSaslStart",
- "AuthSaslStep",
- "AuthPolkit",
-
- "DomainBlockPeek",
- "DomainCreateWithFlags",
- "DomainEventsDeregister",
- "DomainEventsRegister",
- "DomainGetBlkioParameters",
- "DomainGetMemoryParameters",
- "DomainGetSchedulerParameters",
- "DomainGetSchedulerType",
- "DomainGetSecurityLabel",
- "DomainGetVcpus",
- "DomainMemoryPeek",
- "DomainMemoryStats",
- "DomainMigratePrepare",
- "DomainMigratePrepare2",
- "GetType",
- "NodeDeviceGetParent",
- "NodeGetSecurityModel",
- "SecretGetValue");
- } elsif ($structprefix eq "qemu") {
- @ungeneratable = ("MonitorCommand");
- }
-
- my %ug = map { $_ => 1 } @ungeneratable;
+ my %white = map { $_ => 1 } @whitelist;
+ my %black = map { $_ => 1 } @blacklist;
my @keys = sort (keys %calls);
foreach (@keys) {
# skip things which are REMOTE_MESSAGE
next if $calls{$_}->{msg};
- if (exists($ug{$calls{$_}->{ProcName}})) {
+ # ignore procedures on the blacklist
+ if (exists($black{$calls{$_}->{ProcName}})) {
+ if (exists($white{$calls{$_}->{ProcName}})) {
+ die "procedure $calls{$_}->{ProcName} on whitelist and
blacklist";
+ }
+
print "\n/* ${structprefix}Dispatch$calls{$_}->{ProcName} has "
.
"to be implemented manually */\n";
next;
}
+ # complain about procedures not on the whitelist
+ if (! exists($white{$calls{$_}->{ProcName}})) {
+ die "procedure $calls{$_}->{ProcName} not on whitelist nor on "
.
+ "blacklist. add it to the whitelist and let the generator " .
+ "handle it or add it to the blacklist and implement it
yourself";
+ }
+
my $has_node_device = 0;
my @vars_list = ();
my @optionals_list = ();
@@ -550,6 +540,8 @@ elsif ($opt_b) {
} else {
$single_ret_by_ref = 1;
}
+ } elsif ($ret_member =~ m/^(\/)?\*/) {
+ # ignore comments
} else {
die "unhandled type for return value: $ret_member";
}
@@ -756,63 +748,8 @@ elsif ($opt_b) {
# Bodies for client functions ("remote_client_bodies.h").
elsif ($opt_k) {
- # list of functions that currently are not generatable
- my @ungeneratable;
-
- if ($structprefix eq "remote") {
- @ungeneratable = ("Close",
- "DomainEventsDeregisterAny",
- "DomainEventsRegisterAny",
- "DomainMigratePrepareTunnel",
- "DomainOpenConsole",
- "DomainSetSchedulerParameters",
- "DomainSetMemoryParameters",
- "DomainSetBlkioParameters",
- "Open",
- "StorageVolUpload",
- "StorageVolDownload",
-
- "AuthList",
- "AuthSaslInit",
- "AuthSaslStart",
- "AuthSaslStep",
- "AuthPolkit",
-
- "DomainCreate",
- "DomainDestroy",
- "FindStoragePoolSources",
- "IsSecure",
- "SupportsFeature",
- "NodeGetCellsFreeMemory",
- "ListDomains",
- "GetURI",
- "NodeDeviceDettach",
- "NodeDeviceReset",
- "NodeDeviceReAttach",
-
- "DomainBlockPeek",
- "DomainCreateWithFlags",
- "DomainEventsDeregister",
- "DomainEventsRegister",
- "DomainGetBlkioParameters",
- "DomainGetMemoryParameters",
- "DomainGetSchedulerParameters",
- "DomainGetSchedulerType",
- "DomainGetSecurityLabel",
- "DomainGetVcpus",
- "DomainMemoryPeek",
- "DomainMemoryStats",
- "DomainMigratePrepare",
- "DomainMigratePrepare2",
- "GetType",
- "NodeDeviceGetParent",
- "NodeGetSecurityModel",
- "SecretGetValue");
- } elsif ($structprefix eq "qemu") {
- @ungeneratable = ("MonitorCommand");
- }
-
- my %ug = map { $_ => 1 } @ungeneratable;
+ my %white = map { $_ => 1 } @whitelist;
+ my %black = map { $_ => 1 } @blacklist;
my @keys = sort (keys %calls);
foreach (@keys) {
@@ -821,12 +758,24 @@ elsif ($opt_k) {
# skip things which are REMOTE_MESSAGE
next if $call->{msg};
- if (exists($ug{$call->{ProcName}})) {
- print "\n/* ${structprefix}Dispatch$call->{ProcName} has to " .
- "be implemented manually */\n";
+ # ignore procedures on the blacklist
+ if (exists($black{$call->{ProcName}})) {
+ if (exists($white{$call->{ProcName}})) {
+ die "procedure $call->{ProcName} on whitelist and
blacklist";
+ }
+
+ print "\n/* ${structprefix}Dispatch$calls{$_}->{ProcName} has "
.
+ "to be implemented manually */\n";
next;
}
+ # complain about procedures not on the whitelist
+ if (! exists($white{$call->{ProcName}})) {
+ die "procedure $call->{ProcName} not on whitelist nor on " .
+ "blacklist. add it to the whitelist and let the generator " .
+ "handle it or add it to the blacklist and implement it
yourself";
+ }
+
# handle arguments to the function
my @args_list = ();
my @vars_list = ();
@@ -1095,6 +1044,8 @@ elsif ($opt_k) {
} else {
die "unhandled type for return value: $ret_member";
}
+ } elsif ($ret_member =~ m/^(\/)?\*/) {
+ # ignore comments
} else {
die "unhandled type for return value: $ret_member";
}
diff --git a/src/Makefile.am b/src/Makefile.am
index 75ece49..110615f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -163,18 +163,32 @@ REMOTE_DRIVER_GENERATED = \
$(srcdir)/remote/qemu_client_bodies.h
REMOTE_PROTOCOL = $(srcdir)/remote/remote_protocol.x
+REMOTE_PROTOCOL_WHITELIST = $(srcdir)/remote/remote_client.whitelist
+REMOTE_PROTOCOL_BLACKLIST = $(srcdir)/remote/remote_client.blacklist
QEMU_PROTOCOL = $(srcdir)/remote/qemu_protocol.x
-REMOTE_DRIVER_PROTOCOL = $(REMOTE_PROTOCOL) $(QEMU_PROTOCOL)
+QEMU_PROTOCOL_WHITELIST = $(srcdir)/remote/qemu_client.whitelist
+QEMU_PROTOCOL_BLACKLIST = $(srcdir)/remote/qemu_client.blacklist
+REMOTE_DRIVER_PROTOCOL = \
+ $(REMOTE_PROTOCOL) \
+ $(REMOTE_PROTOCOL_WHITELIST) \
+ $(REMOTE_PROTOCOL_BLACKLIST) \
+ $(QEMU_PROTOCOL) \
+ $(QEMU_PROTOCOL_WHITELIST) \
+ $(QEMU_PROTOCOL_BLACKLIST)
$(srcdir)/remote/remote_client_bodies.h: $(REMOTE_PROTOCOL) \
- $(top_srcdir)/daemon/remote_generator.pl
+ $(top_srcdir)/daemon/remote_generator.pl \
+ $(REMOTE_PROTOCOL_WHITELIST) $(REMOTE_PROTOCOL_BLACKLIST)
$(AM_V_GEN)perl -w $(top_srcdir)/daemon/remote_generator.pl \
- -c -k remote $(REMOTE_PROTOCOL) > $@
+ -c -k remote $(REMOTE_PROTOCOL) \
+ $(REMOTE_PROTOCOL_WHITELIST) $(REMOTE_PROTOCOL_BLACKLIST) > $@
$(srcdir)/remote/qemu_client_bodies.h: $(QEMU_PROTOCOL) \
- $(top_srcdir)/daemon/remote_generator.pl
+ $(top_srcdir)/daemon/remote_generator.pl \
+ $(QEMU_PROTOCOL_WHITELIST) $(QEMU_PROTOCOL_BLACKLIST)
$(AM_V_GEN)perl -w $(top_srcdir)/daemon/remote_generator.pl \
- -k qemu $(QEMU_PROTOCOL) > $@
+ -k qemu $(QEMU_PROTOCOL) \
+ $(QEMU_PROTOCOL_WHITELIST) $(QEMU_PROTOCOL_BLACKLIST) > $@
REMOTE_DRIVER_SOURCES = \
gnutls_1_0_compat.h \
diff --git a/src/remote/qemu_client.blacklist b/src/remote/qemu_client.blacklist
new file mode 100644
index 0000000..3ed861f
--- /dev/null
+++ b/src/remote/qemu_client.blacklist
@@ -0,0 +1,3 @@
+# procedures in this list will not be handled by remote_generator.pl
+
+MonitorCommand
diff --git a/src/remote/qemu_client.whitelist b/src/remote/qemu_client.whitelist
new file mode 100644
index 0000000..dc1aca5
--- /dev/null
+++ b/src/remote/qemu_client.whitelist
@@ -0,0 +1 @@
+# procedures in this list will be handled by remote_generator.pl
diff --git a/src/remote/remote_client.blacklist b/src/remote/remote_client.blacklist
new file mode 100644
index 0000000..9406760
--- /dev/null
+++ b/src/remote/remote_client.blacklist
@@ -0,0 +1,47 @@
+# procedures in this list will not be handled by remote_generator.pl
+
+AuthList
+AuthPolkit
+AuthSaslInit
+AuthSaslStart
+AuthSaslStep
+Close
+DomainBlockPeek
+DomainCreate
+DomainCreateWithFlags
+DomainDestroy
+DomainEventsDeregister
+DomainEventsDeregisterAny
+DomainEventsRegister
+DomainEventsRegisterAny
+DomainGetBlkioParameters
+DomainGetMemoryParameters
+DomainGetSchedulerParameters
+DomainGetSchedulerType
+DomainGetSecurityLabel
+DomainGetVcpus
+DomainMemoryPeek
+DomainMemoryStats
+DomainMigratePrepare
+DomainMigratePrepare2
+DomainMigratePrepareTunnel
+DomainOpenConsole
+DomainSetBlkioParameters
+DomainSetMemoryParameters
+DomainSetSchedulerParameters
+FindStoragePoolSources
+GetType
+GetURI
+IsSecure
+ListDomains
+NodeDeviceDettach
+NodeDeviceGetParent
+NodeDeviceReAttach
+NodeDeviceReset
+NodeGetCellsFreeMemory
+NodeGetSecurityModel
+Open
+SecretGetValue
+StorageVolDownload
+StorageVolUpload
+SupportsFeature
diff --git a/src/remote/remote_client.whitelist b/src/remote/remote_client.whitelist
new file mode 100644
index 0000000..29ef601
--- /dev/null
+++ b/src/remote/remote_client.whitelist
@@ -0,0 +1,159 @@
+# procedures in this list will be handled by remote_generator.pl
+
+CPUBaseline
+CPUCompare
+DomainAbortJob
+DomainAttachDevice
+DomainAttachDeviceFlags
+DomainBlockStats
+DomainCoreDump
+DomainCreateXML
+DomainDefineXML
+DomainDetachDevice
+DomainDetachDeviceFlags
+DomainGetAutostart
+DomainGetBlockInfo
+DomainGetInfo
+DomainGetJobInfo
+DomainGetMaxMemory
+DomainGetMaxVcpus
+DomainGetOSType
+DomainGetVcpusFlags
+DomainGetXMLDesc
+DomainHasCurrentSnapshot
+DomainHasManagedSaveImage
+DomainInterfaceStats
+DomainIsActive
+DomainIsPersistent
+DomainIsUpdated
+DomainLookupByID
+DomainLookupByName
+DomainLookupByUUID
+DomainManagedSave
+DomainManagedSaveRemove
+DomainMigrateFinish
+DomainMigrateFinish2
+DomainMigratePerform
+DomainMigrateSetMaxDowntime
+DomainMigrateSetMaxSpeed
+DomainPinVcpu
+DomainReboot
+DomainRestore
+DomainResume
+DomainRevertToSnapshot
+DomainSave
+DomainSetAutostart
+DomainSetMaxMemory
+DomainSetMemory
+DomainSetMemoryFlags
+DomainSetVcpus
+DomainSetVcpusFlags
+DomainShutdown
+DomainSnapshotCreateXML
+DomainSnapshotCurrent
+DomainSnapshotDelete
+DomainSnapshotGetXMLDesc
+DomainSnapshotListNames
+DomainSnapshotLookupByName
+DomainSnapshotNum
+DomainSuspend
+DomainUndefine
+DomainUpdateDeviceFlags
+DomainXMLFromNative
+DomainXMLToNative
+GetCapabilities
+GetHostname
+GetLibVersion
+GetMaxVcpus
+GetSysinfo
+GetVersion
+InterfaceCreate
+InterfaceDefineXML
+InterfaceDestroy
+InterfaceGetXMLDesc
+InterfaceIsActive
+InterfaceLookupByMACString
+InterfaceLookupByName
+InterfaceUndefine
+ListDefinedDomains
+ListDefinedInterfaces
+ListDefinedNetworks
+ListDefinedStoragePools
+ListInterfaces
+ListNetworks
+ListNWFilters
+ListSecrets
+ListStoragePools
+NetworkCreate
+NetworkCreateXML
+NetworkDefineXML
+NetworkDestroy
+NetworkGetAutostart
+NetworkGetBridgeName
+NetworkGetXMLDesc
+NetworkIsActive
+NetworkIsPersistent
+NetworkLookupByName
+NetworkLookupByUUID
+NetworkSetAutostart
+NetworkUndefine
+NodeDeviceCreateXML
+NodeDeviceDestroy
+NodeDeviceGetXMLDesc
+NodeDeviceListCaps
+NodeDeviceLookupByName
+NodeDeviceNumOfCaps
+NodeGetFreeMemory
+NodeGetInfo
+NodeListDevices
+NodeNumOfDevices
+NumOfDefinedDomains
+NumOfDefinedInterfaces
+NumOfDefinedNetworks
+NumOfDefinedStoragePools
+NumOfDomains
+NumOfInterfaces
+NumOfNetworks
+NumOfNWFilters
+NumOfSecrets
+NumOfStoragePools
+NWFilterDefineXML
+NWFilterGetXMLDesc
+NWFilterLookupByName
+NWFilterLookupByUUID
+NWFilterUndefine
+SecretDefineXML
+SecretGetXMLDesc
+SecretLookupByUsage
+SecretLookupByUUID
+SecretSetValue
+SecretUndefine
+StoragePoolBuild
+StoragePoolCreate
+StoragePoolCreateXML
+StoragePoolDefineXML
+StoragePoolDelete
+StoragePoolDestroy
+StoragePoolGetAutostart
+StoragePoolGetInfo
+StoragePoolGetXMLDesc
+StoragePoolIsActive
+StoragePoolIsPersistent
+StoragePoolListVolumes
+StoragePoolLookupByName
+StoragePoolLookupByUUID
+StoragePoolLookupByVolume
+StoragePoolNumOfVolumes
+StoragePoolRefresh
+StoragePoolSetAutostart
+StoragePoolUndefine
+StorageVolCreateXML
+StorageVolCreateXMLFrom
+StorageVolDelete
+StorageVolGetInfo
+StorageVolGetPath
+StorageVolGetXMLDesc
+StorageVolLookupByKey
+StorageVolLookupByName
+StorageVolLookupByPath
+StorageVolWipe
--
1.7.0.4