Hi,
Just to keep people informed on the task I have undertaken,
to generate ethereal dissectors from IDL descriptions,
here is my current battleplan. Thanks to those people
with whom I have spoken with so far.
This should be very useful for the CORBA stuff appearing these days.
1. Generate packet-idl-xxx.[ch] from IDL doc's.
I am writing a backend to the omniidl compiler that
will allow me to traverse a tree structure that
represents the parsed IDL .
2. From this, automagically generate a dissector as usual.
It will also contain references to get_CDR_xxx or
decode_CDR_xxx etc. see below
It will also register in the new idl_dissector table
3. packet-giop.[ch] to contain helper functions
of the form get_CDR_xxx and or decode_CDR_xxx.
It already contains a few of these... and
can handle the alignment issue swith IDL flattened
onto an octet stream for various IDL data types.
4. packet-giop.c to register an "IDL-user" table.
5. When giop say looks at a REQUEST body, it can call
use the IDL table to find a match (or perhaps via
menu selection to activate the IDL dissector, or
even heuristic search?)
6. The called IDL dissector can decode as usual, but
can use the CDR routines in giop to decode the
CDR types , and automatically handle alignment
within the octet stream.
eg: IDL based dissectors
octet1 = get_CDR_short(tvb, offset)
proto_tree_add_int(idlxxx_tree, hf_idlxxx_yyy,tvb, offset,1,octet1);
cf: snip from current non IDL stuff
octet1 = tvb_get_guint8(tvb,offset); /* grab octet */
proto_tree_add_uint(btap_tree, hf_btap_msgtype,tvb, offset,1,octet1);
7. more to come, I am sure.
Comments welcome / Frank..
--
EUS/SV/Z Frank Singleton ASO Americas BSS
Office : +1 972 583 3251 ECN 800 33251
Pager : +1 800 651 1184 Email : eusfrsi@xxxxxxxxxxxxxxx
Amateur Radio: VK3FCS/KM5WS Email : frank.singleton@xxxxxxxxxxxx
Hardware: HP Omnibook 4150 running Redhat Linux 6.2 (2.2.16 kernel).