From Tomas Kukosa: export more routines to plugins.
svn path=/trunk/; revision=6630
This commit is contained in:
parent
76f5391acc
commit
71f6ebae44
|
@ -1,7 +1,7 @@
|
|||
/* plugins.c
|
||||
* plugin routines
|
||||
*
|
||||
* $Id: plugins.c,v 1.59 2002/08/28 20:40:44 jmayer Exp $
|
||||
* $Id: plugins.c,v 1.60 2002/11/14 18:54:52 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -464,6 +464,36 @@ init_plugins(const char *plugin_dir)
|
|||
patable.p_conversation_delete_proto_data = conversation_delete_proto_data;
|
||||
patable.p_p_add_proto_data = p_add_proto_data;
|
||||
patable.p_p_get_proto_data = p_get_proto_data;
|
||||
|
||||
patable.p_ip_to_str = ip_to_str;
|
||||
patable.p_ip6_to_str = ip6_to_str;
|
||||
patable.p_time_secs_to_str = time_secs_to_str;
|
||||
patable.p_time_msecs_to_str = time_msecs_to_str;
|
||||
patable.p_abs_time_to_str = abs_time_to_str;
|
||||
|
||||
patable.p_proto_get_id_by_filter_name = proto_get_id_by_filter_name;
|
||||
patable.p_proto_get_protocol_name = proto_get_protocol_name;
|
||||
patable.p_proto_get_protocol_short_name = proto_get_protocol_short_name;
|
||||
patable.p_proto_get_protocol_filter_name = proto_get_protocol_filter_name;
|
||||
|
||||
patable.p_prefs_register_obsolete_preference = p_prefs_register_obsolete_preference;
|
||||
|
||||
patable.p_add_new_data_source = add_new_data_source;
|
||||
|
||||
patable.p_fragment_table_init = fragment_table_init;
|
||||
patable.p_reassembled_table_init = reassembled_table_init;
|
||||
patable.p_fragment_add = fragment_add;
|
||||
patable.p_fragment_add_seq = fragment_add_seq;
|
||||
patable.p_fragment_add_seq_check = fragment_add_seq_check;
|
||||
patable.p_fragment_add_seq_next = fragment_add_seq_next;
|
||||
patable.p_fragment_get = fragment_get;
|
||||
patable.p_fragment_set_tot_len = fragment_set_tot_len;
|
||||
patable.p_fragment_get_tot_len = fragment_get_tot_len;
|
||||
patable.p_fragment_set_partial_reassembly = fragment_set_partial_reassembly;
|
||||
patable.p_fragment_delete = fragment_delete;
|
||||
patable.p_show_fragment_tree = show_fragment_tree;
|
||||
patable.p_show_fragment_seq_tree = show_fragment_seq_tree;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* plugin_api.c
|
||||
* Routines for Ethereal plugins.
|
||||
*
|
||||
* $Id: plugin_api.c,v 1.42 2002/08/28 20:38:57 jmayer Exp $
|
||||
* $Id: plugin_api.c,v 1.43 2002/11/14 18:54:53 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
|
||||
|
@ -181,4 +181,33 @@ plugin_address_table_init(plugin_address_table_t *pat)
|
|||
p_conversation_delete_proto_data = pat->p_conversation_delete_proto_data;
|
||||
p_p_add_proto_data = pat->p_p_add_proto_data;
|
||||
p_p_get_proto_data = pat->p_p_get_proto_data;
|
||||
|
||||
p_ip_to_str = pat->p_ip_to_str;
|
||||
p_ip6_to_str = pat->p_ip6_to_str;
|
||||
p_time_secs_to_str = pat->p_time_secs_to_str;
|
||||
p_time_msecs_to_str = pat->p_time_msecs_to_str;
|
||||
p_abs_time_to_str = pat->p_abs_time_to_str;
|
||||
|
||||
p_proto_get_id_by_filter_name = pat->p_proto_get_id_by_filter_name;
|
||||
p_proto_get_protocol_name = pat->p_proto_get_protocol_name;
|
||||
p_proto_get_protocol_short_name = pat->p_proto_get_protocol_short_name;
|
||||
p_proto_get_protocol_filter_name = pat->p_proto_get_protocol_filter_name;
|
||||
|
||||
p_prefs_register_obsolete_preference = pat->p_prefs_register_obsolete_preference;
|
||||
|
||||
p_add_new_data_source = pat->p_add_new_data_source;
|
||||
|
||||
p_fragment_table_init = pat->p_fragment_table_init;
|
||||
p_reassembled_table_init = pat->p_reassembled_table_init;
|
||||
p_fragment_add = pat->p_fragment_add;
|
||||
p_fragment_add_seq = pat->p_fragment_add_seq;
|
||||
p_fragment_add_seq_check = pat->p_fragment_add_seq_check;
|
||||
p_fragment_add_seq_next = pat->p_fragment_add_seq_next;
|
||||
p_fragment_get = pat->p_fragment_get;
|
||||
p_fragment_set_tot_len = pat->p_fragment_set_tot_len;
|
||||
p_fragment_get_tot_len = pat->p_fragment_get_tot_len;
|
||||
p_fragment_set_partial_reassembly = pat->p_fragment_set_partial_reassembly;
|
||||
p_fragment_delete = pat->p_fragment_delete;
|
||||
p_show_fragment_tree = pat->p_show_fragment_tree;
|
||||
p_show_fragment_seq_tree = pat->p_show_fragment_seq_tree;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* plugin_api.h
|
||||
* Routines for Ethereal plugins.
|
||||
*
|
||||
* $Id: plugin_api.h,v 1.43 2002/08/28 20:38:57 jmayer Exp $
|
||||
* $Id: plugin_api.h,v 1.44 2002/11/14 18:54:53 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
|
||||
|
@ -212,11 +212,41 @@
|
|||
#define p_add_proto_data (*p_p_add_proto_data)
|
||||
#define p_get_proto_data (*p_p_get_proto_data)
|
||||
|
||||
#define ip_to_str (*p_ip_to_str)
|
||||
#define ip6_to_str (*p_ip6_to_str)
|
||||
#define time_secs_to_str (*p_time_secs_to_str)
|
||||
#define time_msecs_to_str (*p_time_msecs_to_str)
|
||||
#define abs_time_to_str (*p_abs_time_to_str)
|
||||
|
||||
#define proto_get_id_by_filter_name (*p_proto_get_id_by_filter_name)
|
||||
#define proto_get_protocol_name (*p_proto_get_protocol_name)
|
||||
#define proto_get_protocol_short_name (*p_proto_get_protocol_short_name)
|
||||
#define proto_get_protocol_filter_name (*p_proto_get_protocol_filter_name)
|
||||
|
||||
#define prefs_register_obsolete_preference (*p_prefs_register_obsolete_preference)
|
||||
|
||||
#define add_new_data_source (*p_add_new_data_source)
|
||||
|
||||
#define fragment_table_init (*p_fragment_table_init)
|
||||
#define reassembled_table_init (*p_reassembled_table_init)
|
||||
#define fragment_add (*p_fragment_add)
|
||||
#define fragment_add_seq (*p_fragment_add_seq)
|
||||
#define fragment_add_seq_check (*p_fragment_add_seq_check)
|
||||
#define fragment_add_seq_next (*p_fragment_add_seq_next)
|
||||
#define fragment_get (*p_fragment_get)
|
||||
#define fragment_set_tot_len (*p_fragment_set_tot_len)
|
||||
#define fragment_get_tot_len (*p_fragment_get_tot_len)
|
||||
#define fragment_set_partial_reassembly (*p_fragment_set_partial_reassembly)
|
||||
#define fragment_delete (*p_fragment_delete)
|
||||
#define show_fragment_tree (*p_show_fragment_tree)
|
||||
#define show_fragment_seq_tree (*p_show_fragment_seq_tree)
|
||||
|
||||
#endif
|
||||
|
||||
#include <epan/packet.h>
|
||||
#include <epan/conversation.h>
|
||||
#include "prefs.h"
|
||||
#include "reassemble.h"
|
||||
#include "packet-giop.h"
|
||||
#include "packet-tpkt.h"
|
||||
#include "packet-tcp.h"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Declarations of a list of "p_" names; included in various places
|
||||
* to declare them as variables or as function members.
|
||||
*
|
||||
* $Id: plugin_api_decls.h,v 1.5 2002/08/28 20:38:57 jmayer Exp $
|
||||
* $Id: plugin_api_decls.h,v 1.6 2002/11/14 18:54:53 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
|
||||
|
@ -221,3 +221,32 @@ addr_conversation_delete_proto_data p_conversation_delete_proto_data;
|
|||
addr_p_add_proto_data p_p_add_proto_data;
|
||||
addr_p_get_proto_data p_p_get_proto_data;
|
||||
|
||||
addr_ip_to_str p_ip_to_str;
|
||||
addr_ip6_to_str p_ip6_to_str;
|
||||
addr_time_secs_to_str p_time_secs_to_str;
|
||||
addr_time_msecs_to_str p_time_msecs_to_str;
|
||||
addr_abs_time_to_str p_abs_time_to_str;
|
||||
|
||||
addr_proto_get_id_by_filter_name p_proto_get_id_by_filter_name;
|
||||
addr_proto_get_protocol_name p_proto_get_protocol_name;
|
||||
addr_proto_get_protocol_short_name p_proto_get_protocol_short_name;
|
||||
addr_proto_get_protocol_filter_name p_proto_get_protocol_filter_name;
|
||||
|
||||
addr_prefs_register_obsolete_preference p_prefs_register_obsolete_preference;
|
||||
|
||||
addr_add_new_data_source p_add_new_data_source;
|
||||
|
||||
addr_fragment_table_init p_fragment_table_init;
|
||||
addr_reassembled_table_init p_reassembled_table_init;
|
||||
addr_fragment_add p_fragment_add;
|
||||
addr_fragment_add_seq p_fragment_add_seq;
|
||||
addr_fragment_add_seq_check p_fragment_add_seq_check;
|
||||
addr_fragment_add_seq_next p_fragment_add_seq_next;
|
||||
addr_fragment_get p_fragment_get;
|
||||
addr_fragment_set_tot_len p_fragment_set_tot_len;
|
||||
addr_fragment_get_tot_len p_fragment_get_tot_len;
|
||||
addr_fragment_set_partial_reassembly p_fragment_set_partial_reassembly;
|
||||
addr_fragment_delete p_fragment_delete;
|
||||
addr_show_fragment_tree p_show_fragment_tree;
|
||||
addr_show_fragment_seq_tree p_show_fragment_seq_tree;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* plugin_table.h
|
||||
* Table of exported addresses for Ethereal plugins.
|
||||
*
|
||||
* $Id: plugin_table.h,v 1.53 2002/08/28 20:38:58 jmayer Exp $
|
||||
* $Id: plugin_table.h,v 1.54 2002/11/14 18:54:53 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
|
||||
|
@ -246,6 +246,39 @@ typedef void (*addr_conversation_delete_proto_data)(conversation_t *, int);
|
|||
typedef void (*addr_p_add_proto_data)(frame_data *, int, void *);
|
||||
typedef void *(*addr_p_get_proto_data)(frame_data *, int);
|
||||
|
||||
typedef gchar* (*addr_ip_to_str)(const guint8 *);
|
||||
typedef char* (*addr_ip6_to_str)(struct e_in6_addr *);
|
||||
typedef gchar* (*addr_time_secs_to_str)(guint32);
|
||||
typedef gchar* (*addr_time_msecs_to_str)(guint32);
|
||||
typedef gchar* (*addr_abs_time_to_str)(nstime_t*);
|
||||
|
||||
typedef int (*addr_proto_get_id_by_filter_name)(gchar* filter_name);
|
||||
typedef char *(*addr_proto_get_protocol_name)(int n);
|
||||
typedef char *(*addr_proto_get_protocol_short_name)(int proto_id);
|
||||
typedef char *(*addr_proto_get_protocol_filter_name)(int proto_id);
|
||||
|
||||
typedef void (*addr_prefs_register_obsolete_preference)(module_t *, const char *);
|
||||
|
||||
typedef void (*addr_add_new_data_source)(packet_info *, tvbuff_t *, char *);
|
||||
|
||||
typedef void (*addr_fragment_table_init)(GHashTable **);
|
||||
typedef void (*addr_reassembled_table_init)(GHashTable **);
|
||||
typedef fragment_data *(*addr_fragment_add)(tvbuff_t *, int, packet_info *, guint32,
|
||||
GHashTable *, guint32, guint32, gboolean);
|
||||
typedef fragment_data *(*addr_fragment_add_seq)(tvbuff_t *, int, packet_info *, guint32,
|
||||
GHashTable *, guint32, guint32, gboolean);
|
||||
typedef fragment_data *(*addr_fragment_add_seq_check)(tvbuff_t *, int, packet_info *, guint32 id,
|
||||
GHashTable *, GHashTable *, guint32, guint32, gboolean);
|
||||
typedef fragment_data *(*addr_fragment_add_seq_next)(tvbuff_t *, int, packet_info *, guint32,
|
||||
GHashTable *, GHashTable *, guint32, gboolean);
|
||||
typedef fragment_data *(*addr_fragment_get)(packet_info *, guint32, GHashTable *);
|
||||
typedef void (*addr_fragment_set_tot_len)(packet_info *, guint32, GHashTable *, guint32);
|
||||
typedef guint32 (*addr_fragment_get_tot_len)(packet_info *, guint32, GHashTable *);
|
||||
typedef void (*addr_fragment_set_partial_reassembly)(packet_info *, guint32, GHashTable *);
|
||||
typedef unsigned char *(*addr_fragment_delete)(packet_info *, guint32, GHashTable *);
|
||||
typedef gboolean (*addr_show_fragment_tree)(fragment_data *, const fragment_items *, proto_tree *, packet_info *, tvbuff_t *);
|
||||
typedef gboolean (*addr_show_fragment_seq_tree)(fragment_data *, const fragment_items *, proto_tree *, packet_info *, tvbuff_t *);
|
||||
|
||||
typedef struct {
|
||||
|
||||
#include "plugin_api_decls.h"
|
||||
|
|
24
reassemble.h
24
reassemble.h
|
@ -1,7 +1,7 @@
|
|||
/* reassemble.h
|
||||
* Declarations of outines for {fragment,segment} reassembly
|
||||
*
|
||||
* $Id: reassemble.h,v 1.11 2002/10/24 06:17:36 guy Exp $
|
||||
* $Id: reassemble.h,v 1.12 2002/11/14 18:54:50 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -64,12 +64,12 @@ typedef struct _fragment_data {
|
|||
/*
|
||||
* Initialize a fragment table.
|
||||
*/
|
||||
void fragment_table_init(GHashTable **fragment_table);
|
||||
extern void fragment_table_init(GHashTable **fragment_table);
|
||||
|
||||
/*
|
||||
* Initialize a reassembled-packet table.
|
||||
*/
|
||||
void reassembled_table_init(GHashTable **reassembled_table);
|
||||
extern void reassembled_table_init(GHashTable **reassembled_table);
|
||||
|
||||
/*
|
||||
* Free up all space allocated for fragment keys and data.
|
||||
|
@ -87,13 +87,13 @@ void reassemble_init(void);
|
|||
* Returns a pointer to the head of the fragment data list if we have all the
|
||||
* fragments, NULL otherwise.
|
||||
*/
|
||||
fragment_data *fragment_add(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
extern fragment_data *fragment_add(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
guint32 id, GHashTable *fragment_table, guint32 frag_offset,
|
||||
guint32 frag_data_len, gboolean more_frags);
|
||||
|
||||
/* same as fragment_add() but this one assumes frag_number is a block
|
||||
sequence number. note that frag_number is 0 for the first fragment. */
|
||||
fragment_data *fragment_add_seq(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
extern fragment_data *fragment_add_seq(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
guint32 id, GHashTable *fragment_table, guint32 frag_number,
|
||||
guint32 frag_data_len, gboolean more_frags);
|
||||
|
||||
|
@ -127,13 +127,13 @@ fragment_data *fragment_add_seq(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
|||
* "fragment_add_seq_next()" is for protocols with no sequence number,
|
||||
* and assumes fragments always appear in sequence.
|
||||
*/
|
||||
fragment_data *
|
||||
extern fragment_data *
|
||||
fragment_add_seq_check(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
guint32 id, GHashTable *fragment_table,
|
||||
GHashTable *reassembled_table, guint32 frag_number,
|
||||
guint32 frag_data_len, gboolean more_frags);
|
||||
|
||||
fragment_data *
|
||||
extern fragment_data *
|
||||
fragment_add_seq_next(tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 id,
|
||||
GHashTable *fragment_table, GHashTable *reassembled_table,
|
||||
guint32 frag_data_len, gboolean more_frags);
|
||||
|
@ -145,12 +145,12 @@ fragment_add_seq_next(tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 id,
|
|||
* actually means we want to defragment 3 blocks, block 0, 1 and 2.
|
||||
*
|
||||
*/
|
||||
void
|
||||
extern void
|
||||
fragment_set_tot_len(packet_info *pinfo, guint32 id, GHashTable *fragment_table,
|
||||
guint32 tot_len);
|
||||
|
||||
/* to resad whatever totlen previously set */
|
||||
guint32
|
||||
extern guint32
|
||||
fragment_get_tot_len(packet_info *pinfo, guint32 id, GHashTable *fragment_table);
|
||||
|
||||
/*
|
||||
|
@ -161,13 +161,13 @@ fragment_get_tot_len(packet_info *pinfo, guint32 id, GHashTable *fragment_table)
|
|||
* a fh will be extended (increase the already stored data). After calling this function,
|
||||
* and if FD_DEFRAGMENTED is set, the reassembly process will be continued.
|
||||
*/
|
||||
void
|
||||
extern void
|
||||
fragment_set_partial_reassembly(packet_info *pinfo, guint32 id, GHashTable *fragment_table);
|
||||
|
||||
/* This function is used to check if there is partial or completed reassembly state
|
||||
* matching this packet. I.e. Are there reassembly going on or not for this packet?
|
||||
*/
|
||||
fragment_data *
|
||||
extern fragment_data *
|
||||
fragment_get(packet_info *pinfo, guint32 id, GHashTable *fragment_table);
|
||||
|
||||
/* This will free up all resources and delete reassembly state for this PDU.
|
||||
|
@ -178,7 +178,7 @@ fragment_get(packet_info *pinfo, guint32 id, GHashTable *fragment_table);
|
|||
* So, if you call fragment_delete and it returns non-NULL, YOU are responsible to
|
||||
* g_free() that buffer.
|
||||
*/
|
||||
unsigned char *
|
||||
extern unsigned char *
|
||||
fragment_delete(packet_info *pinfo, guint32 id, GHashTable *fragment_table);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue