Wireshark-dev: [Wireshark-dev] Simple Tap interface for dissector information
From: "Martin M." <SuperMotzi@xxxxxx>
Date: Fri, 03 Apr 2009 18:54:30 +0200
Hi everybody,
I just finished my protocol-dissector. But i got a big problem with the stastical information i want to get.
I decided to use the tap interface to get some interesting data. First of all some questions about the tap:
1. Where will the tap-Information be displayed ? I have no idea in which form it comes to the gui.
2. I just used the Developer Guide. So the questions are about the different parts of the tutorial:
a. "Initialising of the tap":
-----------------------------
Where do I have to put the struct "myprotocolTap"-Part in ? In the packet-myprotocol.h - Header file. right or somewhere else?
b. "Calling the protocol tap":
------------------------------
Did I have to use other variables then 'pinfo' ? Because my dissector gives me a weird error:
packet-ossdissector.c: In function ‘dissect_ossdissector’:
packet-ossdissector.c:422: error: ‘pinfo’ redeclared as different kind of symbol
packet-ossdissector.c:417: error: previous definition of ‘pinfo’ was here
packet-ossdissector.c:422: error: storage size of ‘pinfo’ isn’t known
cc1: warnings being treated as errors
packet-ossdissector.c:422: error: unused variable ‘pinfo’
make: *** [packet-ossdissector.lo] Error 1
So first i just want to realize the Tap Initailising.
Thank you for any answer.
Bye,
wireshark_noob
here the cuted protocol...(i just show the interesting parts):
/*1. Includes*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <epan/prefs.h>
#include <epan/packet.h>
#include <stdio.h>
#include <glib.h>
#include <string.h>
#include <epan/tap.h> // !!!IniTAP !!! (1/4)
/*2. Funktionsinitialisierung und -deklaration sowie Protokollinfos (Port, TCP)*/
void proto_register_myprot();
void proto_reg_handoff_myprot();
static void dissect_myprot(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int proto_myprot = -1;
static int global_myprot_port = 2000;
static dissector_handle_t myprot_handle;
static int myprot_tap = -1; // !!!IniTAP !!! (2/4)
/*-----Ende der Initialising und Deklaration / Programmbeginn-----*/
/*4. Dissector Initialising*/
void
proto_register_myprot(void) {
if (proto_myprot == -1){
proto_myprot = proto_register_protocol (
"myprot-Protocol", /* name */
"myprot", /* short name */
"myprot" /* abbrev */
);
myprot_tap = register_tap("myprot"); //!!! IniTAP !!! (3/4)
}
proto_register_field_array(proto_myprot, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
/*5. Dissector Handoff*/
...
/*6. Dissector function*/
static void
dissect_myprot(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
static struct myprotTap pinfo; // !!!Ini TAP !!! (4/4)
gint offset = 0;
int i = 0;
int art = 0;
...
pinfo.myprot_type = tvb_get_guint8(tvb, 0);
pinfo.myprot_subtype = tvb_get_guint8(tvb, 1);
pinfo.myprot_options = tvb_get_guint8(tvb, 2);
...
if (check_col(pinfo->cinfo, COL_PROTOCOL))
...
if (check_col(pinfo->cinfo,COL_INFO))
...
if (check_col(pinfo->cinfo,COL_INFO))
...
if (tree)
{
...
tap_queue_packet(myprot_tap, pinfo, &pinfo); // !!!IniTAP !!! (4/4)
}
}
------------------------------------------------------------------------
------------------------------------------------------------------------
Header file
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
/* OSS Tap struct */
struct OssdissectorTap {
gint myprot_type;
gint myprot_subtype;
gint myprot_options;
};
--
Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a
- Prev by Date: [Wireshark-dev] buildbot failure in Wireshark (development) on OSX-10.5-ppc
- Next by Date: [Wireshark-dev] buildbot failure in Wireshark (development) on Windows-XP-x86
- Previous by thread: Re: [Wireshark-dev] is-637 dissector
- Next by thread: Re: [Wireshark-dev] [Wireshark-commits] rev 27948: /trunk/epan/ /trunk/epan/: emem.c
- Index(es):