diff options
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: |