Ethereal-dev: [Ethereal-dev] Q931 ethereal code

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Rami AlHasan" <Rami.AlHasan@xxxxxxxxxxxx>
Date: Wed, 18 Aug 2004 00:42:58 +0200
I would be grateful if anyone can describe to me the meaning of the dissesctor tables, which is used at the parsing of the single-octet IE and Variable-length IE of the Q931 protocol dissector. I did not understans what does this code segment do? Is it a must to do this? what is the effect of ignoring this portion of the code? Please in other words what makes this condition happen and we enter this If statement?
 
Regards,
Rami
 
 
 
 

/*

* Check for subdissectors for this IE or

* for all IEs in this codeset.

*/

if (dissector_get_port_handle(codeset_dissector_table, codeset) ||

dissector_get_port_handle(ie_dissector_table, (codeset << 8) | info_element)) {

next_tvb = tvb_new_subset (tvb, offset, info_element_len + 2, info_element_len + 2);

if (dissector_try_port(ie_dissector_table, (codeset << 8) | info_element, next_tvb, pinfo, q931_tree) ||

dissector_try_port(codeset_dissector_table, codeset, next_tvb, pinfo, q931_tree)) {

offset += 2 + info_element_len;

codeset = locked_codeset;

continue;

}

}