hi,
Firstly, thank Sake for your useful tips, it works very well.
But another problem blocked my way to succeed. Let me explain
it more detail.
1. I choose IE 'Revision Level Indicator' for the first
attempt.
$ fgrep -Ril --include "*.[ch]" --exclude "*svn*" "Revision
Level Indicator" *
epan/dissectors/packet-bssgp.c
epan/dissectors/packet-gsm_a_gm.c
2. I found source file 'epan/dissectors/packet-bssgp.c' takes
charge of dissect the protocol. It has none of business about
fieldname. So I don't need to dig out it.
3.so I dig into file 'epan/dissectors/packet-gsm_a_gm.c' to
find the way to add a field name of 'Revision Level Indicator'. Below
shows the code I add.
a. declare the field name I want to add
/*leon*/
static int hf_gsm_a_gm_rel_lev_ind = -1;
/*leon*/
b. replace fuction
'proto_tree_add_text' by 'proto_tree_add_bits_item'-------> I'm not
very clear about this part of code, just copy code of other IE.
/*leon*/
/*
* Revision Level
Indicator
*/
bits_needed = 4;
GET_DATA;
proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rel_lev_ind, tvb,
bit_offset, 4, FALSE);
bit_offset+=4;
curr_bits_length -=
bits_needed;
oct <<=
bits_needed;
bits_in_oct -=
bits_needed;
/*leon*/
c. setup fieldname I want to add
/*leon*/
{ &hf_gsm_a_gm_rel_lev_ind,
{ "Revision Level Indicator",
"gsm_a.gm.rel_lev_ind",
FT_UINT24, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
/*leon*/
4. compile the modified source code and run wireshark to see
the result. Below shows the result. It can't be dissected correctly. I
doubt part b in red above could cause the problem probably.
Could anyone check my fresh code and help me to solve my
problem?