diff options
Diffstat (limited to 'net/wireshark/files/patch-epan_dissectors_packet-radiotap.c')
-rw-r--r-- | net/wireshark/files/patch-epan_dissectors_packet-radiotap.c | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/net/wireshark/files/patch-epan_dissectors_packet-radiotap.c b/net/wireshark/files/patch-epan_dissectors_packet-radiotap.c deleted file mode 100644 index ece82f94e19e..000000000000 --- a/net/wireshark/files/patch-epan_dissectors_packet-radiotap.c +++ /dev/null @@ -1,206 +0,0 @@ ---- epan/dissectors/packet-radiotap.c.orig Mon Oct 10 06:23:07 2005 -+++ epan/dissectors/packet-radiotap.c Tue Dec 6 18:34:19 2005 -@@ -73,7 +73,6 @@ - IEEE80211_RADIOTAP_ANTENNA = 11, - IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, - IEEE80211_RADIOTAP_DB_ANTNOISE = 13, -- IEEE80211_RADIOTAP_FCS = 14, - IEEE80211_RADIOTAP_EXT = 31 - }; - -@@ -121,6 +120,11 @@ - #define IEEE80211_RADIOTAP_F_FRAG 0x08 /* sent/received - * with fragmentation - */ -+#define IEEE80211_RADIOTAP_F_FCS 0x10 /* frame includes FCS */ -+#define IEEE80211_RADIOTAP_F_DATAPAD 0x20 /* frame has padding between -+ * 802.11 header and payload -+ * (to 32-bit boundary) -+ */ - - /* protocol */ - static int proto_radiotap = -1; -@@ -140,11 +144,14 @@ - static int hf_radiotap_db_antnoise = -1; - static int hf_radiotap_txpower = -1; - static int hf_radiotap_preamble = -1; -+static int hf_radiotap_fcs = -1; -+static int hf_radiotap_datapad = -1; - - static gint ett_radiotap = -1; - static gint ett_radiotap_present = -1; - - static dissector_handle_t ieee80211_handle; -+static dissector_handle_t ieee80211_datapad_handle; - - static void - dissect_radiotap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -@@ -190,6 +197,12 @@ - { 0, NULL }, - }; - -+ static const value_string truefalse_type[] = { -+ { 0, "False" }, -+ { 1, "True" }, -+ { 0, NULL }, -+ }; -+ - static hf_register_info hf[] = { - { &hf_radiotap_version, - { "Header revision", "radiotap.version", -@@ -208,6 +221,14 @@ - { "Preamble", "radiotap.flags.preamble", - FT_UINT32, BASE_DEC, VALS(preamble_type), 0x0, "", HFILL } }, - -+ /* XXX for debugging */ -+ { &hf_radiotap_fcs, -+ { "FCS", "radiotap.flags.fcs", -+ FT_UINT32, BASE_DEC, VALS(truefalse_type), 0x0, "", HFILL } }, -+ { &hf_radiotap_datapad, -+ { "DATAPAD", "radiotap.flags.datapad", -+ FT_UINT32, BASE_DEC, VALS(truefalse_type), 0x0, "", HFILL } }, -+ - { &hf_radiotap_mactime, - { "MAC timestamp", "radiotap.mactime", - FT_UINT64, BASE_DEC, NULL, 0x0, "", HFILL } }, -@@ -257,6 +278,7 @@ - static int - ieee80211_mhz2ieee(int freq, int flags) - { -+#define IS_CHAN_IN_PUBLIC_SAFETY_BAND(_c) ((_c) > 4940 && (_c) < 4990) - if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ - if (freq == 2484) - return 14; -@@ -265,16 +287,28 @@ - else - return 15 + ((freq - 2512) / 20); - } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ -- return (freq - 5000) / 5; -+ if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) -+ return ((freq * 10) + (((freq % 5) == 2) ? 5 : 0) - 49400) / 5; -+ if (freq <= 5000) -+ return (freq - 4000) / 5; -+ else -+ return (freq - 5000) / 5; - } else { /* either, guess */ - if (freq == 2484) - return 14; - if (freq < 2484) - return (freq - 2407) / 5; -- if (freq < 5000) -- return 15 + ((freq - 2512) / 20); -+ if (freq < 5000) { -+ if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) -+ return ((freq * 10) + (((freq % 5) == 2) ? 5 : 0) - 49400)/5; -+ else if (freq > 4900) -+ return (freq - 4000) / 5; -+ else -+ return 15 + ((freq - 2512) / 20); -+ } - return (freq - 5000) / 5; - } -+#undef IS_CHAN_IN_PUBLIC_SAFETY_BAND - } - - static void -@@ -294,7 +328,7 @@ - guint32 length; - guint32 rate, freq, flags; - gint8 dbm; -- guint8 db; -+ guint8 db, rflags; - guint32 present, next_present; - int bit; - -@@ -334,6 +368,7 @@ - */ - offset += sizeof(struct ieee80211_radiotap_header); - -+ rflags = 0; - for (; present; present = next_present) { - /* clear the least significant bit that is set */ - next_present = present & (present - 1); -@@ -344,45 +379,16 @@ - switch (bit) { - case IEEE80211_RADIOTAP_FLAGS: - if (tree) { -+ rflags = tvb_get_guint8(tvb, offset); - proto_tree_add_uint(radiotap_tree, hf_radiotap_preamble, -- tvb, 0, 0, (tvb_get_guint8(tvb, offset) & -- IEEE80211_RADIOTAP_F_SHORTPRE) != 0); -+ tvb, 0, 0, (rflags&IEEE80211_RADIOTAP_F_SHORTPRE) != 0); -+ proto_tree_add_uint(radiotap_tree, hf_radiotap_fcs, -+ tvb, 0, 0, (rflags&IEEE80211_RADIOTAP_F_FCS) != 0); -+ proto_tree_add_uint(radiotap_tree, hf_radiotap_datapad, -+ tvb, 0, 0, (rflags&IEEE80211_RADIOTAP_F_DATAPAD) != 0); - } - offset++; - /* XXX CFP, WEP, FRAG */ --#if 0 -- capability = tvb_get_letohs (tvb, offset); -- -- cap_item = proto_tree_add_uint_format (tree, ff_capture, -- tvb, offset, 2, -- capability, -- "Capability Information: 0x%04X", -- capability); -- cap_tree = proto_item_add_subtree (cap_item, ett_cap_tree); -- proto_tree_add_boolean (cap_tree, ff_cf_ess, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_cf_ibss, tvb, offset, 2, -- capability); -- if (ESS_SET (capability) != 0) /* This is an AP */ -- proto_tree_add_uint (cap_tree, ff_cf_ap_poll, tvb, offset, 2, -- capability); -- -- else /* This is a STA */ -- proto_tree_add_uint (cap_tree, ff_cf_sta_poll, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_cf_privacy, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_cf_preamble, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_cf_pbcc, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_cf_agility, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_short_slot_time, tvb, offset, 2, -- capability); -- proto_tree_add_boolean (cap_tree, ff_dsss_ofdm, tvb, offset, 2, -- capability); --#endif - break; - case IEEE80211_RADIOTAP_RATE: - rate = tvb_get_guint8(tvb, offset) & 0x7f; -@@ -480,8 +486,8 @@ - break; - case IEEE80211_RADIOTAP_TSFT: - if (tree) { -- proto_tree_add_item(radiotap_tree, hf_radiotap_mactime, -- tvb, offset, 8, FALSE); -+ proto_tree_add_uint64(radiotap_tree, hf_radiotap_mactime, -+ tvb, offset, 8, tvb_get_letoh64(tvb, offset)); - } - offset+=8; - break; -@@ -495,8 +501,11 @@ - } - } - -+ if (rflags & IEEE80211_RADIOTAP_F_FCS) -+ pinfo->pseudo_header->ieee_802_11.fcs_len = 4; - /* dissect the 802.11 header next */ -- call_dissector(ieee80211_handle, -+ call_dissector((rflags & IEEE80211_RADIOTAP_F_DATAPAD) ? -+ ieee80211_datapad_handle : ieee80211_handle, - tvb_new_subset(tvb, length, -1, -1), pinfo, tree); - #undef BITNO_32 - #undef BITNO_16 -@@ -513,6 +522,7 @@ - - /* handle for 802.11 dissector */ - ieee80211_handle = find_dissector("wlan"); -+ ieee80211_datapad_handle = find_dissector("wlan_datapad"); - - radiotap_handle = create_dissector_handle(dissect_radiotap, proto_radiotap); - |