2000-02-07 17:08:27 +00:00
|
|
|
/* plugin_api.c
|
2000-02-07 17:23:53 +00:00
|
|
|
* Routines for Ethereal plugins.
|
|
|
|
*
|
2000-11-14 10:38:15 +00:00
|
|
|
* $Id: plugin_api.c,v 1.12 2000/11/14 10:38:13 guy Exp $
|
2000-02-07 17:23:53 +00:00
|
|
|
*
|
|
|
|
* Ethereal - Network traffic analyzer
|
|
|
|
* Copyright 2000 by Gilbert Ramirez <gram@xiexie.org>
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*
|
2000-02-07 17:08:27 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
2000-11-14 10:38:15 +00:00
|
|
|
#include <glib.h>
|
|
|
|
|
2000-02-07 17:08:27 +00:00
|
|
|
#include "plugin_api.h"
|
|
|
|
|
2000-02-09 19:32:28 +00:00
|
|
|
packet_info *p_pi = NULL;
|
2000-02-07 17:08:27 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
plugin_address_table_init(plugin_address_table_t *pat)
|
|
|
|
{
|
2000-05-31 18:32:15 +00:00
|
|
|
p_pi = pat->p_pi;
|
|
|
|
p_check_col = pat->p_check_col;
|
|
|
|
p_col_add_fstr = pat->p_col_add_fstr;
|
|
|
|
p_col_append_fstr = pat->p_col_append_fstr;
|
|
|
|
p_col_add_str = pat->p_col_add_str;
|
|
|
|
p_col_append_str = pat->p_col_append_str;
|
|
|
|
p_dfilter_init = pat->p_dfilter_init;
|
|
|
|
p_dfilter_cleanup = pat->p_dfilter_cleanup;
|
|
|
|
p_proto_register_protocol = pat->p_proto_register_protocol;
|
|
|
|
p_proto_register_field_array = pat->p_proto_register_field_array;
|
|
|
|
p_proto_register_subtree_array = pat->p_proto_register_subtree_array;
|
|
|
|
p_dissector_add = pat->p_dissector_add;
|
Add a Makefile.nmake for the MGCP plugin, and update
"plugins/Makefile.nmake" to build that plugin.
Add to the table of routines callable from plugins
"old_dissector_add()", "old_dissect_data()", and
"proto_is_protocol_enabled()", so that the Gryphon dissector can build
on Windows.
Move the includes of "plugins/plugin_api.h" and "moduleinfo.h" before
all the other includes, except for "config.h", in "plugin-mgcp.c", to
match what the Gryphon dissector does; "plugins_api.h" must be included
before any of the routines whose names it #defines in order for the
plugin to build on Windows. (It still doesn't build on Windows, as
still more routines need to be added to the table of routines callable
from plugins, but tomorrow is another day. Making libethereal a DLL may
obviate the need for that table, *if* all the routines called from a
plugin are in libethereal, as I think routines in a DLL, even a
run-time-loaded DLL, can call routines from another DLL as long as those
routines are exported from the other DLL.)
svn path=/trunk/; revision=2622
2000-11-12 11:08:46 +00:00
|
|
|
p_old_dissector_add = pat->p_old_dissector_add;
|
2000-11-14 10:38:15 +00:00
|
|
|
p_dissector_delete = pat->p_dissector_delete;
|
2000-05-31 18:32:15 +00:00
|
|
|
p_heur_dissector_add = pat->p_heur_dissector_add;
|
2000-11-13 10:13:26 +00:00
|
|
|
p_dissect_data = pat->p_dissect_data;
|
Add a Makefile.nmake for the MGCP plugin, and update
"plugins/Makefile.nmake" to build that plugin.
Add to the table of routines callable from plugins
"old_dissector_add()", "old_dissect_data()", and
"proto_is_protocol_enabled()", so that the Gryphon dissector can build
on Windows.
Move the includes of "plugins/plugin_api.h" and "moduleinfo.h" before
all the other includes, except for "config.h", in "plugin-mgcp.c", to
match what the Gryphon dissector does; "plugins_api.h" must be included
before any of the routines whose names it #defines in order for the
plugin to build on Windows. (It still doesn't build on Windows, as
still more routines need to be added to the table of routines callable
from plugins, but tomorrow is another day. Making libethereal a DLL may
obviate the need for that table, *if* all the routines called from a
plugin are in libethereal, as I think routines in a DLL, even a
run-time-loaded DLL, can call routines from another DLL as long as those
routines are exported from the other DLL.)
svn path=/trunk/; revision=2622
2000-11-12 11:08:46 +00:00
|
|
|
p_old_dissect_data = pat->p_old_dissect_data;
|
|
|
|
p_proto_is_protocol_enabled = pat->p_proto_is_protocol_enabled;
|
2000-11-13 10:13:26 +00:00
|
|
|
p_proto_item_get_len = pat->p_proto_item_get_len;
|
|
|
|
p_proto_item_set_len = pat->p_proto_item_set_len;
|
|
|
|
p_proto_item_set_text = pat->p_proto_item_set_text;
|
2000-05-31 18:32:15 +00:00
|
|
|
p_proto_item_add_subtree = pat->p_proto_item_add_subtree;
|
|
|
|
p_proto_tree_add_item = pat->p_proto_tree_add_item;
|
|
|
|
p_proto_tree_add_item_hidden = pat->p_proto_tree_add_item_hidden;
|
|
|
|
p_proto_tree_add_protocol_format = pat->p_proto_tree_add_protocol_format;
|
|
|
|
p_proto_tree_add_bytes = pat->p_proto_tree_add_bytes;
|
|
|
|
p_proto_tree_add_bytes_hidden = pat->p_proto_tree_add_bytes_hidden;
|
|
|
|
p_proto_tree_add_bytes_format = pat->p_proto_tree_add_bytes_format;
|
|
|
|
p_proto_tree_add_time = pat->p_proto_tree_add_time;
|
|
|
|
p_proto_tree_add_time_hidden = pat->p_proto_tree_add_time_hidden;
|
|
|
|
p_proto_tree_add_time_format = pat->p_proto_tree_add_time_format;
|
|
|
|
p_proto_tree_add_ipxnet = pat->p_proto_tree_add_ipxnet;
|
|
|
|
p_proto_tree_add_ipxnet_hidden = pat->p_proto_tree_add_ipxnet_hidden;
|
|
|
|
p_proto_tree_add_ipxnet_format = pat->p_proto_tree_add_ipxnet_format;
|
|
|
|
p_proto_tree_add_ipv4 = pat->p_proto_tree_add_ipv4;
|
|
|
|
p_proto_tree_add_ipv4_hidden = pat->p_proto_tree_add_ipv4_hidden;
|
|
|
|
p_proto_tree_add_ipv4_format = pat->p_proto_tree_add_ipv4_format;
|
|
|
|
p_proto_tree_add_ipv6 = pat->p_proto_tree_add_ipv6;
|
|
|
|
p_proto_tree_add_ipv6_hidden = pat->p_proto_tree_add_ipv6_hidden;
|
|
|
|
p_proto_tree_add_ipv6_format = pat->p_proto_tree_add_ipv6_format;
|
|
|
|
p_proto_tree_add_ether = pat->p_proto_tree_add_ether;
|
|
|
|
p_proto_tree_add_ether_hidden = pat->p_proto_tree_add_ether_hidden;
|
|
|
|
p_proto_tree_add_ether_format = pat->p_proto_tree_add_ether_format;
|
|
|
|
p_proto_tree_add_string = pat->p_proto_tree_add_string;
|
|
|
|
p_proto_tree_add_string_hidden = pat->p_proto_tree_add_string_hidden;
|
|
|
|
p_proto_tree_add_string_format = pat->p_proto_tree_add_string_format;
|
|
|
|
p_proto_tree_add_boolean = pat->p_proto_tree_add_boolean;
|
|
|
|
p_proto_tree_add_boolean_hidden = pat->p_proto_tree_add_boolean_hidden;
|
|
|
|
p_proto_tree_add_boolean_format = pat->p_proto_tree_add_boolean_format;
|
|
|
|
p_proto_tree_add_double = pat->p_proto_tree_add_double;
|
|
|
|
p_proto_tree_add_double_hidden = pat->p_proto_tree_add_double_hidden;
|
|
|
|
p_proto_tree_add_double_format = pat->p_proto_tree_add_double_format;
|
|
|
|
p_proto_tree_add_uint = pat->p_proto_tree_add_uint;
|
|
|
|
p_proto_tree_add_uint_hidden = pat->p_proto_tree_add_uint_hidden;
|
|
|
|
p_proto_tree_add_uint_format = pat->p_proto_tree_add_uint_format;
|
|
|
|
p_proto_tree_add_int = pat->p_proto_tree_add_int;
|
|
|
|
p_proto_tree_add_int_hidden = pat->p_proto_tree_add_int_hidden;
|
|
|
|
p_proto_tree_add_int_format = pat->p_proto_tree_add_int_format;
|
|
|
|
p_proto_tree_add_text = pat->p_proto_tree_add_text;
|
|
|
|
p_proto_tree_add_notext = pat->p_proto_tree_add_notext;
|
2000-11-13 08:00:12 +00:00
|
|
|
p_tvb_new_subset = pat->p_tvb_new_subset;
|
|
|
|
p_tvb_length = pat->p_tvb_length;
|
|
|
|
p_tvb_length_remaining = pat->p_tvb_length_remaining;
|
|
|
|
p_tvb_bytes_exist = pat->p_tvb_bytes_exist;
|
|
|
|
p_tvb_offset_exists = pat->p_tvb_offset_exists;
|
|
|
|
p_tvb_reported_length = pat->p_tvb_reported_length;
|
|
|
|
p_tvb_get_guint8 = pat->p_tvb_get_guint8;
|
|
|
|
p_tvb_get_ntohs = pat->p_tvb_get_ntohs;
|
|
|
|
p_tvb_get_ntoh24 = pat->p_tvb_get_ntoh24;
|
|
|
|
p_tvb_get_ntohl = pat->p_tvb_get_ntohl;
|
|
|
|
#ifdef G_HAVE_GINT64
|
|
|
|
p_tvb_get_ntohll = pat->p_tvb_get_ntohll;
|
|
|
|
#endif
|
|
|
|
p_tvb_get_letohs = pat->p_tvb_get_letohs;
|
|
|
|
p_tvb_get_letoh24 = pat->p_tvb_get_letoh24;
|
|
|
|
p_tvb_get_letohl = pat->p_tvb_get_letohl;
|
|
|
|
#ifdef G_HAVE_GINT64
|
|
|
|
p_tvb_get_letohll = pat->p_tvb_get_letohll;
|
|
|
|
#endif
|
|
|
|
p_tvb_memcpy = pat->p_tvb_memcpy;
|
|
|
|
p_tvb_memdup = pat->p_tvb_memdup;
|
|
|
|
p_tvb_get_ptr = pat->p_tvb_get_ptr;
|
|
|
|
p_tvb_find_guint8 = pat->p_tvb_find_guint8;
|
|
|
|
p_tvb_pbrk_guint8 = pat->p_tvb_pbrk_guint8;
|
|
|
|
p_tvb_strnlen = pat->p_tvb_strnlen;
|
|
|
|
p_tvb_format_text = pat->p_tvb_format_text;
|
|
|
|
p_tvb_get_nstringz = pat->p_tvb_get_nstringz;
|
|
|
|
p_tvb_get_nstringz0 = pat->p_tvb_get_nstringz0;
|
|
|
|
p_tvb_find_line_end = pat->p_tvb_find_line_end;
|
|
|
|
p_tvb_find_line_end_unquoted = pat->p_tvb_find_line_end_unquoted;
|
|
|
|
p_tvb_strneql = pat->p_tvb_strneql;
|
|
|
|
p_tvb_strncaseeql = pat->p_tvb_strncaseeql;
|
|
|
|
p_tvb_bytes_to_str = pat->p_tvb_bytes_to_str;
|
2000-11-13 10:13:26 +00:00
|
|
|
p_prefs_register_module = pat->p_prefs_register_module;
|
|
|
|
p_prefs_register_uint_preference = pat->p_prefs_register_uint_preference;
|
|
|
|
p_prefs_register_bool_preference = pat->p_prefs_register_bool_preference;
|
|
|
|
p_prefs_register_enum_preference = pat->p_prefs_register_enum_preference;
|
2000-02-07 17:08:27 +00:00
|
|
|
}
|