From Tomas Kukosa: export more routines to plugins.

svn path=/trunk/; revision=6630
This commit is contained in:
Guy Harris 2002-11-14 18:54:53 +00:00
parent 76f5391acc
commit 71f6ebae44
6 changed files with 168 additions and 17 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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"

View File

@ -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;

View File

@ -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"

View File

@ -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);