Ignore:
Timestamp:
08/30/13 13:27:04 (8 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
8b49230
Parents:
7a529a9
Message:

Fixed libpacketdump decode issues with 802.11 on big endian hosts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpacketdump/link_4.c

    r400fe5e r8780774  
    3030
    3131typedef struct ieee80211_frame_control {
     32# if __BYTE_ORDER == __LITTLE_ENDIAN   
    3233        uint8_t         version:2;
    3334        uint8_t         type:2;
     
    4142        uint8_t         wep:1;
    4243        uint8_t         order:1;
     44# elif __BYTE_ORDER == __BIG_ENDIAN
     45        uint8_t         subtype:4;
     46        uint8_t         type:2;
     47        uint8_t         version:2;
     48        uint8_t         order:1;
     49        uint8_t         wep:1;
     50        uint8_t         more_data:1;
     51        uint8_t         power:1;
     52        uint8_t         retry:1;
     53        uint8_t         more_frag:1;
     54        uint8_t         from_ds:1;
     55        uint8_t         to_ds:1;
     56#else
     57#       error "Adjust your <bits/endian.h> defines"
     58# endif
    4359} __attribute__ ((__packed__)) ieee80211_frame_control;
    4460
     
    107123
    108124typedef struct ieee80211_capinfo {
    109         uint16_t        ess:1;
    110         uint16_t        ibss:1;
    111         uint16_t        cf_pollable:1;
    112         uint16_t        cf_poll_req:1;
    113         uint16_t        privacy:1;
    114         uint16_t        short_preamble:1;
    115         uint16_t        pbcc:1;
    116         uint16_t        channel_agility:1;
    117         uint16_t        spectrum_mgmt:1;
    118         uint16_t        qos:1;
    119         uint16_t        short_slot_time:1;
    120         uint16_t        apsd:1;
    121         uint16_t        res1:1;
    122         uint16_t        dsss_ofdm:1;
    123         uint16_t        delayed_block_ack:1;
    124         uint16_t        immediate_block_ack:1;
     125#if __BYTE_ORDER == __LITTLE_ENDIAN
     126        uint8_t ess:1;
     127        uint8_t ibss:1;
     128        uint8_t cf_pollable:1;
     129        uint8_t cf_poll_req:1;
     130        uint8_t privacy:1;
     131        uint8_t short_preamble:1;
     132        uint8_t pbcc:1;
     133        uint8_t channel_agility:1;
     134        uint8_t spectrum_mgmt:1;
     135        uint8_t qos:1;
     136        uint8_t short_slot_time:1;
     137        uint8_t apsd:1;
     138        uint8_t res1:1;
     139        uint8_t dsss_ofdm:1;
     140        uint8_t delayed_block_ack:1;
     141        uint8_t immediate_block_ack:1;
     142#elif __BYTE_ORDER == __BIG_ENDIAN
     143        uint8_t channel_agility:1;
     144        uint8_t pbcc:1;
     145        uint8_t short_preamble:1;
     146        uint8_t privacy:1;
     147        uint8_t cf_poll_req:1;
     148        uint8_t cf_pollable:1;
     149        uint8_t ibss:1;
     150        uint8_t ess:1;
     151        uint8_t immediate_block_ack:1;
     152        uint8_t delayed_block_ack:1;
     153        uint8_t dsss_ofdm:1;
     154        uint8_t res1:1;
     155        uint8_t apsd:1;
     156        uint8_t short_slot_time:1;
     157        uint8_t qos:1;
     158        uint8_t spectrum_mgmt:1;
     159#else
     160# error "Unknown byte order -- please check <bits/endian.h>"
     161#endif
    125162} __attribute__ ((__packed__)) ieee80211_capinfo;
    126163
Note: See TracChangeset for help on using the changeset viewer.