diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/t125 | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/t125')
-rw-r--r-- | epan/dissectors/asn1/t125/CMakeLists.txt | 34 | ||||
-rw-r--r-- | epan/dissectors/asn1/t125/MCS-PROTOCOL.asn | 445 | ||||
-rw-r--r-- | epan/dissectors/asn1/t125/packet-t125-template.c | 171 | ||||
-rw-r--r-- | epan/dissectors/asn1/t125/t125.cnf | 119 |
4 files changed, 769 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/t125/CMakeLists.txt b/epan/dissectors/asn1/t125/CMakeLists.txt new file mode 100644 index 00000000..5db69d80 --- /dev/null +++ b/epan/dissectors/asn1/t125/CMakeLists.txt @@ -0,0 +1,34 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME t125 ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + MCS-PROTOCOL.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS -b ) + +ASN2WRS() diff --git a/epan/dissectors/asn1/t125/MCS-PROTOCOL.asn b/epan/dissectors/asn1/t125/MCS-PROTOCOL.asn new file mode 100644 index 00000000..95fda658 --- /dev/null +++ b/epan/dissectors/asn1/t125/MCS-PROTOCOL.asn @@ -0,0 +1,445 @@ +-- Module MCS-PROTOCOL (T.125:02/1998) +MCS-PROTOCOL DEFINITIONS ::= +BEGIN + +-- Part 1: Fundamental MCS types +ChannelId ::= INTEGER(0..65535) -- range is 16 bits + + +StaticChannelId ::= ChannelId(1..1000) -- those known permanently + + +DynamicChannelId ::= ChannelId(1001..65535) -- those created and deleted + + +UserId ::= DynamicChannelId -- created by Attach-User + +-- deleted by Detach-User +PrivateChannelId ::= + DynamicChannelId -- created by Channel-Convene + +-- deleted by Channel-Disband +AssignedChannelId ::= + DynamicChannelId -- created by Channel-Join zero + +-- deleted by last Channel-Leave +TokenId ::= INTEGER(1..65535) -- all are known permanently + + +TokenStatus ::= ENUMERATED { + notInUse(0), selfGrabbed(1), otherGrabbed(2), selfInhibited(3), + otherInhibited(4), selfRecipient(5), selfGiving(6), otherGiving(7)} + +DataPriority ::= ENUMERATED {top(0), high(1), medium(2), low(3)} + +Segmentation ::= BIT STRING {begin(0), end(1)}(SIZE (2)) + +DomainParameters ::= SEQUENCE { + maxChannelIds INTEGER(0..MAX), + -- a limit on channel ids in use, + -- static + user id + private + assigned + maxUserIds INTEGER(0..MAX), + -- a sublimit on user id channels alone + maxTokenIds INTEGER(0..MAX), + -- a limit on token ids in use + -- grabbed + inhibited + giving + ungivable + given + numPriorities INTEGER(0..MAX), + -- the number of TCs in an MCS connection + minThroughput INTEGER(0..MAX), + -- the enforced number of octets per second + maxHeight INTEGER(0..MAX), + -- a limit on the height of a provider + maxMCSPDUsize INTEGER(0..MAX), + -- an octet limit on domain MCSPDUs + protocolVersion INTEGER(0..MAX) +} + +-- Part 2: Connect provider +Connect-Initial ::= [APPLICATION 101] IMPLICIT SEQUENCE { + callingDomainSelector OCTET STRING, + calledDomainSelector OCTET STRING, + upwardFlag BOOLEAN, + -- TRUE if called provider is higher + targetParameters DomainParameters, + minimumParameters DomainParameters, + maximumParameters DomainParameters, + userData OCTET STRING +} + +Connect-Response ::= [APPLICATION 102] IMPLICIT SEQUENCE { + result Result, + calledConnectId INTEGER(0..MAX), + -- assigned by the called provider + -- to identify additional TCs of + -- the same MCS connection + domainParameters DomainParameters, + userData OCTET STRING +} + +Connect-Additional ::= [APPLICATION 103] IMPLICIT SEQUENCE { + calledConnectId INTEGER(0..MAX), + dataPriority DataPriority +} + +Connect-Result ::= [APPLICATION 104] IMPLICIT SEQUENCE {result Result +} + +-- Part 3: Merge domain +PlumbDomainIndication ::= [APPLICATION 0] IMPLICIT SEQUENCE { + heightLimit INTEGER(0..MAX) +} -- a restriction on the MCSPDU receiver + +ErectDomainRequest ::= [APPLICATION 1] IMPLICIT SEQUENCE { + subHeight INTEGER(0..MAX), + -- height in domain of the MCSPDU transmitter + subInterval INTEGER(0..MAX) +} -- its throughput enforcement interval in milliseconds + +ChannelAttributes ::= CHOICE { + static [0] IMPLICIT SEQUENCE {channelId StaticChannelId}, -- joined is implicitly TRUE + userId + [1] IMPLICIT SEQUENCE {joined BOOLEAN, + -- TRUE if user is joined to its user id + userId UserId}, + private + [2] IMPLICIT SEQUENCE {joined BOOLEAN, + -- TRUE if channel id is joined below + channelId PrivateChannelId, + manager UserId, + admitted SET OF UserId}, -- may span multiple MergeChannelsRequest + assigned [3] IMPLICIT SEQUENCE {channelId AssignedChannelId} -- joined is implicitly TRUE +} + +MergeChannelsRequest ::= [APPLICATION 2] IMPLICIT SEQUENCE { + mergeChannels SET OF ChannelAttributes, + purgeChannelIds SET OF ChannelId +} + +MergeChannelsConfirm ::= [APPLICATION 3] IMPLICIT SEQUENCE { + mergeChannels SET OF ChannelAttributes, + purgeChannelIds SET OF ChannelId +} + +PurgeChannelsIndication ::= [APPLICATION 4] IMPLICIT SEQUENCE { + detachUserIds SET OF UserId, + -- purge user id channels + purgeChannelIds SET OF ChannelId +} -- purge other channels + +TokenAttributes ::= CHOICE { + grabbed [0] IMPLICIT SEQUENCE {tokenId TokenId, + grabber UserId}, + inhibited + [1] IMPLICIT SEQUENCE {tokenId TokenId, + inhibitors SET OF UserId}, -- may span multiple MergeTokensRequest + giving + [2] IMPLICIT SEQUENCE {tokenId TokenId, + grabber UserId, + recipient UserId}, + ungivable [3] IMPLICIT SEQUENCE {tokenId TokenId, + grabber UserId}, -- recipient has since detached + given [4] IMPLICIT SEQUENCE {tokenId TokenId, + recipient UserId} -- grabber released or detached +} + +MergeTokensRequest ::= [APPLICATION 5] IMPLICIT SEQUENCE { + mergeTokens SET OF TokenAttributes, + purgeTokenIds SET OF TokenId +} + +MergeTokensConfirm ::= [APPLICATION 6] IMPLICIT SEQUENCE { + mergeTokens SET OF TokenAttributes, + purgeTokenIds SET OF TokenId +} + +PurgeTokensIndication ::= [APPLICATION 7] IMPLICIT SEQUENCE { + purgeTokenIds SET OF TokenId +} + +-- Part 4: Disconnect provider +DisconnectProviderUltimatum ::= [APPLICATION 8] IMPLICIT SEQUENCE { + reason Reason +} + +RejectMCSPDUUltimatum ::= [APPLICATION 9] IMPLICIT SEQUENCE { + diagnostic Diagnostic, + initialOctets OCTET STRING +} + +-- Part 5: Attach/Detach user +AttachUserRequest ::= [APPLICATION 10] IMPLICIT SEQUENCE { +} + +AttachUserConfirm ::= [APPLICATION 11] IMPLICIT SEQUENCE { + result Result, + initiator UserId OPTIONAL +} + +DetachUserRequest ::= [APPLICATION 12] IMPLICIT SEQUENCE { + reason Reason, + userIds SET OF UserId +} + +DetachUserIndication ::= [APPLICATION 13] IMPLICIT SEQUENCE { + reason Reason, + userIds SET OF UserId +} + +-- Part 6: Channel management +ChannelJoinRequest ::= [APPLICATION 14] IMPLICIT SEQUENCE { + initiator UserId, + channelId ChannelId +} -- may be zero + +ChannelJoinConfirm ::= [APPLICATION 15] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + requested ChannelId, + -- may be zero + channelId ChannelId OPTIONAL +} + +ChannelLeaveRequest ::= [APPLICATION 16] IMPLICIT SEQUENCE { + channelIds SET OF ChannelId +} + +ChannelConveneRequest ::= [APPLICATION 17] IMPLICIT SEQUENCE {initiator UserId +} + +ChannelConveneConfirm ::= [APPLICATION 18] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + channelId PrivateChannelId OPTIONAL +} + +ChannelDisbandRequest ::= [APPLICATION 19] IMPLICIT SEQUENCE { + initiator UserId, + channelId PrivateChannelId +} + +ChannelDisbandIndication ::= [APPLICATION 20] IMPLICIT SEQUENCE { + channelId PrivateChannelId +} + +ChannelAdmitRequest ::= [APPLICATION 21] IMPLICIT SEQUENCE { + initiator UserId, + channelId PrivateChannelId, + userIds SET OF UserId +} + +ChannelAdmitIndication ::= [APPLICATION 22] IMPLICIT SEQUENCE { + initiator UserId, + channelId PrivateChannelId, + userIds SET OF UserId +} + +ChannelExpelRequest ::= [APPLICATION 23] IMPLICIT SEQUENCE { + initiator UserId, + channelId PrivateChannelId, + userIds SET OF UserId +} + +ChannelExpelIndication ::= [APPLICATION 24] IMPLICIT SEQUENCE { + channelId PrivateChannelId, + userIds SET OF UserId +} + +-- Part 7: Data transfer +SendDataRequest ::= [APPLICATION 25] IMPLICIT SEQUENCE { + initiator UserId, + channelId ChannelId, + dataPriority DataPriority, + segmentation Segmentation, + userData OCTET STRING +} + +SendDataIndication ::= [APPLICATION 26] IMPLICIT SEQUENCE { + initiator UserId, + channelId ChannelId, + dataPriority DataPriority, + segmentation Segmentation, + userData OCTET STRING +} + +UniformSendDataRequest ::= [APPLICATION 27] IMPLICIT SEQUENCE { + initiator UserId, + channelId ChannelId, + dataPriority DataPriority, + segmentation Segmentation, + userData OCTET STRING +} + +UniformSendDataIndication ::= [APPLICATION 28] IMPLICIT SEQUENCE { + initiator UserId, + channelId ChannelId, + dataPriority DataPriority, + segmentation Segmentation, + userData OCTET STRING +} + +-- Part 8: Token management +TokenGrabRequest ::= [APPLICATION 29] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenGrabConfirm ::= [APPLICATION 30] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + tokenId TokenId, + tokenStatus TokenStatus +} + +TokenInhibitRequest ::= [APPLICATION 31] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenInhibitConfirm ::= [APPLICATION 32] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + tokenId TokenId, + tokenStatus TokenStatus +} + +TokenGiveRequest ::= [APPLICATION 33] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId, + recipient UserId +} + +TokenGiveIndication ::= [APPLICATION 34] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId, + recipient UserId +} + +TokenGiveResponse ::= [APPLICATION 35] IMPLICIT SEQUENCE { + result Result, + recipient UserId, + tokenId TokenId +} + +TokenGiveConfirm ::= [APPLICATION 36] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + tokenId TokenId, + tokenStatus TokenStatus +} + +TokenPleaseRequest ::= [APPLICATION 37] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenPleaseIndication ::= [APPLICATION 38] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenReleaseRequest ::= [APPLICATION 39] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenReleaseConfirm ::= [APPLICATION 40] IMPLICIT SEQUENCE { + result Result, + initiator UserId, + tokenId TokenId, + tokenStatus TokenStatus +} + +TokenTestRequest ::= [APPLICATION 41] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId +} + +TokenTestConfirm ::= [APPLICATION 42] IMPLICIT SEQUENCE { + initiator UserId, + tokenId TokenId, + tokenStatus TokenStatus +} + +-- Part 9: Status codes +-- in DisconnectProviderUltimatum, DetachUserRequest, DetachUserIndication +Reason ::= ENUMERATED { + rn-domain-disconnected(0), rn-provider-initiated(1), rn-token-purged(2), + rn-user-requested(3), rn-channel-purged(4)} + +-- in Connect, response, confirm +Result ::= ENUMERATED { + rt-successful(0), rt-domain-merging(1), rt-domain-not-hierarchical(2), + rt-no-such-channel(3), rt-no-such-domain(4), rt-no-such-user(5), + rt-not-admitted(6), rt-other-user-id(7), rt-parameters-unacceptable(8), + rt-token-not-available(9), rt-token-not-possessed(10), + rt-too-many-channels(11), rt-too-many-tokens(12), rt-too-many-users(13), + rt-unspecified-failure(14), rt-user-rejected(15)} + +-- in RejectMCSPDUUltimatum +Diagnostic ::= ENUMERATED { + dc-inconsistent-merge(0), dc-forbidden-PDU-downward(1), + dc-forbidden-PDU-upward(2), dc-invalid-BER-encoding(3), + dc-invalid-PER-encoding(4), dc-misrouted-user(5), dc-unrequested-confirm(6), + dc-wrong-transport-priority(7), dc-channel-id-conflict(8), + dc-token-id-conflict(9), dc-not-user-id-channel(10), + dc-too-many-channels(11), dc-too-many-tokens(12), dc-too-many-users(13) +} + +-- Part 10: MCSPDU repertoire +ConnectMCSPDU ::= CHOICE { + connect-initial Connect-Initial, + connect-response Connect-Response, + connect-additional Connect-Additional, + connect-result Connect-Result +} + +DomainMCSPDU ::= CHOICE { + plumbDomainIndication PlumbDomainIndication, + erectDomainRequest ErectDomainRequest, + mergeChannelsRequest MergeChannelsRequest, + mergeChannelsConfirm MergeChannelsConfirm, + purgeChannelsIndication PurgeChannelsIndication, + mergeTokensRequest MergeTokensRequest, + mergeTokensConfirm MergeTokensConfirm, + purgeTokensIndication PurgeTokensIndication, + disconnectProviderUltimatum DisconnectProviderUltimatum, + rejectMCSPDUUltimatum RejectMCSPDUUltimatum, + attachUserRequest AttachUserRequest, + attachUserConfirm AttachUserConfirm, + detachUserRequest DetachUserRequest, + detachUserIndication DetachUserIndication, + channelJoinRequest ChannelJoinRequest, + channelJoinConfirm ChannelJoinConfirm, + channelLeaveRequest ChannelLeaveRequest, + channelConveneRequest ChannelConveneRequest, + channelConveneConfirm ChannelConveneConfirm, + channelDisbandRequest ChannelDisbandRequest, + channelDisbandIndication ChannelDisbandIndication, + channelAdmitRequest ChannelAdmitRequest, + channelAdmitIndication ChannelAdmitIndication, + channelExpelRequest ChannelExpelRequest, + channelExpelIndication ChannelExpelIndication, + sendDataRequest SendDataRequest, + sendDataIndication SendDataIndication, + uniformSendDataRequest UniformSendDataRequest, + uniformSendDataIndication UniformSendDataIndication, + tokenGrabRequest TokenGrabRequest, + tokenGrabConfirm TokenGrabConfirm, + tokenInhibitRequest TokenInhibitRequest, + tokenInhibitConfirm TokenInhibitConfirm, + tokenGiveRequest TokenGiveRequest, + tokenGiveIndication TokenGiveIndication, + tokenGiveResponse TokenGiveResponse, + tokenGiveConfirm TokenGiveConfirm, + tokenPleaseRequest TokenPleaseRequest, + tokenPleaseIndication TokenPleaseIndication, + tokenReleaseRequest TokenReleaseRequest, + tokenReleaseConfirm TokenReleaseConfirm, + tokenTestRequest TokenTestRequest, + tokenTestConfirm TokenTestConfirm +} + +END + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/t125/packet-t125-template.c b/epan/dissectors/asn1/t125/packet-t125-template.c new file mode 100644 index 00000000..8a7e99cb --- /dev/null +++ b/epan/dissectors/asn1/t125/packet-t125-template.c @@ -0,0 +1,171 @@ +/* packet-t125.c + * Routines for t125 packet dissection + * Copyright 2007, Ronnie Sahlberg + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/exceptions.h> + +#include <epan/asn1.h> +#include "packet-ber.h" +#include "packet-per.h" + +#include "packet-t124.h" + +#define PNAME "MULTIPOINT-COMMUNICATION-SERVICE T.125" +#define PSNAME "T.125" +#define PFNAME "t125" + + +#define HF_T125_ERECT_DOMAIN_REQUEST 1 +#define HF_T125_DISCONNECT_PROVIDER_ULTIMATUM 8 +#define HF_T125_ATTACH_USER_REQUEST 10 +#define HF_T125_ATTACH_USER_CONFIRM 11 +#define HF_T125_CHANNEL_JOIN_REQUEST 14 +#define HF_T125_CHANNEL_JOIN_CONFIRM 15 +#define HF_T125_SEND_DATA_REQUEST 25 +#define HF_T125_SEND_DATA_INDICATION 26 + +void proto_register_t125(void); +void proto_reg_handoff_t125(void); + +/* Initialize the protocol and registered fields */ +static int proto_t125 = -1; +static proto_tree *top_tree = NULL; +#include "packet-t125-hf.c" + +/* Initialize the subtree pointers */ +static int ett_t125 = -1; + +#include "packet-t125-ett.c" + +static heur_dissector_list_t t125_heur_subdissector_list; + +#include "packet-t125-fn.c" + +static int +dissect_t125(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + gint8 ber_class; + bool pc; + gint32 tag; + + top_tree = parent_tree; + + col_set_str(pinfo->cinfo, COL_PROTOCOL, "T.125"); + col_clear(pinfo->cinfo, COL_INFO); + + item = proto_tree_add_item(parent_tree, proto_t125, tvb, 0, tvb_captured_length(tvb), ENC_NA); + tree = proto_item_add_subtree(item, ett_t125); + + get_ber_identifier(tvb, 0, &ber_class, &pc, &tag); + + if ( (ber_class==BER_CLASS_APP) && (tag>=101) && (tag<=104) ){ + dissect_ConnectMCSPDU_PDU(tvb, pinfo, tree, NULL); + } else { + t124_set_top_tree(top_tree); + dissect_DomainMCSPDU_PDU(tvb, pinfo, tree); + } + + return tvb_captured_length(tvb); +} + +static gboolean +dissect_t125_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_) +{ + gint8 ber_class; + bool pc; + gint32 tag; + volatile bool failed; + + /* + * We must catch all the "ran past the end of the packet" exceptions + * here and, if we catch one, just return FALSE. It's too painful + * to have a version of dissect_per_sequence() that checks all + * references to the tvbuff before making them and returning "no" + * if they would fail. + */ + failed = FALSE; + TRY { + /* could be BER */ + get_ber_identifier(tvb, 0, &ber_class, &pc, &tag); + } CATCH_BOUNDS_ERRORS { + failed = TRUE; + } ENDTRY; + + if (failed) { + return FALSE; + } + + if (((ber_class==BER_CLASS_APP) && ((tag>=101) && (tag<=104)))) { + dissect_t125(tvb, pinfo, parent_tree, NULL); + + return TRUE; + } + + /* + * Check that the first byte of the packet is a valid t125/MCS header. + * This might not be enough, but since t125 only catch COTP packets, + * it should not be a problem. + */ + guint8 first_byte = tvb_get_guint8(tvb, 0) >> 2; + switch (first_byte) { + case HF_T125_ERECT_DOMAIN_REQUEST: + case HF_T125_ATTACH_USER_REQUEST: + case HF_T125_ATTACH_USER_CONFIRM: + case HF_T125_CHANNEL_JOIN_REQUEST: + case HF_T125_CHANNEL_JOIN_CONFIRM: + case HF_T125_DISCONNECT_PROVIDER_ULTIMATUM: + case HF_T125_SEND_DATA_REQUEST: + case HF_T125_SEND_DATA_INDICATION: + dissect_t125(tvb, pinfo, parent_tree, NULL); + return TRUE; + } + + return FALSE; +} + + +/*--- proto_register_t125 -------------------------------------------*/ +void proto_register_t125(void) { + + /* List of fields */ + static hf_register_info hf[] = { +#include "packet-t125-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_t125, +#include "packet-t125-ettarr.c" + }; + + /* Register protocol */ + proto_t125 = proto_register_protocol(PNAME, PSNAME, PFNAME); + /* Register fields and subtrees */ + proto_register_field_array(proto_t125, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + t125_heur_subdissector_list= register_heur_dissector_list("t125", proto_t125); + + register_dissector("t125", dissect_t125, proto_t125); +} + + +/*--- proto_reg_handoff_t125 ---------------------------------------*/ +void proto_reg_handoff_t125(void) { + + heur_dissector_add("cotp", dissect_t125_heur, "T.125 over COTP", "t125_cotp", proto_t125, HEURISTIC_ENABLE); + heur_dissector_add("cotp_is", dissect_t125_heur, "T.125 over COTP (inactive subset)", "t125_cotp_is", proto_t125, HEURISTIC_ENABLE); +} diff --git a/epan/dissectors/asn1/t125/t125.cnf b/epan/dissectors/asn1/t125/t125.cnf new file mode 100644 index 00000000..012896f6 --- /dev/null +++ b/epan/dissectors/asn1/t125/t125.cnf @@ -0,0 +1,119 @@ +# T.125/MCS-PROTOCOL.cnf +# Copyright 2007 Ronnie Sahlberg +#---------------------------------------------------------------------------------------- +#.EXPORTS +#---------------------------------------------------------------------------------------- +#.END + +#.OMIT_ASSIGNMENT +# dissected in t124 +DomainMCSPDU +PlumbDomainIndication +ErectDomainRequest +MergeChannelsRequest +MergeChannelsConfirm +PurgeChannelsIndication +MergeTokensRequest +MergeTokensConfirm +PurgeTokensIndication +DisconnectProviderUltimatum +RejectMCSPDUUltimatum +AttachUserRequest +AttachUserConfirm +DetachUserRequest +DetachUserIndication +ChannelJoinRequest +ChannelJoinConfirm +ChannelLeaveRequest +ChannelConveneRequest +ChannelConveneConfirm +ChannelDisbandRequest +ChannelDisbandIndication +ChannelAdmitRequest +ChannelAdmitIndication +ChannelExpelRequest +ChannelExpelIndication +SendDataRequest +SendDataIndication +UniformSendDataRequest +UniformSendDataIndication +TokenGrabConfirm +TokenInhibitRequest +TokenInhibitConfirm +TokenGiveRequest +TokenGiveIndication +TokenGiveResponse +TokenGiveConfirm +TokenPleaseRequest +TokenPleaseIndication +TokenReleaseRequest +TokenReleaseConfirm +TokenTestRequest +TokenTestConfirm +TokenStatus +Segmentation +ChannelAttributes +TokenAttributes +TokenGrabRequest +Reason +Diagnostic +StaticChannelId +UserId +PrivateChannelId +AssignedChannelId +TokenId +DynamicChannelId +ChannelId + +#---------------------------------------------------------------------------------------- + +#.PDU +#---------------------------------------------------------------------------------------- +ConnectMCSPDU +#.END + +#.VIRTUAL_ASSGN +#---------------------------------------------------------------------------------------- + +# dissected in t124 +# FN_BODY DomainMCSPDU VAL_PTR = &domainmcs_value +# gint domainmcs_value; +# +#%(DEFAULT_BODY)s +# switch(domainmcs_value) { +# case 25: /* sendDataRequest */ +# case 26: /* sendDataIndication */ +# case 27: /* uniformSendDataRequest */ +# case 28: /* uniformSendDataIndication */ +# /* Do nothing */ +# break; +# default: +# col_append_sep_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, " ", "MCS: %%s ", val_to_str(domainmcs_value, t125_DomainMCSPDU_vals, "Unknown")); +# break; +# } +# END + +#.FN_BODY Connect-Initial/_untag/userData VAL_PTR = &next_tvb +#.FN_BODY Connect-Initial/_untag/userData + tvbuff_t *next_tvb = NULL; + heur_dtbl_entry_t *hdtbl_entry; +%(DEFAULT_BODY)s + if(next_tvb) + dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, + actx->pinfo, top_tree, &hdtbl_entry, NULL); +#.END + +#.FN_BODY Connect-Response/_untag/userData VAL_PTR = &next_tvb +#.FN_BODY Connect-Response/_untag/userData + tvbuff_t *next_tvb = NULL; + heur_dtbl_entry_t *hdtbl_entry; + +%(DEFAULT_BODY)s + if(next_tvb) + dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, + actx->pinfo, top_tree, &hdtbl_entry, NULL); +#.END + + +#---------------------------------------------------------------------------------------- +# vim:set ts=4 sts=2 sw=2: |