Re: Endianness of particular fields?
Johannes Berg <[email protected]> Thu, 22 Feb 2018 21:19:55 +0100
| Newsgroups | org.netbsd.radiotap |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 2018-02-22 at 10:13 -0800, Guy Harris wrote:
> http://www.radiotap.org
>
> says
>
> Important Radiotap Characteristics
>
> ...
>
> * Data is specified in little endian byte-order, all data
> fields including the it_version, it_len and it_present fields in the
> radiotap header are to be specified in little endian byte-order. This
> wiki has adopted the Linux convention of using __le64, __le32 and
> __le16 for 64-, 32- and 16-bit little endian quantities.
>
> However, for example
>
> http://www.radiotap.org/fields/dB%20TX%20attenuation.html
>
> says:
>
> Structure
> u16
>
> rather than __le{anything}.
Oops.
> I presume the *intent* is that data in particular fields always be
> little-endian.
Yes.
> Part of the problem here is that the Linux convention, used to
> describe the comment headers specifies endianness rather than
> signedness (presumably everything is unsigned), and the convention
> used for particular fields specifies signedness rather than
> endianness (presumably everything is little-endian).
Yeah.
> Should the site use the {u,s}{64,32,16,8} convention uniformly, and
> say "all multi-byte fields in all the headers and the fields are
> little-endian", to make it a little clearer that fields, as well as
> headers, are little-endian? (Or, alternatively, say "{u,s}_le_64",
> "{u,s}_le_32", etc., or something similar with fewer underscores as
> desired?)
I think we should just use {u,s}{64,32,16,8} and drop the whole __le
thing.
I'd say we should just remove the wording about adopting the Linux
convention. We'd never use __be16 or such anyway.
johannes