aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/netxray.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-10-29 16:03:08 -0700
committerGuy Harris <guy@alum.mit.edu>2014-10-29 23:04:05 +0000
commit8165448504749c0a0554e2eef1964f6c88bad15d (patch)
tree14c6d3e8bc73052fe818519de7260e3bb672a4e6 /wiretap/netxray.c
parent4acf4955f54c1fba30fdf2dc0dd4e11f6a3595b5 (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.c35
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: