From e93fe1ba65dceaa662da29654a119011d46c71d5 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Fri, 16 Nov 2018 00:33:48 +0100 Subject: add/clean big-endian packed structs (struct_endianess.py) Change-Id: I97ce5e758b47ec5cfc53c22362b71070be15aff3 --- src/gprs/gprs_sndcp.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/gprs/gprs_sndcp.c') diff --git a/src/gprs/gprs_sndcp.c b/src/gprs/gprs_sndcp.c index f0239cb66..1eeafe2b1 100644 --- a/src/gprs/gprs_sndcp.c +++ b/src/gprs/gprs_sndcp.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -163,27 +164,43 @@ static void debug_ip_packet(uint8_t *data, int len, int dir, char *info) /* Chapter 7.2: SN-PDU Formats */ struct sndcp_common_hdr { +#if OSMO_IS_LITTLE_ENDIAN /* octet 1 */ uint8_t nsapi:4; uint8_t more:1; uint8_t type:1; uint8_t first:1; uint8_t spare:1; +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ + uint8_t spare:1, first:1, type:1, more:1, nsapi:4; +#endif } __attribute__((packed)); /* PCOMP / DCOMP only exist in first fragment */ struct sndcp_comp_hdr { +#if OSMO_IS_LITTLE_ENDIAN /* octet 2 */ uint8_t pcomp:4; uint8_t dcomp:4; +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ + uint8_t dcomp:4, pcomp:4; +#endif } __attribute__((packed)); struct sndcp_udata_hdr { +#if OSMO_IS_LITTLE_ENDIAN /* octet 3 */ uint8_t npdu_high:4; uint8_t seg_nr:4; /* octet 4 */ uint8_t npdu_low; +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ + uint8_t seg_nr:4, npdu_high:4; + uint8_t npdu_low; +#endif } __attribute__((packed)); -- cgit v1.2.3