See 2/2 for explanation.
BUT, I am not fully convinced about changing XDR though. In my testing
it did not really show to be that backward compatible. I did the
following tests:
1) run libvirtd unpatched,
2) run libvirtd with just arguments if the callback fixed (i.e. just the
first hunk of 2/2),
3) run libvirtd with patch 2/2 as is
And also, I repeated the same for split daemon using qemu:///system and
network:///system URIs. I've tested the following command:
virsh net-update default add dns-txt '<txt name="example"
value="example value"/>'
and if I got the following error message:
Operation not supported: can't update 'ip' section of network
'default'
I knew that arguments are swapped (because 'add' command has value 3,
'dns-txt' section has value 11 and 'ip' section has value 3).
From the results I've constructed the following tables:
| libvirtd (case 1) | libvirtd + swap (case 2) | libvirtd + RPC (case 3)
--------------+-------------------+--------------------------+------------------------
client | 1 | 0 | 0
client + swap | 0 | 1 | 1
client + RPC | 0 | 1 | 1
Both client and libvirtd were tested for all three cases as described
above; 1 means success (API returned without an error), 0 means the
error message from above was observed. For libvirtd I've tested just
qemu:///system, because network:///system has to yield the same results.
For split daemon (SD) case:
qemu:///system
| SD (case 1) | SD + swap (case 2) | SD + RPC (case 3)
--------------+-------------+--------------------+------------------
client | 0 | 0 | 0
client + swap | 1 | 1 | 1
client + RPC | 1 | 1 | 1
network:///system
| SD (case 1) | SD + swap (case 2) | SD + RPC (case 3)
--------------+-------------+--------------------+------------------
client | 1 | 0 | 0
client + swap | 0 | 1 | 1
client + RPC | 0 | 1 | 1
Therefore, what I am trying to say is, there is no case where plain swap
(= case 2) would not help and including RPC change (= case 3) would
help. Maybe I'm missing something?
Michal Prívozník (2):
lib: Debug print all arguments of virNetworkUpdate()
lib: Fix calling of virNetworkUpdate() driver callback
src/libvirt-network.c | 6 +++---
src/remote/remote_protocol.x | 7 ++++++-
src/remote_protocol-structs | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
--
2.26.2