1*e018180dSDominic SpillIndex: wireshark-1.8.2/epan/dissectors/packet-ppi.c 2*e018180dSDominic Spill=================================================================== 3*e018180dSDominic Spill--- wireshark-1.8.2.orig/epan/dissectors/packet-ppi.c 2013-02-01 12:18:18.208820553 -0800 4*e018180dSDominic Spill+++ wireshark-1.8.2/epan/dissectors/packet-ppi.c 2013-02-01 12:18:50.000000000 -0800 5*e018180dSDominic Spill@@ -181,6 +181,7 @@ 6*e018180dSDominic Spill PPI_VECTOR_INFO = 30003, /* currently available in draft from. [email protected] */ 7*e018180dSDominic Spill PPI_SENSOR_INFO = 30004, 8*e018180dSDominic Spill PPI_ANTENNA_INFO = 30005, 9*e018180dSDominic Spill+ PPI_BTLE = 30006, 10*e018180dSDominic Spill CACE_PRIVATE = 0xCACE 11*e018180dSDominic Spill /* All others RESERVED. Contact the WinPcap team for an assignment */ 12*e018180dSDominic Spill } ppi_field_type; 13*e018180dSDominic Spill@@ -319,7 +320,7 @@ 14*e018180dSDominic Spill 15*e018180dSDominic Spill static dissector_handle_t data_handle; 16*e018180dSDominic Spill static dissector_handle_t ieee80211_ht_handle; 17*e018180dSDominic Spill-static dissector_handle_t ppi_gps_handle, ppi_vector_handle, ppi_sensor_handle, ppi_antenna_handle; 18*e018180dSDominic Spill+static dissector_handle_t ppi_gps_handle, ppi_vector_handle, ppi_sensor_handle, ppi_antenna_handle, ppi_btle_handle; 19*e018180dSDominic Spill 20*e018180dSDominic Spill 21*e018180dSDominic Spill static const true_false_string tfs_ppi_head_flag_alignment = { "32-bit aligned", "Not aligned" }; 22*e018180dSDominic Spill@@ -881,7 +882,19 @@ 23*e018180dSDominic Spill call_dissector(ppi_antenna_handle, next_tvb, pinfo, ppi_tree); 24*e018180dSDominic Spill } 25*e018180dSDominic Spill break; 26*e018180dSDominic Spill- 27*e018180dSDominic Spill+ case PPI_BTLE: 28*e018180dSDominic Spill+ if (ppi_btle_handle == NULL) 29*e018180dSDominic Spill+ { 30*e018180dSDominic Spill+ proto_tree_add_text(ppi_tree, tvb, offset, data_len, 31*e018180dSDominic Spill+ "%s (%u bytes)", val_to_str(data_type, (value_string *)&vs_ppi_field_type, "BTLE: "), data_len); 32*e018180dSDominic Spill+ } 33*e018180dSDominic Spill+ else /* we found a suitable dissector */ 34*e018180dSDominic Spill+ { 35*e018180dSDominic Spill+ /* skip over the ppi_fieldheader, and pass it off to the dedicated BTLE dissetor */ 36*e018180dSDominic Spill+ next_tvb = tvb_new_subset(tvb, offset + 4, data_len - 4 , -1); 37*e018180dSDominic Spill+ call_dissector(ppi_btle_handle, next_tvb, pinfo, ppi_tree); 38*e018180dSDominic Spill+ } 39*e018180dSDominic Spill+ break; 40*e018180dSDominic Spill default: 41*e018180dSDominic Spill if (tree) 42*e018180dSDominic Spill proto_tree_add_text(ppi_tree, tvb, offset, data_len, 43*e018180dSDominic Spill@@ -1365,6 +1378,7 @@ 44*e018180dSDominic Spill ppi_vector_handle = find_dissector("ppi_vector"); 45*e018180dSDominic Spill ppi_sensor_handle = find_dissector("ppi_sensor"); 46*e018180dSDominic Spill ppi_antenna_handle = find_dissector("ppi_antenna"); 47*e018180dSDominic Spill+ ppi_btle_handle = find_dissector("ppi_btle"); 48*e018180dSDominic Spill 49*e018180dSDominic Spill dissector_add_uint("wtap_encap", WTAP_ENCAP_PPI, ppi_handle); 50*e018180dSDominic Spill } 51*e018180dSDominic SpillIndex: wireshark-1.8.2/epan/dissectors/packet-ppi-btle.c 52*e018180dSDominic Spill=================================================================== 53*e018180dSDominic Spill--- /dev/null 1970-01-01 00:00:00.000000000 +0000 54*e018180dSDominic Spill+++ wireshark-1.8.2/epan/dissectors/packet-ppi-btle.c 2013-02-01 13:37:09.020642835 -0800 55*e018180dSDominic Spill@@ -0,0 +1,179 @@ 56*e018180dSDominic Spill+/* packet-ppi-btle.c 57*e018180dSDominic Spill+ * Routines for PPI-BTLE dissection 58*e018180dSDominic Spill+ * Copyright 2013, Mike Ryan, mikeryan /at/ isecpartners /dot/ com 59*e018180dSDominic Spill+ * 60*e018180dSDominic Spill+ * $Id$ 61*e018180dSDominic Spill+ * 62*e018180dSDominic Spill+ * Wireshark - Network traffic analyzer 63*e018180dSDominic Spill+ * By Gerald Combs <[email protected]> 64*e018180dSDominic Spill+ * Copyright 1998 Gerald Combs 65*e018180dSDominic Spill+ * 66*e018180dSDominic Spill+ * Copied from packet-ppi-gps.c 67*e018180dSDominic Spill+ * 68*e018180dSDominic Spill+ * This program is free software; you can redistribute it and/or modify 69*e018180dSDominic Spill+ * it under the terms of the GNU General Public License as published by 70*e018180dSDominic Spill+ * the Free Software Foundation; either version 2 of the License, or 71*e018180dSDominic Spill+ * (at your option) any later version. 72*e018180dSDominic Spill+ * 73*e018180dSDominic Spill+ * This program is distributed in the hope that it will be useful, 74*e018180dSDominic Spill+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 75*e018180dSDominic Spill+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 76*e018180dSDominic Spill+ * GNU General Public License for more details. 77*e018180dSDominic Spill+ * 78*e018180dSDominic Spill+ * You should have received a copy of the GNU General Public License along 79*e018180dSDominic Spill+ * with this program; if not, write to the Free Software Foundation, Inc., 80*e018180dSDominic Spill+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 81*e018180dSDominic Spill+ */ 82*e018180dSDominic Spill+ 83*e018180dSDominic Spill+#ifdef HAVE_CONFIG_H 84*e018180dSDominic Spill+# include "config.h" 85*e018180dSDominic Spill+#endif 86*e018180dSDominic Spill+ 87*e018180dSDominic Spill+#include <glib.h> 88*e018180dSDominic Spill+#include <epan/packet.h> 89*e018180dSDominic Spill+ 90*e018180dSDominic Spill+#define PPI_BTLE_MINTAGLEN 12 91*e018180dSDominic Spill+#define PPI_BTLE_MAXTAGLEN 12 92*e018180dSDominic Spill+ 93*e018180dSDominic Spill+/* protocol */ 94*e018180dSDominic Spill+static int proto_ppi_btle = -1; 95*e018180dSDominic Spill+ 96*e018180dSDominic Spill+static int hf_ppi_btle_version = -1; 97*e018180dSDominic Spill+static int hf_ppi_btle_channel = -1; 98*e018180dSDominic Spill+static int hf_ppi_btle_clkn_high = -1; 99*e018180dSDominic Spill+static int hf_ppi_btle_clk100ns = -1; 100*e018180dSDominic Spill+static int hf_ppi_btle_rssi_max = -1; 101*e018180dSDominic Spill+static int hf_ppi_btle_rssi_min = -1; 102*e018180dSDominic Spill+static int hf_ppi_btle_rssi_avg = -1; 103*e018180dSDominic Spill+static int hf_ppi_btle_rssi_count = -1; 104*e018180dSDominic Spill+ 105*e018180dSDominic Spill+static gint ett_ppi_btle = -1; 106*e018180dSDominic Spill+ 107*e018180dSDominic Spill+static void 108*e018180dSDominic Spill+dissect_ppi_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { 109*e018180dSDominic Spill+ /* These are locals used for processing the current tvb */ 110*e018180dSDominic Spill+ guint length; 111*e018180dSDominic Spill+ guint version; 112*e018180dSDominic Spill+ guint32 channel, clkn_high, clk100ns; 113*e018180dSDominic Spill+ guint8 urssi_max, urssi_min, urssi_avg; 114*e018180dSDominic Spill+ gint8 rssi_max, rssi_min, rssi_avg; 115*e018180dSDominic Spill+ guint rssi_count; 116*e018180dSDominic Spill+ 117*e018180dSDominic Spill+ proto_tree *ppi_btle_tree = NULL; 118*e018180dSDominic Spill+ proto_tree *pt, *present_tree = NULL; 119*e018180dSDominic Spill+ 120*e018180dSDominic Spill+ proto_item *ti = NULL; 121*e018180dSDominic Spill+ 122*e018180dSDominic Spill+ /* Clear out stuff in the info column */ 123*e018180dSDominic Spill+ col_clear(pinfo->cinfo,COL_INFO); 124*e018180dSDominic Spill+ 125*e018180dSDominic Spill+ /* Setup basic column info */ 126*e018180dSDominic Spill+ if (check_col(pinfo->cinfo, COL_INFO)) 127*e018180dSDominic Spill+ col_add_fstr(pinfo->cinfo, COL_INFO, "PPI_BTLE Capture"); 128*e018180dSDominic Spill+ 129*e018180dSDominic Spill+ /* Create the basic dissection tree*/ 130*e018180dSDominic Spill+ if (tree) 131*e018180dSDominic Spill+ ti = proto_tree_add_protocol_format(tree, proto_ppi_btle, tvb, 0, length, "BTLE:"); 132*e018180dSDominic Spill+ 133*e018180dSDominic Spill+ /* Sanity check length of tag */ 134*e018180dSDominic Spill+ length = tvb_length(tvb); 135*e018180dSDominic Spill+ if (length < PPI_BTLE_MINTAGLEN) { 136*e018180dSDominic Spill+ if (tree) 137*e018180dSDominic Spill+ proto_item_append_text(ti, "Invalid PPI-BTLE length (got %d, %d min)", length, PPI_BTLE_MAXTAGLEN); 138*e018180dSDominic Spill+ return; 139*e018180dSDominic Spill+ } 140*e018180dSDominic Spill+ 141*e018180dSDominic Spill+ if (tree) { 142*e018180dSDominic Spill+ channel = tvb_get_letohs(tvb, 1); 143*e018180dSDominic Spill+ clkn_high = tvb_get_guint8(tvb, 3); 144*e018180dSDominic Spill+ clk100ns = tvb_get_letohl(tvb, 4); 145*e018180dSDominic Spill+ urssi_max = tvb_get_guint8(tvb, 8); 146*e018180dSDominic Spill+ urssi_min = tvb_get_guint8(tvb, 9); 147*e018180dSDominic Spill+ urssi_avg = tvb_get_guint8(tvb, 10); 148*e018180dSDominic Spill+ rssi_count = tvb_get_guint8(tvb, 11); 149*e018180dSDominic Spill+ 150*e018180dSDominic Spill+ rssi_max = *(gint8 *)&urssi_max; 151*e018180dSDominic Spill+ rssi_min = *(gint8 *)&urssi_min; 152*e018180dSDominic Spill+ rssi_avg = *(gint8 *)&urssi_avg; 153*e018180dSDominic Spill+ 154*e018180dSDominic Spill+ ppi_btle_tree= proto_item_add_subtree(ti, ett_ppi_btle); 155*e018180dSDominic Spill+ proto_tree_add_uint(ppi_btle_tree, hf_ppi_btle_version, tvb, 0, 1, version); 156*e018180dSDominic Spill+ proto_tree_add_uint(ppi_btle_tree, hf_ppi_btle_channel, tvb, 1, 2, channel); 157*e018180dSDominic Spill+ proto_tree_add_uint(ppi_btle_tree, hf_ppi_btle_clkn_high, tvb, 3, 1, clkn_high); 158*e018180dSDominic Spill+ proto_tree_add_uint(ppi_btle_tree, hf_ppi_btle_clk100ns, tvb, 4, 4, clk100ns); 159*e018180dSDominic Spill+ proto_tree_add_int(ppi_btle_tree, hf_ppi_btle_rssi_max, tvb, 8, 1, rssi_max); 160*e018180dSDominic Spill+ proto_tree_add_int(ppi_btle_tree, hf_ppi_btle_rssi_min, tvb, 9, 1, rssi_min); 161*e018180dSDominic Spill+ proto_tree_add_int(ppi_btle_tree, hf_ppi_btle_rssi_avg, tvb, 10, 1, rssi_avg); 162*e018180dSDominic Spill+ proto_tree_add_uint(ppi_btle_tree, hf_ppi_btle_rssi_count, tvb, 11, 1, rssi_count); 163*e018180dSDominic Spill+ } 164*e018180dSDominic Spill+ 165*e018180dSDominic Spill+ version = tvb_get_guint8(tvb, 0); 166*e018180dSDominic Spill+ if (version > 0) { 167*e018180dSDominic Spill+ if (tree) 168*e018180dSDominic Spill+ proto_item_append_text(ti, "Warning: New version of PPI-BTLE (length %d, I can only decode first %d bytes)", length, PPI_BTLE_MAXTAGLEN); 169*e018180dSDominic Spill+ } 170*e018180dSDominic Spill+ 171*e018180dSDominic Spill+ /* perform tag-specific max length sanity checking */ 172*e018180dSDominic Spill+ else if (length > PPI_BTLE_MAXTAGLEN ) { 173*e018180dSDominic Spill+ if (tree) 174*e018180dSDominic Spill+ proto_item_append_text(ti, "Invalid PPI-BTLE length (got %d, %d max)", length, PPI_BTLE_MAXTAGLEN); 175*e018180dSDominic Spill+ return; 176*e018180dSDominic Spill+ } 177*e018180dSDominic Spill+ 178*e018180dSDominic Spill+ return; 179*e018180dSDominic Spill+} 180*e018180dSDominic Spill+ 181*e018180dSDominic Spill+void 182*e018180dSDominic Spill+proto_register_ppi_btle(void) { 183*e018180dSDominic Spill+ /* The following array initializes those header fields declared above to the values displayed */ 184*e018180dSDominic Spill+ static hf_register_info hf[] = { 185*e018180dSDominic Spill+ 186*e018180dSDominic Spill+ { &hf_ppi_btle_version, 187*e018180dSDominic Spill+ { "Version", "ppi_btle.version", 188*e018180dSDominic Spill+ FT_UINT8, BASE_DEC, NULL, 0x0, 189*e018180dSDominic Spill+ NULL, HFILL } }, 190*e018180dSDominic Spill+ 191*e018180dSDominic Spill+ { &hf_ppi_btle_channel, 192*e018180dSDominic Spill+ { "Channel", "ppi_btle.channel", 193*e018180dSDominic Spill+ FT_UINT16, BASE_DEC, NULL, 0x0, 194*e018180dSDominic Spill+ "MHz", HFILL } }, 195*e018180dSDominic Spill+ 196*e018180dSDominic Spill+ { &hf_ppi_btle_clkn_high, 197*e018180dSDominic Spill+ { "clkn_high", "ppi_btle.clkn_high", 198*e018180dSDominic Spill+ FT_UINT8, BASE_DEC, NULL, 0x0, 199*e018180dSDominic Spill+ "High bits of native clock", HFILL } }, 200*e018180dSDominic Spill+ 201*e018180dSDominic Spill+ { &hf_ppi_btle_clk100ns, 202*e018180dSDominic Spill+ { "clk100ns", "ppi_btle.clk100ns", 203*e018180dSDominic Spill+ FT_UINT32, BASE_DEC, NULL, 0x0, 204*e018180dSDominic Spill+ "100 ns clock", HFILL } }, 205*e018180dSDominic Spill+ 206*e018180dSDominic Spill+ // RSSI 207*e018180dSDominic Spill+ { &hf_ppi_btle_rssi_max, 208*e018180dSDominic Spill+ { "Max RSSI", "ppi_btle.rssi_max", 209*e018180dSDominic Spill+ FT_INT8, BASE_DEC, NULL, 0x0, 210*e018180dSDominic Spill+ NULL, HFILL } }, 211*e018180dSDominic Spill+ { &hf_ppi_btle_rssi_min, 212*e018180dSDominic Spill+ { "Min RSSI", "ppi_btle.rssi_min", 213*e018180dSDominic Spill+ FT_INT8, BASE_DEC, NULL, 0x0, 214*e018180dSDominic Spill+ NULL, HFILL } }, 215*e018180dSDominic Spill+ { &hf_ppi_btle_rssi_avg, 216*e018180dSDominic Spill+ { "Average RSSI", "ppi_btle.rssi_avg", 217*e018180dSDominic Spill+ FT_INT8, BASE_DEC, NULL, 0x0, 218*e018180dSDominic Spill+ NULL, HFILL } }, 219*e018180dSDominic Spill+ { &hf_ppi_btle_rssi_count, 220*e018180dSDominic Spill+ { "RSSI Count", "ppi_btle.rssi_count", 221*e018180dSDominic Spill+ FT_UINT8, BASE_DEC, NULL, 0x0, 222*e018180dSDominic Spill+ NULL, HFILL } }, 223*e018180dSDominic Spill+ 224*e018180dSDominic Spill+ }; 225*e018180dSDominic Spill+ 226*e018180dSDominic Spill+ static gint *ett[] = { 227*e018180dSDominic Spill+ &ett_ppi_btle, 228*e018180dSDominic Spill+ }; 229*e018180dSDominic Spill+ 230*e018180dSDominic Spill+ proto_ppi_btle = proto_register_protocol("PPI Ubertooth BTLE tag decoder", "PPI BTLE Decoder", "ppi_btle"); 231*e018180dSDominic Spill+ proto_register_field_array(proto_ppi_btle, hf, array_length(hf)); 232*e018180dSDominic Spill+ proto_register_subtree_array(ett, array_length(ett)); 233*e018180dSDominic Spill+ register_dissector("ppi_btle", dissect_ppi_btle, proto_ppi_btle); 234*e018180dSDominic Spill+} 235*e018180dSDominic SpillIndex: wireshark-1.8.2/epan/dissectors/Makefile.common 236*e018180dSDominic Spill=================================================================== 237*e018180dSDominic Spill--- wireshark-1.8.2.orig/epan/dissectors/Makefile.common 2013-01-29 11:46:35.429559060 -0800 238*e018180dSDominic Spill+++ wireshark-1.8.2/epan/dissectors/Makefile.common 2013-01-29 11:56:46.541536579 -0800 239*e018180dSDominic Spill@@ -881,6 +881,7 @@ 240*e018180dSDominic Spill packet-ppi-gps.c \ 241*e018180dSDominic Spill packet-ppi-sensor.c \ 242*e018180dSDominic Spill packet-ppi-vector.c \ 243*e018180dSDominic Spill+ packet-ppi-btle.c \ 244*e018180dSDominic Spill packet-ppp.c \ 245*e018180dSDominic Spill packet-pppoe.c \ 246*e018180dSDominic Spill packet-pptp.c \ 247