diff options
Diffstat (limited to 'asn1/atn-cm/packet-atn-cm-template.c')
-rw-r--r-- | asn1/atn-cm/packet-atn-cm-template.c | 317 |
1 files changed, 155 insertions, 162 deletions
diff --git a/asn1/atn-cm/packet-atn-cm-template.c b/asn1/atn-cm/packet-atn-cm-template.c index 46373fd277..4dddf6ef53 100644 --- a/asn1/atn-cm/packet-atn-cm-template.c +++ b/asn1/atn-cm/packet-atn-cm-template.c @@ -1,9 +1,3 @@ -/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t - * vi: set shiftwidth=2 tabstop=2 noexpandtab: - * :indentSize=2:tabSize=2:noTabs=false: - */ - - /* packet-atn-cm.c * By Mathias Guettler <guettler@web.de> * Copyright 2013 @@ -67,185 +61,184 @@ static int proto_atn_cm = -1; static int dissect_atn_cm( - tvbuff_t *tvb, - packet_info *pinfo, - proto_tree *tree, - void *data _U_) + tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + void *data _U_) { - int type; - proto_tree *sub_tree; - - sub_tree = proto_tree_add_subtree( - tree, tvb, 0, -1, ett_atn_cm, NULL, ATN_CM_PROTO); - - /* ti = proto_tree_add_item(tree, proto_atn_cm, tvb, 0, 0 , ENC_NA); */ - /* sub_tree = proto_item_add_subtree(ti, ett_atn_cm_pdu); */ - - /* determine whether it is uplink or downlink */ - type = check_heur_msg_type(pinfo); - - switch(type){ - case um: - dissect_CMGroundMessage_PDU( - tvb, - pinfo, - sub_tree, NULL); - break; - case dm: - dissect_CMAircraftMessage_PDU( - tvb, - pinfo, - sub_tree, NULL); - break; - default: - break; - } - return tvb_reported_length_remaining(tvb, 0); + int type; + proto_tree *sub_tree; + + sub_tree = proto_tree_add_subtree( + tree, tvb, 0, -1, ett_atn_cm, NULL, ATN_CM_PROTO); + + /* ti = proto_tree_add_item(tree, proto_atn_cm, tvb, 0, 0 , ENC_NA); */ + /* sub_tree = proto_item_add_subtree(ti, ett_atn_cm_pdu); */ + + /* determine whether it is uplink or downlink */ + type = check_heur_msg_type(pinfo); + + switch(type){ + case um: + dissect_CMGroundMessage_PDU( + tvb, + pinfo, + sub_tree, NULL); + break; + case dm: + dissect_CMAircraftMessage_PDU( + tvb, + pinfo, + sub_tree, NULL); + break; + default: + break; + } + return tvb_reported_length_remaining(tvb, 0); } static gboolean dissect_atn_cm_heur( - tvbuff_t *tvb, - packet_info *pinfo, - proto_tree *tree, - void *data _U_) + tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + void *data _U_) { - atn_conversation_t *atn_cv = NULL; - volatile gboolean is_atn_cm = FALSE; - int type; - - /* determine whether it is uplink or downlink */ - type = check_heur_msg_type(pinfo); - - /* heuristically decode message */ - switch(type){ - case um: - TRY { - dissect_CMGroundMessage_PDU( - tvb, - pinfo, - NULL, NULL); - /* no exception thrown: looks like it is a CM PDU */ - is_atn_cm = TRUE; } - CATCH_ALL { - is_atn_cm = FALSE; } - ENDTRY; - break; - case dm: - TRY { - dissect_CMAircraftMessage_PDU( - tvb, - pinfo, - NULL, NULL); - /* no exception thrown: looks like it is a CM PDU */ - is_atn_cm = TRUE;} - CATCH_ALL { - is_atn_cm = FALSE; } - ENDTRY; - break; - default: - break; - } - - if (is_atn_cm == TRUE) { - /* note: */ - /* all subsequent PDU's belonging to this conversation are considered CM */ - /* if the first CM PDU has been decoded succesfully */ - /* (This is done in "atn-ulcs" by using "call_dissector_with_data()") */ - - /* DT: dstref present, srcref is always zero */ - if((pinfo->clnp_dstref) && - (!pinfo->clnp_srcref)){ - - atn_cv = find_atn_conversation( - &pinfo->dst, - pinfo->clnp_dstref, - &pinfo->src ); - } - /* CR: srcref present, dstref is always zero */ - if((!pinfo->clnp_dstref) && - (pinfo->clnp_srcref)){ - - atn_cv = find_atn_conversation( - &pinfo->src, - pinfo->clnp_srcref, - &pinfo->dst ); - - } - /* CC: srcref and dstref present */ - if((pinfo->clnp_dstref) && - (pinfo->clnp_srcref)){ - atn_cv = find_atn_conversation( - &pinfo->src, - pinfo->clnp_srcref, - &pinfo->dst ); - } - if(atn_cv){ - atn_cv->ae_qualifier = cma; - } - dissect_atn_cm( - tvb, - pinfo, - tree, - NULL); - } - - return is_atn_cm; + atn_conversation_t *atn_cv = NULL; + volatile gboolean is_atn_cm = FALSE; + int type; + + /* determine whether it is uplink or downlink */ + type = check_heur_msg_type(pinfo); + + /* heuristically decode message */ + switch(type){ + case um: + TRY { + dissect_CMGroundMessage_PDU( + tvb, + pinfo, + NULL, NULL); + /* no exception thrown: looks like it is a CM PDU */ + is_atn_cm = TRUE; } + CATCH_ALL { + is_atn_cm = FALSE; } + ENDTRY; + break; + case dm: + TRY { + dissect_CMAircraftMessage_PDU( + tvb, + pinfo, + NULL, NULL); + /* no exception thrown: looks like it is a CM PDU */ + is_atn_cm = TRUE;} + CATCH_ALL { + is_atn_cm = FALSE; } + ENDTRY; + break; + default: + break; + } + + if (is_atn_cm == TRUE) { + /* note: */ + /* all subsequent PDU's belonging to this conversation are considered CM */ + /* if the first CM PDU has been decoded succesfully */ + /* (This is done in "atn-ulcs" by using "call_dissector_with_data()") */ + + /* DT: dstref present, srcref is always zero */ + if((pinfo->clnp_dstref) && + (!pinfo->clnp_srcref)){ + + atn_cv = find_atn_conversation( + &pinfo->dst, + pinfo->clnp_dstref, + &pinfo->src ); + } + /* CR: srcref present, dstref is always zero */ + if((!pinfo->clnp_dstref) && + (pinfo->clnp_srcref)){ + + atn_cv = find_atn_conversation( + &pinfo->src, + pinfo->clnp_srcref, + &pinfo->dst ); + + } + /* CC: srcref and dstref present */ + if((pinfo->clnp_dstref) && + (pinfo->clnp_srcref)){ + atn_cv = find_atn_conversation( + &pinfo->src, + pinfo->clnp_srcref, + &pinfo->dst ); + } + if(atn_cv){ + atn_cv->ae_qualifier = cma; + } + dissect_atn_cm( + tvb, + pinfo, + tree, + NULL); + } + + return is_atn_cm; } void proto_register_atn_cm (void) { static hf_register_info hf_atn_cm[] = { - #include "packet-atn-cm-hfarr.c" + #include "packet-atn-cm-hfarr.c" }; - static gint *ett[] = { - #include "packet-atn-cm-ettarr.c" - &ett_atn_cm - }; - - /* register CM application */ - proto_atn_cm = proto_register_protocol( - ATN_CM_PROTO , - "ATN-CM", - "atn-cm"); - - proto_register_field_array( - proto_atn_cm, - hf_atn_cm, - array_length(hf_atn_cm)); - - proto_register_subtree_array( - ett, - array_length(ett)); - - new_register_dissector( - "atn-cm", - dissect_atn_cm, - proto_atn_cm); + static gint *ett[] = { + #include "packet-atn-cm-ettarr.c" + &ett_atn_cm + }; + + /* register CM application */ + proto_atn_cm = proto_register_protocol( + ATN_CM_PROTO , + "ATN-CM", + "atn-cm"); + + proto_register_field_array( + proto_atn_cm, + hf_atn_cm, + array_length(hf_atn_cm)); + + proto_register_subtree_array( + ett, + array_length(ett)); + + new_register_dissector( + "atn-cm", + dissect_atn_cm, + proto_atn_cm); } void proto_reg_handoff_atn_cm(void) { - /* add session dissector to subdissector list*/ - heur_dissector_add( - "atn-ulcs", - dissect_atn_cm_heur, - "ATN-CM over ATN-ULCS", - "atn-cm-ulcs", - proto_atn_cm, HEURISTIC_ENABLE); + /* add session dissector to subdissector list*/ + heur_dissector_add( + "atn-ulcs", + dissect_atn_cm_heur, + "ATN-CM over ATN-ULCS", + "atn-cm-ulcs", + proto_atn_cm, HEURISTIC_ENABLE); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * * Local variables: - * c-basic-offset: 2 - * tab-width: 2 - * indent-tabs-mode: t + * c-basic-offset: 4 + * tab-width: 8 + * indent-tabs-mode: nil * End: * - * vi: set shiftwidth=2 tabstop=2 noexpandtab: - * :indentSize=2:tabSize=2:noTabs=false: + * vi: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: */ - |