[Spice-devel] [PATCH v4] Do endian swapping.
Michal Suchánek
msuchanek at suse.de
Fri Jan 20 14:06:09 UTC 2017
Hello,
On Thu, 19 Jan 2017 16:18:27 +0100
Victor Toso <victortoso at redhat.com> wrote:
> Hi,
>
> On Fri, Jan 13, 2017 at 07:32:12PM +0100, Michal Suchanek wrote:
> > /* vdagentd <-> spice-client communication handling */
> > static void send_capabilities(struct vdagent_virtio_port *vport,
> > uint32_t request)
> > @@ -102,6 +130,7 @@ static void send_capabilities(struct
> > vdagent_virtio_port *vport, VD_AGENT_SET_CAPABILITY(caps->caps,
> > VD_AGENT_CAP_GUEST_LINEEND_LF); VD_AGENT_SET_CAPABILITY(caps->caps,
> > VD_AGENT_CAP_MAX_CLIPBOARD); VD_AGENT_SET_CAPABILITY(caps->caps,
> > VD_AGENT_CAP_AUDIO_VOLUME_SYNC);
> > + virtio_msg_uint32_to_le((uint8_t *)caps, size, 0);
> >
> > vdagent_virtio_port_write(vport, VDP_CLIENT_PORT,
> > VD_AGENT_ANNOUNCE_CAPABILITIES, 0,
> > @@ -151,8 +180,8 @@ static void do_client_monitors(struct
> > vdagent_virtio_port *vport, int port_nr, (uint8_t *)mon_config,
> > size);
> >
> > /* Acknowledge reception of monitors config to spice server /
> > client */
> > - reply.type = VD_AGENT_MONITORS_CONFIG;
> > - reply.error = VD_AGENT_SUCCESS;
> > + reply.type = GUINT32_TO_LE(VD_AGENT_MONITORS_CONFIG);
> > + reply.error = GUINT32_TO_LE(VD_AGENT_SUCCESS);
> > vdagent_virtio_port_write(vport, port_nr, VD_AGENT_REPLY, 0,
> > (uint8_t *)&reply, sizeof(reply));
> > }
> > @@ -255,8 +284,8 @@ static void send_file_xfer_status(struct
> > vdagent_virtio_port *vport, const char *msg, uint32_t id, uint32_t
> > xfer_status) {
> > VDAgentFileXferStatusMessage status = {
> > - .id = id,
> > - .result = xfer_status,
> > + .id = GUINT32_TO_LE(id),
> > + .result = GUINT32_TO_LE(xfer_status),
> > };
> > syslog(LOG_WARNING, msg, id);
> > if (vport)
> > @@ -324,6 +353,8 @@ static int virtio_port_read_complete(
> > uint8_t *data)
> > {
> > uint32_t min_size = 0;
> > + uint32_t *data_type = (uint32_t *)data;
> > + uint32_t *id = (uint32_t *)data;
>
> I would recommend removing this change as *data_type is only used for
> VD_AGENT_CLIPBOARD and *id for VD_AGENT_FILE_XFER_STATUS, both in
> nested switches with the solely propose of byte swap. Let's use a
> helper function for each case.
It was requested that to place the declaration at the start of the
function rather than inside the switch statement. I would personally
prefer placing the declarations inside the switch statement where they
are used. The code already uses a mix of these declaration styles
anyway. It's quire possible to use a byteswap helper for one or two
specific message types but I don't think it will particularly improve
readability of this code. It also performs size checks which are even
more convoluted than the swapping.
I prefer to do the swapping in one place for all message types.
On the other hand splitting off the uinput handling done specifically
for mouse into a helper so the mouse handling is done similarily to the
other messages improves readability and consistency at the same time. I
sent this change in a separate patch.
Thanks
Michal
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170120/23ca8f4a/attachment.sig>
More information about the Spice-devel
mailing list