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/h450 | |
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/h450')
19 files changed, 2778 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h450/Addressing-Data-Elements.asn b/epan/dissectors/asn1/h450/Addressing-Data-Elements.asn new file mode 100644 index 00000000..809f8997 --- /dev/null +++ b/epan/dissectors/asn1/h450/Addressing-Data-Elements.asn @@ -0,0 +1,125 @@ +-- Addressing-Data-Elements.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/Addressing-Data-Elements.asn +-- + +-- Module Addressing-Data-Elements (H.450.1:02/1998) +Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + AliasAddress, PartyNumber, PresentationIndicator, ScreeningIndicator + FROM H323-MESSAGES; -- see H.225.0 + +PresentedAddressScreened ::= CHOICE { + presentationAllowedAddress AddressScreened, + presentationRestricted NULL, + numberNotAvailableDueToInterworking NULL, + presentationRestrictedAddress AddressScreened, + ... +} + +PresentedAddressUnscreened ::= CHOICE { + presentationAllowedAddress Address, + presentationRestricted NULL, + numberNotAvailableDueToInterworking NULL, + presentationRestrictedAddress Address, + ... +} + +PresentedNumberScreened ::= CHOICE { + presentationAllowedAddress NumberScreened, + presentationRestricted NULL, + numberNotAvailableDueToInterworking NULL, + presentationRestrictedAddress NumberScreened, + ... +} + +PresentedNumberUnscreened ::= CHOICE { + presentationAllowedAddress PartyNumber, + presentationRestricted NULL, + numberNotAvailableDueToInterworking NULL, + presentationRestrictedAddress PartyNumber, + ... +} + +AddressScreened ::= SEQUENCE { + partyNumber PartyNumber, + screeningIndicator ScreeningIndicator, + partySubaddress PartySubaddress OPTIONAL, + ... +} + +NumberScreened ::= SEQUENCE { + partyNumber PartyNumber, + screeningIndicator ScreeningIndicator, + ... +} + +Address ::= SEQUENCE { + partyNumber PartyNumber, + partySubaddress PartySubaddress OPTIONAL, + ... +} + +-- PartyNumber defined in Recommendation H.225.0 +-- PublicPartyNumber defined in Recommendation H.225.0 +-- PrivatePartyNumber defined in Recommendation H.225.0 +-- NumberDigits defined in Recommendation H.225.0 +-- PublicTypeOfNumber defined in Recommendation H.225.0 +-- PrivateTypeOfNumber defined in Recommendation H.225.0 +-- PresentationIndicator defined in Recommendation H.225.0 (v3 and beyond) +-- ScreeningIndicator defined in Recommendation H.225.0 (v3 and beyond) +EndpointAddress ::= SEQUENCE { + destinationAddress SEQUENCE OF AliasAddress, + -- multiple alias addresses may be used to address the same H.323 endpoint + remoteExtensionAddress AliasAddress OPTIONAL, + ..., + destinationAddressPresentationIndicator + PresentationIndicator OPTIONAL, + -- Note 1, 2 + destinationAddressScreeningIndicator ScreeningIndicator OPTIONAL, + remoteExtensionAddressPresentationIndicator + PresentationIndicator OPTIONAL, + -- Note 1, 2 + remoteExtensionAddressScreeningIndicator ScreeningIndicator OPTIONAL +} + +-- Note 1: If this element is not available, presentation allowed shall be assumed. +-- Note 2: If an H.450 APDU that carries this element EndpointAddress also +-- contains an element PresentationAllowedIndicator, then the setting of the +-- element PresentationAllowedIndicator shall take precedence in case of +-- conflicting presentation information. +PartySubaddress ::= CHOICE { + userSpecifiedSubaddress UserSpecifiedSubaddress, + -- not recommended. + nsapSubaddress NSAPSubaddress, + -- according to Recommendation X.213. + ... +} + +UserSpecifiedSubaddress ::= SEQUENCE { + subaddressInformation SubaddressInformation, + oddCountIndicator BOOLEAN OPTIONAL, + -- used when the coding of subaddress is BCD + ... +} + +NSAPSubaddress ::= OCTET STRING(SIZE (1..20)) + +-- specified according to X.213. Some networks may +-- limit the subaddress value to some other length +-- e.g. 4 octets +SubaddressInformation ::= OCTET STRING(SIZE (1..20)) + +-- coded according to user requirements. Some networks +-- may limit the subaddress value to some other length +-- e.g. 4 octets +PresentationAllowedIndicator ::= BOOLEAN + +END -- of Addressing-Data-Elements + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/CMakeLists.txt b/epan/dissectors/asn1/h450/CMakeLists.txt new file mode 100644 index 00000000..93a60135 --- /dev/null +++ b/epan/dissectors/asn1/h450/CMakeLists.txt @@ -0,0 +1,62 @@ +# 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 h450 ) + +set( PROTO_OPT _EMPTY_ ) + +set( EXT_ASN_FILE_LIST +) + +set( H450_ASN + H4501-Supplementary-ServiceAPDU-Structure.asn + Addressing-Data-Elements.asn + H225-generic-parameters-definition.asn + Manufacturer-specific-service-extension-definition.asn + H4501-General-Error-List.asn +) + +set( H450_OP_ASN + Call-Transfer-Operations.asn + Call-Diversion-Operations.asn + Call-Hold-Operations.asn + Call-Park-Pickup-Operations.asn + Call-Waiting-Operations.asn + Message-Waiting-Indication-Operations.asn + Name-Operations.asn + Call-Completion-Operations.asn + Call-Offer-Operations.asn + Call-Intrusion-Operations.asn + Common-Information-Operations.asn +) + +set( ASN_FILE_LIST + ${H450_ASN} + ${H450_OP_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 ) + +set( EXTRA_CNF + "${CMAKE_CURRENT_BINARY_DIR}/../h225/h225-exp.cnf" + "${CMAKE_CURRENT_BINARY_DIR}/../h450-ros/h450-ros-exp.cnf" +) + +ASN2WRS() diff --git a/epan/dissectors/asn1/h450/Call-Completion-Operations.asn b/epan/dissectors/asn1/h450/Call-Completion-Operations.asn new file mode 100644 index 00000000..855934d3 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Completion-Operations.asn @@ -0,0 +1,154 @@ +-- Call-Completion-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.9/2000/Call-Completion-Operations.asn +-- + +-- Module Call-Completion-Operations (H.450.9:11/2000) +Call-Completion-Operations {itu-t recommendation h 450 9 version1(0) + call-completion-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + CallIdentifier + FROM H323-MESSAGES -- see ITU-T H.225.0 + + EndpointAddress + FROM Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} + MixedExtension, undefined + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)} + supplementaryServiceInteractionNotAllowed + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + BasicService + FROM Message-Waiting-Indication-Operations {itu-t recommendation h + 450 7 version1(0) message-waiting-operations(0)}; + +H323CallCompletionOperations OPERATION ::= + {ccbsRequest | ccnrRequest | ccCancel | ccExecPossible | ccRingout | + ccSuspend | ccResume} + +ccbsRequest OPERATION ::= { + ARGUMENT CcRequestArg + RESULT CcRequestRes + ERRORS + {shortTermRejection | longTermRejection | undefined | + supplementaryServiceInteractionNotAllowed} + CODE local:40 +} + +ccnrRequest OPERATION ::= { + ARGUMENT CcRequestArg + RESULT CcRequestRes + ERRORS + {shortTermRejection | longTermRejection | undefined | + supplementaryServiceInteractionNotAllowed} + CODE local:27 +} + +ccCancel OPERATION ::= { + ARGUMENT CcArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:28 +} + +ccExecPossible OPERATION ::= { + ARGUMENT CcArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:29 +} + +ccRingout OPERATION ::= { + ARGUMENT CcShortArg + OPTIONAL TRUE + RETURN RESULT FALSE + ERRORS {remoteUserBusyAgain | failureToMatch | undefined} + CODE local:31 +} + +ccSuspend OPERATION ::= { + ARGUMENT CcShortArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:32 +} + +ccResume OPERATION ::= { + ARGUMENT CcArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:33 +} + +CcRequestArg ::= SEQUENCE { + numberA EndpointAddress, + numberB EndpointAddress, + ccIdentifier CallIdentifier OPTIONAL, + -- If present, it shall be used as the prime mechanism for associating + -- the unsuccessful call, the CC Request and the CC Call. + service BasicService, + can-retain-service BOOLEAN, + retain-sig-connection BOOLEAN OPTIONAL, + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CcRequestRes ::= SEQUENCE { + retain-service BOOLEAN, + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CcArg ::= CHOICE { + shortArg CcShortArg, -- if signalling conection is retained + longArg CcLongArg, -- if connection release option applies + ... +} + +CcShortArg ::= SEQUENCE { + ccIdentifier CallIdentifier OPTIONAL, + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CcLongArg ::= SEQUENCE { + numberA EndpointAddress OPTIONAL, + numberB EndpointAddress OPTIONAL, + ccIdentifier CallIdentifier OPTIONAL, + service BasicService OPTIONAL, + -- these elements are used to identify the proper CC Request. + -- The ccIdentifier if present shall be the prime mechanism for this purpose. + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +shortTermRejection ERROR ::= {CODE local:1010 +} + +longTermRejection ERROR ::= {CODE local:1011 +} + +remoteUserBusyAgain ERROR ::= {CODE local:1012 +} + +failureToMatch ERROR ::= {CODE local:1013 +} + +END -- of Call-Completion-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Diversion-Operations.asn b/epan/dissectors/asn1/h450/Call-Diversion-Operations.asn new file mode 100644 index 00000000..90430820 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Diversion-Operations.asn @@ -0,0 +1,323 @@ +-- Call-Diversion-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.3/1998/Call-Diversion-Operations.asn +-- + +-- Module Call-Diversion-Operations (H.450.3:02/1998) +Call-Diversion-Operations {itu-t recommendation h 450 3 version1(0) + call-diversion-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + H225InformationElement + FROM H225-generic-parameters-definition {itu-t recommendation h 450 + 1 version1(0) h225-generic-parameters(6)} + NonStandardParameter + FROM H323-MESSAGES + EndpointAddress, PartySubaddress, PresentationAllowedIndicator + FROM Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} + userNotSubscribed, notAvailable, invalidServedUserNumber, + basicServiceNotProvided, resourceUnavailable, + supplementaryServiceInteractionNotAllowed + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)}; + +H323CallDiversionOperations OPERATION ::= + {activateDiversionQ | deactivateDiversionQ | interrogateDiversionQ | + checkRestriction | callRerouting | divertingLegInformation1 | + divertingLegInformation2 | divertingLegInformation3 | + divertingLegInformation4 | cfnrDivertedLegFailed} + +activateDiversionQ OPERATION ::= + { -- sent from the activating h.323-endpoint to the served h.323-endpoint + ARGUMENT + SEQUENCE {procedure Procedure, + basicService BasicService, + divertedToAddress EndpointAddress, + servedUserNr EndpointAddress, + activatingUserNr EndpointAddress, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RESULT + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} + OPTIONAL TRUE + ERRORS + {userNotSubscribed | notAvailable | invalidServedUserNumber | + basicServiceNotProvided | resourceUnavailable | invalidDivertedNumber | + specialServiceNumber | diversionToServedUserNumber | + temporarilyUnavailable | notAuthorized | unspecified} + CODE local:15 +} + +deactivateDiversionQ OPERATION ::= + { -- sent from the deactivating h.323-endpoint to the served h.323-endpoint + ARGUMENT + SEQUENCE {procedure Procedure, + basicService BasicService, + servedUserNr EndpointAddress, + deactivatingUserNr EndpointAddress, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RESULT + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} + OPTIONAL TRUE + ERRORS + {userNotSubscribed | notAvailable | invalidServedUserNumber | + temporarilyUnavailable | notAuthorized | unspecified} + CODE local:16 +} + +interrogateDiversionQ OPERATION ::= + { -- sent from the interrogating h.323-endpoint to the served h.323-endpoint + ARGUMENT + SEQUENCE {procedure Procedure, + basicService BasicService DEFAULT allServices, + servedUserNr EndpointAddress, + interrogatingUserNr EndpointAddress, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RESULT IntResultList + ERRORS + {userNotSubscribed | notAvailable | invalidServedUserNumber | + temporarilyUnavailable | notAuthorized | unspecified} + CODE local:17 +} + +checkRestriction OPERATION ::= + { -- sent from the served h.323-endpoint to the diverted-to h.323-endpoint + ARGUMENT + SEQUENCE {servedUserNr EndpointAddress, + basicService BasicService, + divertedToNr EndpointAddress, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RESULT + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} + OPTIONAL TRUE + ERRORS + {notAvailable | invalidServedUserNumber | invalidDivertedNumber | + specialServiceNumber | unspecified} + CODE local:18 +} + +callRerouting OPERATION ::= + { -- sent from the served h.323-endpoint to the rerouting h.323-endpoint + ARGUMENT + SEQUENCE {reroutingReason DiversionReason, + originalReroutingReason DiversionReason OPTIONAL, + calledAddress EndpointAddress, + diversionCounter INTEGER(1..15), + h225InfoElement H225InformationElement, + -- The H.225 information elements Bearer capability, + -- High layer compatibility, Low layer compatibility and + -- Progress Indicator information element may be embedded + -- in the h225InfoElement in accordance with H.450.1. + lastReroutingNr EndpointAddress, + subscriptionOption SubscriptionOption, + callingPartySubaddress PartySubaddress OPTIONAL, + callingNumber EndpointAddress, + callingInfo BMPString(SIZE (1..128)) OPTIONAL, + originalCalledNr EndpointAddress OPTIONAL, + redirectingInfo BMPString(SIZE (1..128)) OPTIONAL, + originalCalledInfo BMPString(SIZE (1..128)) OPTIONAL, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RESULT + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} + OPTIONAL TRUE + ERRORS + {userNotSubscribed | notAvailable | resourceUnavailable | + invalidDivertedNumber | specialServiceNumber | + diversionToServedUserNumber | numberOfDiversionsExceeded | + supplementaryServiceInteractionNotAllowed | unspecified} + CODE local:19 +} + +divertingLegInformation1 OPERATION ::= + { -- sent from the re-routing h.323-endpoint to the originating h.323-endpoint + -- if the re-routing endpoint equals the originating endpoint, this operation + + -- is not applicable; may also be sent from the rerouting endpoint to other + -- members of a conference, if subscription option allows. + ARGUMENT + SEQUENCE {diversionReason DiversionReason, + subscriptionOption SubscriptionOption, + nominatedNr EndpointAddress, + nominatedInfo BMPString(SIZE (1..128)) OPTIONAL, + redirectingNr EndpointAddress OPTIONAL, + redirectingInfo BMPString(SIZE (1..128)) OPTIONAL, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:20 +} + +divertingLegInformation2 OPERATION ::= + { --sent from the re-routing h.323-endpoint to the diverted-to h.323-endpoint + ARGUMENT + SEQUENCE {diversionCounter INTEGER(1..15), + diversionReason DiversionReason, + originalDiversionReason DiversionReason OPTIONAL, + divertingNr EndpointAddress OPTIONAL, + originalCalledNr EndpointAddress OPTIONAL, + redirectingInfo BMPString(SIZE (1..128)) OPTIONAL, + originalCalledInfo BMPString(SIZE (1..128)) OPTIONAL, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + -- The divertingNr element is mandatory except in the case of interworking + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:21 +} + +divertingLegInformation3 OPERATION ::= { + --sent from the diverted-to h.323-endpoint to the originating h.323-endpoint + ARGUMENT + SEQUENCE {presentationAllowedIndicator PresentationAllowedIndicator, + redirectionNr EndpointAddress OPTIONAL, + redirectionInfo BMPString(SIZE (1..128)) OPTIONAL, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:22 +} + +divertingLegInformation4 OPERATION ::= { + -- If call diversion in not performed by the forwarding terminal but by a + -- gatekeeper, the gatekeeper may send divertingLegInformation4 apdu to the + -- forwarding terminal. + ARGUMENT + SEQUENCE {diversionReason DiversionReason, + subscriptionOption SubscriptionOption, + callingNr EndpointAddress, + callingInfo BMPString(SIZE (1..128)) OPTIONAL, + nominatedNr EndpointAddress, + nominatedInfo BMPString(SIZE (1..128)) OPTIONAL, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:100 +} + +cfnrDivertedLegFailed OPERATION ::= + { -- sent from the rerouting h.323-terminal to the served h.323-endpoint + ARGUMENT + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:23 +} + +-- This indicates that the diverted-to leg has been cleared during SS-CFNR execution. +-- Definitions of general used data types: +DiversionReason ::= ENUMERATED {unknown(0), cfu(1), cfb(2), cfnr(3), ... + } + +-- The value unknown is only used if received from another network when interworking. +IntResultList ::= SET SIZE (0..29) OF IntResult + +IntResult ::= SEQUENCE { + servedUserNr EndpointAddress, + basicService BasicService, + procedure Procedure, + divertedToAddress EndpointAddress, + remoteEnabled BOOLEAN DEFAULT FALSE, + extension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +Procedure ::= ENUMERATED {cfu(0), cfb(1), cfnr(2), ... + } + +SubscriptionOption ::= ENUMERATED { + noNotification(0), notificationWithoutDivertedToNr(1), + notificationWithDivertedToNr(2), ... + } + +invalidDivertedNumber ERROR ::= {CODE local:12 +} + +specialServiceNumber ERROR ::= {CODE local:14 +} + +diversionToServedUserNumber ERROR ::= {CODE local:15 +} + +numberOfDiversionsExceeded ERROR ::= {CODE local:24 +} + +temporarilyUnavailable ERROR ::= {CODE local:1000 +} + +notAuthorized ERROR ::= {CODE local:1007 +} + +unspecified ERROR ::= { + PARAMETER + CHOICE {extension Extension{{ExtensionSet}}, + nonStandard NonStandardParameter} + CODE local:1008 +} + +BasicService ::= ENUMERATED { + allServices(0), + -- speech (1), + -- unrestrictedDigitalInformation (2), + -- audio3.1KHz (3), + -- telephony (32), + -- teletex (33), + -- telefaxGroup4Class1 (34), + -- videotexSyntaxBased (35), + -- videotelephony (36), + ... + } + +-- For multimedia calls the value "allServices" shall be used only. +-- The usage of the other codepoints for multimedia calls is for further study. +ExtensionSeq ::= SEQUENCE OF Extension{{ExtensionSet}} + +ExtensionSet EXTENSION ::= + {...} + +-- Actual values defined by individual manufacturers +END -- of Call-Diversion-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Hold-Operations.asn b/epan/dissectors/asn1/h450/Call-Hold-Operations.asn new file mode 100644 index 00000000..ed59f8a6 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Hold-Operations.asn @@ -0,0 +1,131 @@ +-- Call-Hold-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.4/1999/Call-Hold-Operations.asn +-- + +-- Module Call-Hold-Operations (H.450.4:05/1999) +Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + notAvailable, invalidCallState, resourceUnavailable, + supplementaryServiceInteractionNotAllowed + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + NonStandardParameter + FROM H323-MESSAGES; -- see H.225.0 + +CallHoldOperations OPERATION ::= + {holdNotific | retrieveNotific | remoteHold | remoteRetrieve} + +holdNotific OPERATION ::= + { -- sent from holding to held H.323 endpoint to invoke near-end call hold feature + + ARGUMENT HoldNotificArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:101 +} + +HoldNotificArg ::= SEQUENCE { + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +retrieveNotific OPERATION ::= + { -- sent from holding to held H.323 endpoint to invoke retrieval of near-end call hold feature + + ARGUMENT RetrieveNotificArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:102 +} + +RetrieveNotificArg ::= SEQUENCE { + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +remoteHold OPERATION ::= + { -- sent from holding to held H.323 endpoint to invoke remote-end call hold feature + + ARGUMENT RemoteHoldArg + OPTIONAL TRUE + RESULT RemoteHoldRes + OPTIONAL TRUE + ERRORS + {notAvailable + | -- feature not available in combination with the basic service + invalidCallState | --hold not possible in current call state + resourceUnavailable | -- maximum number of calls on hold reached + supplementaryServiceInteractionNotAllowed | + + -- other supplementary service prohibits hold + undefined -- undefined reason--} + CODE local:103 +} + +RemoteHoldArg ::= SEQUENCE { + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +RemoteHoldRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +remoteRetrieve OPERATION ::= + { -- sent from holding to held H.323 endpoint to invoke retrieval of remote-end call hold feature + + ARGUMENT RemoteRetrieveArg + OPTIONAL TRUE + RESULT RemoteRetrieveRes + OPTIONAL TRUE + ERRORS + {invalidCallState | + + -- Call to which retrieve request applies is not in state Hold_RE_Held + undefined -- undefined reason--} + CODE local:104 +} + +RemoteRetrieveArg ::= SEQUENCE { + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +RemoteRetrieveRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +MixedExtension ::= CHOICE { + extension Extension{{ExtensionSet}}, + nonStandardData NonStandardParameter +} + +ExtensionSet EXTENSION ::= + {...} + +-- Actual values defined by individual manufacturers +undefined ERROR ::= { + PARAMETER SEQUENCE SIZE (0..255) OF MixedExtension + OPTIONAL TRUE + CODE local:2002 +} + +END -- of Call-Hold-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Intrusion-Operations.asn b/epan/dissectors/asn1/h450/Call-Intrusion-Operations.asn new file mode 100644 index 00000000..8107615c --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Intrusion-Operations.asn @@ -0,0 +1,209 @@ +-- Call-Intrusion-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.11/2001/Call-Intrusion-Operations.asn +-- + +-- Module Call-Intrusion-Operations (H.450.11:03/2001) +Call-Intrusion-Operations {itu-t recommendation h 450 11 version1(0) + call-intrusion-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + CallIdentifier + FROM H323-MESSAGES -- see H.225.0 + + MixedExtension, undefined + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)} + notAvailable, supplementaryServiceInteractionNotAllowed + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + callWaiting + FROM Call-Waiting-Operations {itu-t recommendation h 450 6 version1(0) + call-waiting-operations(0)} + cfbOverride, remoteUserAlerting + FROM Call-Offer-Operations {itu-t recommendation h 450 10 version1(0) + call-offer-operations(0)}; + +H323CallIntrusionOperations OPERATION ::= + {callIntrusionRequest | callIntrusionGetCIPL | callIntrusionIsolate | + callIntrusionForcedRelease | callIntrusionWOBRequest | + callIntrusionSilentMonitor | callIntrusionNotification | cfbOverride | + remoteUserAlerting | callWaiting} + +-- callWaiting is only used for interaction with Call Transfer +callIntrusionRequest OPERATION ::= { + ARGUMENT CIRequestArg + RESULT CIRequestRes + ERRORS + {notAvailable | notBusy | temporarilyUnavailable | notAuthorized | + undefined | supplementaryServiceInteractionNotAllowed} + CODE local:43 +} + +callIntrusionGetCIPL OPERATION ::= { + ARGUMENT CIGetCIPLOptArg + OPTIONAL TRUE + RESULT CIGetCIPLRes + ALWAYS RESPONDS FALSE + CODE local:44 +} + +callIntrusionIsolate OPERATION ::= { + ARGUMENT CIIsOptArg + OPTIONAL TRUE + RESULT CIIsOptRes + OPTIONAL TRUE + ERRORS + {notAvailable | undefined | supplementaryServiceInteractionNotAllowed} + CODE local:45 +} + +callIntrusionForcedRelease OPERATION ::= { + ARGUMENT CIFrcRelArg + OPTIONAL TRUE + RESULT CIFrcRelOptRes + OPTIONAL TRUE + ERRORS + {notAvailable | notBusy | temporarilyUnavailable | notAuthorized | + undefined | supplementaryServiceInteractionNotAllowed} + CODE local:46 +} + +callIntrusionWOBRequest OPERATION ::= { + ARGUMENT CIWobOptArg + OPTIONAL TRUE + RESULT CIWobOptRes + OPTIONAL TRUE + ERRORS + {notAvailable | undefined | supplementaryServiceInteractionNotAllowed} + CODE local:47 +} + +callIntrusionSilentMonitor OPERATION ::= { + ARGUMENT CISilentArg + RESULT CISilentOptRes + OPTIONAL TRUE + ERRORS + {notAvailable | notBusy | temporarilyUnavailable | notAuthorized | + undefined | supplementaryServiceInteractionNotAllowed} + CODE local:116 +} + +callIntrusionNotification OPERATION ::= { + ARGUMENT CINotificationArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:117 +} + +CIRequestArg ::= SEQUENCE { + ciCapabilityLevel CICapabilityLevel, + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIRequestRes ::= SEQUENCE { + ciStatusInformation CIStatusInformation, + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIGetCIPLOptArg ::= SEQUENCE { + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIGetCIPLRes ::= SEQUENCE { + ciProtectionLevel CIProtectionLevel, + silentMonitoringPermitted NULL OPTIONAL, + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIIsOptArg ::= SEQUENCE { + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIIsOptRes ::= SEQUENCE { + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIFrcRelArg ::= SEQUENCE { + ciCapabilityLevel CICapabilityLevel, + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIFrcRelOptRes ::= SEQUENCE { + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIWobOptArg ::= SEQUENCE { + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CIWobOptRes ::= SEQUENCE { + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CISilentArg ::= SEQUENCE { + ciCapabilityLevel CICapabilityLevel, + specificCall CallIdentifier OPTIONAL, + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CISilentOptRes ::= SEQUENCE { + resultExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CINotificationArg ::= SEQUENCE { + ciStatusInformation CIStatusInformation, + argumentExtension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CICapabilityLevel ::= INTEGER { + intrusionLowCap(1), intrusionMediumCap(2), intrusionHighCap(3)}(1..3) + +CIProtectionLevel ::= INTEGER { + lowProtection(0), mediumProtection(1), highProtection(2), fullProtection(3) +}(0..3) + +CIStatusInformation ::= CHOICE { + callIntrusionImpending NULL, + callIntruded NULL, + callIsolated NULL, + callForceReleased NULL, + callIntrusionComplete NULL, + callIntrusionEnd NULL, + ... +} + +notBusy ERROR ::= {CODE local:1009 +} -- used when the called user is not busy + +temporarilyUnavailable ERROR ::= {CODE local:1000 +} -- used when conditions for invocation of SS-CI + +-- are momentarily not met +notAuthorized ERROR ::= {CODE local:1007 +} -- used when a SS-CI request is rejected + +-- because of insufficient CICL or if silent +-- monitoring is not permitted +END -- of Call-Intrusion-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Offer-Operations.asn b/epan/dissectors/asn1/h450/Call-Offer-Operations.asn new file mode 100644 index 00000000..af3aa516 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Offer-Operations.asn @@ -0,0 +1,71 @@ +-- Call-Offer-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.10/2001/Call-Offer-Operations.asn +-- + +-- Module Call-Offer-Operations (H.450.10:03/2001) +Call-Offer-Operations {itu-t recommendation h 450 10 version1(0) + call-offer-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + MixedExtension + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)} + callWaiting + FROM Call-Waiting-Operations {itu-t recommendation h 450 6 version1(0) + call-waiting-operations(0)}; + +H323CallOfferOperations OPERATION ::= + {callOfferRequest | callWaiting | remoteUserAlerting | cfbOverride} + +callOfferRequest OPERATION ::= -- sent from calling to called endpoint + { + ARGUMENT CoReqOptArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:34 +} + +remoteUserAlerting OPERATION ::= -- sent from called to calling endpoint + { + ARGUMENT RUAlertOptArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:115 +} + +cfbOverride OPERATION ::= -- sent from calling to called endpoint + { + ARGUMENT CfbOvrOptArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:49 +} + +CoReqOptArg ::= SEQUENCE { + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +RUAlertOptArg ::= SEQUENCE { + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CfbOvrOptArg ::= SEQUENCE { + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +END -- of Call-Offer-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Park-Pickup-Operations.asn b/epan/dissectors/asn1/h450/Call-Park-Pickup-Operations.asn new file mode 100644 index 00000000..d8a0f9a5 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Park-Pickup-Operations.asn @@ -0,0 +1,302 @@ +-- Call-Park-Pickup-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.5/1999/Call-Park-Pickup-Operations.asn +-- + +-- Module Call-Park-Pickup-Operations (H.450.5:05/1999) +Call-Park-Pickup-Operations {itu-t recommendation h 450 5 version1(0) + call-park-pickup-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + notAvailable, invalidCallState, resourceUnavailable, + supplementaryServiceInteractionNotAllowed + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + EndpointAddress + FROM Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} + MixedExtension + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)} + NonStandardParameter, CallIdentifier + FROM H323-MESSAGES; -- see H.225.0 + +CallParkPickupOperations OPERATION ::= + {cpRequest | cpSetup | groupIndicationOn | groupIndicationOff | pickrequ | + pickup | pickExe | cpNotify | cpickupNotify} + +cpRequest OPERATION ::= + { -- sent from parking endpoint to the parked endpoint to invoke SS-PARK + ARGUMENT CpRequestArg + RESULT CpRequestRes + ERRORS + {notAvailable | + + -- feature not available in combination with the basic service + invalidCallState | -- call park not possible in current call state + resourceUnavailable | -- maximum number of parked calls reached + supplementaryServiceInteractionNotAllowed | + + -- other supplementary service prohibits call park invocation + undefined -- undefined reason--} + CODE local:106 +} + +CpRequestArg ::= SEQUENCE { + parkingNumber EndpointAddress, + parkedNumber EndpointAddress, + parkedToNumber EndpointAddress, + parkedToPosition ParkedToPosition OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CpRequestRes ::= SEQUENCE { + parkedToNumber EndpointAddress, + parkedToPosition ParkedToPosition OPTIONAL, + parkCondition ParkCondition, + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +cpSetup OPERATION ::= { -- sent from parked endpoint to the parked-to endpoint + ARGUMENT CpSetupArg + RESULT CpSetupRes + ERRORS + {notAvailable | + + -- feature not available in combination with the basic service + invalidCallState | -- call park not possible in current call state + resourceUnavailable | -- maximum number of parked calls reached + supplementaryServiceInteractionNotAllowed | + + -- other supplementary service prohibits call park invocation + undefined -- undefined reason --} + CODE local:107 +} + +CpSetupArg ::= SEQUENCE { + parkingNumber EndpointAddress, + parkedNumber EndpointAddress, + parkedToNumber EndpointAddress, + parkedToPosition ParkedToPosition OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +CpSetupRes ::= SEQUENCE { + parkedToNumber EndpointAddress, + parkedToPosition ParkedToPosition OPTIONAL, + parkCondition ParkCondition, + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +groupIndicationOn OPERATION ::= + { -- sent from the parked-to endpoint/alerting endpoint to the group members + ARGUMENT GroupIndicationOnArg + RESULT GroupIndicationOnRes + ERRORS {undefined -- undefined reason--} + CODE local:108 +} + +GroupIndicationOnArg ::= SEQUENCE { + callPickupId CallIdentifier, + -- identification of the call to be retrieved (parked or alerting call); + -- its value equals the value of the CallIdentifier as assigned for the parked/ + -- alerting call within Setup-UUIE + groupMemberUserNr EndpointAddress, + retrieveCallType CallType, + partyToRetrieve EndpointAddress, -- Parked or Calling User + retrieveAddress EndpointAddress, -- parked-to or alerting entity address + + -- (may also be a GK, see 9.2) + parkPosition ParkedToPosition OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +GroupIndicationOnRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +groupIndicationOff OPERATION ::= + { -- sent from the parked-to endpoint/alerting endpoint to the group members + ARGUMENT GroupIndicationOffArg + RESULT GroupIndicationOffRes + ERRORS + {invalidCallState | -- group indication is not on + undefined -- undefined reason--} + CODE local:109 +} + +GroupIndicationOffArg ::= SEQUENCE { + callPickupId CallIdentifier, + -- identification of the call that has been picked up (parked or alerting call) + groupMemberUserNr EndpointAddress, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +GroupIndicationOffRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +pickrequ OPERATION ::= { -- sent from the picking-up user to the parked-to/ + -- alerting endpoint as part of the SS-PICKUP invocation + ARGUMENT PickrequArg + RESULT PickrequRes + ERRORS + {undefined | -- undefined reason + + callAlreadyPickedUp -- call has already been picked up by another user --} + CODE local:110 +} + +PickrequArg ::= SEQUENCE { + picking-upNumber EndpointAddress, + callPickupId CallIdentifier OPTIONAL, + -- identification of the call to be picked up (parked or alerting call), if known + partyToRetrieve EndpointAddress OPTIONAL, -- Parked or Calling User + retrieveAddress EndpointAddress, -- parked-to or alerting entity address + parkPosition ParkedToPosition OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +PickrequRes ::= SEQUENCE { + callPickupId CallIdentifier, + -- identification of the call that is being picked up (parked or alerting call), + -- if not sent in pickrequ invoke, it is assigned at the parked-to/alerting + -- endpoint and reflects the CallIdentification of the parked/alerting call for + -- later association with the pickExe invoke APDU. + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +pickup OPERATION ::= + { -- sent from the parked-to/alerting endpoint to the parked/calling endpoint + -- after the picking-up user has invoked SS-PICKUP. The picking-up user may + -- be local (i.e. parked-to/alerting endpoint equals picking-up + -- endpoint) or may be remote (i.e. picking-up user is located at a + -- remote picking-up endpoint having sent pickrequ invoke APDU to the + -- parked-to/alerting endpoint). + ARGUMENT PickupArg + RESULT PickupRes + ERRORS + {undefined | -- undefined reason + + callAlreadyPickedUp -- call has already been picked up by another user --} + CODE local:111 +} + +PickupArg ::= SEQUENCE { + callPickupId CallIdentifier, + -- identification of this call to be picked up (parked or alerting call); + -- equals the CallIdentifier value that was assigned to this call in Setup-UUIE + picking-upNumber EndpointAddress, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +PickupRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +pickExe OPERATION ::= + { -- sent from the parked/calling endpoint to the picking-up endpoint + ARGUMENT PickExeArg + RESULT PickExeRes + ERRORS + {undefined | -- undefined reason + + callPickupIdInvalid + -- value not matching with the previous SS-PICKUP request + } + CODE local:112 +} + +PickExeArg ::= SEQUENCE { + callPickupId CallIdentifier, + -- identification of the parked/alerting call to be picked-up; + -- required at picking-up endpoint to associate the SS-PICKUP invoked with this + -- incoming setup message carrying the pickExe invoke APDU. + picking-upNumber EndpointAddress, + partyToRetrieve EndpointAddress, -- Parked or Calling User + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +PickExeRes ::= SEQUENCE { + extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +cpNotify OPERATION ::= + { -- sent from the parking-to to parked endpoint in case of local park. + ARGUMENT CpNotifyArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:113 +} + +CpNotifyArg ::= SEQUENCE { + parkingNumber EndpointAddress OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +cpickupNotify OPERATION ::= + { -- sent from parked-to to parked endpoint in case of SS-PICKUP from local park + + ARGUMENT CpickupNotifyArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:114 +} + +CpickupNotifyArg ::= SEQUENCE { + picking-upNumber EndpointAddress OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +ParkedToPosition ::= INTEGER(0..65535) + +ParkCondition ::= ENUMERATED { + unspecified(0), parkedToUserIdle(1), parkedToUserBusy(2), parkedToGroup(3), + ... + } + +CallType ::= ENUMERATED {parkedCall(0), alertingCall(1), ... + } + +callPickupIdInvalid ERROR ::= {CODE local:2000 +} + +callAlreadyPickedUp ERROR ::= {CODE local:2001 +} + +undefined ERROR ::= { + PARAMETER SEQUENCE SIZE (0..255) OF MixedExtension + OPTIONAL TRUE + CODE local:2002 +} + +END -- of Call-Park-Pickup-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Transfer-Operations.asn b/epan/dissectors/asn1/h450/Call-Transfer-Operations.asn new file mode 100644 index 00000000..cbe7cd67 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Transfer-Operations.asn @@ -0,0 +1,244 @@ +-- Call-Transfer-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.2/1998/Call-Transfer-Operations.asn +-- + +-- Module Call-Transfer-Operations (H.450.2:02/1998) +Call-Transfer-Operations {itu-t recommendation h 450 2 version1(0) + call-transfer-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + notAvailable, supplementaryServiceInteractionNotAllowed, invalidCallState + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + EndpointAddress, PartySubaddress + FROM Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} + NonStandardParameter + FROM H323-MESSAGES -- see H.225.0 + + H225InformationElement + FROM H225-generic-parameters-definition {itu-t recommendation h 450 + 1 version1(0) h225-generic-parameters(6)}; + +H323CallTransferOperations OPERATION ::= + {callTransferIdentify | callTransferAbandon | callTransferInitiate | + callTransferSetup | callTransferUpdate | subaddressTransfer | + callTransferComplete | callTransferActive} + +callTransferIdentify OPERATION ::= { + -- sent from transferring endpoint to transferred-to endpoint + ARGUMENT DummyArg + OPTIONAL TRUE + RESULT CTIdentifyRes + ERRORS + {notAvailable | invalidCallState | + supplementaryServiceInteractionNotAllowed | unspecified} + CODE local:7 +} + +callTransferAbandon OPERATION ::= { + -- sent from transferring to transferred-to endpoint + ARGUMENT DummyArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:8 +} + +callTransferInitiate OPERATION ::= { + -- sent from transfering to transferred endpoint + ARGUMENT CTInitiateArg + RESULT DummyRes + OPTIONAL TRUE + ERRORS + {notAvailable | invalidCallState | invalidReroutingNumber | + unrecognizedCallIdentity | establishmentFailure | + supplementaryServiceInteractionNotAllowed | unspecified} + CODE local:9 +} + +callTransferSetup OPERATION ::= { + -- sent from transferred to transferred-to endpoint + ARGUMENT CTSetupArg + RESULT DummyRes + OPTIONAL TRUE + ERRORS + {notAvailable | invalidCallState | invalidReroutingNumber | + unrecognizedCallIdentity | unspecified | + supplementaryServiceInteractionNotAllowed} + CODE local:10 +} + +callTransferUpdate OPERATION ::= { + -- may be sent from transferred to transferred-to endpoint (in SETUP) and + -- vice versa (in CONNECT) + ARGUMENT CTUpdateArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:13 +} + +subaddressTransfer OPERATION ::= { + -- may be sent from transferred to the transferred-to endpoint and vice versa + ARGUMENT SubaddressTransferArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:14 +} + +callTransferComplete OPERATION ::= { + -- sent from GK to the transferred endpoint, if GK performs call transfer + -- (see 10.6.1). + ARGUMENT CTCompleteArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:12 +} + +callTransferActive OPERATION ::= { + -- sent from gatekeeper to the transferred endpoint, in case of transfer ringing + -- after transferred-to endpoint has answered the call (only in case of + -- transfer performed by gatekeeper) + ARGUMENT CTActiveArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:11 +} + +DummyArg ::= CHOICE { + extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter +} + +DummyRes ::= CHOICE { + extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter +} + +CTInitiateArg ::= SEQUENCE { + callIdentity CallIdentity, + reroutingNumber EndpointAddress, + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +CTSetupArg ::= SEQUENCE { + callIdentity CallIdentity, + transferringNumber EndpointAddress OPTIONAL, + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +CTIdentifyRes ::= SEQUENCE { + callIdentity CallIdentity, + reroutingNumber EndpointAddress, + resultExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +CTUpdateArg ::= SEQUENCE { + redirectionNumber EndpointAddress, + redirectionInfo BMPString(SIZE (1..128)) OPTIONAL, + basicCallInfoElements H225InformationElement OPTIONAL, + -- Information element + -- Progress indicator may be conveyed + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +SubaddressTransferArg ::= SEQUENCE { + redirectionSubaddress PartySubaddress, + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +CTCompleteArg ::= SEQUENCE { + endDesignation EndDesignation, + redirectionNumber EndpointAddress, + -- number of new connected user + basicCallInfoElements H225InformationElement OPTIONAL, + -- Information element Progress indicator may be conveyed + redirectionInfo BMPString(SIZE (1..128)) OPTIONAL, + callStatus CallStatus DEFAULT answered, + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +EndDesignation ::= ENUMERATED {primaryEnd(0), secondaryEnd(1), ... + } + +CallStatus ::= ENUMERATED {answered(0), alerting(1), ... + } + +CTActiveArg ::= SEQUENCE { + connectedAddress EndpointAddress, + -- number of new connected user + basicCallInfoElements H225InformationElement OPTIONAL, + -- Information element Progress indicator may be conveyed + connectedInfo BMPString(SIZE (1..128)) OPTIONAL, + argumentExtension + CHOICE {extensionSeq ExtensionSeq, + nonStandardData NonStandardParameter} OPTIONAL, + ... +} + +CallIdentity ::= NumericString(SIZE (0..4)) + +-- size 0 means 'empty' +ExtensionSeq ::= SEQUENCE OF Extension{{ExtensionSet}} + +ExtensionSet EXTENSION ::= + {...} + +-- Actual values defined by individual manufacturers +unspecified ERROR ::= { + PARAMETER + CHOICE {extension Extension{{ExtensionSet}}, + nonStandard NonStandardParameter} + CODE local:1008 +} + +invalidReroutingNumber ERROR ::= { + -- used when establishment of the new connection fails + -- because the reroutingNumber is not a valid alias address + CODE local:1004 +} + +unrecognizedCallIdentity ERROR ::= { + -- used when establishment of the new connection fails because it + -- could not be associated with a SS-CT entity at the + -- transferred-to endpoint + CODE local:1005 +} + +establishmentFailure ERROR ::= { + -- used when establishment of the new connection fails and + -- no other error applies + CODE local:1006 +} + +END -- of Call-Transfer-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Call-Waiting-Operations.asn b/epan/dissectors/asn1/h450/Call-Waiting-Operations.asn new file mode 100644 index 00000000..fa2e1de7 --- /dev/null +++ b/epan/dissectors/asn1/h450/Call-Waiting-Operations.asn @@ -0,0 +1,45 @@ +-- Call-Waiting-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.6/1999/Call-Waiting-Operations.asn +-- + +-- Module Call-Waiting-Operations (H.450.6:05/1999) +Call-Waiting-Operations {itu-t recommendation h 450 6 version1(0) + call-waiting-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + MixedExtension + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)}; + +CallWaitingOperations OPERATION ::= {callWaiting} + +callWaiting OPERATION ::= + { -- sent from served endpoint to the calling endpoint in ALERTING message + ARGUMENT CallWaitingArg + OPTIONAL TRUE + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:105 +} + +CallWaitingArg ::= SEQUENCE { + nbOfAddWaitingCalls INTEGER(0..255) OPTIONAL, + -- indicates the number of waiting calls at the served user + -- in addition to the call to which this operation applies. + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +END -- of Call-Waiting-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Common-Information-Operations.asn b/epan/dissectors/asn1/h450/Common-Information-Operations.asn new file mode 100644 index 00000000..8fb8e35e --- /dev/null +++ b/epan/dissectors/asn1/h450/Common-Information-Operations.asn @@ -0,0 +1,149 @@ +-- Common-Information-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.12/2001/Common-Information-Operations.asn +-- + +-- Module Common-Information-Operations (H.450.12:07/2001) +Common-Information-Operations {itu-t recommendation h 450 12 version1(0) + common-information-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + MixedExtension, undefined + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)}; + +H323CommonInformationOperations OPERATION ::= {cmnRequest | cmnInform} + +cmnRequest OPERATION ::= { + ARGUMENT DummyArg + OPTIONAL TRUE + RESULT CmnArg + ERRORS {undefined} + CODE local:84 +} + +cmnInform OPERATION ::= { + ARGUMENT CmnArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:85 +} + +CmnArg ::= SEQUENCE { + featureList FeatureList OPTIONAL, + featureValues FeatureValues OPTIONAL, + featureControl FeatureControl OPTIONAL, + extension SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +DummyArg ::= SEQUENCE { + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL +} + +FeatureList ::= SEQUENCE { + -- indicates capabilities of the endpoint sending the FeatureList + ssCFreRoutingSupported NULL OPTIONAL, -- Call Forwarding rerouting + + -- supported meaningful only in + -- forward direction during call + -- establishment + ssCTreRoutingSupported NULL OPTIONAL, -- Call Transfer rerouting + + -- supported meaningful both in + -- forward & backward direction + -- during call establishment + ssCCBSPossible NULL OPTIONAL, -- CCBS possible meaningful only + + -- in backward direction before + -- receipt of ALERTING/CONNECT + ssCCNRPossible NULL OPTIONAL, -- CCNR possible meaningful only + + -- in backward direction before + -- receipt of CONNECT + ssCOSupported NULL OPTIONAL, -- Call Offer supported + + -- meaningful only in backward + -- direction during call + -- establishment + -- Call Intrusion + ssCIForcedReleaseSupported NULL OPTIONAL, -- meaningful only in + + -- backward direction + ssCIIsolationSupported NULL OPTIONAL, -- meaningful only in + + -- backward direction + ssCIWaitOnBusySupported NULL OPTIONAL, -- meaningful only in + + -- backward direction + ssCISilentMonitoringSupported NULL OPTIONAL, -- meaningful only in + + -- backward direction + ssCIConferenceSupported NULL OPTIONAL, -- meaningful only in + + -- backward direction + -- Call Hold + ssCHFarHoldSupported NULL OPTIONAL, -- meaningful in both + + -- directions + -- Message Waiting Callback + ssMWICallbackSupported NULL OPTIONAL, -- meaningful in backward + + -- direction + -- meaningful both in + -- forward & backward + -- direction during call + -- establishment + -- Call Park + ssCPCallParkSupported NULL OPTIONAL, -- meaningful in both + + -- directions + ... +} + +FeatureValues ::= SEQUENCE { + partyCategory PartyCategory OPTIONAL, + ssCIprotectionLevel SSCIProtectionLevel OPTIONAL, + -- Supplementary Service Call Intrusion Protection level + -- meaningful both in forward and backward direction; inclusion + -- indicates support of SS-CI as an unwanted endpoint (forward + -- direction) or as a Terminating Endpoint (backward direction), + -- as well as the applicable protection level. + ... +} + +PartyCategory ::= ENUMERATED {unknown, extension, attendant, emergExt, ... + } + +SSCIProtectionLevel ::= INTEGER(0..3) + +FeatureControl ::= SEQUENCE { + ssCHDoNotHold NULL OPTIONAL, -- meaningful in both directions + + -- Sending endpoint shall not be held + ssCTDoNotTransfer NULL OPTIONAL, -- meaningful in both directions + + -- sending endpoint shall not be transferred + ssMWICallbackCall NULL OPTIONAL, -- meaningful only in SETUP + + -- indicating a callback call + ssCISilentMonitorPermitted NULL OPTIONAL, -- unwanted endpoint + + -- allows for + -- silent monitoring + -- meaningful in forward and backward direction + ... +} + +END -- of Common-Information-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/H225-generic-parameters-definition.asn b/epan/dissectors/asn1/h450/H225-generic-parameters-definition.asn new file mode 100644 index 00000000..adb22cda --- /dev/null +++ b/epan/dissectors/asn1/h450/H225-generic-parameters-definition.asn @@ -0,0 +1,17 @@ +-- H225-generic-parameters-definition.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/H225-generic-parameters-definition.asn +-- + +-- Module H225-generic-parameters-definition (H.450.1:02/1998) +H225-generic-parameters-definition {itu-t recommendation h 450 1 version1(0) + h225-generic-parameters(6)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +H225InformationElement ::= OCTET STRING + +END -- of H225 Generic parameters definition + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/H4501-General-Error-List.asn b/epan/dissectors/asn1/h450/H4501-General-Error-List.asn new file mode 100644 index 00000000..2e9f9ec3 --- /dev/null +++ b/epan/dissectors/asn1/h450/H4501-General-Error-List.asn @@ -0,0 +1,100 @@ +-- H4501-General-Error-List.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/H4501-General-Error-List.asn +-- + +-- Module H4501-General-Error-List (H.450.1:02/1998) +H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)}; + +-- The following errors are based on the error definitions of Recommendation Q.950. +userNotSubscribed ERROR ::= {CODE local:0 +} + +-- is an indication that the user has not subscribed to this service. +rejectedByNetwork ERROR ::= {CODE local:1 +} + +-- is an indication that the requested service is rejected by the network +-- (e.g. gatekeeper). +rejectedByUser ERROR ::= {CODE local:2 +} + +-- is an indication that the requested service is provided by the +-- network but that the remote user has rejected this service request. +notAvailable ERROR ::= {CODE local:3 +} + +-- is an indication that the user has subscribed to this service but the +-- requested service is not available combined with the basic service or +-- the other services (e.g. operation). +insufficientInformation ERROR ::= {CODE local:5 +} + +-- is an indication that the content of operation argument is +-- incomplete, or absent entirely. +invalidServedUserNumber ERROR ::= {CODE local:6 +} + +-- is an indication that the requested service cannot be performed +-- because of the usage of an invalid served user number. +invalidCallState ERROR ::= {CODE local:7 +} + +-- is an indication that no match exists between the service request and +-- the valid H.225.0 call state, this applies also to invalid +-- auxiliary states or an invalid combination of H.225.0 call states and +-- auxiliary states. +basicServiceNotProvided ERROR ::= {CODE local:8 +} + +-- is an indication that the service request is directed to a Basic +-- Service which is not provided (e.g. this return error value is used +-- in cases where a supplementary service is to be invoked with a SETUP +-- message but indicating the wrong Basic Service). +notIncomingCall ERROR ::= {CODE local:9 +} + +-- is an indication that the service request has been invoked for an +-- outgoing call, which is not permitted for that service. +supplementaryServiceInteractionNotAllowed ERROR ::= {CODE local:10 +} + +-- is an indication that the Service request is not permitted in +-- combination with either a further requested or active supplementary +-- service. +resourceUnavailable ERROR ::= {CODE local:11 +} + +-- is an indication that the service provider has temporarily no +-- resource available for the provision of the requested service. +callFailure ERROR ::= {CODE local:25 +} + +-- is an indication that the requested supplementary service was not executable by virtue +-- of a Basic Call Failure. The parameter is included under circumstances where the +-- call failure was remote from the local gatekeeper interface over which the error is to +-- be sent. For example when: +-- a) no H.225.0 RELEASE COMPLETE message is provided locally, or +-- b) the cause information element included in the RELEASE COMPLETE +-- message represents only the reason for local basic call clearing. +-- In these cases the parameter value represents the clearing cause included in the +-- remote clearing procedure. +proceduralError ERROR ::= {CODE local:43 +} + +-- is an indication that a transport message (e.g. SETUP) +-- is received which has one or more operation APDUs which have a valid +-- content but which are not specified as valid information content of +-- the transport message used. +END -- of H4501-General-Error-List + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn b/epan/dissectors/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn new file mode 100644 index 00000000..85904389 --- /dev/null +++ b/epan/dissectors/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn @@ -0,0 +1,72 @@ +-- H4501-Supplementary-ServiceAPDU-Structure.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/H4501-Supplementary-ServiceAPDU-Structure.asn +-- + +-- Module H4501-Supplementary-ServiceAPDU-Structure (H.450.1:02/1998) +H4501-Supplementary-ServiceAPDU-Structure {itu-t recommendation h 450 + 1 version1(0) h4501-facility-information-structure(2)} DEFINITIONS AUTOMATIC +TAGS ::= +BEGIN + +IMPORTS + AliasAddress + FROM H323-MESSAGES -- see H.225.0 V2 + + OPERATION, ROS{}, InvokeId + FROM Remote-Operations-Apdus {itu-t recommendation h 450 1 version1(0) + remote-operations-apdus(11)}; + +H4501SupplementaryService ::= SEQUENCE { + networkFacilityExtension NetworkFacilityExtension OPTIONAL, -- see 8.1 + interpretationApdu InterpretationApdu OPTIONAL, -- see 8.2 + serviceApdu ServiceApdus, -- H.450.x supplementary services + ... +} + +NetworkFacilityExtension ::= SEQUENCE { + sourceEntity EntityType, + sourceEntityAddress AddressInformation OPTIONAL, + destinationEntity EntityType, + destinationEntityAddress AddressInformation OPTIONAL, + ... +} + +EntityType ::= CHOICE {endpoint NULL, + anyEntity NULL, + ... +} + +AddressInformation ::= AliasAddress + +InterpretationApdu ::= CHOICE { + discardAnyUnrecognizedInvokePdu NULL, + clearCallIfAnyInvokePduNotRecognized NULL, + -- this value also applies to Call independent signalling connections + rejectAnyUnrecognizedInvokePdu NULL, + -- this coding is implied by the absence of an interpretation APDU. + ... +} + +ServiceApdus ::= CHOICE { + rosApdus + SEQUENCE SIZE (1..MAX) OF + ROS{{InvokeIdSet}, {OperationSet}, {OperationSet}}, + -- see 8.3; other alternatives may be defined in future versions + ... +} + +InvokeIdSet INTEGER ::= {InvokeIDs, ...} + +InvokeIDs ::= INTEGER(0..65535) + +OperationSet OPERATION ::= + {...} + +-- actual values are defined by individual supplementary service specifications +-- (e.g. H.450.x or manufacturer specific) +END -- of H4501- Supplementary-ServiceAPDU-Structure + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Manufacturer-specific-service-extension-definition.asn b/epan/dissectors/asn1/h450/Manufacturer-specific-service-extension-definition.asn new file mode 100644 index 00000000..80a591d4 --- /dev/null +++ b/epan/dissectors/asn1/h450/Manufacturer-specific-service-extension-definition.asn @@ -0,0 +1,31 @@ +-- Manufacturer-specific-service-extension-definition.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/Manufacturer-specific-service-extension-definition.asn +-- + +-- Module Manufacturer-specific-service-extension-definition (H.450.1:02/1998) +Manufacturer-specific-service-extension-definition {itu-t recommendation + h 450 1 version1(0) msi-definition(18)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +EXTENSION ::= CLASS {&ArgumentType , + &extensionId OBJECT IDENTIFIER +}WITH SYNTAX {ARGUMENT &ArgumentType + IDENTIFIER &extensionId +} + +Extension{EXTENSION:ExtensionSet} ::= SEQUENCE { + extensionId EXTENSION.&extensionId({ExtensionSet}), + extensionArgument EXTENSION.&ArgumentType({ExtensionSet}{@extensionId}) +} + +-- ExtensionSet is a set of objects of class EXTENSION. +-- Actual values of ExtensionSet are defined by the individual manufacturers. +-- Element extensionId is constrained to be the identifier of an object from that set. +-- Element extensionArgument is constrained to be the argument type for that particular +-- object. +END -- of Manufacturer-specific-service-extension-definition + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Message-Waiting-Indication-Operations.asn b/epan/dissectors/asn1/h450/Message-Waiting-Indication-Operations.asn new file mode 100644 index 00000000..89d3d20a --- /dev/null +++ b/epan/dissectors/asn1/h450/Message-Waiting-Indication-Operations.asn @@ -0,0 +1,169 @@ +-- Message-Waiting-Indication-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.7/1999/Message-Waiting-Indication-Operations.asn +-- + +-- Module Message-Waiting-Indication-Operations (H.450.7:05/1999) +Message-Waiting-Indication-Operations {itu-t recommendation h 450 7 version1(0) + message-waiting-operations(0)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + userNotSubscribed, invalidServedUserNumber, basicServiceNotProvided + FROM H4501-General-Error-List {itu-t recommendation h 450 1 version1(0) + general-error-list(1)} + EndpointAddress + FROM Addressing-Data-Elements {itu-t recommendation h 450 1 version1(0) + addressing-data-elements(9)} + MixedExtension + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)}; + +H323-MWI-Operations OPERATION ::= + {mwiActivate | mwiDeactivate | mwiInterrogate} + +mwiActivate OPERATION ::= { + ARGUMENT MWIActivateArg + RESULT DummyRes + ERRORS + {userNotSubscribed | invalidServedUserNumber | basicServiceNotProvided | + undefined} + CODE local:80 +} + +mwiDeactivate OPERATION ::= { + ARGUMENT MWIDeactivateArg + RESULT DummyRes + ERRORS + {userNotSubscribed | invalidServedUserNumber | basicServiceNotProvided | + undefined} + CODE local:81 +} + +mwiInterrogate OPERATION ::= { + ARGUMENT MWIInterrogateArg + RESULT MWIInterrogateRes + ERRORS + {userNotSubscribed | invalidServedUserNumber | notActivated | + invalidMsgCentreId | undefined} + CODE local:82 +} + +MWIActivateArg ::= SEQUENCE { + servedUserNr EndpointAddress, + basicService BasicService, + msgCentreId MsgCentreId OPTIONAL, + nbOfMessages NbOfMessages OPTIONAL, + originatingNr EndpointAddress OPTIONAL, + timestamp TimeStamp OPTIONAL, + priority INTEGER(0..9) OPTIONAL, + -- the value 0 means the highest priority and 9 the lowest + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +DummyRes ::= SEQUENCE SIZE (0..255) OF MixedExtension + +MWIDeactivateArg ::= SEQUENCE { + servedUserNr EndpointAddress, + basicService BasicService, + msgCentreId MsgCentreId OPTIONAL, + callbackReq BOOLEAN OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +MWIInterrogateArg ::= SEQUENCE { + servedUserNr EndpointAddress, + basicService BasicService, + msgCentreId MsgCentreId OPTIONAL, + callbackReq BOOLEAN OPTIONAL, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +MWIInterrogateRes ::= SEQUENCE SIZE (1..64) OF MWIInterrogateResElt + +MWIInterrogateResElt ::= SEQUENCE { + basicService BasicService, + msgCentreId MsgCentreId OPTIONAL, + nbOfMessages NbOfMessages OPTIONAL, + originatingNr EndpointAddress OPTIONAL, + timestamp TimeStamp OPTIONAL, + priority INTEGER(0..9) OPTIONAL, + -- the value 0 means the highest priority and 9 the lowest + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ... +} + +MsgCentreId ::= CHOICE { + -- only partyNumber provides a callable identification + integer INTEGER(0..65535), + partyNumber EndpointAddress, + numericString NumericString(SIZE (1..10)) +} + +NbOfMessages ::= INTEGER(0..65535) + +TimeStamp ::= GeneralizedTime(SIZE (12..19)) + +-- a VisibleString representation of date and time following ISO 8601 +-- containing: +-- - the (local) date in 8 digits (YYYYMMDD), +-- - followed by (local) time of day in 4 or 6 digits [HHMM(SS)], +-- - optionally followed by the letter "Z" or by a local time differential +-- from UTC time in 5 digits ("+"HHMM or "-"HHMM); +-- Examples: +-- 1) 19970621194530, meaning 21 June 1997, 19:45:30; +-- 2) 19970621194530Z, meaning the same as 1); +-- 3) 19970621194530-0500, meaning the same as 1), +-- 5 hours retarded in relation to UTC time +undefined ERROR ::= { + PARAMETER SEQUENCE SIZE (0..255) OF MixedExtension + OPTIONAL TRUE + CODE local:2002 +} + +invalidMsgCentreId ERROR ::= + { -- returned by a Message Centre endpoint when an unknown Message + -- Centre Identifier is specified in a mwiInterrogate invoke + CODE local:1018 +} + +BasicService ::= ENUMERATED { + -- MWI Services: + -- for compatibility among vendors, speech is recommended for voice mail + -- indications + allServices(0), speech(1), unrestrictedDigitalInformation(2), audio3100Hz(3), + telephony(32), teletex(33), telefaxGroup4Class1(34), videotexSyntaxBased(35), + videotelephony(36), telefaxGroup2-3(37), reservedNotUsed1(38), + reservedNotUsed2(39), reservedNotUsed3(40), reservedNotUsed4(41), + reservedNotUsed5(42), + -- + -- MWI Service Classes: + email(51), video(52), fileTransfer(53), shortMessageService(54), + speechAndVideo(55), speechAndFax(56), speechAndEmail(57), videoAndFax(58), + videoAndEmail(59), faxAndEmail(60), speechVideoAndFax(61), + speechVideoAndEmail(62), speechFaxAndEmail(63), videoFaxAndEmail(64), + speechVideoFaxAndEmail(65), multimediaUnknown(66), + serviceUnknown(67), + -- + -- Reserved for future additions: + futureReserve1(68), futureReserve2(69), futureReserve3(70), + futureReserve4(71), futureReserve5(72), futureReserve6(73), + futureReserve7(74), futureReserve8(75)} + +notActivated ERROR ::= {CODE local:31 +} + +END -- of Message-Waiting-Indication-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/Name-Operations.asn b/epan/dissectors/asn1/h450/Name-Operations.asn new file mode 100644 index 00000000..efb21d16 --- /dev/null +++ b/epan/dissectors/asn1/h450/Name-Operations.asn @@ -0,0 +1,97 @@ +-- Name-Operations.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.8/2000/Name-Operations.asn +-- + +-- Module Name-Operations (H.450.8:02/2000) +Name-Operations {itu-t recommendation h 450 8 version1(0) name-operations(0)} +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-definition {itu-t + recommendation h 450 1 version1(0) msi-definition(18)} + MixedExtension + FROM Call-Hold-Operations {itu-t recommendation h 450 4 version1(0) + call-hold-operations(0)}; + +NameOperations OPERATION ::= + {callingName | alertingName | connectedName | busyName} + +callingName OPERATION ::= { + ARGUMENT + SEQUENCE {name Name, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:0 +} + +alertingName OPERATION ::= { + ARGUMENT + SEQUENCE {name Name, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:1 +} + +connectedName OPERATION ::= { + ARGUMENT + SEQUENCE {name Name, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:2 +} + +busyName OPERATION ::= { + ARGUMENT + SEQUENCE {name Name, + extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, + ...} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local:3 +} + +Name ::= CHOICE { + namePresentationAllowed NamePresentationAllowed, + namePresentationRestricted NamePresentationRestricted, + nameNotAvailable NULL, + ... +} + +NamePresentationAllowed ::= CHOICE { + simpleName SimpleName, + extendedName ExtendedName, + ... +} + +NamePresentationRestricted ::= CHOICE { + simpleName SimpleName, + extendedName ExtendedName, + restrictedNull NULL, -- only used in case of interworking where other network + + -- provides indication that the name is restricted without + -- the name itself + ... +} + +SimpleName ::= OCTET STRING(SIZE (1..50)) + +ExtendedName ::= BMPString(SIZE (1..256)) -- Basic ISO/IEC 10646-1 (Unicode) + + +END -- of Name-Operations + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h450/h450.cnf b/epan/dissectors/asn1/h450/h450.cnf new file mode 100644 index 00000000..e58630c1 --- /dev/null +++ b/epan/dissectors/asn1/h450/h450.cnf @@ -0,0 +1,165 @@ +# h450.cnf +# H.450 conformation file +# Copyright 2004 Anders Broman + +#.OPT +PER +ALIGNED +GROUP_BY_PROT +-o h450 +#.END + +#.IMPORT ../h225/h225-exp.cnf +#.IMPORT ../h450-ros/h450-ros-exp.cnf + +#.MODULE + +H4501-Supplementary-ServiceAPDU-Structure h450 +Addressing-Data-Elements h450 +H225-generic-parameters-definition h450 +Manufacturer-specific-service-extension-definition h450 +H4501-General-Error-List h450 + +Call-Transfer-Operations h450.2 +Call-Diversion-Operations h450.3 +Call-Hold-Operations h450.4 +Call-Park-Pickup-Operations h450.5 +Call-Waiting-Operations h450.6 +Message-Waiting-Indication-Operations h450.7 +Name-Operations h450.8 +Call-Completion-Operations h450.9 +Call-Offer-Operations h450.10 +Call-Intrusion-Operations h450.11 +Common-Information-Operations h450.12 + +#.OMIT_ASSIGNMENT +PresentedAddressScreened +PresentedAddressUnscreened +PresentedNumberScreened +PresentedNumberUnscreened +AddressScreened +NumberScreened +Address +# implemented manually in h450-ros as asn2wrs is not able to handle subtype constraint event passed through parameter +InvokeIDs +#.END + +#.PDU +H4501SupplementaryService +OPERATION.&ArgumentType +OPERATION.&ResultType +ERROR.&ParameterType + +#.FN_HDR H4501SupplementaryService + proto_item *hidden_item; + + hidden_item = proto_tree_add_item(tree, proto_h450, tvb, offset, -1, ENC_NA); + proto_item_set_hidden(hidden_item); +#.END + +#.FN_HDR ServiceApdus/rosApdus/_item + h450_rose_ctx.apdu_depth = 1; + actx->rose_ctx = &h450_rose_ctx; +#.END + +#.TYPE_RENAME +ARG-activateDiversionQ/extension ActivateDiversionQArg_extension +ARG-deactivateDiversionQ/extension DeactivateDiversionQArg_extension +ARG-interrogateDiversionQ/extension InterrogateDiversionQ_extension +ARG-checkRestriction/extension CheckRestrictionArg_extension +ARG-callRerouting/extension CallReroutingArg_extension +ARG-divertingLegInformation1/extension DivertingLegInformation1Arg_extension +ARG-divertingLegInformation2/extension DivertingLegInformation2Arg_extension +ARG-divertingLegInformation3/extension DivertingLegInformation3Arg_extension +ARG-divertingLegInformation4/extension DivertingLegInformation4Arg_extension +IntResult/extension IntResult_extension + +#.FIELD_RENAME + +#PresentedAddressScreened/presentationAllowedAddress addressScreened_presentationAllowedAddress +#PresentedNumberScreened/presentationAllowedAddress numberScreened_presentationAllowedAddress +#PresentedNumberUnscreened/presentationAllowedAddress numberUnscreened_presentationAllowedAddress +#PresentedAddressUnscreened/presentationAllowedAddress addressUnscreened_presentationAllowedAddress + +#PresentedAddressScreened/presentationRestrictedAddress addressScreened_presentationRestrictedAddress +#PresentedNumberScreened/presentationRestrictedAddress numberScreened_presentationRestrictedAddress +#PresentedNumberUnscreened/presentationRestrictedAddress numberUnscreened_presentationRestrictedAddress +#PresentedAddressUnscreened/presentationRestrictedAddress addressUnscreened_presentationRestrictedAddress + +CTInitiateArg/argumentExtension cTInitiateArg_argumentExtension +CTSetupArg/argumentExtension cTSetupArg_argumentExtension +CTUpdateArg/argumentExtension cTUpdateArg_argumentExtension +SubaddressTransferArg/argumentExtension subaddressTransferArg_argumentExtension +CTCompleteArg/argumentExtension cTCompleteArg_argumentExtension +CTActiveArg/argumentExtension cTActiveArg_argumentExtension +MixedExtension/extension mixedExtension_extension +PAR-unspecified/extension unspecified_extension +ARG-checkRestriction/extension checkRestrictionArg_extension +ARG-divertingLegInformation1/extension divertingLegInformation1Arg_extension +ARG-divertingLegInformation2/extension divertingLegInformation2Arg_extension +CcRequestArg/extension ccRequestArg_extension +CcRequestRes/extension ccRequestRes_extension +CcShortArg/extension ccShortArg_extension +CcLongArg/extension ccLongArg_extension +CoReqOptArg/extension coReqOptArg_extension +RUAlertOptArg/extension rUAlertOptArg_extension +CfbOvrOptArg/extension cfbOvrOptArg_extension +CmnArg/extension cmnArg_extension +ARG-activateDiversionQ/extension activateDiversionQArg_extension +ARG-interrogateDiversionQ/extension interrogateDiversionQ_extension +ARG-callRerouting/extension callReroutingArg_extension +ARG-divertingLegInformation4/extension divertingLegInformation4Arg_extension +ARG-divertingLegInformation3/extension divertingLegInformation3Arg_extension +ARG-deactivateDiversionQ/extension deactivateDiversionQArg_extension +IntResult/extension intResult_extension + +MWIActivateArg/extensionArg mWIActivateArg_extensionArg +MWIDeactivateArg/extensionArg mWIDeactivateArg_extensionArg +MWIInterrogateArg/extensionArg mWIInterrogateArg_extensionArg +MWIInterrogateResElt/extensionArg mWIInterrogateResElt_extensionArg + +HoldNotificArg/extensionArg holdNotificArg_extensionArg +RetrieveNotificArg/extensionArg retrieveNotificArg_extensionArg + +RemoteHoldArg/extensionArg remoteHoldArg_extensionArg +RemoteRetrieveArg/extensionArg remoteRetrieveArg_extensionArg +CpRequestArg/extensionArg cpRequestArg_extensionArg +CpSetupArg/extensionArg cpSetupArg_extensionArg +GroupIndicationOnArg/extensionArg groupIndicationOnArg_extensionArg +GroupIndicationOffArg/extensionArg groupIndicationOffArg_extensionArg +PickrequArg/extensionArg pickrequArg_extensionArg +PickupArg/extensionArg pickupArg_extensionArg +PickExeArg/extensionArg pickExeArg_extensionArg +CpNotifyArg/extensionArg cpNotifyArg_extensionArg +CpickupNotifyArg/extensionArg cpickupNotifyArg_extensionArg +CallWaitingArg/extensionArg callWaitingArg_extensionArg +CIRequestArg/argumentExtension cIRequestArg_argumentExtension +CIGetCIPLOptArg/argumentExtension cIGetCIPLOptArg_argumentExtension +CIIsOptArg/argumentExtension cIIsOptArg_argumentExtension +CIFrcRelArg/argumentExtension cIFrcRelArg_argumentExtension +CIWobOptArg/argumentExtension cIWobOptArg_argumentExtension +CISilentArg/argumentExtension cISilentArg_argumentExtension +CINotificationArg/argumentExtension cINotificationArg_argumentExtension + +CIRequestRes/resultExtension cIRequestRes_resultExtension +CIGetCIPLRes/resultExtension cIGetCIPLRes_resultExtension +CIIsOptRes/resultExtension cIIsOptRes_resultExtension +CIFrcRelOptRes/resultExtension cIFrcRelOptRes_resultExtension +CIWobOptRes/resultExtension cIWobOptRes_resultExtension +CISilentOptRes/resultExtension cISilentOptRes_resultExtension + +#.TABLE10_BODY OPERATION + { %(&operationCode)3s, "%(_name)s" }, +#.END + +#.TABLE11_BODY OPERATION + /* %(_name)-24s */ { %(&operationCode)3s, %(_argument_pdu)s, %(_result_pdu)s }, +#.END + +#.TABLE20_BODY ERROR + { %(&errorCode)4s, "%(_name)s" }, +#.END + +#.TABLE21_BODY ERROR + /* %(_name)-24s */ { %(&errorCode)4s, %(_parameter_pdu)s }, +#.END diff --git a/epan/dissectors/asn1/h450/packet-h450-template.c b/epan/dissectors/asn1/h450/packet-h450-template.c new file mode 100644 index 00000000..b9a72714 --- /dev/null +++ b/epan/dissectors/asn1/h450/packet-h450-template.c @@ -0,0 +1,312 @@ +/* packet-h450.c + * Routines for h450 packet dissection + * Based on the previous h450 dissector by: + * 2003 Graeme Reid (graeme.reid@norwoodsystems.com) + * Copyright 2005, Anders Broman <anders.broman@ericsson.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Credit to Tomas Kukosa for developing the asn2wrs compiler. + * + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/expert.h> + +#include <epan/asn1.h> + +#include "packet-per.h" +#include "packet-h225.h" + +#include "packet-h450-ros.h" + +#define PNAME "H.450 Supplementary Services" +#define PSNAME "H.450" +#define PFNAME "h450" + +void proto_register_h450(void); +void proto_reg_handoff_h450(void); + +static dissector_handle_t h450_arg_handle; +static dissector_handle_t h450_res_handle; +static dissector_handle_t h450_err_handle; + +/* Initialize the protocol and registered fields */ +static int proto_h450 = -1; +static int hf_h450_operation = -1; +static int hf_h450_error = -1; +#include "packet-h450-hf.c" + +/* Initialize the subtree pointers */ +#include "packet-h450-ett.c" + +static expert_field ei_h450_unsupported_arg_type = EI_INIT; +static expert_field ei_h450_unsupported_result_type = EI_INIT; +static expert_field ei_h450_unsupported_error_type = EI_INIT; + +static const value_string h450_str_operation[] = { +#include "packet-h450-table10.c" + { 0, NULL} +}; + +static const value_string h450_str_error[] = { +#include "packet-h450-table20.c" + { 0, NULL} +}; + +/* ROSE context */ +static rose_ctx_t h450_rose_ctx; + +/* Global variables */ + +#include "packet-h450-fn.c" + +typedef struct _h450_op_t { + gint32 opcode; + dissector_t arg_pdu; + dissector_t res_pdu; +} h450_op_t; + +static const h450_op_t h450_op_tab[] = { +#include "packet-h450-table11.c" +}; + +typedef struct _h450_err_t { + gint32 errcode; + dissector_t err_pdu; +} h450_err_t; + +static const h450_err_t h450_err_tab[] = { +#include "packet-h450-table21.c" +}; + +static const h450_op_t *get_op(gint32 opcode) { + int i; + + /* search from the end to get the last occurrence if the operation is redefined in some newer specification */ + for (i = array_length(h450_op_tab) - 1; i >= 0; i--) + if (h450_op_tab[i].opcode == opcode) + return &h450_op_tab[i]; + return NULL; +} + +static const h450_err_t *get_err(gint32 errcode) { + int i; + + /* search from the end to get the last occurrence if the operation is redefined in some newer specification */ + for (i = array_length(h450_err_tab) - 1; i >= 0; i--) + if (h450_err_tab[i].errcode == errcode) + return &h450_err_tab[i]; + return NULL; +} + +/*--- dissect_h450_arg ------------------------------------------------------*/ +static int +dissect_h450_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + proto_item *hidden_item; + int offset = 0; + rose_ctx_t *rctx; + gint32 opcode; + const h450_op_t *op_ptr; + const gchar *p; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 1) /* invoke */ + return offset; + if (rctx->d.code != 0) /* local */ + return offset; + opcode = rctx->d.code_local; + op_ptr = get_op(opcode); + if (!op_ptr) + return offset; + + hidden_item = proto_tree_add_uint(tree, hf_h450_operation, tvb, 0, 0, opcode); + proto_item_set_hidden(hidden_item); + p = try_val_to_str(opcode, VALS(h450_str_operation)); + if (p) { + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + if (op_ptr->arg_pdu && (tvb_reported_length_remaining(tvb, offset) > 0)) + offset = op_ptr->arg_pdu(tvb, pinfo, tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_arg_type, tvb, offset, -1); + offset += tvb_reported_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- dissect_h450_res ------------------------------------------------------*/ +static int +dissect_h450_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + proto_item *hidden_item; + int offset = 0; + rose_ctx_t *rctx; + gint32 opcode; + const h450_op_t *op_ptr; + const gchar *p; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 2) /* returnResult */ + return offset; + if (rctx->d.code != 0) /* local */ + return offset; + opcode = rctx->d.code_local; + op_ptr = get_op(opcode); + if (!op_ptr) + return offset; + + hidden_item = proto_tree_add_uint(tree, hf_h450_operation, tvb, 0, 0, opcode); + proto_item_set_hidden(hidden_item); + p = try_val_to_str(opcode, VALS(h450_str_operation)); + if (p) { + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + if (op_ptr->res_pdu && (tvb_reported_length_remaining(tvb, offset) > 0)) + offset = op_ptr->res_pdu(tvb, pinfo, tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_result_type, tvb, offset, -1); + offset += tvb_reported_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- dissect_h450_err ------------------------------------------------------*/ +static int +dissect_h450_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + proto_item *hidden_item; + int offset = 0; + rose_ctx_t *rctx; + gint32 errcode; + const h450_err_t *err_ptr; + const gchar *p; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 3) /* returnError */ + return offset; + if (rctx->d.code != 0) /* local */ + return offset; + errcode = rctx->d.code_local; + err_ptr = get_err(errcode); + if (!err_ptr) + return offset; + + hidden_item = proto_tree_add_uint(tree, hf_h450_error, tvb, 0, 0, errcode); + proto_item_set_hidden(hidden_item); + p = try_val_to_str(errcode, VALS(h450_str_error)); + if (p) { + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + if (err_ptr->err_pdu && (tvb_reported_length_remaining(tvb, offset) > 0)) + offset = err_ptr->err_pdu(tvb, pinfo, tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_error_type, tvb, offset, -1); + offset += tvb_reported_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- proto_register_h450 -------------------------------------------*/ +void proto_register_h450(void) { + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_h450_operation, { "Operation", "h450.operation", + FT_UINT8, BASE_DEC, VALS(h450_str_operation), 0x0, + NULL, HFILL }}, + { &hf_h450_error, { "Error", "h450.error", + FT_UINT16, BASE_DEC, VALS(h450_str_error), 0x0, + NULL, HFILL }}, +#include "packet-h450-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { +#include "packet-h450-ettarr.c" + }; + + static ei_register_info ei[] = { + { &ei_h450_unsupported_arg_type, { "h450.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (H.450)", EXPFILL }}, + { &ei_h450_unsupported_result_type, { "h450.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (H.450)", EXPFILL }}, + { &ei_h450_unsupported_error_type, { "h450.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (H.450)", EXPFILL }}, + }; + + expert_module_t* expert_h450; + + /* Register protocol */ + proto_h450 = proto_register_protocol(PNAME, PSNAME, PFNAME); + register_dissector("h4501", dissect_h450_H4501SupplementaryService_PDU, proto_h450); + /* Register fields and subtrees */ + proto_register_field_array(proto_h450, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + expert_h450 = expert_register_protocol(proto_h450); + expert_register_field_array(expert_h450, ei, array_length(ei)); + + rose_ctx_init(&h450_rose_ctx); + + /* Register dissectors */ + h450_arg_handle = register_dissector("h4501_arg", dissect_h450_arg, proto_h450); + h450_res_handle = register_dissector("h4501_res", dissect_h450_res, proto_h450); + h450_err_handle = register_dissector("h4501_err", dissect_h450_err, proto_h450); + + /* Register dissector tables */ + h450_rose_ctx.arg_global_dissector_table = register_dissector_table("h450.ros.global.arg", "H.450 Operation Argument (global opcode)", proto_h450, FT_STRING, STRING_CASE_SENSITIVE); + h450_rose_ctx.res_global_dissector_table = register_dissector_table("h450.ros.global.res", "H.450 Operation Result (global opcode)", proto_h450, FT_STRING, STRING_CASE_SENSITIVE); + h450_rose_ctx.arg_local_dissector_table = register_dissector_table("h450.ros.local.arg", "H.450 Operation Argument (local opcode)", proto_h450, FT_UINT32, BASE_HEX); + h450_rose_ctx.res_local_dissector_table = register_dissector_table("h450.ros.local.res", "H.450 Operation Result (local opcode)", proto_h450, FT_UINT32, BASE_HEX); + h450_rose_ctx.err_global_dissector_table = register_dissector_table("h450.ros.global.err", "H.450 Error (global opcode)", proto_h450, FT_STRING, STRING_CASE_SENSITIVE); + h450_rose_ctx.err_local_dissector_table = register_dissector_table("h450.ros.local.err", "H.450 Error (local opcode)", proto_h450, FT_UINT32, BASE_HEX); + +} + + +/*--- proto_reg_handoff_h450 ---------------------------------------*/ +void +proto_reg_handoff_h450(void) +{ + int i; + + for (i=0; i<(int)array_length(h450_op_tab); i++) { + dissector_add_uint("h450.ros.local.arg", h450_op_tab[i].opcode, h450_arg_handle); + dissector_add_uint("h450.ros.local.res", h450_op_tab[i].opcode, h450_res_handle); + } + for (i=0; i<(int)array_length(h450_err_tab); i++) { + dissector_add_uint("h450.ros.local.err", h450_err_tab[i].errcode, h450_err_handle); + } + +} |