aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/netxray.c
diff options
context:
space:
mode:
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: