Wireshark-dev: Re: [Wireshark-dev] Beginners help. How to add additional subtrees ?
From: "Jan Kokott" <Blind007@xxxxxx>
Date: Sat, 20 Jan 2007 07:38:12 +0100
Hi, thank you for the tip. I encountered another problem with ti = proto_tree_add_item(zigbee_tree, hf_zigbee_adr, tvb, 3, hlen, FALSE); adr_tree = proto_item_add_subtree(ti, ett_zigbee_adr); /*(again another for() to fill in the fields)*/ because hlen was 20 and the for() did work quite good with the frame_subtree but not with the adr_subtree. It maybe a problem to fill the 20 Byte long field with only 4 different sub fields (2 of them with 8 byte). My solution was to add the sub fields as single items not with a for() statemant like I did in the frame subtree. But now it works and I am going to try to use this dissector for the Phy Header as it should do and not regarding 802.15.4 as something under UDP like I did for my first design. Regards Jan -------- Original-Nachricht -------- Datum: Fri, 19 Jan 2007 18:11:07 +0100 (CET) Von: Jaap Keuter <jaap.keuter@xxxxxxxxx> An: Developer support list for Wireshark <wireshark-dev@xxxxxxxxxxxxx> Betreff: Re: [Wireshark-dev] Beginners help. How to add additional subtrees ? > Hi, > > Even though I'm not into the details, if you want to have 20 bytes > straight up use FT_BYTES as type. This has an arbitrary length. > > Thanx, > Jaap > > On Fri, 19 Jan 2007, Jan Kokott wrote: > > > Hi, > > > > I found the problem. > > The second Subtree has a length of 20 byte. > > And that doesn´t work with FT_NONE or FT_UNIT64. > > As it seems I have to declare a struct which will be used in the > hf_register_info hf[] to replace the FT_ variable. > > > > Regards > > Jan > > > > > > -------- Original-Nachricht -------- > > Datum: Fri, 19 Jan 2007 11:12:49 +0100 > > Von: "Jan Kokott" <Blind007@xxxxxx> > > An: Developer support list for Wireshark <wireshark-dev@xxxxxxxxxxxxx> > > Betreff: [Wireshark-dev] Beginners help. How to add additional subtrees > ? > > > > > Hi, > > > > > > My 802.15.4 plugin starts working, but as a newbie to C it´s still > quite > > > difficult to deal with the idea of pointer. :( > > > For starting the plugin I just reused the rudp plugin, so at the > moment I > > > implemented the Frame Control field and Addressing field of Zigbee > under > > > UDP at an virtual udp port. > > > > > > I wanted to add 2 sub_tree and a single item to my dissector, but it > > > doesn´t add the second subtree (adressing field). > > > the first one is displayed correctly and the "Sequence Number Field" > added > > > after the first sub_tree also works. > > > > > > /*I defined all the fields with*/ > > > static int hf_zigbee_frame = -1; ...and so on. > > > > > > /*Then added all three fields*/ > > > static gint ett_zigbee = -1; > > > > > > static gint ett_zigbee_frame = -1; > > > static gint ett_zigbee_adr = -1; > > > > > > tvbuff_t * next_tvb = NULL; > > > proto_tree *zigbee_tree = NULL, *frame_tree, *adr_tree; > > > proto_item *ti = NULL; > > > > > > /*Tree*/ > > > ti = proto_tree_add_item(tree, proto_zigbee, tvb, 0, hlen, FALSE); > > > zigbee_tree = proto_item_add_subtree(ti, ett_zigbee); > > > > > > /*1.sub_tree*/ > > > ti = proto_tree_add_item(zigbee_tree, hf_zigbee_frame, tvb, 0, 2, > FALSE); > > > frame_tree = proto_item_add_subtree(ti, ett_zigbee_frame); > > > /*(filled with for ())*/ > > > > > > /*Then added the single field without any subtree*/ > > > proto_tree_add_item(zigbee_tree, hf_zigbee_seq, tvb, 2, 1, FALSE); > > > > > > /*And then just added the next subtree*/ > > > ti = proto_tree_add_item(zigbee_tree, hf_zigbee_adr, tvb, 3, hlen, > FALSE); > > > adr_tree = proto_item_add_subtree(ti, ett_zigbee_adr); > > > /*(again another for() to fill in the fields)*/ > > > > > > > > > */Defined all the field info in proto_register_zigbee(void)*/ > > > > > > /*Added the field array*/ > > > static gint *ett[] = { > > > &ett_zigbee, > > > &ett_zigbee_frame, > > > &ett_zigbee_adr,}; > > > > > > /*And registered them */ > > > proto_register_field_array(proto_zigbee, hf, array_length(hf)); > > > proto_register_subtree_array(ett, array_length(ett)); > > > > > > That isn´t the full code but should be the interesting part for the > > > subtree. > > > Why does the first sub_tree work and the second is just displayed as a > > > single Item with 20 bytes length ? > > > > > > I think my problem is with the registration of the second sub_tree or > with > > > the pointer on ti or the tree. > > > > > > Regards > > > Jan > > > _______________________________________________ > > > Wireshark-dev mailing list > > > Wireshark-dev@xxxxxxxxxxxxx > > > http://www.wireshark.org/mailman/listinfo/wireshark-dev > > _______________________________________________ > > Wireshark-dev mailing list > > Wireshark-dev@xxxxxxxxxxxxx > > http://www.wireshark.org/mailman/listinfo/wireshark-dev > > > > >
- References:
- Re: [Wireshark-dev] Beginners help. How to add additional subtrees ?
- From: Jaap Keuter
- Re: [Wireshark-dev] Beginners help. How to add additional subtrees ?
- Prev by Date: Re: [Wireshark-dev] [PATCH v2] Add support for the CIPSO IPv4 option
- Next by Date: [Wireshark-dev] compilation error in airpdcap (0.99.5pre1 under MacOS X)
- Previous by thread: Re: [Wireshark-dev] Beginners help. How to add additional subtrees ?
- Next by thread: Re: [Wireshark-dev] Buildbot builds don't show up for download
- Index(es):