diff options
author | Guy Harris <guy@alum.mit.edu> | 2014-10-29 16:03:08 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2014-10-29 23:04:05 +0000 |
commit | 8165448504749c0a0554e2eef1964f6c88bad15d (patch) | |
tree | 14c6d3e8bc73052fe818519de7260e3bb672a4e6 /wiretap/netxray.c | |
parent | 4acf4955f54c1fba30fdf2dc0dd4e11f6a3595b5 (diff) |
Expand the 802.11 pseudo-header and support new radio metadata.
Add a set of presence bits, so we can indicate which bits of radio
metadata we do and don't have.
Fill in more radio metadata from capture files, and display it.
(More to come.)
Change-Id: Idea2c05442c74af17c14c4d5a8d8025ab27fbd15
Reviewed-on: https://code.wireshark.org/review/4987
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wiretap/netxray.c')
-rw-r--r-- | wiretap/netxray.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/wiretap/netxray.c b/wiretap/netxray.c index 4061a6ee61..bb795fe362 100644 --- a/wiretap/netxray.c +++ b/wiretap/netxray.c @@ -1257,7 +1257,7 @@ netxray_process_rec_header(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr, hdr.hdr_2_x.xxx[12]; phdr->pseudo_header.ieee_802_11.data_rate = hdr.hdr_2_x.xxx[13]; - phdr->pseudo_header.ieee_802_11.signal_level = + phdr->pseudo_header.ieee_802_11.signal_percent = hdr.hdr_2_x.xxx[14]; /* * According to Ken Mann, at least in the captures @@ -1265,6 +1265,20 @@ netxray_process_rec_header(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr, * is either 0xFF meaning "none reported" or a value * from 0x00 to 0x7F for 0 to 100%. */ + if (hdr.hdr_2_x.xxx[15] == 0xFF) { + phdr->pseudo_header.ieee_802_11.presence_flags = + PHDR_802_11_HAS_CHANNEL | + PHDR_802_11_HAS_DATA_RATE | + PHDR_802_11_HAS_SIGNAL_PERCENT; + } else { + phdr->pseudo_header.ieee_802_11.noise_percent = + hdr.hdr_2_x.xxx[15]*100/127; + phdr->pseudo_header.ieee_802_11.presence_flags = + PHDR_802_11_HAS_CHANNEL | + PHDR_802_11_HAS_DATA_RATE | + PHDR_802_11_HAS_SIGNAL_PERCENT | + PHDR_802_11_HAS_NOISE_PERCENT; + } break; case WTAP_ENCAP_ISDN: @@ -1941,9 +1955,22 @@ netxray_dump_2_0(wtap_dumper *wdh, switch (phdr->pkt_encap) { case WTAP_ENCAP_IEEE_802_11_WITH_RADIO: - rec_hdr.xxx[12] = pseudo_header->ieee_802_11.channel; - rec_hdr.xxx[13] = (guint8)pseudo_header->ieee_802_11.data_rate; - rec_hdr.xxx[14] = pseudo_header->ieee_802_11.signal_level; + rec_hdr.xxx[12] = + (pseudo_header->ieee_802_11.presence_flags & PHDR_802_11_HAS_CHANNEL) ? + pseudo_header->ieee_802_11.channel : + 0; + rec_hdr.xxx[13] = + (pseudo_header->ieee_802_11.presence_flags & PHDR_802_11_HAS_DATA_RATE) ? + (guint8)pseudo_header->ieee_802_11.data_rate : + 0; + rec_hdr.xxx[14] = + (pseudo_header->ieee_802_11.presence_flags & PHDR_802_11_HAS_SIGNAL_PERCENT) ? + pseudo_header->ieee_802_11.signal_percent : + 0; + rec_hdr.xxx[15] = + (pseudo_header->ieee_802_11.presence_flags & PHDR_802_11_HAS_NOISE_PERCENT) ? + pseudo_header->ieee_802_11.noise_percent*127/100 : + 0xFF; break; case WTAP_ENCAP_PPP_WITH_PHDR: |