From a915552e990d9009de54ff82c48bc8f1d1df2603 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Thu, 3 Mar 2011 21:07:25 +0100 Subject: spiceredirproto: pack structs --- usbredirproto.h | 71 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/usbredirproto.h b/usbredirproto.h index 6a2da77cf..b5290d661 100644 --- a/usbredirproto.h +++ b/usbredirproto.h @@ -21,6 +21,25 @@ #ifndef __USBREDIRPROTO_H #define __USBREDIRPROTO_H +/* PACK macros borrowed from spice-protocol */ +#ifdef __GNUC__ + +#define ATTR_PACKED __attribute__ ((__packed__)) + +#ifdef __MINGW32__ +#pragma pack(push,1) +#endif + +#else + +#pragma pack(push) +#pragma pack(1) +#define ATTR_PACKED +#pragma warning(disable:4200) +#pragma warning(disable:4103) + +#endif + #include enum { @@ -91,93 +110,93 @@ struct usb_redir_header { uint32_t type; uint32_t length; uint32_t id; -}; +} ATTR_PACKED; struct usb_redir_hello_header { char version[64]; uint32_t capabilities[0]; -}; +} ATTR_PACKED; struct usb_redir_device_info_header { uint8_t speed; -}; +} ATTR_PACKED; struct usb_redir_ep_info_header { uint8_t type[32]; uint8_t interval[32]; uint8_t interface[32]; -}; +} ATTR_PACKED; struct usb_redir_reset_status_header { uint8_t status; -}; +} ATTR_PACKED; struct usb_redir_set_configuration_header { uint8_t configuration; -}; +} ATTR_PACKED; struct usb_redir_configuration_status_header { uint8_t status; uint8_t configuration; -}; +} ATTR_PACKED; struct usb_redir_set_alt_setting_header { uint8_t interface; uint8_t alt; -}; +} ATTR_PACKED; struct usb_redir_get_alt_setting_header { uint8_t interface; -}; +} ATTR_PACKED; struct usb_redir_alt_setting_status_header { uint8_t status; uint8_t interface; uint8_t alt; -}; +} ATTR_PACKED; struct usb_redir_start_iso_stream_header { uint8_t endpoint; uint8_t pkts_per_urb; uint8_t no_urbs; -}; +} ATTR_PACKED; struct usb_redir_stop_iso_stream_header { uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_iso_stream_status_header { uint8_t status; uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_start_interrupt_receiving_header { uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_stop_interrupt_receiving_header { uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_interrupt_receiving_status_header { uint8_t status; uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_alloc_bulk_streams_header { uint8_t endpoint; uint8_t no_streams; -}; +} ATTR_PACKED; struct usb_redir_free_bulk_streams_header { uint8_t endpoint; -}; +} ATTR_PACKED; struct usb_redir_bulk_streams_status_header { uint8_t status; uint8_t endpoint; uint8_t no_streams; -}; +} ATTR_PACKED; struct usb_redir_control_packet_header { uint8_t endpoint; @@ -187,25 +206,31 @@ struct usb_redir_control_packet_header { uint16_t value; uint16_t index; uint16_t length; -}; +} ATTR_PACKED; struct usb_redir_bulk_packet_header { uint8_t endpoint; uint8_t status; uint16_t length; uint32_t stream_id; -}; +} ATTR_PACKED; struct usb_redir_iso_packet_header { uint8_t endpoint; uint8_t status; uint16_t length; -}; +} ATTR_PACKED; struct usb_redir_interrupt_packet_header { uint8_t endpoint; uint8_t status; uint16_t length; -}; +} ATTR_PACKED; + +#undef ATTR_PACKED + +#if defined(__MINGW32__) || !defined(__GNUC__) +#pragma pack(pop) +#endif #endif -- cgit v1.2.3