]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
13 years agoutil: choose whether to require micro in version strings
Eric Blake [Fri, 1 Jul 2011 13:23:02 +0000 (07:23 -0600)]
util: choose whether to require micro in version strings

To avoid regressions, we let callers specify whether to require a
minor and micro version.  Callers that were parsing uname() output
benefit from defaulting to 0, whereas callers that were parsing
version strings from other sources should not change in behavior.

* src/util/util.c (virParseVersionString): Allow caller to choose
whether to fail if minor or micro is missing.
* src/util/util.h (virParseVersionString): Update signature.
* src/esx/esx_driver.c (esxGetVersion): Update callers.
* src/lxc/lxc_driver.c (lxcVersion): Likewise.
* src/openvz/openvz_conf.c (openvzExtractVersionInfo): Likewise.
* src/uml/uml_driver.c (umlGetVersion): Likewise.
* src/vbox/vbox_MSCOMGlue.c (vboxLookupVersionInRegistry):
Likewise.
* src/vbox/vbox_tmpl.c (vboxExtractVersion): Likewise.
* src/vmware/vmware_conf.c (vmwareExtractVersion): Likewise.
* src/xenapi/xenapi_driver.c (xenapiGetVersion): Likewise.
Reported by Matthias Bolte.

13 years agobuild: consistently use CFLAGS
Eric Blake [Tue, 31 May 2011 22:15:28 +0000 (16:15 -0600)]
build: consistently use CFLAGS

According to the automake manual, CPPFLAGS (aka INCLUDES, as spelled
in automake 1.9.6) should only include -I, -D, and -U directives; more
generic directives like -Wall belong in CFLAGS since they affect more
phases of the build process.  Therefore, we should be sticking CFLAGS
additions into a CFLAGS container, not a CPPFLAGS container.

* src/Makefile.am (libvirt_driver_vmware_la_CFLAGS): Use AM_CFLAGS.
(INCLUDES): Move CFLAGS items...
(AM_CFLAGS): ...to their proper location.
* python/Makefile.am (INCLUDES, AM_CFLAGS): Likewise.
* tests/Makefile.am (INCLUDES, AM_CFLAGS): Likewise.
(commandtest_CFLAGS, commandhelper_CFLAGS)
(virnetmessagetest_CFLAGS, virnetsockettest_CFLAGS): Use AM_CFLAGS.

13 years agoExplicitely invoke python for API doc generator
Daniel Veillard [Fri, 1 Jul 2011 15:46:52 +0000 (17:46 +0200)]
Explicitely invoke python for API doc generator

This fixes the problem of not finding python in /usr/bin
which broke build on FreeBSD

13 years agofix virParseVersionString with linux 3.0
Scott Moser [Fri, 1 Jul 2011 10:40:21 +0000 (06:40 -0400)]
fix virParseVersionString with linux 3.0

linux 3.0 has no micro version number, and that is causing problems
for virParseVersionString.  The patch below should allow for:
  major
  major.minor
  major.minor.micro

If major or minor are not present they just default to zero.
We found this in Ubuntu (https://bugs.launchpad.net/bugs/802977)

13 years agobuild: remove dead variables
Eric Blake [Thu, 30 Jun 2011 23:05:19 +0000 (17:05 -0600)]
build: remove dead variables

Detected by Coverity.  No real harm in leaving these, but fixing
them cuts down on the noise for future analysis.

* src/rpc/virnetserver.c (virNetServerAddService): Delete unused
entry.
* src/util/sysinfo.c (virSysinfoRead): Delete dead assignment to
base.

13 years agoRemove bogus jsondata.h file reference which does not exist
Daniel P. Berrange [Fri, 1 Jul 2011 09:16:33 +0000 (10:16 +0100)]
Remove bogus jsondata.h file reference which does not exist

* tests/Makefile.am: Remove jsondata.h

13 years agobuild: simplify sanlock distribution
Eric Blake [Wed, 29 Jun 2011 15:24:12 +0000 (09:24 -0600)]
build: simplify sanlock distribution

EXTRA_DIST files should unconditionally be part of the tarball,
rather than depending on the presence of sanlock-devel.

Meanwhile, parallel builds could fail if we don't use mkdir -p.

* src/Makefile.am (EXTRA_DIST): Always ship sanlock .aug and
template .conf files.
(%-sanlock.conf): Use MKDIR_P.

13 years agobuild: allow 'make syntax-check' on fresh checkout
Eric Blake [Tue, 28 Jun 2011 15:50:11 +0000 (09:50 -0600)]
build: allow 'make syntax-check' on fresh checkout

For good or for bad, I did a fresh checkout, ./autogen.sh, then
'configure', then 'make syntax-check', and was surprised that it
failed.  Running 'make' before 'make syntax-check' cleaned up the
issue, but this patch makes it work up front.

* cfg.mk (sc_po_check): Add prerequisites.

13 years agobuild: ignore generated file
Eric Blake [Thu, 30 Jun 2011 18:13:51 +0000 (12:13 -0600)]
build: ignore generated file

* .gitignore: Exempt jsontest binary.

13 years agoAdd conditionals to allow build without SASL
Daniel P. Berrange [Thu, 30 Jun 2011 17:18:08 +0000 (18:18 +0100)]
Add conditionals to allow build without SASL

* daemon/libvirtd.c, daemon/remote.c: Add #if HAVE_SASL and
  suitable function stubs to allow build without SASL

13 years agobuild: avoid double-close bug with pipe2
Eric Blake [Wed, 29 Jun 2011 22:11:30 +0000 (16:11 -0600)]
build: avoid double-close bug with pipe2

Based on Coverity's finding on the previous patch, I audited
gnulib's pipe2 code and found that we had the potential for
a subtle double-close bug, unless gnulib guarantees that the
contents of the fd array are unchanged on pipe2() failure.

* .gnulib: Update to latest, for pipe2 fix.

13 years agorpc: avoid freeing uninitialized variable
Eric Blake [Wed, 29 Jun 2011 18:28:57 +0000 (12:28 -0600)]
rpc: avoid freeing uninitialized variable

Detected by Coverity.  Both are instances of bad things happening
if pipe2 fails; the virNetClientNew failure could free garbage,
and virNetSocketNewConnectCommand could close random fds.

Note: POSIX doesn't guarantee the contents of fd[0] and fd[1]
after pipe failure: http://austingroupbugs.net/view.php?id=467
We may need to introduce a virPipe2 wrapper that guarantees
that on pipe failure, the fds are explicitly set to -1, rather
than our current state of assuming the fds are unchanged from
their value prior to the failed pipe call.

* src/rpc/virnetclient.c (virNetClientNew): Initialize variable.
* src/rpc/virnetsocket.c (virNetSocketNewConnectCommand):
Likewise.

13 years agovirsh: avoid uninitialized variable
Eric Blake [Wed, 29 Jun 2011 18:04:08 +0000 (12:04 -0600)]
virsh: avoid uninitialized variable

Detected by Coverity; neither vshCmddefHelp nor vshCmdOptParse
was initializing opts_required.

* tools/virsh.c (vshCmddefOptParse): Always initialize bitmaps.

13 years agovirsh: avoid integer overflow
Eric Blake [Wed, 29 Jun 2011 17:58:36 +0000 (11:58 -0600)]
virsh: avoid integer overflow

Detected by Coverity.  info.nrVirtCpu is unsigned short, but if
cpumaplen is int, then the product of the two in vshMalloc risks
unintended sign extension.  cmdVcpuinfo had already solved this
by using size_t cpumaplen.

* tools/virsh.c (cmdVcpuPin): Use correct type.

13 years agoFix stream procedure number for virDomainMigratePrepareTunnel3
Daniel P. Berrange [Thu, 30 Jun 2011 15:52:13 +0000 (16:52 +0100)]
Fix stream procedure number for virDomainMigratePrepareTunnel3

The virDomainMigratePrepareTunnel3 impl in the remote driver
was using the procedure number for the virDomainMigratePrepareTunnel
method. This doesn't work out so well, because it makes the server
ignore & drop all stream packets

* src/remote/remote_driver.c: Fix procedure for PrepareTunnel3

13 years agoSend back an error if we get unexpected stream control message
Daniel P. Berrange [Thu, 30 Jun 2011 15:49:08 +0000 (16:49 +0100)]
Send back an error if we get unexpected stream control message

We ignore any stream data packets which come in for streams which
are not registered, since these packets are async and do not have
a reply. If we get a stream control packet though we must send back
an actual error, otherwise a (broken) client may hang forever
making it hard to diagnose the client bug.

* src/rpc/virnetserverprogram.c: Send back error for unexpected
  stream control messages

13 years agoFix release of virNetMessagePtr instances in streams processing
Daniel P. Berrange [Thu, 30 Jun 2011 15:40:47 +0000 (16:40 +0100)]
Fix release of virNetMessagePtr instances in streams processing

If a message packet for a invalid stream is received it is just
free'd. This is not good because it doesn't let the client RPC
request counter decrement. If a stream is shutdown with pending
packets the message also isn't released properly because of an
incorrect header type

* daemon/stream.c: Fix message header type
* src/rpc/virnetserverprogram.c: Send dummy reply instead of
  free'ing ignored stream message

13 years agoAdd missing include of signal.h in virnetsocket.c
Daniel P. Berrange [Thu, 30 Jun 2011 15:06:48 +0000 (16:06 +0100)]
Add missing include of signal.h in virnetsocket.c

virNetSocketFree uses kill(SIGTERM) so we must include
signal.h for the definitions

* src/rpc/virnetsocket.c: Include signal.h

13 years agoAdd test case for parsing JSON docs
Daniel P. Berrange [Thu, 30 Jun 2011 14:08:29 +0000 (15:08 +0100)]
Add test case for parsing JSON docs

While investigating some memory leaks it was unclear whether the
JSON code correctly free'd all memory during parsing. Add a test
case which can be run under valgrind to clearly demonstrate that
the parser is leak free.

* tests/Makefile.am: Add 'jsontest'
* tests/jsontest.c: A few simple JSON parsing tests

13 years agoFix potential crash when saving guests
Daniel P. Berrange [Thu, 30 Jun 2011 14:05:59 +0000 (15:05 +0100)]
Fix potential crash when saving guests

The qemudDomainSaveFlag method will call EndJob on the 'vm'
object it is passed in. This can result in the 'vm' object
being free'd if the last reference is removed. Thus no caller
of 'qemudDomainSaveFlag' must *ever* reference 'vm' again
upon return.

Unfortunately qemudDomainSave and qemuDomainManagedSave
both call 'virDomainObjUnlock', which can result in a
crash. This is non-deterministic since it involves a race
with the monitor I/O thread.

Fix this by making qemudDomainSaveFlag responsible for
calling virDomainObjUnlock instead.

* src/qemu/qemu_driver.c: Fix potential use after free
  when saving guests

13 years agoFix uninitialized value in QEMU monitor FD sending code
Daniel P. Berrange [Thu, 30 Jun 2011 14:04:23 +0000 (15:04 +0100)]
Fix uninitialized value in QEMU monitor FD sending code

The 'char control[CMSG_SPACE(sizeof(int))];' was not being
wiped, so could potentially contain uninitialized bytes.
While this was harmless in this case, it caused complaints
from valgrind

* src/qemu/qemu_monitor.c: memset 'control' variable
  in qemuMonitorIOWriteWithFD

13 years agoFix leak of JSON object for events
Daniel P. Berrange [Thu, 30 Jun 2011 14:03:31 +0000 (15:03 +0100)]
Fix leak of JSON object for events

The event handler functions do not free the virJSONValuePtr
object. Every event received from a VM thus caused a memory
leak

* src/qemu/qemu_monitor_json.c: Fix leak of event object

13 years agoRemove bogus warning message in JSON code
Daniel P. Berrange [Thu, 30 Jun 2011 14:03:07 +0000 (15:03 +0100)]
Remove bogus warning message in JSON code

* src/util/json.c: Remove warning message

13 years agoFix use of uninitialized memory when releasing PCI slots
Daniel P. Berrange [Thu, 30 Jun 2011 14:01:54 +0000 (15:01 +0100)]
Fix use of uninitialized memory when releasing PCI slots

The 'function' field in the PCI address was not correctly
initialized, so it was building the wrong address address
string and so not removing all functions from the in use
list.

* src/qemu/qemu_command.c: Fix initialization of PCI function

13 years agoFix leak of virStreamPtr object with callback added in fdstream impl
Daniel P. Berrange [Thu, 30 Jun 2011 12:12:56 +0000 (13:12 +0100)]
Fix leak of virStreamPtr object with callback added in fdstream impl

When adding a callback to an FD stream, we take an extra reference
on the virStreamPtr instance. We forgot to registered a free function
with the callback, so when the callback was removed, the extra
reference held on virStreamPtr was not released.

* src/fdstream.c: Use a free callback to release reference on
  virStreamPtr when removing callback

13 years agoFix leak of mdnsGroupName in virNetServer object
Daniel P. Berrange [Thu, 30 Jun 2011 12:12:38 +0000 (13:12 +0100)]
Fix leak of mdnsGroupName in virNetServer object

* src/rpc/virnetserver.c: Free mdnsGroupName

13 years agoFix release of filtered stream messages
Daniel P. Berrange [Thu, 30 Jun 2011 11:28:10 +0000 (12:28 +0100)]
Fix release of filtered stream messages

The stream code was reusing a stream message object before
it was removed from the linked list of filtered messages.
This caused any later queued messages to be completely lost.

* daemon/stream.c: Delay reuse of stream message until
  after it is removed from the queue

13 years agoEnsure RPC message is cleared before being reused
Daniel P. Berrange [Thu, 30 Jun 2011 11:26:54 +0000 (12:26 +0100)]
Ensure RPC message is cleared before being reused

To save on memory reallocation, virNetMessage instances that
have been transmitted, may be reused for a subsequent incoming
message. We forgot to clear out the old data of the message
fully, which caused later confusion upon read.

* src/rpc/virnetserverclient.c: memset entire message before
  reusing it

13 years agoFix hardcoded limit on client requests in RPC code
Daniel P. Berrange [Thu, 30 Jun 2011 10:45:55 +0000 (11:45 +0100)]
Fix hardcoded limit on client requests in RPC code

The virNetServerClient object had a hardcoded limit of 10 requests
per client. Extend constructor to allow it to be passed in as a
configurable variable. Wire this up to the 'max_client_requests'
config parameter in libvirtd

* daemon/libvirtd.c: Pass max_client_requests into services
* src/rpc/virnetserverservice.c, src/rpc/virnetserverservice.h: Pass
  nrequests_client_max to clients
* src/rpc/virnetserverclient.c, src/rpc/virnetserverclient.h: Allow
  configurable request limit

13 years agotests: Add valgrind.supp into EXTRA_DIST
Osier Yang [Thu, 30 Jun 2011 15:23:23 +0000 (23:23 +0800)]
tests: Add valgrind.supp into EXTRA_DIST

13 years agovirsh: Fix a problem of buildPoolXML
Osier Yang [Thu, 30 Jun 2011 08:46:44 +0000 (16:46 +0800)]
virsh: Fix a problem of buildPoolXML

It doesn't generate "<name>" and "<format>" nodes for "<source>"
even if they are explicitly specified. This patch fixes it.

13 years agolock qemu_driver early in qemuGetSchedulerParametersFlags()
Wen Congyang [Tue, 28 Jun 2011 07:58:44 +0000 (15:58 +0800)]
lock qemu_driver early in qemuGetSchedulerParametersFlags()

If we pass VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG to
qemuGetSchedulerParametersFlags() or *nparams is less than 1,
we will unlock qemu_driver without locking it. It's very dangerous.

We should lock qemu_driver after calling virCheckFlags().

13 years agosave domain status after modifing vcpupin
Wen Congyang [Tue, 28 Jun 2011 03:43:09 +0000 (11:43 +0800)]
save domain status after modifing vcpupin

We should save domain status after modifing vcpupin. If not,
we will get wrong vcpupin information after rebooting libvirtd.

13 years agoFix memory leak in virDomainVcpuPinDel()
Wen Congyang [Tue, 28 Jun 2011 03:41:15 +0000 (11:41 +0800)]
Fix memory leak in virDomainVcpuPinDel()

virDomainVcpuPinDefFree() does not free def->cputune.vcpupin if nvcpupin
is 0, and does not set def->cputune.vcpupin to NULL.

If we set nvcpupin to 0 but do not free vcpupin, vcpupin will not be freed
when vm->def is freed.

Use VIR_FREE() instead of virDomainVcpuPinDefFree() to free the memory
and set def->cputune.vcpupint to NULL.

13 years agobuild: avoid pod2man on tarball
Eric Blake [Wed, 29 Jun 2011 03:54:35 +0000 (21:54 -0600)]
build: avoid pod2man on tarball

virt-sanlock-cleanup.8 has static contents (no dependency on
configure), but is generated by pod2man (a perl dependency that
maintainers must have, but which ordinary tarball users need
not have).  Therefore, ensure that it is always part of the
tarball, even though it is only conditionally installed.

This is similar to commit 6db98a2d4b, but made simpler by the fact
that the .8 page is static content.

* tools/Makefile.am (EXTRA_DIST): Add virt-sanlock-cleanup.8.

13 years agosysinfo: fix illegal NULL return
Minoru Usui [Wed, 29 Jun 2011 04:33:22 +0000 (13:33 +0900)]
sysinfo: fix illegal NULL return

If virSysinfoParse{BIOS,System,Processor,Memory}()
can't find newline('\n'), these return NULL.
This patch fixes this.

Signed-off-by: Minoru Usui <usui@mxm.nes.nec.co.jp>
13 years agoEnsure that EOF is dispatched to the stream callback
Daniel P. Berrange [Tue, 28 Jun 2011 16:58:04 +0000 (17:58 +0100)]
Ensure that EOF is dispatched to the stream callback

When the remote client receives end of file on the stream
it never invokes the stream callback. Applications relying
on async event driven I/O will thus never see the EOF
condition on the stream

* src/rpc/virnetclient.c, src/rpc/virnetclientstream.c:
  Ensure EOF is dispatched

13 years agoFix locking wrt virNetClientStreamPtr object
Daniel P. Berrange [Tue, 28 Jun 2011 16:51:49 +0000 (17:51 +0100)]
Fix locking wrt virNetClientStreamPtr object

The client stream object can be used independently of the
virNetClientPtr object, so must have full locking of its
own and not rely on any caller.

* src/remote/remote_driver.c: Remove locking around stream
  callback
* src/rpc/virnetclientstream.c: Add locking to all APIs
  and callbacks

13 years agoAvoid referencing NULL pointer when copying stream error
Daniel P. Berrange [Tue, 28 Jun 2011 16:50:56 +0000 (17:50 +0100)]
Avoid referencing NULL pointer when copying stream error

* src/rpc/virnetclientstream.c: Avoid referencing NULL

13 years agoAvoid free'ing a filtered RPC message in the server
Daniel P. Berrange [Tue, 28 Jun 2011 16:46:15 +0000 (17:46 +0100)]
Avoid free'ing a filtered RPC message in the server

When a filter steals an RPC message, that message must
not be freed, except by the filter code itself

* src/rpc/virnetserverclient.c: Don't free stolen RPC
  messages

13 years agoImprove two log messages in virNetMessage
Daniel P. Berrange [Tue, 28 Jun 2011 16:45:32 +0000 (17:45 +0100)]
Improve two log messages in virNetMessage

Improve log messages issued when encountering a bogus
message length to include the actual length and the
limit violated

* src/rpc/virnetmessage.c: Improve log messages

13 years agoEnsure empty payload is written upon stream completion
Daniel P. Berrange [Tue, 28 Jun 2011 16:42:06 +0000 (17:42 +0100)]
Ensure empty payload is written upon stream completion

On stream completion it is neccessary to send back a
message with an empty payload. The message header was
not being filled out correctly, since we were not writing
any payload. Add a method for encoding an empty payload
which updates the message headers correctly.

* src/rpc/virnetmessage.c, src/rpc/virnetmessage.h: Add
  a virNetMessageEncodePayloadEmpty method
* src/rpc/virnetserverprogram.c: Write empty payload on
  stream completion

13 years agoLower logging level when failing to register socket watch
Daniel P. Berrange [Tue, 28 Jun 2011 16:39:02 +0000 (17:39 +0100)]
Lower logging level when failing to register socket watch

The RPC client treats failure to register a socket watch
as non-fatal, since we do not mandate that a libvirt client
application provide an event loop implementation. It is
thus inappropriate to a log a message at VIR_LOG_WARN

* src/rpc/virnetsocket.c: Lower logging level

13 years agoFix propagation of RPC errors from streams
Daniel P. Berrange [Mon, 27 Jun 2011 20:38:00 +0000 (21:38 +0100)]
Fix propagation of RPC errors from streams

If a streams error is raised, virNetClientIOEventLoop
returns 0, but an error is set. Check for this and
propagate it if present

* src/rpc/virnetclient.c: Propagate streams error

13 years agoFix crash when aborting a stream from a I/O callback
Daniel P. Berrange [Tue, 28 Jun 2011 14:44:22 +0000 (15:44 +0100)]
Fix crash when aborting a stream from a I/O callback

If a callback being invoked from a stream issues a virStreamAbort
operation, the stream data will be free'd but the callback will
then still try to use this. Delay free'ing of the stream data when
a callback is dispatching

* src/fdstream.c: Delay stream free when callback is active

13 years agoscreenshot: Set access rights to temporary file
Michal Privoznik [Wed, 29 Jun 2011 08:17:51 +0000 (10:17 +0200)]
screenshot: Set access rights to temporary file

Although we create a temporary file, it is owned by root:root and have
rights 0600. In case qemu does not run under root, it is unable to write
to that file and thus we transfer 0B sized file.

13 years agodnsmasq: Fix errno handling and don't unlink non-existing files
Matthias Bolte [Tue, 28 Jun 2011 23:50:06 +0000 (01:50 +0200)]
dnsmasq: Fix errno handling and don't unlink non-existing files

addnhostsSave and hostsfileSave expect < 0 return value on error from
addnhostsWrite and hostsfileWrite but then pass err instead of -err
to virReportSystemError that expects an errno value.

Also addnhostsWrite returns -ENOMEM and errno, change this to -errno.

addnhostsWrite and hostsfileWrite tried to unlink the tempfile after
renaming it, making both fail on the final step. Remove the unnecessary
unlink calls.

13 years agomaint: improve makefile whitespace
Eric Blake [Wed, 29 Jun 2011 04:06:48 +0000 (22:06 -0600)]
maint: improve makefile whitespace

None of these instances cause any semantic differences, but
consistency is nice.

* src/Makefile.am: Replace leading spaces with tabs.

13 years agotests: Fix memory leak in virnetmessagetest
Osier Yang [Wed, 29 Jun 2011 02:47:54 +0000 (10:47 +0800)]
tests: Fix memory leak in virnetmessagetest

Detected when playing with "make -C tests valgrind".

13 years agoconf: Fix memory leak in virNetworkDNSDefFormat
Osier Yang [Wed, 29 Jun 2011 02:45:01 +0000 (10:45 +0800)]
conf: Fix memory leak in virNetworkDNSDefFormat

13 years agonetwork: Don't ignore errors in dnsmasq config file creation
Matthias Bolte [Tue, 28 Jun 2011 12:07:46 +0000 (14:07 +0200)]
network: Don't ignore errors in dnsmasq config file creation

13 years agonetwork: Fix dnsmasq hostsfile creation logic and related tests
Matthias Bolte [Tue, 28 Jun 2011 11:07:59 +0000 (13:07 +0200)]
network: Fix dnsmasq hostsfile creation logic and related tests

networkSaveDnsmasqHostsfile was added in 8fa9c2214247 (Apr 2010).
It has a force flag. If the dnsmasq hostsfile already exists force
needs to be true to overwrite it. networkBuildDnsmasqArgv sets force
to false, networkDefine sets it to true. This results in the
hostsfile being written only in networkDefine in the common case.
If no error occurred networkSaveDnsmasqHostsfile returns true and
networkBuildDnsmasqArgv adds the --dhcp-hostsfile to the dnsmasq
command line.

networkSaveDnsmasqHostsfile was changed in 89ae9849f744 (24 Jun 2011)
to return a new dnsmasqContext instead of reusing one. This change broke
the logic of the force flag as now networkSaveDnsmasqHostsfile returns
NULL on error, but the early return -- if force was not set and the
hostsfile exists -- returns 0. This turned the early return in an error
case and networkBuildDnsmasqArgv didn't add the --dhcp-hostsfile option
anymore if the hostsfile already exists. It did because networkDefine
created the hostsfile already.

Then 9d4e2845d498 fixed the return 0 case in networkSaveDnsmasqHostsfile
but didn't apply the force option correctly to the new addnhosts file.
Now force doesn't control an early return anymore, but influences the
handling of the hostsfile context creation and dnsmasqSave is always
called now. This commit also added test cases that reveal several
problems. First, the tests now calls functions that try to write the
dnsmasq config files to disk. If someone runs this tests as root this
might overwrite actively used dnsmasq config files, this is a no-go. Also
the tests depend on configure --localstatedir, this needs to be fixed as
well, because it makes the tests fail when localstatedir is different
from /var.

This patch does several things to fix this:

1) Move dnsmasqContext creation and saving out of networkBuildDnsmasqArgv
to the caller to separate the command line generation from the config
file writing. This makes the command line generation testable without the
risk of interfering with system files, because the tests just don't call
dnsmasqSave.

2) This refactoring of networkSaveDnsmasqHostsfile makes the force flag
useless as the saving happens somewhere else now. This fixes the wrong
usage of the force flag in combination with then newly added addnhosts
file by removing the force flag.

3) Adapt the wrong test cases to the correct behavior, by adding the
missing --dhcp-hostsfile option. Both affected tests contain DHCP host
elements but missed the necessary --dhcp-hostsfile option.

4) Rename networkSaveDnsmasqHostsfile to networkBuildDnsmasqHostsfile,
because it doesn't save the dnsmasqContext anymore.

5) Move all directory creations in dnsmasq context handling code from
the *New functions to dnsmasqSave to avoid directory creations in system
paths in the test cases.

6) Now that networkBuildDnsmasqArgv doesn't create the dnsmasqContext
anymore the test case can create one with the localstatedir that is
expected by the tests instead of the configure --localstatedir given one.

13 years agoFix compilation with systemtap 1.3
Matthias Bolte [Tue, 28 Jun 2011 22:33:09 +0000 (00:33 +0200)]
Fix compilation with systemtap 1.3

Version 1.3 of <sys/sdt.h> uses this macro

  #define STAP_CAST(t) (size_t)t

that breaks like this if t is a function

  remote.c:1775: error: cast from function call of type 'const char *'
  to non-matching type 'long unsigned int' [-Wbad-function-cast]

For that to work it should probably look like this

  #define STAP_CAST(t) ((size_t)(t))

In systemtap 1.4 this was completely rewritten.

Anyway, before commit df0b57a95a767c t was always a variable, but now
also a function is used here, namely virNetSASLSessionGetIdentity.

Use an intermediate variable to avoid this problem.

13 years agobuild: fix mingw build
Eric Blake [Tue, 28 Jun 2011 21:13:20 +0000 (15:13 -0600)]
build: fix mingw build

./autobuild.sh died on several messages resembling:

../../src/rpc/virnetsocket.c: In function 'virNetSocketNewListenTCP':
../../src/rpc/virnetsocket.c:231:9: error: implicit declaration of function 'bind_used_without_requesting_gnulib_module_bind' [-Wimplicit-function-declaration]
../../src/rpc/virnetsocket.c:231:9: error: nested extern declaration of 'bind_used_without_requesting_gnulib_module_bind' [-Wnested-externs]

Basically, gnulib socket fds are not safe to pass to mingw socket
functions unless we pull in those gnulib modules.

* bootstrap.conf (gnulib_modules): Add modules to handle socket
functions on mingw.

13 years agosysinfo: fix parsing regression
Eric Blake [Tue, 28 Jun 2011 17:56:08 +0000 (11:56 -0600)]
sysinfo: fix parsing regression

Detected by gcc -O2, introduced in commit 532ce9c2.  If dmidecode
outputs a field unrecognized by the parsers, then the code would
dereference an uninitialized eol variable.

* src/util/sysinfo.c (virSysinfoParseBIOS)
(virSysinfoParseSystem, virSysinfoParseProcessor)
(virSysinfoParseMemory): Avoid uninitialized variable.

13 years agobuild: update translated files
Eric Blake [Tue, 28 Jun 2011 19:38:27 +0000 (13:38 -0600)]
build: update translated files

The last patch was incomplete.  The translated strings merely
moved between generated file names, rather than disappearing.

* cfg.mk (generated_files): Update generated file names.
* po/POTFILES.in: Add remote_dispatch.h

13 years agobuild: Don't expect translatable strings in a dead file
Jiri Denemark [Tue, 28 Jun 2011 19:15:49 +0000 (21:15 +0200)]
build: Don't expect translatable strings in a dead file

daemon/remote_dispatch_bodies.h is no longer with us and shouldn't be
searched for translatable strings.

13 years agodaemon: Fix build without polkit
Jiri Denemark [Tue, 28 Jun 2011 19:09:05 +0000 (21:09 +0200)]
daemon: Fix build without polkit

13 years agoremote: fix uninitialized variable
Eric Blake [Tue, 28 Jun 2011 18:17:00 +0000 (12:17 -0600)]
remote: fix uninitialized variable

Detected by gcc -O2:

remote/remote_driver.c: In function 'doRemoteOpen':
remote/remote_driver.c:2753:26: error: 'sasl' may be used uninitialized in this function [-Werror=uninitialized]

* src/remote/remote_driver.c (remoteAuthSASL): Initialize sasl.

13 years agobuild: fix 'make check' when pdwtags is available
Eric Blake [Tue, 28 Jun 2011 17:44:01 +0000 (11:44 -0600)]
build: fix 'make check' when pdwtags is available

Problem introduced in commit 6818cf86.

* src/remote_protocol-structs: Delete unused struct.

13 years agobuild: sanlock-devel is not in F15 yet
Eric Blake [Tue, 28 Jun 2011 15:51:40 +0000 (09:51 -0600)]
build: sanlock-devel is not in F15 yet

* libvirt.spec.in (with_sanlock): Only default on in rawhide.
Reported by Gerhard Stenzel.

13 years agoAdd documentation for configuration lock managers
Daniel P. Berrange [Fri, 24 Jun 2011 12:50:08 +0000 (13:50 +0100)]
Add documentation for configuration lock managers

Add a page which documents how to configure lock managers,
focusing on use of sanlock with the QEMU/KVM driver

* docs/locking.html.in: Docs about lock managers
* docs/sitemap.html.in: Add lock manager config to
  the deployment section

13 years agoSupport automatic creation of leases for disks in sanlock
Daniel P. Berrange [Tue, 14 Jun 2011 08:29:00 +0000 (09:29 +0100)]
Support automatic creation of leases for disks in sanlock

The current sanlock plugin requires a central management
application to manually add <lease> elements to each guest,
to protect resources that are assigned to it (eg writable
disks). This makes the sanlock plugin useless for usage
in more ad hoc deployment environments where there is no
central authority to associate disks with leases.

This patch adds a mode where the sanlock plugin will
automatically create leases for each assigned read-write
disk, using a md5 checksum of the fully qualified disk
path. This can work pretty well if guests are using
stable disk paths for block devices eg /dev/disk/by-path/XXXX
symlinks, or if all hosts have NFS volumes mounted in
a consistent pattern.

The plugin will create one lockspace for managing disks
with filename /var/lib/libvirt/sanlock/__LIBVIRT__DISKS__.
For each VM disks, there will be another file to hold
a lease /var/lib/libvirt/sanlock/5903e5d25e087e60a20fe4566fab41fd
Each VM disk lease is usually 1 MB in size. The script
virt-sanlock-cleanup should be run periodically to remove
unused lease files from the lockspace directory.

To make use of this capability the admin will need to do
several tasks:

 - Mount an NFS volume (or other shared filesystem)
   on /var/lib/libvirt/sanlock
 - Configure 'host_id' in /etc/libvirt/qemu-sanlock.conf
   with a unique value for each host with the same NFS
   mount
 - Toggle the 'auto_disk_leases' parameter in qemu-sanlock.conf

Technically the first step can be skipped, in which case
sanlock will only protect against 2 vms on the same host
using the same disk (or the same VM being started twice
due to error by libvirt).

* src/locking/libvirt_sanlock.aug,
  src/locking/sanlock.conf,
  src/locking/test_libvirt_sanlock.aug: Add config params
  for configuring auto lease setup
* libvirt.spec.in: Add virt-sanlock-cleanup program, man
  page
* tools/virt-sanlock-cleanup.in: Script to purge unused
  disk resource lease files

13 years agoSupport loading a configuration file for sanlock plugin
Daniel P. Berrange [Tue, 14 Jun 2011 08:20:49 +0000 (09:20 +0100)]
Support loading a configuration file for sanlock plugin

Introduce a configuration file with a single parameter
'require_lease_for_disks', which is used to decide whether
it is allowed to start a guest which has read/write disks,
but without any leases.

* libvirt.spec.in: Add sanlock config file and augeas
  lens
* src/Makefile.am: Install sanlock config file and
  augeas lens
* src/locking/libvirt_sanlock.aug: Augeas master lens
* src/locking/test_libvirt_sanlock.aug: Augeas test file
* src/locking/sanlock.conf: Example sanlock config
* src/locking/lock_driver_sanlock.c: Wire up loading
  of configuration file

13 years agoAllow per-driver config file for lock manager plugins
Daniel P. Berrange [Mon, 13 Jun 2011 13:30:26 +0000 (14:30 +0100)]
Allow per-driver config file for lock manager plugins

Allow a 'configFile' parameter to be passed into the lock
drivers to provide configuration. Wire up the QEMU driver
to pass in file names '/etc/libvirt/qemu-$NAME.conf
eg qemu-sanlock.conf

* src/locking/lock_driver.h, src/locking/lock_driver_nop.c,
  src/locking/lock_driver_sanlock.c, src/locking/lock_manager.c,
  src/locking/lock_manager.h: Add configFile parameter
* src/qemu/qemu_conf.c: Pass in configuration file path to
  lock driver plugins

13 years agonetwork: add domain to unqualified names defined with <host>
Laine Stump [Sat, 25 Jun 2011 05:14:38 +0000 (01:14 -0400)]
network: add domain to unqualified names defined with <host>

If a domain name is defined for a network, add the --expand-hosts
option to the dnsmasq commandline. This results in the domain being
added to any hostname that is defined in a dns <host> element and
contains no '.' characters (i.e. it is an "unqualified"
hostname). Since PTR records are automatically created for any name
defined in <host>, the result of a PTR request will change from the
unqualified name to the qualified name.

This also has the same effect on any hostnames that dnsmasq reads
from the host's /etc/hosts file.

(In the case of guest hostnames that were learned by dnsmasq via DHCP
requests, they were already getting the domain name added on, even
without --expand-hosts).

13 years agoCleanup remote protocol definitions
Daniel P. Berrange [Fri, 10 Dec 2010 12:24:16 +0000 (12:24 +0000)]
Cleanup remote protocol definitions

The standard remote protocol for libvirtd no longer needs to
include definitions of the generic message header/error structs
or status codes. This is all defined in the generic RPC protocol

* src/remote/remote_protocol.x: Remove all RPC message definitions
* src/remote/remote_protocol.h, src/remote/remote_protocol.c:
  Re-generate
* daemon/remote_generate_stubs.pl: Delete obsolete script

13 years agoRemove obsolete libvirtd mdns code
Daniel P. Berrange [Wed, 2 Mar 2011 17:16:40 +0000 (17:16 +0000)]
Remove obsolete libvirtd mdns code

libvirtd now uses the generic RPC code for MDNS, so its
custom mdns APIs are no longer required

* daemon/mdns.c, daemon/mdns.h: Removed obsolete files

13 years agoConvert libvirtd over to the new RPC handling APIs
Daniel P. Berrange [Mon, 16 May 2011 17:13:11 +0000 (18:13 +0100)]
Convert libvirtd over to the new RPC handling APIs

This guts the libvirtd daemon, removing all its networking and
RPC handling code. Instead it calls out to the new virServerPtr
APIs for all its RPC & networking work

As a fallout all libvirtd daemon error reporting now takes place
via the normal internal error reporting APIs. There is no need
to call separate error reporting APIs in RPC code, nor should
code use VIR_WARN/VIR_ERROR for reporting fatal problems anymore.

* daemon/qemu_dispatch_*.h, daemon/remote_dispatch_*.h: Remove
  old generated dispatcher code
* daemon/qemu_dispatch.h, daemon/remote_dispatch.h: New dispatch
  code
* daemon/dispatch.c, daemon/dispatch.h: Remove obsoleted code
* daemon/remote.c, daemon/remote.h: Rewrite for new dispatch
  APIs
* daemon/libvirtd.c, daemon/libvirtd.h: Remove all networking
  code
* daemon/stream.c, daemon/stream.h: Update for new APIs
* daemon/Makefile.am: Link to libvirt-net-rpc-server.la

13 years agoConvert the remote driver to new RPC client APIs
Daniel P. Berrange [Wed, 1 Dec 2010 16:46:36 +0000 (16:46 +0000)]
Convert the remote driver to new RPC client APIs

This guts the current remote driver, removing all its networking
handling code. Instead it calls out to the new virClientPtr and
virClientProgramPtr APIs for all RPC & networking work.

* src/Makefile.am: Link remote driver with generic RPC code
* src/remote/remote_driver.c: Gut code, replacing with RPC
  API calls
* src/rpc/gendispatch.pl: Update for changes in the way
  streams are handled

13 years agoAdd XDR_CFLAGS to libvirt-net-rpc.la library
Daniel P. Berrange [Tue, 28 Jun 2011 15:44:59 +0000 (16:44 +0100)]
Add XDR_CFLAGS to libvirt-net-rpc.la library

* src/Makefile.am: Add XDR_CFLAGS

13 years agoEnsure sanlock socket is labelled with the VM process label
Daniel P. Berrange [Fri, 24 Jun 2011 14:14:41 +0000 (15:14 +0100)]
Ensure sanlock socket is labelled with the VM process label

The libvirt sanlock plugin is intentionally leaking a file
descriptor to QEMU. To enable QEMU to use this FD under
SELinux, it must be labelled correctly. We dont want to use
the svirt_image_t for this, since QEMU must not be allowed
to actually use the FD. So instead we label it with svirt_t
using virSecurityManagerSetProcessFDLabel

* src/locking/domain_lock.c, src/locking/domain_lock.h,
  src/locking/lock_driver.h, src/locking/lock_driver_nop.c,
  src/locking/lock_driver_sanlock.c, src/locking/lock_manager.c,
  src/locking/lock_manager.h: Optionally pass an FD back to
  the hypervisor for security driver labelling
* src/qemu/qemu_process.c: label the lock manager plugin
  FD with the process label

13 years agoAdd a virSecurityManagerSetProcessFDLabel
Daniel P. Berrange [Fri, 24 Jun 2011 13:50:36 +0000 (14:50 +0100)]
Add a virSecurityManagerSetProcessFDLabel

Add a new security driver method for labelling an FD with
the process label, rather than the image label

* src/libvirt_private.syms, src/security/security_apparmor.c,
  src/security/security_dac.c, src/security/security_driver.h,
  src/security/security_manager.c, src/security/security_manager.h,
  src/security/security_selinux.c, src/security/security_stack.c:
  Add virSecurityManagerSetProcessFDLabel & impl

13 years agoRename virSecurityManagerSetFDLabel method
Daniel P. Berrange [Fri, 24 Jun 2011 13:43:43 +0000 (14:43 +0100)]
Rename virSecurityManagerSetFDLabel method

The virSecurityManagerSetFDLabel method is used to label
file descriptors associated with disk images. There will
shortly be a need to label other file descriptors in a
different way. So the current name is ambiguous. Rename
the method to virSecurityManagerSetImageFDLabel to clarify
its purpose

* src/libvirt_private.syms,
  src/qemu/qemu_migration.c, src/qemu/qemu_process.c,
  src/security/security_apparmor.c, src/security/security_dac.c,
  src/security/security_driver.h, src/security/security_manager.c,
  src/security/security_manager.h, src/security/security_selinux.c,
  src/security/security_stack.c: s/FDLabel/ImageFDLabel/

13 years agoAdd node prefix to virNodeGet(CPU|Memory)Stats structs and defines
Matthias Bolte [Wed, 15 Jun 2011 10:39:57 +0000 (12:39 +0200)]
Add node prefix to virNodeGet(CPU|Memory)Stats structs and defines

13 years agoqemu: Fix update device for CURRENT + FORCE flags
Jiri Denemark [Mon, 27 Jun 2011 09:25:19 +0000 (11:25 +0200)]
qemu: Fix update device for CURRENT + FORCE flags

When CURRENT and FORCE flags were used together, UpdateDeviceFlags did
nothing because it failed to transform CURRENT into either LIVE or
CONFIG.

13 years agonwfilter: Return error message about unresolvable variables
Stefan Berger [Mon, 27 Jun 2011 16:53:59 +0000 (12:53 -0400)]
nwfilter: Return error message about unresolvable variables

This is in response to bugzilla 664629

https://bugzilla.redhat.com/show_bug.cgi?id=664629

The patch below returns an appropriate error message if the chain of
nwfilters is found to contain unresolvable variables and therefore
cannot be instantiated.

Example: The following XMl added to a domain:

    <interface type='bridge'>
      <mac address='52:54:00:9f:80:45'/>
      <source bridge='virbr0'/>
      <model type='virtio'/>
      <filterref filter='test'/>
    </interface>

that references the following filter

<filter name='test' chain='root'>
  <filterref filter='clean-traffic'/>
  <filterref filter='allow-dhcp-server'/>
</filter>

now displays upon 'virsh start mydomain'

error: Failed to start domain mydomain
error: internal error Cannot instantiate filter due to unresolvable variable: DHCPSERVER

'DHPCSERVER' is contained in allow-dhcp-server.

13 years agobuild: rename Vcpupin to VcpuPin
Eric Blake [Fri, 24 Jun 2011 23:09:46 +0000 (17:09 -0600)]
build: rename Vcpupin to VcpuPin

We already have a public virDomainPinVcpu, which implies that
Pin and Vcpu are treated as separate words.  Unreleased commit
e261987c introduced virDomainGetVcpupinInfo as the first public
API that used Vcpupin, although we had prior internal uses of
that spelling.  For consistency, change the spelling to be two
words everywhere, regardless of whether pin comes first or last.

* daemon/remote.c: Treat vcpu and pin as separate words.
* include/libvirt/libvirt.h.in: Likewise.
* src/conf/domain_conf.c: Likewise.
* src/conf/domain_conf.h: Likewise.
* src/driver.h: Likewise.
* src/libvirt.c: Likewise.
* src/libvirt_private.syms: Likewise.
* src/libvirt_public.syms: Likewise.
* src/libxl/libxl_driver.c: Likewise.
* src/qemu/qemu_driver.c: Likewise.
* src/remote/remote_driver.c: Likewise.
* src/xen/xend_internal.c: Likewise.
* tools/virsh.c: Likewise.
* src/remote/remote_protocol.x: Likewise.
* src/remote_protocol-structs: Likewise.
Suggested by Matthias Bolte.

13 years agosysinfo: cleanup function/struct names.
Minoru Usui [Mon, 27 Jun 2011 07:39:34 +0000 (16:39 +0900)]
sysinfo: cleanup function/struct names.

Fix lack of 'virSysinfo' prefix of functions/structs in src/util/sysinfo.[ch]

13 years agosysinfo: fix lack of error check in virSysinfoFormat().
Minoru Usui [Mon, 27 Jun 2011 07:40:56 +0000 (16:40 +0900)]
sysinfo: fix lack of error check in virSysinfoFormat().

Fix lack of error check in virSysinfoFormat().

Signed-off-by: Minoru Usui <usui@mxm.nes.nec.co.jp>
13 years agotests: Partly fix networkxml2argvtest being configure result dependent
Matthias Bolte [Mon, 27 Jun 2011 14:55:13 +0000 (16:55 +0200)]
tests: Partly fix networkxml2argvtest being configure result dependent

Convert networkDnsmasqLeaseFileName to a replaceable function pointer
that allow the testsuite to use a version of that function that is not
depending on configure --localstatedir.

This fixes 5 of 6 test failures, when configure --localstatedir isn't
set to /var.

13 years agoqemu: Remove bogus error codes for NUMA memory tuning
Osier Yang [Mon, 27 Jun 2011 15:20:15 +0000 (23:20 +0800)]
qemu: Remove bogus error codes for NUMA memory tuning

This is no code between virSaveLastError and virGetLastError will
set an error, remove the bogus codes.

13 years agonetwork: fix indentation in networkBuildDnsmasqArgv
Laine Stump [Sat, 25 Jun 2011 05:11:05 +0000 (01:11 -0400)]
network: fix indentation in networkBuildDnsmasqArgv

This block was inadvertently added with the wrong indentation.

13 years agoOnly include parthelper if built with storage_disk
Ruben Kerkhof [Sun, 26 Jun 2011 09:39:14 +0000 (11:39 +0200)]
Only include parthelper if built with storage_disk

Parthelper is only compiled if both --with-libvirtd
and --with-storage-disk are set.

Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
13 years agobuild: avoid uninitialized variable
Eric Blake [Sat, 25 Jun 2011 02:53:53 +0000 (20:53 -0600)]
build: avoid uninitialized variable

Caught by gcc -O2, during autobuild.sh.

* src/qemu/qemu_driver.c (qemudDomainGetVcpupinInfo): Initialize vm.

13 years agobuild: fix VPATH builds
Eric Blake [Sat, 25 Jun 2011 02:48:49 +0000 (20:48 -0600)]
build: fix VPATH builds

The build currently fails when trying to create virnetprotocol.c
into $(builddir)/rpc, which doesn't exist.  But since the file
is part of the tarball, it should be generated into $(srcdir).
Caught by autobuild.sh.

* src/Makefile.am (VIR_NET_RPC_GENERATED): Generate into srcdir.

13 years agovcpupin: add query option to virsh vcpupin command
Taku Izumi [Fri, 24 Jun 2011 09:02:28 +0000 (18:02 +0900)]
vcpupin: add query option to virsh vcpupin command

This patch teaches "virsh vcpupin" command to query if no list
is given. Its feature is to show CPU affinity information in more
reader-friendly way.

 # virsh vcpupin VM --config
 VCPU: CPU Affinity
 ----------------------------------
    0: 1-6,9-20
    1: 10
    2: 5,9-11,15-20
    3: 1,3,5,7,9,11,13,15

When cpulist is omitted, vcpu number is optional. When vcpu number is
provided, information of only specified vcpu is displayed.

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
13 years agovcpuinfo: add the code to fallback to try new API
Taku Izumi [Fri, 24 Jun 2011 09:01:25 +0000 (18:01 +0900)]
vcpuinfo: add the code to fallback to try new API

The "virsh vcpuinfo" command results in failure when the target domain
is inactive on KVM. This patch improves this behavior by adding the
fallback to invoke virDomainGetVcpupinInfo API in case of
virDomainGetVcpus API returns error and the target domain is inactive.

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
13 years agovcpupin: implement the remote protocol to address the new API
Taku Izumi [Fri, 24 Jun 2011 09:00:22 +0000 (18:00 +0900)]
vcpupin: implement the remote protocol to address the new API

This patch implements the remote protocol to address the new API
(virDomainGetVcpupinInfo).

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
13 years agovcpupin: implement the code to support new API for the qemu driver
Taku Izumi [Fri, 24 Jun 2011 08:57:34 +0000 (17:57 +0900)]
vcpupin: implement the code to support new API for the qemu driver

This patch implements the code to address the new API (virDomainGetVcpupinInfo)
in the qemu driver.

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
13 years agovcpupin: introduce the new libvirt API (virDomainGetVcpupinInfo)
Taku Izumi [Fri, 24 Jun 2011 08:56:21 +0000 (17:56 +0900)]
vcpupin: introduce the new libvirt API (virDomainGetVcpupinInfo)

This patch introduces a new libvirt API (virDomainGetVcpupinInfo),
as a counterpart to virDomainPinVcpuFlags.

We can use virDomainGetVcpus API to retrieve CPU affinity information,
but can't use this API against inactive domains (at least in case of KVM),
as it lacks a flags parameter.
The usual thing is to add a new virDomainGetVcpusFlags, but that API name
is already occupied by the counterpart to virDomainGetMaxVcpus, which
has a completely different signature.

The virDomainGetVcpupinInfo is the new API to retrieve CPU affinity
information of active and inactive domains.  While the usual convention
is to list an array before its length, this API violates that rule
in order to be more like virDomainGetVcpus (where maxinfo was doing
double-duty as the length of two different arrays).

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
13 years agodocs: fix indentation of sub-elements of <ip> in network XML
Laine Stump [Fri, 24 Jun 2011 21:48:55 +0000 (17:48 -0400)]
docs: fix indentation of sub-elements of <ip> in network XML

The sub-elements of <ip> had been placed at the same level of
indentation as ip itself, implying that they were really elements of
<network>. Within that, sub-elements of ip/dhcp were also at that same
level. These have been double-indented.

At the same time, I realized that the documentation for the new <dns>
element had been placed right in the middle of the description of the
sub-elements of <ip>. I moved it up out of the way.

13 years agobuf: protect against integer overflow
Eric Blake [Fri, 24 Jun 2011 20:04:04 +0000 (14:04 -0600)]
buf: protect against integer overflow

It's unlikely that we'll ever want to escape a string as long as
INT_MAX/6, but adding this check can't hurt.

* src/util/buf.c (virBufferEscapeSexpr, virBufferEscapeString):
Check for (unlikely) overflow.

13 years agoremote: protect against integer overflow
Eric Blake [Fri, 24 Jun 2011 18:16:05 +0000 (12:16 -0600)]
remote: protect against integer overflow

Integer overflow and remote code are never a nice mix.

This has existed since commit 56cd414.

* src/libvirt.c (virDomainGetVcpus): Reject overflow up front.
* src/remote/remote_driver.c (remoteDomainGetVcpus): Avoid overflow
on sending rpc.
* daemon/remote.c (remoteDispatchDomainGetVcpus): Avoid overflow on
receiving rpc.

13 years agobuild: update gnulib for intprops
Eric Blake [Fri, 24 Jun 2011 18:24:44 +0000 (12:24 -0600)]
build: update gnulib for intprops

Done as a separate commit to make backporting the next patch easier.
We are already using "intprops.h", but this makes it explicit.

* .gnulib: Update, for syntax-check fix.
* bootstrap.conf (gnulib_modules): Make intprops use explicit.
* src/locking/domain_lock.c (includes): Drop unused header.
* src/nwfilter/nwfilter_learnipaddr.c (includes): Use "", not <>,
for gnulib.

13 years agobuild: avoid long line tests
Eric Blake [Fri, 24 Jun 2011 21:30:00 +0000 (15:30 -0600)]
build: avoid long line tests

'make syntax-check' regression introduced in commit 60b9c69.

* tests/networkxml2argvdata/*.argv: Break long lines.

13 years agoRename iface(G|S)etMacaddr to iface(G|S)etMacAddress for consistency
Matthias Bolte [Fri, 24 Jun 2011 20:39:15 +0000 (22:39 +0200)]
Rename iface(G|S)etMacaddr to iface(G|S)etMacAddress for consistency

13 years agoFix typo in libvirt_private.syms
Matthias Bolte [Fri, 24 Jun 2011 20:31:05 +0000 (22:31 +0200)]
Fix typo in libvirt_private.syms

Triggered a linker error on MinGW.

13 years agoNetwork: Add support for DNS hosts definition to the network XML
Michal Novotny [Fri, 24 Jun 2011 10:04:40 +0000 (12:04 +0200)]
Network: Add support for DNS hosts definition to the network XML

This commit introduces names definition for the DNS hosts file using
the following syntax:

  <dns>
    <host ip="192.168.1.1">
      <name>alias1</name>
      <name>alias2</name>
    </host>
  </dns>

Some of the improvements and fixes were done by Laine Stump so
I'm putting him into the SOB clause again ;-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
Signed-off-by: Laine Stump <laine@laine.org>
13 years agoNetwork: Add additional hosts internal infrastructure
Michal Novotny [Fri, 24 Jun 2011 10:04:39 +0000 (12:04 +0200)]
Network: Add additional hosts internal infrastructure

Signed-off-by: Michal Novotny <minovotn@redhat.com>