Add a mechanism by which a dissector can be registered by name, another
[obnox/wireshark/wip.git] / plugins / plugin_api.c
1 /* plugin_api.c
2  * Routines for Ethereal plugins.
3  *
4  * $Id: plugin_api.c,v 1.13 2000/11/15 07:07:49 guy Exp $
5  *
6  * Ethereal - Network traffic analyzer
7  * Copyright 2000 by Gilbert Ramirez <gram@xiexie.org>
8  *
9  * 
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  * 
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  * 
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23  *
24  */
25
26 #ifdef HAVE_CONFIG_H
27 #include "config.h"
28 #endif
29
30 #include <stdarg.h>
31
32 #include <glib.h>
33
34 #include "plugin_api.h"
35
36 packet_info                     *p_pi = NULL;
37
38 void
39 plugin_address_table_init(plugin_address_table_t *pat)
40 {
41         p_pi                                    = pat->p_pi;
42         p_check_col                             = pat->p_check_col;
43         p_col_add_fstr                          = pat->p_col_add_fstr;
44         p_col_append_fstr                       = pat->p_col_append_fstr;
45         p_col_add_str                           = pat->p_col_add_str;
46         p_col_append_str                        = pat->p_col_append_str;
47         p_dfilter_init                          = pat->p_dfilter_init;
48         p_dfilter_cleanup                       = pat->p_dfilter_cleanup;
49         p_proto_register_protocol               = pat->p_proto_register_protocol;
50         p_proto_register_field_array            = pat->p_proto_register_field_array;
51         p_proto_register_subtree_array          = pat->p_proto_register_subtree_array;
52         p_dissector_add                         = pat->p_dissector_add;
53         p_old_dissector_add                     = pat->p_old_dissector_add;
54         p_dissector_delete                      = pat->p_dissector_delete;
55         p_heur_dissector_add                    = pat->p_heur_dissector_add;
56         p_register_dissector                    = pat->p_register_dissector;
57         p_find_dissector                        = pat->p_find_dissector;
58         p_old_call_dissector                    = pat->p_old_call_dissector;
59         p_call_dissector                        = pat->p_call_dissector;
60         p_dissect_data                          = pat->p_dissect_data;
61         p_old_dissect_data                      = pat->p_old_dissect_data;
62         p_proto_is_protocol_enabled             = pat->p_proto_is_protocol_enabled;
63         p_proto_item_get_len                    = pat->p_proto_item_get_len;
64         p_proto_item_set_len                    = pat->p_proto_item_set_len;
65         p_proto_item_set_text                   = pat->p_proto_item_set_text;
66         p_proto_item_add_subtree                = pat->p_proto_item_add_subtree;
67         p_proto_tree_add_item                   = pat->p_proto_tree_add_item;
68         p_proto_tree_add_item_hidden            = pat->p_proto_tree_add_item_hidden;
69         p_proto_tree_add_protocol_format        = pat->p_proto_tree_add_protocol_format;
70         p_proto_tree_add_bytes                  = pat->p_proto_tree_add_bytes;
71         p_proto_tree_add_bytes_hidden           = pat->p_proto_tree_add_bytes_hidden;
72         p_proto_tree_add_bytes_format           = pat->p_proto_tree_add_bytes_format;
73         p_proto_tree_add_time                   = pat->p_proto_tree_add_time;
74         p_proto_tree_add_time_hidden            = pat->p_proto_tree_add_time_hidden;
75         p_proto_tree_add_time_format            = pat->p_proto_tree_add_time_format;
76         p_proto_tree_add_ipxnet                 = pat->p_proto_tree_add_ipxnet;
77         p_proto_tree_add_ipxnet_hidden          = pat->p_proto_tree_add_ipxnet_hidden;
78         p_proto_tree_add_ipxnet_format          = pat->p_proto_tree_add_ipxnet_format;
79         p_proto_tree_add_ipv4                   = pat->p_proto_tree_add_ipv4;
80         p_proto_tree_add_ipv4_hidden            = pat->p_proto_tree_add_ipv4_hidden;
81         p_proto_tree_add_ipv4_format            = pat->p_proto_tree_add_ipv4_format;
82         p_proto_tree_add_ipv6                   = pat->p_proto_tree_add_ipv6;
83         p_proto_tree_add_ipv6_hidden            = pat->p_proto_tree_add_ipv6_hidden;
84         p_proto_tree_add_ipv6_format            = pat->p_proto_tree_add_ipv6_format;
85         p_proto_tree_add_ether                  = pat->p_proto_tree_add_ether;
86         p_proto_tree_add_ether_hidden           = pat->p_proto_tree_add_ether_hidden;
87         p_proto_tree_add_ether_format           = pat->p_proto_tree_add_ether_format;
88         p_proto_tree_add_string                 = pat->p_proto_tree_add_string;
89         p_proto_tree_add_string_hidden          = pat->p_proto_tree_add_string_hidden;
90         p_proto_tree_add_string_format          = pat->p_proto_tree_add_string_format;
91         p_proto_tree_add_boolean                = pat->p_proto_tree_add_boolean;
92         p_proto_tree_add_boolean_hidden         = pat->p_proto_tree_add_boolean_hidden;
93         p_proto_tree_add_boolean_format         = pat->p_proto_tree_add_boolean_format;
94         p_proto_tree_add_double                 = pat->p_proto_tree_add_double;
95         p_proto_tree_add_double_hidden          = pat->p_proto_tree_add_double_hidden;
96         p_proto_tree_add_double_format          = pat->p_proto_tree_add_double_format;
97         p_proto_tree_add_uint                   = pat->p_proto_tree_add_uint;
98         p_proto_tree_add_uint_hidden            = pat->p_proto_tree_add_uint_hidden;
99         p_proto_tree_add_uint_format            = pat->p_proto_tree_add_uint_format;
100         p_proto_tree_add_int                    = pat->p_proto_tree_add_int;
101         p_proto_tree_add_int_hidden             = pat->p_proto_tree_add_int_hidden;
102         p_proto_tree_add_int_format             = pat->p_proto_tree_add_int_format;
103         p_proto_tree_add_text                   = pat->p_proto_tree_add_text;
104         p_proto_tree_add_notext                 = pat->p_proto_tree_add_notext;
105         p_tvb_new_subset                        = pat->p_tvb_new_subset;
106         p_tvb_length                            = pat->p_tvb_length;
107         p_tvb_length_remaining                  = pat->p_tvb_length_remaining;
108         p_tvb_bytes_exist                       = pat->p_tvb_bytes_exist;
109         p_tvb_offset_exists                     = pat->p_tvb_offset_exists;
110         p_tvb_reported_length                   = pat->p_tvb_reported_length;
111         p_tvb_get_guint8                        = pat->p_tvb_get_guint8;
112         p_tvb_get_ntohs                         = pat->p_tvb_get_ntohs;
113         p_tvb_get_ntoh24                        = pat->p_tvb_get_ntoh24;
114         p_tvb_get_ntohl                         = pat->p_tvb_get_ntohl;
115 #ifdef G_HAVE_GINT64
116         p_tvb_get_ntohll                        = pat->p_tvb_get_ntohll;
117 #endif
118         p_tvb_get_letohs                        = pat->p_tvb_get_letohs;
119         p_tvb_get_letoh24                       = pat->p_tvb_get_letoh24;
120         p_tvb_get_letohl                        = pat->p_tvb_get_letohl;
121 #ifdef G_HAVE_GINT64
122         p_tvb_get_letohll                       = pat->p_tvb_get_letohll;
123 #endif
124         p_tvb_memcpy                            = pat->p_tvb_memcpy;
125         p_tvb_memdup                            = pat->p_tvb_memdup;
126         p_tvb_get_ptr                           = pat->p_tvb_get_ptr;
127         p_tvb_find_guint8                       = pat->p_tvb_find_guint8;
128         p_tvb_pbrk_guint8                       = pat->p_tvb_pbrk_guint8;
129         p_tvb_strnlen                           = pat->p_tvb_strnlen;
130         p_tvb_format_text                       = pat->p_tvb_format_text;
131         p_tvb_get_nstringz                      = pat->p_tvb_get_nstringz;
132         p_tvb_get_nstringz0                     = pat->p_tvb_get_nstringz0;
133         p_tvb_find_line_end                     = pat->p_tvb_find_line_end;
134         p_tvb_find_line_end_unquoted            = pat->p_tvb_find_line_end_unquoted;
135         p_tvb_strneql                           = pat->p_tvb_strneql;
136         p_tvb_strncaseeql                       = pat->p_tvb_strncaseeql;
137         p_tvb_bytes_to_str                      = pat->p_tvb_bytes_to_str;
138         p_prefs_register_module                 = pat->p_prefs_register_module;
139         p_prefs_register_uint_preference        = pat->p_prefs_register_uint_preference;
140         p_prefs_register_bool_preference        = pat->p_prefs_register_bool_preference;
141         p_prefs_register_enum_preference        = pat->p_prefs_register_enum_preference;
142 }