diff options
author | Guy Harris <guy@alum.mit.edu> | 2009-06-05 22:42:47 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2009-06-05 22:42:47 +0000 |
commit | cf91fdf16b2d961024ea062503ce5fb91af28186 (patch) | |
tree | 2654abe47f378933a5d325856a7b3f877338dd19 /epan | |
parent | f84499059642f102c7272e72f74d7a986f51b520 (diff) |
Have tap listeners specify whether the "packet" routine requires
a protocol tree;
the column values.
This includes stats-tree listeners.
Have the routines to build the packet list, and to retap packets, honor
those requirements. This means that cf_retap_packets() no longer needs
an argument to specify whether to construct the column values or not, so
get rid of that argument.
This also means that there's no need for a tap to have a fake filter
to ensure that the protocol tree will be built, so don't set up a fake
"frame" filter.
While we're at it, clean up some cases where "no filter" was represented
as a null string rather than a null pointer.
Have a routine to return an indication of the number of tap listeners
with filters; use that rather than the global num_tap_filters.
Clean up some indentation and some gboolean vs. gint items.
svn path=/trunk/; revision=28645
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-http.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-isup.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-smb-sidsnooping.c | 10 | ||||
-rw-r--r-- | epan/dissectors/packet-smb.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-smb2.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-smpp.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-ucp.c | 2 | ||||
-rw-r--r-- | epan/libwireshark.def | 3 | ||||
-rw-r--r-- | epan/stats_tree.c | 9 | ||||
-rw-r--r-- | epan/stats_tree.h | 6 | ||||
-rw-r--r-- | epan/stats_tree_priv.h | 5 | ||||
-rw-r--r-- | epan/tap.c | 61 | ||||
-rw-r--r-- | epan/tap.h | 18 | ||||
-rw-r--r-- | epan/wslua/wslua_field.c | 7 | ||||
-rw-r--r-- | epan/wslua/wslua_listener.c | 80 |
15 files changed, 136 insertions, 81 deletions
diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c index c05230584c..f62b69b3b0 100644 --- a/epan/dissectors/packet-http.c +++ b/epan/dissectors/packet-http.c @@ -2569,9 +2569,9 @@ proto_reg_handoff_http(void) ntlmssp_handle = find_dissector("ntlmssp"); gssapi_handle = find_dissector("gssapi"); - stats_tree_register("http","http","HTTP/Packet Counter", http_stats_tree_packet, http_stats_tree_init, NULL ); - stats_tree_register("http","http_req","HTTP/Requests", http_req_stats_tree_packet, http_req_stats_tree_init, NULL ); - stats_tree_register("http","http_srv","HTTP/Load Distribution",http_reqs_stats_tree_packet,http_reqs_stats_tree_init, NULL ); + stats_tree_register("http","http","HTTP/Packet Counter", 0, http_stats_tree_packet, http_stats_tree_init, NULL ); + stats_tree_register("http","http_req","HTTP/Requests", 0, http_req_stats_tree_packet, http_req_stats_tree_init, NULL ); + stats_tree_register("http","http_srv","HTTP/Load Distribution",0,http_reqs_stats_tree_packet,http_reqs_stats_tree_init, NULL ); } diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c index 83ca4496ec..1ad7904312 100644 --- a/epan/dissectors/packet-isup.c +++ b/epan/dissectors/packet-isup.c @@ -8258,7 +8258,7 @@ proto_register_isup(void) /* Register the stats_tree */ stats_tree_register_with_group("isup", "isup_msg", "ISUP Messages", - msg_stats_tree_packet, msg_stats_tree_init, + 0, msg_stats_tree_packet, msg_stats_tree_init, NULL, REGISTER_STAT_GROUP_TELEPHONY); } diff --git a/epan/dissectors/packet-smb-sidsnooping.c b/epan/dissectors/packet-smb-sidsnooping.c index 59e7854c72..80cb7f5670 100644 --- a/epan/dissectors/packet-smb-sidsnooping.c +++ b/epan/dissectors/packet-smb-sidsnooping.c @@ -404,7 +404,10 @@ sid_name_snooping=0; } - error_string=register_tap_listener("dcerpc", &lsa_policy_information_tap_installed, "lsa.policy_information and ( lsa.info.level or lsa.domain or nt.domain_sid )", NULL, lsa_policy_information, NULL); + error_string=register_tap_listener("dcerpc", + &lsa_policy_information_tap_installed, + "lsa.policy_information and ( lsa.info.level or lsa.domain or nt.domain_sid )", + TL_REQUIRES_PROTO_TREE, NULL, lsa_policy_information, NULL); if(error_string){ /* error, we failed to attach to the tap. clean up */ @@ -415,7 +418,10 @@ sid_name_snooping=0; } lsa_policy_information_tap_installed=TRUE; - error_string=register_tap_listener("dcerpc", &samr_query_dispinfo_tap_installed, "samr and samr.opnum==40 and ( samr.handle or samr.rid or samr.acct_name or samr.level )", NULL, samr_query_dispinfo, NULL); + error_string=register_tap_listener("dcerpc", + &samr_query_dispinfo_tap_installed, + "samr and samr.opnum==40 and ( samr.handle or samr.rid or samr.acct_name or samr.level )", + TL_REQUIRES_PROTO_TREE, NULL, samr_query_dispinfo, NULL); if(error_string){ /* error, we failed to attach to the tap. clean up */ diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c index 46aa05a012..1c84372628 100644 --- a/epan/dissectors/packet-smb.c +++ b/epan/dissectors/packet-smb.c @@ -6712,7 +6712,8 @@ dissect_session_setup_andx_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree * security blob has been fully dissected and before * we exit from this dissector. */ - error_string=register_tap_listener("ntlmssp", NULL, NULL, NULL, NULL, NULL); + error_string=register_tap_listener("ntlmssp", NULL, NULL, + 0, NULL, NULL, NULL); if(!error_string){ ntlmssp_tap_id=find_tap_id("ntlmssp"); } diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c index 9f66c9c905..b07de7f35c 100644 --- a/epan/dissectors/packet-smb2.c +++ b/epan/dissectors/packet-smb2.c @@ -1988,7 +1988,8 @@ dissect_smb2_session_setup_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree * security blob has been fully dissected and before * we exit from this dissector. */ - error_string=register_tap_listener("ntlmssp", NULL, NULL, NULL, NULL, NULL); + error_string=register_tap_listener("ntlmssp", NULL, NULL, + 0, NULL, NULL, NULL); if(!error_string){ ntlmssp_tap_id=find_tap_id("ntlmssp"); } diff --git a/epan/dissectors/packet-smpp.c b/epan/dissectors/packet-smpp.c index a21608ac98..cdf5601bd5 100644 --- a/epan/dissectors/packet-smpp.c +++ b/epan/dissectors/packet-smpp.c @@ -3544,7 +3544,7 @@ proto_reg_handoff_smpp(void) DISSECTOR_ASSERT(gsm_sms_handle); /* Tapping setup */ - stats_tree_register_with_group("smpp","smpp_commands", st_str_smpp, + stats_tree_register_with_group("smpp","smpp_commands", st_str_smpp, 0, smpp_stats_tree_per_packet, smpp_stats_tree_init, NULL, REGISTER_STAT_GROUP_TELEPHONY); } diff --git a/epan/dissectors/packet-ucp.c b/epan/dissectors/packet-ucp.c index 0c1c966ad7..1e2aadaf19 100644 --- a/epan/dissectors/packet-ucp.c +++ b/epan/dissectors/packet-ucp.c @@ -2757,7 +2757,7 @@ proto_reg_handoff_ucp(void) dissector_add_handle("tcp.port", ucp_handle); /* Tapping setup */ - stats_tree_register_with_group("ucp", "ucp_messages", st_str_ucp, + stats_tree_register_with_group("ucp", "ucp_messages", st_str_ucp, 0, ucp_stats_tree_per_packet, ucp_stats_tree_init, NULL, REGISTER_STAT_GROUP_TELEPHONY); } diff --git a/epan/libwireshark.def b/epan/libwireshark.def index 239ca9fa28..c0c3de6ec4 100644 --- a/epan/libwireshark.def +++ b/epan/libwireshark.def @@ -539,6 +539,7 @@ h245_set_h223_set_mc_handle h248_param_ber_integer h248_register_package have_custom_cols +have_filtering_tap_listeners have_tap_listeners heur_dissector_add heur_dissector_delete @@ -596,7 +597,6 @@ nstime_sum nstime_to_msec nstime_to_sec nt_cmd_vals DATA -num_tap_filters DATA num_tree_types DATA offset_from_real_beginning oid_add @@ -1033,6 +1033,7 @@ uat_new uat_remove_record_idx uat_save uat_swap +union_of_tap_listener_flags UnregRejectReason_vals DATA UnregRequestReason_vals DATA uri_str_to_bytes diff --git a/epan/stats_tree.c b/epan/stats_tree.c index 7fbf32362b..554c50eb2a 100644 --- a/epan/stats_tree.c +++ b/epan/stats_tree.c @@ -260,6 +260,7 @@ stats_tree_reinit(void *p) /* register a new stats_tree */ extern void stats_tree_register_with_group(const char *tapname, const char *abbr, const char *name, + guint flags, stat_tree_packet_cb packet, stat_tree_init_cb init, stat_tree_cleanup_cb cleanup, register_stat_group_t stat_group) { @@ -272,11 +273,13 @@ stats_tree_register_with_group(const char *tapname, const char *abbr, const char cfg->tapname = g_strdup(tapname); cfg->abbr = g_strdup(abbr); cfg->name = name ? g_strdup(name) : g_strdup(abbr); - cfg->stat_group = stat_group; + cfg->stat_group = stat_group; cfg->packet = packet; cfg->init = init; cfg->cleanup = cleanup; + + cfg->flags = flags; /* these have to be filled in by implementations */ cfg->setup_node_pr = NULL; @@ -297,10 +300,12 @@ stats_tree_register_with_group(const char *tapname, const char *abbr, const char /* register a new stats_tree with default group REGISTER_STAT_GROUP_UNSORTED */ extern void stats_tree_register(const char *tapname, const char *abbr, const char *name, + guint flags, stat_tree_packet_cb packet, stat_tree_init_cb init, stat_tree_cleanup_cb cleanup) { - stats_tree_register_with_group(tapname, abbr, name, + stats_tree_register_with_group(tapname, abbr, name, + flags, packet, init, cleanup, REGISTER_STAT_GROUP_UNSORTED); } diff --git a/epan/stats_tree.h b/epan/stats_tree.h index 66a0c556cd..fcbc9025dd 100644 --- a/epan/stats_tree.h +++ b/epan/stats_tree.h @@ -53,6 +53,7 @@ typedef void (*stat_tree_cleanup_cb)(stats_tree*); /* registers a new stats tree with default group REGISTER_STAT_GROUP_UNSORTED * abbr: protocol abbr * name: protocol display name + * flags: tap listener flags for per-packet callback * packet: per packet callback * init: tree initialization callback * cleanup: cleanup callback @@ -60,6 +61,7 @@ typedef void (*stat_tree_cleanup_cb)(stats_tree*); extern void stats_tree_register(const gchar *tapname, const gchar *abbr, const gchar *name, + guint flags, stat_tree_packet_cb packet, stat_tree_init_cb init, stat_tree_cleanup_cb cleanup); @@ -67,6 +69,7 @@ extern void stats_tree_register(const gchar *tapname, /* registers a new stats tree * abbr: protocol abbr * name: protocol display name + * flags: tap listener flags for per-packet callback * packet: per packet callback * init: tree initialization callback * cleanup: cleanup callback @@ -75,10 +78,11 @@ extern void stats_tree_register(const gchar *tapname, extern void stats_tree_register_with_group(const gchar *tapname, const gchar *abbr, const gchar *name, + guint flags, stat_tree_packet_cb packet, stat_tree_init_cb init, stat_tree_cleanup_cb cleanup, - register_stat_group_t stat_group); + register_stat_group_t stat_group); extern int stats_tree_parent_id_by_name(stats_tree *st, const gchar *parent_name); diff --git a/epan/stats_tree_priv.h b/epan/stats_tree_priv.h index 7bfd9015bf..24e4f4df6f 100644 --- a/epan/stats_tree_priv.h +++ b/epan/stats_tree_priv.h @@ -110,7 +110,7 @@ struct _stats_tree_cfg { gchar* abbr; gchar* name; gchar* tapname; - register_stat_group_t stat_group; + register_stat_group_t stat_group; gboolean in_use; @@ -118,6 +118,9 @@ struct _stats_tree_cfg { stat_tree_packet_cb packet; stat_tree_init_cb init; stat_tree_cleanup_cb cleanup; + + /* tap listener flags for the per-packet callback */ + guint flags; /* * node presentation callbacks diff --git a/epan/tap.c b/epan/tap.c index d53bdd0432..acab1fd5d3 100644 --- a/epan/tap.c +++ b/epan/tap.c @@ -42,7 +42,6 @@ #include <epan/tap.h> static gboolean tapping_is_active=FALSE; -int num_tap_filters=0; typedef struct _tap_dissector_t { struct _tap_dissector_t *next; @@ -70,7 +69,8 @@ static guint tap_packet_index; typedef struct _tap_listener_t { struct _tap_listener_t *next; int tap_id; - int needs_redraw; + gboolean needs_redraw; + guint flags; dfilter_t *code; void *tapdata; tap_reset_cb reset; @@ -247,7 +247,7 @@ tap_push_tapped_queue(epan_dissect_t *edt) for(tl=(tap_listener_t *)tap_listener_queue;tl;tl=tl->next){ tp=&tap_packet_array[i]; if(tp->tap_id==tl->tap_id){ - int passed=TRUE; + gboolean passed=TRUE; if(tl->code){ passed=dfilter_apply_edt(tl->code, edt); } @@ -315,7 +315,7 @@ reset_tap_listeners(void) if(tl->reset){ tl->reset(tl->tapdata); } - tl->needs_redraw=1; + tl->needs_redraw=TRUE; } } @@ -339,7 +339,7 @@ draw_tap_listeners(gboolean draw_all) tl->draw(tl->tapdata); } } - tl->needs_redraw=0; + tl->needs_redraw=FALSE; } } @@ -376,7 +376,8 @@ find_tap_id(const char *name) * message. */ GString * -register_tap_listener(const char *tapname, void *tapdata, const char *fstring, tap_reset_cb reset, tap_packet_cb packet, tap_draw_cb draw) +register_tap_listener(const char *tapname, void *tapdata, const char *fstring, + guint flags, tap_reset_cb reset, tap_packet_cb packet, tap_draw_cb draw) { tap_listener_t *tl; int tap_id; @@ -391,7 +392,8 @@ register_tap_listener(const char *tapname, void *tapdata, const char *fstring, t tl=g_malloc(sizeof(tap_listener_t)); tl->code=NULL; - tl->needs_redraw=1; + tl->needs_redraw=TRUE; + tl->flags=flags; if(fstring){ if(!dfilter_compile(fstring, &tl->code)){ error_string = g_string_new(""); @@ -400,8 +402,6 @@ register_tap_listener(const char *tapname, void *tapdata, const char *fstring, t fstring, dfilter_error_msg); g_free(tl); return error_string; - } else { - num_tap_filters++; } } @@ -444,10 +444,9 @@ set_tap_dfilter(void *tapdata, const char *fstring) if(tl){ if(tl->code){ dfilter_free(tl->code); - num_tap_filters--; tl->code=NULL; } - tl->needs_redraw=1; + tl->needs_redraw=TRUE; if(fstring){ if(!dfilter_compile(fstring, &tl->code)){ error_string = g_string_new(""); @@ -455,8 +454,6 @@ set_tap_dfilter(void *tapdata, const char *fstring) "Filter \"%s\" is invalid - %s", fstring, dfilter_error_msg); return error_string; - } else { - num_tap_filters++; } } } @@ -492,7 +489,6 @@ remove_tap_listener(void *tapdata) if(tl){ if(tl->code){ dfilter_free(tl->code); - num_tap_filters--; } g_free(tl); } @@ -502,11 +498,6 @@ remove_tap_listener(void *tapdata) /* * Return TRUE if we have tap listeners, FALSE otherwise. - * Checking "num_tap_filters" isn't the right way to check whether we need - * to do any dissection in order to run taps, as not all taps necessarily - * have filters, and "num_tap_filters" is the number of tap filters, not - * the number of tap listeners; it's only the right way to check whether - * we need to build a protocol tree when doing dissection. */ gboolean have_tap_listeners(void) @@ -529,3 +520,35 @@ have_tap_listener(int tap_id) return FALSE; } + +/* + * Return TRUE if we have any tap listeners with filters, FALSE otherwise. + */ +gboolean +have_filtering_tap_listeners(void) +{ + tap_listener_t *tl; + + for(tl=(tap_listener_t *)tap_listener_queue;tl;tl=tl->next){ + if(tl->code) + return TRUE; + } + return FALSE; +} + +/* + * Get the union of all the flags for all the tap listeners; that gives + * an indication of whether the protocol tree, or the columns, are + * required by any taps. + */ +guint +union_of_tap_listener_flags(void) +{ + tap_listener_t *tl; + guint flags = 0; + + for(tl=(tap_listener_t *)tap_listener_queue;tl;tl=tl->next){ + flags|=tl->flags; + } + return flags; +} diff --git a/epan/tap.h b/epan/tap.h index 4f4855deff..9bc66949e4 100644 --- a/epan/tap.h +++ b/epan/tap.h @@ -27,15 +27,15 @@ #include "epan/epan.h" -/* With MSVC and a libwireshark.dll, we need a - * special declaration of num_tap_filters. - */ -WS_VAR_IMPORT int num_tap_filters; - typedef void (*tap_reset_cb)(void *tapdata); -typedef int (*tap_packet_cb)(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const void *data); +typedef gboolean (*tap_packet_cb)(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const void *data); typedef void (*tap_draw_cb)(void *tapdata); +/* + * Flags to indicate what a tap listener's packet routine requires. + */ +#define TL_REQUIRES_PROTO_TREE 0x00000001 /* full protocol tree */ +#define TL_REQUIRES_COLUMNS 0x00000002 /* columns */ extern void tap_init(void); extern int register_tap(const char *name); @@ -46,12 +46,14 @@ extern void tap_push_tapped_queue(epan_dissect_t *edt); extern void reset_tap_listeners(void); extern void draw_tap_listeners(gboolean draw_all); extern GString *register_tap_listener(const char *tapname, void *tapdata, - const char *fstring, tap_reset_cb tap_reset, tap_packet_cb tap_packet, - tap_draw_cb tap_draw); + const char *fstring, guint flags, tap_reset_cb tap_reset, + tap_packet_cb tap_packet, tap_draw_cb tap_draw); extern GString *set_tap_dfilter(void *tapdata, const char *fstring); extern void remove_tap_listener(void *tapdata); extern gboolean have_tap_listeners(void); extern gboolean have_tap_listener(int tap_id); +extern gboolean have_filtering_tap_listeners(void); +extern guint union_of_tap_listener_flags(void); extern const void *fetch_tapped_data(int tap_id, int idx); #endif diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c index c95a07b698..84ba0a01a1 100644 --- a/epan/wslua/wslua_field.c +++ b/epan/wslua/wslua_field.c @@ -369,9 +369,10 @@ void lua_prime_all_fields(proto_tree* tree _U_) { if (fake_tap) { /* a boring tap :-) */ GString* error = register_tap_listener("frame", - &fake_tap, - fake_tap_filter->str, - NULL, NULL, NULL); + &fake_tap, + fake_tap_filter->str, + 0, /* XXX - do we need the protocol tree or columns? */ + NULL, NULL, NULL); if (error) { report_failure("while registering lua_fake_tap:\n%s",error->str); diff --git a/epan/wslua/wslua_listener.c b/epan/wslua/wslua_listener.c index 22548849b4..f281f42204 100644 --- a/epan/wslua/wslua_listener.c +++ b/epan/wslua/wslua_listener.c @@ -44,10 +44,11 @@ int tap_packet_cb_error_handler(lua_State* L) { static gchar* last_error = NULL; static int repeated = 0; static int next = 2; - const gchar* where = (lua_pinfo) ? - ep_strdup_printf("Lua: on packet %i Error During execution of Listener Packet Callback",lua_pinfo->fd->num) : - ep_strdup_printf("Lua: Error During execution of Listener Packet Callback") ; - + const gchar* where = (lua_pinfo) ? + + ep_strdup_printf("Lua: on packet %i Error During execution of Listener Packet Callback",lua_pinfo->fd->num) : + ep_strdup_printf("Lua: Error During execution of Listener Packet Callback") ; + /* show the error the 1st, 3rd, 5th, 9th, 17th, 33th... time it appears to avoid window flooding */ /* XXX the last series of identical errors won't be shown (the user however gets at least one message) */ @@ -81,7 +82,7 @@ int tap_packet_cb_error_handler(lua_State* L) { int lua_tap_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const void *data) { Listener tap = tapdata; int retval = 0; - + if (tap->packet_ref == LUA_NOREF) return 0; lua_settop(tap->L,0); @@ -92,22 +93,22 @@ int lua_tap_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const push_Pinfo(tap->L, pinfo); push_Tvb(tap->L, edt->tvb); - if (tap->extractor) { - tap->extractor(tap->L,data); - } else { - lua_pushnil(tap->L); - } - + if (tap->extractor) { + tap->extractor(tap->L,data); + } else { + lua_pushnil(tap->L); + } + lua_pinfo = pinfo; lua_tvb = edt->tvb; lua_tree = g_malloc(sizeof(struct _wslua_treeitem)); - lua_tree->tree = edt->tree; - lua_tree->item = NULL; - lua_tree->expired = FALSE; + lua_tree->tree = edt->tree; + lua_tree->item = NULL; + lua_tree->expired = FALSE; switch ( lua_pcall(tap->L,3,1,1) ) { case 0: - retval = luaL_optint(tap->L,-1,1); + retval = luaL_optint(tap->L,-1,1); break; case LUA_ERRRUN: break; @@ -190,18 +191,18 @@ void lua_tap_draw(void *tapdata) { } WSLUA_CONSTRUCTOR Listener_new(lua_State* L) { - /* Creates a new Listener listener */ + /* Creates a new Listener listener */ #define WSLUA_OPTARG_Listener_new_TAP 1 /* The name of this tap */ #define WSLUA_OPTARG_Listener_new_FILTER 2 /* A filter that when matches the tap.packet function gets called (use nil to be called for every packet) */ const gchar* tap_type = luaL_optstring(L,WSLUA_OPTARG_Listener_new_TAP,"frame"); const gchar* filter = luaL_optstring(L,WSLUA_OPTARG_Listener_new_FILTER,NULL); - Listener tap; + Listener tap; GString* error; tap = g_malloc(sizeof(struct _wslua_tap)); - tap->name = g_strdup(tap_type); + tap->name = g_strdup(tap_type); tap->filter = filter ? g_strdup(filter) : NULL; tap->extractor = wslua_get_tap_extractor(tap_type); tap->L = L; @@ -209,13 +210,20 @@ WSLUA_CONSTRUCTOR Listener_new(lua_State* L) { tap->draw_ref = LUA_NOREF; tap->init_ref = LUA_NOREF; - error = register_tap_listener(tap_type, tap, tap->filter, lua_tap_reset, lua_tap_packet, lua_tap_draw); + /* + * XXX - do all Lua taps require the protocol tree? If not, it might + * be useful to have a way to indicate whether any do. + * + * XXX - do any Lua taps require the columns? If so, we either need + * to request them for this tap, or do so if any Lua taps require them. + */ + error = register_tap_listener(tap_type, tap, tap->filter, TL_REQUIRES_PROTO_TREE, lua_tap_reset, lua_tap_packet, lua_tap_draw); if (error) { g_free(tap->filter); g_free(tap->name); g_free(tap); - /* WSLUA_ERROR(new_tap,"tap registration error"); */ + /* WSLUA_ERROR(new_tap,"tap registration error"); */ luaL_error(L,"Error while registering tap:\n%s",error->str); g_string_free(error,TRUE); /* XXX LEAK? */ } @@ -225,7 +233,7 @@ WSLUA_CONSTRUCTOR Listener_new(lua_State* L) { } WSLUA_METHOD Listener_remove(lua_State* L) { - /* Removes a tap listener */ + /* Removes a tap listener */ Listener tap = checkListener(L,1); if (!tap) return 0; @@ -250,19 +258,19 @@ WSLUA_METAMETHOD Listener_tostring(lua_State* L) { static int Listener_newindex(lua_State* L) { - /* WSLUA_ATTRIBUTE Listener_packet WO A function that will be called once every packet matches the Listener listener filter. - - function tap.packet(pinfo,tvb,userdata) ... end - */ - /* WSLUA_ATTRIBUTE Listener_draw WO A function that will be called once every few seconds to redraw the gui objects - in tshark this funtion is called oly at the very end of the capture file. - - function tap.draw(userdata) ... end - */ - /* WSLUA_ATTRIBUTE Listener_reset WO A function that will be called at the end of the capture run. - - function tap.reset(userdata) ... end - */ + /* WSLUA_ATTRIBUTE Listener_packet WO A function that will be called once every packet matches the Listener listener filter. + + function tap.packet(pinfo,tvb,userdata) ... end + */ + /* WSLUA_ATTRIBUTE Listener_draw WO A function that will be called once every few seconds to redraw the gui objects + in tshark this funtion is called oly at the very end of the capture file. + + function tap.draw(userdata) ... end + */ + /* WSLUA_ATTRIBUTE Listener_reset WO A function that will be called at the end of the capture run. + + function tap.reset(userdata) ... end + */ Listener tap = shiftListener(L,1); const gchar* index = lua_shiftstring(L,1); int* refp = NULL; @@ -305,8 +313,8 @@ static const luaL_reg Listener_meta[] = { }; int Listener_register(lua_State* L) { - wslua_set_tap_enums(L); + wslua_set_tap_enums(L); WSLUA_REGISTER_CLASS(Listener); - return 1; + return 1; } |