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