--- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list