vdagentd: Do endian swapping.
This allows running big endian and little endian guest side by side using
cut & paste between them.
There is a general design idea that swapping should come as close to
virtio_read/virtio_write as possible. In particular, the protocol
between vdagent and vdagentd is guest-specific and in native endian.
With muliple layers of headers this is a bit tricky. A few message types
have to be swapped fully before passing through vdagentd.
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
Signed-off-by: Victor Toso <me@victortoso.com>
---
v2:
- introduce helper functions to swap (a portion of) a message wholesale
- pollute fewer places with swapping sometimes at the cost of slightly
more verbose code
v3:
- use glib byteswap macros in place of endian.h byteswap macros
- move variable declaration out of case statement
- reuse more of existing clipboard code
v4:
- also use glib byteswap for 64bit swaps
- use file xfer message structure for swapping size
v5:
- rebase on top of vdagentd: early return on bad message size