forked from osmocom/wireshark
add a debugging function that creates a tree exploding the parsed elements
svn path=/trunk/; revision=16054
This commit is contained in:
parent
8ee088f9cd
commit
e07a98a869
|
@ -804,3 +804,35 @@ tvbparse_elem_t* tvbparse_find(tvbparse_t* tt, const tvbparse_wanted_t* wanted)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) {
|
||||||
|
GPtrArray* stack = g_ptr_array_new();
|
||||||
|
struct _elem_tree_stack_frame* frame = ep_alloc(sizeof(struct _elem_tree_stack_frame));
|
||||||
|
proto_item* pi;
|
||||||
|
frame->tree = tree;
|
||||||
|
frame->elem = curr;
|
||||||
|
|
||||||
|
while (curr) {
|
||||||
|
pi = proto_tree_add_text(frame->tree,curr->tvb,curr->offset,curr->len,"%s",tvb_format_text(curr->tvb,curr->offset,curr->len));
|
||||||
|
|
||||||
|
if(curr->sub) {
|
||||||
|
frame->elem = curr;
|
||||||
|
g_ptr_array_add(stack,frame);
|
||||||
|
frame = ep_alloc(sizeof(struct _elem_tree_stack_frame));
|
||||||
|
frame->tree = proto_item_add_subtree(pi,0);
|
||||||
|
curr = curr->sub;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
curr = curr->next;
|
||||||
|
|
||||||
|
while( !curr && stack->len ) {
|
||||||
|
frame = g_ptr_array_remove_index_fast(stack,stack->len - 1);
|
||||||
|
curr = frame->elem->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
g_ptr_array_free(stack,TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -348,4 +348,7 @@ tvbparse_elem_t* tvbparse_get(tvbparse_t* tt,
|
||||||
tvbparse_elem_t* tvbparse_find(tvbparse_t* tt,
|
tvbparse_elem_t* tvbparse_find(tvbparse_t* tt,
|
||||||
const tvbparse_wanted_t* wanted);
|
const tvbparse_wanted_t* wanted);
|
||||||
|
|
||||||
|
|
||||||
|
void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue