I have been working at converting the TCAP dissector to an ASN.1 based
dissector.
I have ITU variant working but it needs more work. At this time I need
some ANSI tcap traces to get the ANSI variant working. If anyone can let
me have some ANSI examples I could complete this work.
Incidentally I had an idea with the tcap sub-dissectors, like MAP, INAP,
CAMEL etc. Currently these are configured using the SSN field faked in
the TCAP layer. We need to keep this for traces without an application
context number, but a modification to the sub-dissectors to register
themselves against the application context number and get the TCAP
dissector to try both methods.
E.g.
In gsm-map.c
register_ber_oid_dissector_handle("0.4.0.0.1.0.1.3", map_handle,
proto_gsm_map, "itu-t(0) identified-organization(4) etsi(0)
mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version3(3)");
This is using a new register_ber_oid_dissector_handle function in
packet-ber.c similar to the original but takes a handle as a parameter.
Then in TCAP we can do this.
if(!dissector_try_string(ber_oid_dissector_table, cur_oid, next_tvb,
pinfo, tree))
{
if (!dissector_try_port(tcap_itu_ssn_dissector_table,
pinfo->match_port, next_tvb,pinfo, tree))
dissect_ber_choice(pinfo, tree,
next_tvb, 0,
Component_choice, hf_index,
ett_itutcap_Component);
}
This makes the dependency on the SSN in configuration much less likely
to be needed. Cur_oid is captured when dissecting the application
context number.
Taking this one step further we can get the gsm-map dissector to
register against an SSN if it is called using the ACN method, allowing
it to then deal with MAPv1 operations which have no ACN.
Tim