diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-07-30 08:01:59 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-07-30 08:01:59 +0000 |
commit | 5a46ea46b5d79e119f902d52ce714f4a2466deed (patch) | |
tree | d28654291f462760aca4ef6985e6ea5946ec91c1 /asn1/h450 | |
parent | 4142a2b90f1e248997f3979346c550373561981c (diff) |
H.450 regenerated from original ASN.1 sources
svn path=/trunk/; revision=22417
Diffstat (limited to 'asn1/h450')
26 files changed, 3047 insertions, 2930 deletions
diff --git a/asn1/h450/Addressing-Data-Elements.asn b/asn1/h450/Addressing-Data-Elements.asn new file mode 100644 index 0000000000..bab8dbaf04 --- /dev/null +++ b/asn1/h450/Addressing-Data-Elements.asn @@ -0,0 +1,127 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Completion-Operations.asn b/asn1/h450/Call-Completion-Operations.asn new file mode 100644 index 0000000000..62e8187264 --- /dev/null +++ b/asn1/h450/Call-Completion-Operations.asn @@ -0,0 +1,156 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Diversion-Operations.asn b/asn1/h450/Call-Diversion-Operations.asn new file mode 100644 index 0000000000..e5f7233ec7 --- /dev/null +++ b/asn1/h450/Call-Diversion-Operations.asn @@ -0,0 +1,325 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Hold-Operations.asn b/asn1/h450/Call-Hold-Operations.asn new file mode 100644 index 0000000000..764119d0ff --- /dev/null +++ b/asn1/h450/Call-Hold-Operations.asn @@ -0,0 +1,133 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Intrusion-Operations.asn b/asn1/h450/Call-Intrusion-Operations.asn new file mode 100644 index 0000000000..b5b1620dc1 --- /dev/null +++ b/asn1/h450/Call-Intrusion-Operations.asn @@ -0,0 +1,211 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Offer-Operations.asn b/asn1/h450/Call-Offer-Operations.asn new file mode 100644 index 0000000000..356332a966 --- /dev/null +++ b/asn1/h450/Call-Offer-Operations.asn @@ -0,0 +1,73 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Park-Pickup-Operations.asn b/asn1/h450/Call-Park-Pickup-Operations.asn new file mode 100644 index 0000000000..18f6c76f30 --- /dev/null +++ b/asn1/h450/Call-Park-Pickup-Operations.asn @@ -0,0 +1,304 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Transfer-Operations.asn b/asn1/h450/Call-Transfer-Operations.asn new file mode 100644 index 0000000000..5302f146f3 --- /dev/null +++ b/asn1/h450/Call-Transfer-Operations.asn @@ -0,0 +1,246 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Call-Waiting-Operations.asn b/asn1/h450/Call-Waiting-Operations.asn new file mode 100644 index 0000000000..3f7920f496 --- /dev/null +++ b/asn1/h450/Call-Waiting-Operations.asn @@ -0,0 +1,47 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Common-Information-Operations.asn b/asn1/h450/Common-Information-Operations.asn new file mode 100644 index 0000000000..d4e5901fb7 --- /dev/null +++ b/asn1/h450/Common-Information-Operations.asn @@ -0,0 +1,151 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/H225-generic-parameters-definition.asn b/asn1/h450/H225-generic-parameters-definition.asn new file mode 100644 index 0000000000..84c3e0e756 --- /dev/null +++ b/asn1/h450/H225-generic-parameters-definition.asn @@ -0,0 +1,19 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/H4501-General-Error-List.asn b/asn1/h450/H4501-General-Error-List.asn new file mode 100644 index 0000000000..b14511e467 --- /dev/null +++ b/asn1/h450/H4501-General-Error-List.asn @@ -0,0 +1,102 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn b/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn new file mode 100644 index 0000000000..ad7284dca2 --- /dev/null +++ b/asn1/h450/H4501-Supplementary-ServiceAPDU-Structure.asn @@ -0,0 +1,74 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Makefile b/asn1/h450/Makefile index c7d8051288..08029d5bbf 100644 --- a/asn1/h450/Makefile +++ b/asn1/h450/Makefile @@ -1,14 +1,21 @@ # $Id$ -DISSECTOR_FILES=packet-h450.c packet-h450.h +H450_FILES=packet-$(PROTOCOL_NAME).c +H450_ROS_FILES=packet-$(PROTOCOL_NAME)-ros.c packet-$(PROTOCOL_NAME)-ros.h +DISSECTOR_FILES=$(H450_FILES) $(H450_ROS_FILES) +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 +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 +H450_ROS_ASN=../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn all: generate_dissector generate_dissector: $(DISSECTOR_FILES) -$(DISSECTOR_FILES): ../../tools/asn2wrs.py h4501.asn packet-h450-template.c packet-h450-template.h h450.cnf - python ../../tools/asn2wrs.py -e -p h450 -c h450.cnf -s packet-h450-template h4501.asn +$(H450_FILES): ../../tools/asn2wrs.py $(H450_ASN) $(H450_OP_ASN) packet-h450-template.c packet-h450-template.h h450.cnf + python ../../tools/asn2wrs.py -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template $(H450_ASN) $(H450_OP_ASN) +$(H450_ROS_FILES): ../../tools/asn2wrs.py $(H450_ROS_ASN) packet-$(PROTOCOL_NAME)-ros-template.c $(PROTOCOL_NAME)-ros.cnf + python ../../tools/asn2wrs.py -e -p $(PROTOCOL_NAME).ros -c $(PROTOCOL_NAME)-ros.cnf -o $(PROTOCOL_NAME)-ros -s packet-$(PROTOCOL_NAME)-ros-template $(H450_ROS_ASN) clean: rm -f parsetab.py $(DISSECTOR_FILES) diff --git a/asn1/h450/Makefile.nmake b/asn1/h450/Makefile.nmake index 25377f8d6d..4cd8aff7cd 100644 --- a/asn1/h450/Makefile.nmake +++ b/asn1/h450/Makefile.nmake @@ -7,15 +7,28 @@ include ../../config.nmake UNIX2DOS=$(PERL) ../../tools/unix2dos.pl PROTOCOL_NAME=h450 -DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h +H450_FILES=packet-$(PROTOCOL_NAME).c +H450_ROS_FILES=packet-$(PROTOCOL_NAME)-ros.c packet-$(PROTOCOL_NAME)-ros.h +DISSECTOR_FILES=$(H450_FILES) $(H450_ROS_FILES) +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 +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 +H450_ROS_ASN=../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn all: generate_dissector generate_dissector: $(DISSECTOR_FILES) -$(DISSECTOR_FILES): ../../tools/asn2wrs.py h4501.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf +$(H450_FILES): ../../tools/asn2wrs.py $(H450_ASN) $(H450_OP_ASN) packet-$(PROTOCOL_NAME)-template.c $(PROTOCOL_NAME).cnf !IFDEF PYTHON - $(PYTHON) "../../tools/asn2wrs.py" -e -p h450 -c h450.cnf -s packet-h450-template h4501.asn + $(PYTHON) "../../tools/asn2wrs.py" -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template $(H450_ASN) $(H450_OP_ASN) +!ELSE + @echo Error: You need Python to use asn2wrs.py + @exit 1 +!ENDIF + +$(H450_ROS_FILES): ../../tools/asn2wrs.py $(H450_ROS_ASN) packet-$(PROTOCOL_NAME)-ros-template.c $(PROTOCOL_NAME)-ros.cnf +!IFDEF PYTHON + $(PYTHON) "../../tools/asn2wrs.py" -e -p $(PROTOCOL_NAME).ros -c $(PROTOCOL_NAME)-ros.cnf -o $(PROTOCOL_NAME)-ros -s packet-$(PROTOCOL_NAME)-ros-template $(H450_ROS_ASN) !ELSE @echo Error: You need Python to use asn2wrs.py @exit 1 @@ -35,11 +48,14 @@ maintainer-clean: distclean fix_eol: generate_dissector move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp - move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp + move packet-$(PROTOCOL_NAME)-ros.c packet-$(PROTOCOL_NAME)-ros.c.tmp + move packet-$(PROTOCOL_NAME)-ros.h packet-$(PROTOCOL_NAME)-ros.h.tmp $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c - $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h - del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp + $(UNIX2DOS) < packet-$(PROTOCOL_NAME)-ros.c.tmp > packet-$(PROTOCOL_NAME)-ros.c + $(UNIX2DOS) < packet-$(PROTOCOL_NAME)-ros.h.tmp > packet-$(PROTOCOL_NAME)-ros.h + del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME)-ros.c.tmp packet-$(PROTOCOL_NAME)-ros.h.tmp copy_files: generate_dissector fix_eol xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y - xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y + xcopy packet-$(PROTOCOL_NAME)-ros.c ..\..\epan\dissectors /d /y + xcopy packet-$(PROTOCOL_NAME)-ros.h ..\..\epan\dissectors /d /y diff --git a/asn1/h450/Manufacturer-specific-service-extension-definition.asn b/asn1/h450/Manufacturer-specific-service-extension-definition.asn new file mode 100644 index 0000000000..3d7abae1bd --- /dev/null +++ b/asn1/h450/Manufacturer-specific-service-extension-definition.asn @@ -0,0 +1,33 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Message-Waiting-Indication-Operations.asn b/asn1/h450/Message-Waiting-Indication-Operations.asn new file mode 100644 index 0000000000..8cd0e94fdb --- /dev/null +++ b/asn1/h450/Message-Waiting-Indication-Operations.asn @@ -0,0 +1,171 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Name-Operations.asn b/asn1/h450/Name-Operations.asn new file mode 100644 index 0000000000..0f8cef7f4a --- /dev/null +++ b/asn1/h450/Name-Operations.asn @@ -0,0 +1,99 @@ +-- 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 +-- +-- $Id$ +-- + +-- 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/asn1/h450/Remote-Operations-Apdus.asn b/asn1/h450/Remote-Operations-Apdus.asn new file mode 100644 index 0000000000..72a90352c2 --- /dev/null +++ b/asn1/h450/Remote-Operations-Apdus.asn @@ -0,0 +1,152 @@ +-- Remote-Operations-Apdus.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h450.1/1998/Remote-Operations-Apdus.asn +-- +-- $Id$ +-- + +-- Module Remote-Operations-Apdus (H.450.1:02/1998) +Remote-Operations-Apdus {itu-t recommendation h 450 1 version1(0) + remote-operations-apdus(11)} DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +-- exports everything +IMPORTS + OPERATION, ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)}; + +ROS{InvokeId:InvokeIdSet, OPERATION:Invokable, OPERATION:Returnable} ::= + CHOICE { + invoke [1] Invoke{{InvokeIdSet}, {Invokable}}, + returnResult [2] ReturnResult{{Returnable}}, + returnError [3] ReturnError{{Errors {{Returnable}}}}, + reject [4] Reject +} +(CONSTRAINED BY { -- must conform to the above definition --} ! + RejectProblem:general-unrecognizedPDU) + +Invoke{InvokeId:InvokeIdSet, OPERATION:Operations} ::= SEQUENCE { + invokeId + InvokeId(InvokeIdSet) + (CONSTRAINED BY {-- must be unambiguous -- } ! + RejectProblem:invoke-duplicateInvocation), + linkedId + InvokeId + (CONSTRAINED BY {-- must identify an outstanding operation -- } ! + RejectProblem:invoke-unrecognizedLinkedId) + (CONSTRAINED BY {-- which has one or more linked operations-- } ! + RejectProblem:invoke-linkedResponseUnexpected) OPTIONAL, + opcode + OPERATION.&operationCode + ({Operations} !RejectProblem:invoke-unrecognizedOperation), + argument + OPERATION.&ArgumentType + ({Operations}{@opcode} !RejectProblem:invoke-mistypedArgument) OPTIONAL +} +(CONSTRAINED BY { -- must conform to the above definition --} ! + RejectProblem:general-mistypedPDU) + +--( +-- WITH COMPONENTS +-- { +-- ..., +-- linkedId ABSENT +-- } +-- WITH COMPONENTS { +-- ..., +-- linkedId PRESENT, +-- opcode (CONSTRAINED BY { +-- must be in the &Linked field of the associated operation +-- } ! RejectProblem : invoke-unexpectedLinkedOperation) +-- } +--) +ReturnResult{OPERATION:Operations} ::= SEQUENCE { + invokeId + InvokeId + (CONSTRAINED BY {-- must be that for an outstanding operation -- } ! + RejectProblem:returnResult-unrecognizedInvocation) + (CONSTRAINED BY {-- which returns a result -- } ! + RejectProblem:returnResult-resultResponseUnexpected), + result + SEQUENCE {opcode + OPERATION.&operationCode({Operations}) + (CONSTRAINED BY {-- identified by invokeId -- } ! + RejectProblem:returnResult-unrecognizedInvocation), + result + OPERATION.&ResultType + ({Operations}{@.opcode} ! + RejectProblem:returnResult-mistypedResult)} OPTIONAL +} +(CONSTRAINED BY { -- must conform to the above definition --} ! + RejectProblem:general-mistypedPDU) + +ReturnError{ERROR:Errors} ::= SEQUENCE { + invokeId + InvokeId + (CONSTRAINED BY {-- must be that for an outstanding operation -- } ! + RejectProblem:returnError-unrecognizedInvocation) + (CONSTRAINED BY {-- which returns an error -- } ! + RejectProblem:returnError-errorResponseUnexpected), + errcode + ERROR.&errorCode({Errors} !RejectProblem:returnError-unrecognizedError) + (CONSTRAINED BY {--must be in the &Errors field of the associated operation -- + } !RejectProblem:returnError-unexpectedError), + parameter + ERROR.&ParameterType + ({Errors}{@errcode} !RejectProblem:returnError-mistypedParameter) + OPTIONAL +} +(CONSTRAINED BY { -- must conform to the above definition --} ! + RejectProblem:general-mistypedPDU) + +Reject ::= SEQUENCE { + invokeId InvokeId, + problem + CHOICE {general GeneralProblem, + invoke InvokeProblem, + returnResult ReturnResultProblem, + returnError ReturnErrorProblem} +} +(CONSTRAINED BY { -- must conform to the above definition --} ! + RejectProblem:general-mistypedPDU) + +GeneralProblem ::= INTEGER { + unrecognizedComponent(0), mistypedComponent(1), badlyStructuredComponent(2) +} + +InvokeProblem ::= INTEGER { + duplicateInvocation(0), unrecognizedOperation(1), mistypedArgument(2), + resourceLimitation(3), releaseInProgress(4), unrecognizedLinkedId(5), + linkedResponseUnexpected(6), unexpectedLinkedOperation(7)} + +ReturnResultProblem ::= INTEGER { + unrecognizedInvocation(0), resultResponseUnexpected(1), mistypedResult(2) +} + +ReturnErrorProblem ::= INTEGER { + unrecognizedInvocation(0), errorResponseUnexpected(1), unrecognizedError(2), + unexpectedError(3), mistypedParameter(4)} + +RejectProblem ::= INTEGER { + general-unrecognizedPDU(0), general-mistypedPDU(1), + general-badlyStructuredPDU(2), invoke-duplicateInvocation(10), + invoke-unrecognizedOperation(11), invoke-mistypedArgument(12), + invoke-resourceLimitation(13), invoke-releaseInProgress(14), + invoke-unrecognizedLinkedId(15), invoke-linkedResponseUnexpected(16), + invoke-unexpectedLinkedOperation(17), + returnResult-unrecognizedInvocation(20), + returnResult-resultResponseUnexpected(21), returnResult-mistypedResult(22), + returnError-unrecognizedInvocation(30), + returnError-errorResponseUnexpected(31), returnError-unrecognizedError(32), + returnError-unexpectedError(33), returnError-mistypedParameter(34)} + +InvokeId ::= INTEGER + +Errors{OPERATION:Operations} ERROR ::= {Operations.&Errors} + +END -- end of Remote-Operations-Apdus definitions + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/asn1/h450/h450-ros-exp.cnf b/asn1/h450/h450-ros-exp.cnf new file mode 100644 index 0000000000..d379db5e5c --- /dev/null +++ b/asn1/h450/h450-ros-exp.cnf @@ -0,0 +1,14 @@ +# Do not modify this file. +# It is created automatically by the ASN.1 to Wireshark dissector compiler +# .\h450-ros-exp.cnf +# ../../tools/asn2wrs.py -e -p h450.ros -c h450-ros.cnf -o h450-ros -s packet-h450-ros-template ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn + +#.MODULE +Remote-Operations-Information-Objects h450.ros +Remote-Operations-Apdus h450.ros +#.END + +#.TYPE_ATTR +ROS TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(h450_ros_ROS_vals) BITMASK = 0 +#.END + diff --git a/asn1/h450/h450-ros.cnf b/asn1/h450/h450-ros.cnf new file mode 100644 index 0000000000..ce7f484676 --- /dev/null +++ b/asn1/h450/h450-ros.cnf @@ -0,0 +1,192 @@ + +#.EXPORTS + +ROS + +#.OMIT_ASSIGNMENT + +Priority +RejectProblem + +#.TYPE_RENAME + +Invoke/argument InvokeArgument +ReturnResult/result/result ResultArgument + +#.FIELD_RENAME + +Invoke/invokeId invokeIdConstrained + +Reject/problem/invoke invokeProblem +Reject/problem/returnError returnErrorProblem +Reject/problem/returnResult returnResultProblem + +ReturnResult/result/result resultArgument + +#--- ROS --- + +#.FN_HDR ROS + DISSECTOR_ASSERT(actx->rose_ctx); + rose_ctx_clean_data(actx->rose_ctx); +#.END + +#--- Code --- + +#.FN_PARS +Code VAL_PTR = &%(ACTX)s->rose_ctx->d.code +Code/local VAL_PTR = &%(ACTX)s->rose_ctx->d.code_local +Code/global FN_VARIANT = _str VAL_PTR = &%(ACTX)s->rose_ctx->d.code_global +#.FN_FTR Code + actx->rose_ctx->d.code_item = actx->created_item; +#.END + +#--- Problem --- + +#.FN_PARS +GeneralProblem VAL_PTR = &problem_val +InvokeProblem VAL_PTR = &problem_val +ReturnResultProblem VAL_PTR = &problem_val +ReturnErrorProblem VAL_PTR = &problem_val +#.FN_FTR GeneralProblem + strcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), "")); +#.FN_FTR InvokeProblem + strcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), "")); +#.FN_FTR ReturnResultProblem + strcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), "")); +#.FN_FTR ReturnErrorProblem + strcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), "")); +#.END + +#--- INVOKE --- + +# body is impleneted manually as asn2wrs is not able to handle subtype constraint event passed through parameter +#.FN_BODY Invoke/invokeId + offset = dissect_per_constrained_integer(%(TVB)s, %(OFFSET)s, %(ACTX)s, %(TREE)s, %(HF_INDEX)s, + 0U, 65535U, %(VAL_PTR)s, TRUE); +#.END + +#.FIELD_ATTR +Invoke/argument TYPE = FT_BYTES DISPLAY = BASE_HEX + +#.FN_PARS Invoke/argument +FN_VARIANT = _pdu +TYPE_REF_FN = argument_cb + +#.FN_HDR Invoke + dissector_handle_t arg_handle = NULL; + + arg_next_tvb = NULL; +#.FN_FTR Invoke + actx->rose_ctx->d.pdu = 1; + + if (actx->rose_ctx->d.code == 0) { + arg_handle = dissector_get_port_handle(actx->rose_ctx->arg_local_dissector_table, actx->rose_ctx->d.code_local); + } else if (actx->rose_ctx->d.code == 1) { + arg_handle = dissector_get_string_handle(actx->rose_ctx->arg_global_dissector_table, actx->rose_ctx->d.code_global); + } else { + arg_handle = NULL; + } + + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " INV:"); + if (!arg_handle || + !proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(arg_handle)))) { + if (actx->rose_ctx->d.code == 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %d", actx->rose_ctx->d.code_local); + else if (actx->rose_ctx->d.code == 1) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %s", actx->rose_ctx->d.code_global); + } + if (!arg_next_tvb) { /* empty argument */ + arg_next_tvb = tvb_new_subset(tvb, offset>>3, 0, 0); + } + actx->pinfo->private_data = actx->rose_ctx; + call_dissector((arg_handle)?arg_handle:data_handle, arg_next_tvb, actx->pinfo, tree); +#.END + + +#--- RETURN RESULT --- + +#.FIELD_ATTR +ReturnResult/result/result TYPE = FT_BYTES DISPLAY = BASE_HEX + +#.FN_PARS ReturnResult/result/result +FN_VARIANT = _pdu +TYPE_REF_FN = result_cb + +#.FN_HDR ReturnResult + dissector_handle_t res_handle = NULL; + + res_next_tvb = NULL; +#.FN_FTR ReturnResult + actx->rose_ctx->d.pdu = 2; + + if (actx->rose_ctx->d.code == 0) { + res_handle = dissector_get_port_handle(actx->rose_ctx->res_local_dissector_table, actx->rose_ctx->d.code_local); + } else if (actx->rose_ctx->d.code == 1) { + res_handle = dissector_get_string_handle(actx->rose_ctx->res_global_dissector_table, actx->rose_ctx->d.code_global); + } else { + res_handle = NULL; + } + + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " RES:"); + if (!res_handle || + !proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(res_handle)))) { + if (actx->rose_ctx->d.code == 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %d", actx->rose_ctx->d.code_local); + else if (actx->rose_ctx->d.code == 1) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %s", actx->rose_ctx->d.code_global); + else if (actx->rose_ctx->d.code == -1) /* Code not available */ + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " -"); + } + if (!res_next_tvb) { /* empty result */ + res_next_tvb = tvb_new_subset(tvb, offset>>3, 0, 0); + } + actx->pinfo->private_data = actx->rose_ctx; + call_dissector((res_handle)?res_handle:data_handle, res_next_tvb, actx->pinfo, tree); +#.END + +#--- RETURN ERROR --- + +#.FIELD_ATTR +ReturnError/parameter TYPE = FT_BYTES DISPLAY = BASE_HEX + +#.FN_PARS ReturnError/parameter +FN_VARIANT = _pdu +TYPE_REF_FN = error_cb + +#.FN_HDR ReturnError + dissector_handle_t err_handle = NULL; + + err_next_tvb = NULL; +#.FN_FTR ReturnError + actx->rose_ctx->d.pdu = 3; + + if (actx->rose_ctx->d.code == 0) { + err_handle = dissector_get_port_handle(actx->rose_ctx->err_local_dissector_table, actx->rose_ctx->d.code_local); + } else if (actx->rose_ctx->d.code == 1) { + err_handle = dissector_get_string_handle(actx->rose_ctx->err_global_dissector_table, actx->rose_ctx->d.code_global); + } else { + err_handle = NULL; + } + + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " ERR:"); + if (!err_handle || + !proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(err_handle)))) { + if (actx->rose_ctx->d.code == 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %d", actx->rose_ctx->d.code_local); + else if (actx->rose_ctx->d.code == 1) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %s", actx->rose_ctx->d.code_global); + } + if (!err_next_tvb) { /* empty error */ + err_next_tvb = tvb_new_subset(tvb, offset>>3, 0, 0); + } + actx->pinfo->private_data = actx->rose_ctx; + call_dissector((err_handle)?err_handle:data_handle, err_next_tvb, actx->pinfo, tree); +#.END + +#--- REJECT --- + +#.FN_HDR Reject + problem_str[0] = '\0'; +#.FN_FTR Reject + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " REJ: %s", problem_str); +#.END diff --git a/asn1/h450/h450.cnf b/asn1/h450/h450.cnf index 2f3ef90bdb..2daf6fef43 100644 --- a/asn1/h450/h450.cnf +++ b/asn1/h450/h450.cnf @@ -3,39 +3,61 @@ # Copyright 2004 Anders Broman # $Id$ +#.OPT +PER +ALIGNED +GROUP_BY_PROT +-o h450 +#.END + #.INCLUDE ../h225/h225-exp.cnf +#.INCLUDE h450-ros-exp.cnf #.MODULE -Remote-Operations-Apdus ros + +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 + +#.PDU_NEW +H4501SupplementaryService +OPERATION.&ArgumentType +OPERATION.&ResultType +ERROR.&ParameterType + +#.FN_HDR H4501SupplementaryService + proto_tree_add_item_hidden(tree, proto_h450, tvb, offset, -1, FALSE); #.END -#---------------------------------------------------------------------------------------- -#.PDU -CallTransferIdentify -CallTransferAbandon -CallTransferInitiate -CallTransferSetup -CallTransferUpdate -SubaddressTransfer -CallTransferComplete -CallTransferActive -ActivateDiversionQArg -ActivateDiversionQRes -DeactivateDiversionQRes -InterrogateDiversionQRes -CheckRestrictionRes -CallReroutingRes +#.FN_HDR ServiceApdus/rosApdus/_item + h450_rose_ctx.apdu_depth = 1; + actx->rose_ctx = &h450_rose_ctx; +#.END #.TYPE_RENAME -ActivateDiversionQArg/extension ActivateDiversionQArg_extension -DeactivateDiversionQArg/extension DeactivateDiversionQArg_extension -InterrogateDiversionQ/extension InterrogateDiversionQ_extension -CheckRestrictionArg/extension CheckRestrictionArg_extension -CallReroutingArg/extension CallReroutingArg_extension -DivertingLegInformation1Arg/extension DivertingLegInformation1Arg_extension -DivertingLegInformation2Arg/extension DivertingLegInformation2Arg_extension -DivertingLegInformation3Arg/extension DivertingLegInformation3Arg_extension -DivertingLegInformation4Arg/extension DivertingLegInformation4Arg_extension +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 @@ -57,9 +79,10 @@ SubaddressTransferArg/argumentExtension subaddressTransferArg_argumentExtension CTCompleteArg/argumentExtension cTCompleteArg_argumentExtension CTActiveArg/argumentExtension cTActiveArg_argumentExtension MixedExtension/extension mixedExtension_extension -Unspecified/extension unspecified_extension -CheckRestrictionArg/extension checkRestrictionArg_extension -DivertingLegInformation1Arg/extension divertingLegInformation1Arg_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 @@ -68,12 +91,12 @@ CoReqOptArg/extension coReqOptArg_extension RUAlertOptArg/extension rUAlertOptArg_extension CfbOvrOptArg/extension cfbOvrOptArg_extension CmnArg/extension cmnArg_extension -ActivateDiversionQArg/extension activateDiversionQArg_extension -InterrogateDiversionQ/extension interrogateDiversionQ_extension -CallReroutingArg/extension callReroutingArg_extension -DivertingLegInformation4Arg/extension divertingLegInformation4Arg_extension -DivertingLegInformation3Arg/extension divertingLegInformation3Arg_extension -DeactivateDiversionQArg/extension deactivateDiversionQArg_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 @@ -96,8 +119,6 @@ PickExeArg/extensionArg pickExeArg_extensionArg CpNotifyArg/extensionArg cpNotifyArg_extensionArg CpickupNotifyArg/extensionArg cpickupNotifyArg_extensionArg CallWaitingArg/extensionArg callWaitingArg_extensionArg -NameArg/extensionArg nameArg_extensionArg -CmnRequestArg/extensionArg cmnRequestArg_extensionArg CIRequestArg/argumentExtension cIRequestArg_argumentExtension CIGetCIPLOptArg/argumentExtension cIGetCIPLOptArg_argumentExtension CIIsOptArg/argumentExtension cIIsOptArg_argumentExtension @@ -112,3 +133,19 @@ 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/asn1/h450/h4501.asn b/asn1/h450/h4501.asn deleted file mode 100644 index 387793b43c..0000000000 --- a/asn1/h450/h4501.asn +++ /dev/null @@ -1,1899 +0,0 @@ --- 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, PartyNumber, PresentationIndicator, ScreeningIndicator, NonStandardParameter, CallIdentifier - 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 OF - ROS{x--{InvokeIdSet}, {OperationSet}, {OperationSet}--}, - -- see 8.3; other alternatives may be defined in future versions - ... -} - -Notassignedlocalopcode ::= OCTET STRING -- Dummy assigment used - --- actual values are defined by individual supplementary service specifications --- (e.g. H.450.x or manufacturer specific) --- --- END of H4501- Supplementary-ServiceAPDU-Structure --- Imported : --- 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 ::= -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 - --- 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 ::= --- Edited for Wireshark purposes - -CallTransferIdentify ::= DummyArg -CallTransferAbandon ::= DummyArg -CallTransferInitiate ::= CTInitiateArg -CallTransferSetup ::= CTSetupArg -CallTransferUpdate ::= CTUpdateArg -SubaddressTransfer ::= SubaddressTransferArg -CallTransferComplete ::= CTCompleteArg -CallTransferActive ::= CTActiveArg - -DummyArg ::= CHOICE { - extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter -} -DummyRes ::= CHOICE { - extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter -} - -CTInitiateArg ::= SEQUENCE { - callIdentity CallIdentity, - reroutingNumber EndpointAddress, - argumentExtension ArgumentExtension OPTIONAL, - ... -} -ArgumentExtension ::= CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} - -CTSetupArg ::= SEQUENCE { - callIdentity CallIdentity, - transferringNumber EndpointAddress OPTIONAL, - argumentExtension ArgumentExtension 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 ArgumentExtension OPTIONAL, - ... -} - -SubaddressTransferArg ::= SEQUENCE { - redirectionSubaddress PartySubaddress, - argumentExtension ArgumentExtension 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 ArgumentExtension 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 ArgumentExtension OPTIONAL, - ... -} - -CallIdentity ::= NumericString(SIZE (0..4)) --- size 0 means 'empty' - -ExtensionSeq ::= SEQUENCE OF Extension ---END --- of Call-Transfer-Operations - --- 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)}; --- activateDiversionQ OPERATION ::= --- { sent from the activating h.323-endpoint to the served h.323-endpoint --- ARGUMENT -ActivateDiversionQArg ::= SEQUENCE {procedure Procedure, - basicService BasicService, - divertedToAddress EndpointAddress, - servedUserNr EndpointAddress, - activatingUserNr EndpointAddress, - extension - CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} OPTIONAL, - ...} --- RESULT -ActivateDiversionQRes ::= - CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} - --- deactivateDiversionQ OPERATION ::= --- { sent from the deactivating h.323-endpoint to the served h.323-endpoint --- ARGUMENT -DeactivateDiversionQArg ::= - SEQUENCE {procedure Procedure, - basicService BasicService, - servedUserNr EndpointAddress, - deactivatingUserNr EndpointAddress, - extension - CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} OPTIONAL, - ...} --- RESULT -DeactivateDiversionQRes ::= - 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 -InterrogateDiversionQ ::= SEQUENCE {procedure Procedure, - basicService BasicService DEFAULT allServices, - servedUserNr EndpointAddress, - interrogatingUserNr EndpointAddress, - extension - CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} OPTIONAL, - ...} --- RESULT IntResultList -InterrogateDiversionQRes ::= 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 -CheckRestrictionArg ::= - SEQUENCE {servedUserNr EndpointAddress, - basicService BasicService, - divertedToNr EndpointAddress, - extension - CHOICE {extensionSeq ExtensionSeq, - nonStandardData NonStandardParameter} OPTIONAL, - ...} - -- RESULT -CheckRestrictionRes ::= 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 -CallReroutingArg ::= - 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 -CallReroutingRes ::= 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 -DivertingLegInformation1Arg ::= - 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 -DivertingLegInformation2Arg ::= - 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 -DivertingLegInformation3Arg ::= - 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 -DivertingLegInformation4Arg ::= 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 -CfnrDivertedLegFailedArg ::= - 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, --- nonStandard NonStandardParameter} --- CODE local:1008 --- } --- BasicService defined for MWI should do for Wireshark purposes - -- 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. --- Defined elsewhere for Wireshark --- ExtensionSeq ::= SEQUENCE OF Extension --- --- ExtensionSet EXTENSION ::= --- {...} - --- Actual values defined by individual manufacturers --- END --- of Call-Diversion-Operations - --- 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, - 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 - - - --- 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 - --- 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 - - --- 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 ::= ---H323-MWI-Operations OPERATION ::= --- {mwiActivate | mwiDeactivate | mwiInterrogate} - -MwiActivate ::= MWIActivateArg -MwiDeactivate ::= MWIDeactivateArg - -MwiInterrogate ::= MWIInterrogateArg - -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 ExtensionArg OPTIONAL, - ... -} - -MwiDummyRes ::= SEQUENCE SIZE (0..255) OF MixedExtension - -MWIDeactivateArg ::= SEQUENCE { - servedUserNr EndpointAddress, - basicService BasicService, - msgCentreId MsgCentreId OPTIONAL, - callbackReq BOOLEAN OPTIONAL, - extensionArg ExtensionArg OPTIONAL, - ... -} - -MWIInterrogateArg ::= SEQUENCE { - servedUserNr EndpointAddress, - basicService BasicService, - msgCentreId MsgCentreId OPTIONAL, - callbackReq BOOLEAN OPTIONAL, - extensionArg ExtensionArg 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 ExtensionArg OPTIONAL, - ... -} - -MsgCentreId ::= CHOICE { - -- only partyNumber provides a callable identification - integer INTEGER(0..65535), - mwipartyNumber EndpointAddress, - numericString NumericString(SIZE (1..10)) -} - -NbOfMessages ::= INTEGER(0..65535) - -TimeStamp ::= GeneralizedTime(SIZE (12..19)) - -ExtensionArg ::= SEQUENCE SIZE (0..255) OF MixedExtension - --- 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 - --- 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 --- } --- It all translates to NameArg doesn't it ? - -NameArg ::= SEQUENCE {name Name, - extensionArg SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL, - ...} - -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 --- 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 - --- 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 --- 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 - --- 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 used as CmnRequestArg ( Wireshark ) --- 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, - ... -} - -CmnRequestArg ::= 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 - - - - --- --- 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 - --- Actual values defined by individual manufacturers -Unspecified ::= - CHOICE {extension Extension, - nonStandard NonStandardParameter} - --- 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 --- 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 ::= - -H225InformationElement ::= OCTET STRING - ---END --- of H225 Generic parameters definition --- 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}) ---} --- Wireshark adaptation NEEDS VERIFICATION ! - Extension ::= SEQUENCE { - extensionId OBJECT IDENTIFIER, - extensionArgument ExtensionArgument - } -ExtensionArgument ::= OCTET STRING - --- 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 - -END -- of H4501- Supplementary-ServiceAPDU-Structure - --- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D - diff --git a/asn1/h450/packet-h450-ros-template.c b/asn1/h450/packet-h450-ros-template.c new file mode 100644 index 0000000000..8b0f00e4d8 --- /dev/null +++ b/asn1/h450/packet-h450-ros-template.c @@ -0,0 +1,107 @@ +/* packet-h450-ros.c + * Routines for H.450 packet dissection + * 2007 Tomas Kukosa + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <string.h> + +#include <epan/packet.h> +#include <epan/prefs.h> +#include <epan/strutil.h> +#include <epan/emem.h> +#include <epan/asn1.h> + +#include "packet-per.h" + +#define PNAME "H.450 Remote Operations Apdus" +#define PSNAME "H450.ROS" +#define PFNAME "h450.ros" + +/* Initialize the protocol and registered fields */ +int proto_h450_ros = -1; +#include "packet-h450-ros-hf.c" + +/* Initialize the subtree pointers */ +#include "packet-h450-ros-ett.c" + +/* Preferences */ + +/* Subdissectors */ +static dissector_handle_t data_handle = NULL; + +/* Gloabl variables */ +static rose_ctx_t *rose_ctx_tmp; + +static guint32 problem_val; +static gchar problem_str[64]; +static tvbuff_t *arg_next_tvb, *res_next_tvb, *err_next_tvb; + +static void +argument_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) { + arg_next_tvb = tvb; +} + +static void +result_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) { + res_next_tvb = tvb; +} + +static void +error_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) { + err_next_tvb = tvb; +} + +#include "packet-h450-ros-fn.c" + +/*--- proto_register_h450_ros -----------------------------------------------*/ +void proto_register_h450_ros(void) { + + /* List of fields */ + static hf_register_info hf[] = { +#include "packet-h450-ros-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { +#include "packet-h450-ros-ettarr.c" + }; + + /* Register protocol and dissector */ + proto_h450_ros = proto_register_protocol(PNAME, PSNAME, PFNAME); + proto_set_cant_toggle(proto_h450_ros); + + /* Register fields and subtrees */ + proto_register_field_array(proto_h450_ros, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); +} + +/*--- proto_reg_handoff_h450_ros --------------------------------------------*/ +void proto_reg_handoff_h450_ros(void) { + data_handle = find_dissector("data"); +} + +/*---------------------------------------------------------------------------*/ diff --git a/asn1/h450/packet-h450-template.h b/asn1/h450/packet-h450-ros-template.h index d5ef3020be..47c2e66dee 100644 --- a/asn1/h450/packet-h450-template.h +++ b/asn1/h450/packet-h450-ros-template.h @@ -1,6 +1,6 @@ -/* packet-h450.h - * Routines for h450 packet dissection - * Copyright 2005, Anders Broman <anders.broman@ericsson.com> +/* packet-h450-ros.h + * Routines for H.450 packet dissection + * 2007 Tomas Kukosa * * $Id$ * @@ -23,13 +23,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef PACKET_H450_H -#define PACKET_H450_H +#ifndef PACKET_H450_ROS_H +#define PACKET_H450_ROS_H +#include "packet-h450-ros-exp.h" - -/*#include "packet-H450-exp.h" */ - -#endif /* PACKET_H450_H */ - +#endif /* PACKET_H450_ROS_H */ diff --git a/asn1/h450/packet-h450-template.c b/asn1/h450/packet-h450-template.c index 1776b2da63..fa3b73e5fe 100644 --- a/asn1/h450/packet-h450-template.c +++ b/asn1/h450/packet-h450-template.c @@ -38,1042 +38,265 @@ #include <stdio.h> #include <string.h> - #include <epan/asn1.h> -#include "packet-h450.h" -#include "packet-ber.h" #include "packet-per.h" #include "packet-h225.h" -#define PNAME "h450" -#define PSNAME "h450" -#define PFNAME "h450" -/* H.450.2 Call Transfer constants */ -#define CallTransferIdentify 7 -#define CallTransferAbandon 8 -#define CallTransferInitiate 9 -#define CallTransferSetup 10 -#define CallTransferUpdate 13 -#define SubaddressTransfer 14 -#define CallTransferComplete 12 -#define CallTransferActive 11 - -/* H.450.3 Call Diversion constants */ -#define ActivateDiversionQ 15 -#define DeactivateDiversionQ 16 -#define InterrogateDiversionQ 17 -#define CheckRestriction 18 -#define CallRerouting 19 -#define DivertingLegInformation1 20 -#define DivertingLegInformation2 21 -#define DivertingLegInformation3 22 -#define DivertingLegInformation4 100 -#define CfnrDivertedLegFailed 23 - -/* H.450.4 Call Hold constants */ -#define HoldNotific 101 -#define RetrieveNotific 102 -#define RemoteHold 103 -#define RemoteRetrieve 104 - -/* H.450.5 Call Park and Pickup constants */ -#define CpRequest 106 -#define CpSetup 107 -#define GroupIndicationOn 108 -#define GroupIndicationOff 109 -#define Pickrequ 110 -#define Pickup 111 -#define PickExe 112 -#define CpNotify 113 -#define CpickupNotify 114 - -/* H.450.6 Call Waiting constants */ -#define CallWaiting 105 - -/* H.450.7 Message Waiting Indication constants */ -#define MWIActivate 80 -#define MWIDeactivate 81 -#define MWIInterrogate 82 - -/* H.450.8 Name Identification constants */ -#define NIcallingName 0 -#define NIalertingName 1 -#define NIconnectedName 2 -#define NIbusyName 3 - -/* H.450.9 Call Completion constants */ -#define CCBSRequest 40 -#define CCNRRequest 27 -#define CCCancel 28 -#define CCExecPossible 29 -#define CCRingout 31 -#define CCSuspend 32 -#define CCResume 33 - -/* H.450.10 Call Offer constants */ -#define CallOfferRequest 34 -#define RemoteUserAlerting 115 -#define CFBOverride 49 +#include "packet-h450-ros.h" -/* H.450.11 Call Intrusion constants */ -#define CallIntrusionRequest 43 -#define CallIntrusionGetCIPL 44 -#define CallIntrusionIsolate 45 -#define CallIntrusionForcedRelease 46 -#define CallIntrusionWOBRequest 47 -#define CallIntrusionSilentMonitor 116 -#define CallIntrusionNotification 117 - -/* H.450.12 Common Information Operations constants */ -#define CmnRequest 84 -#define CmnInform 85 - -/* TODO - define other H.450.x constants here */ -static dissector_handle_t h4501_handle=NULL; +#define PNAME "H.450 Supplementary Services" +#define PSNAME "H450" +#define PFNAME "h450" /* Initialize the protocol and registered fields */ -static int proto_h4501 = -1; - -static int hf_h4501 = -1; -static int hf_h4501_dummy = -1; -static int hf_h4501_constrained_invokeId = -1; -static int hf_h4501_invokeId = -1; -static int hf_h4501_localOpcode = -1; -static int hf_h4501_globalCode = -1; -static int hf_h4501_globalargument = -1; -static int hf_h4501_opcode = -1; -static int hf_h4501_ReturnResult_result = -1; -static int hf_h4501_result = -1; -static int hf_h4501_ReturnResult = -1; -static int hf_h4501_localErrorCode = -1; -static int hf_h4501_errorCode = -1; -static int hf_h4501_parameter = -1; -static int hf_h4501_ReturnError = -1; -static int hf_h4501_GeneralProblem = -1; -static int hf_h4501_InvokeProblem = -1; -static int hf_h4501_ReturnResultProblem = -1; -static int hf_h4501_ReturnErrorProblem = -1; -static int hf_h4501_problem = -1; -static int hf_h4501_Reject = -1; - -static int hf_h4502_CTIdentifyRes = -1; -static int hf_h4502_DummyRes = -1; -static int hf_h4502_DummyArg = -1; - -static int hf_h4503DeactivateDiversionQArg = -1; -static int hf_h4503InterrogateDiversionQ = -1; -static int hf_h4503CheckRestrictionArg = -1; -static int hf_h4503CallReroutingArg = -1; -static int hf_h4503DivertingLegInformation1Arg = -1; -static int hf_h4503DivertingLegInformation2Arg = -1; -static int hf_h4503DivertingLegInformation3Arg = -1; -static int hf_h4503DivertingLegInformation4Arg = -1; -static int hf_h4503CfnrDivertedLegFailedArg = -1; - -static int hf_h4504_HoldNotificArg = -1; -static int hf_h4504_RetrieveNotificArg = -1; -static int hf_h4504_RemoteHoldArg = -1; -static int hf_h4504_RemoteRetrieveArg = -1; -static int hf_h4504_RemoteRetrieveRes = -1; - -static int hf_h4507_MWIActivateArg = -1; -static int hf_h4507_MWIDeactivateArg = -1; -static int hf_h4507_MwiDummyRes = -1; -static int hf_h4507_MWIInterrogateArg = -1; -static int hf_h4507_MWIInterrogateRes = -1; - -static int hf_h4508_CallingNameArg = -1; -static int hf_h4508_AlertingNameArg = -1; -static int hf_h4508_ConnectedNameArg = -1; -static int hf_h4508_BusyNameArg = -1; -static int hf_h45012_CmnRequest = -1; -static int hf_h45012_CmnInform = -1; - -static int hf_h4501_Invoke = -1; -static int hf_h4501_ROS = -1; - +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 */ -static gint ett_h4501 = -1; -static gint ett_h4501_opcode = -1; -static gint ett_h4501_result = -1; -static gint ett_h4501_errorCode = -1; - -static gint ett_h4501_problem = -1; -static gint ett_h4501_Reject = -1; -static gint ett_h4501_ReturnError = -1; -static gint ett_h4501_ReturnResult = -1; -static gint ett_h4501_Invoke = -1; -static gint ett_h4501_ROS = -1; - #include "packet-h450-ett.c" -/* Global variables */ -static guint32 localOpcode; -static guint32 localErrorCode; -static const char *globalcode_oid_str; -static gboolean is_globalcode; - -static const value_string localOpcode_vals[] = { - /* H.450.2 Call Transfer opcodes */ - { CallTransferIdentify, "callTransferIdentify"}, - { CallTransferAbandon, "callTransferAbandon"}, - { CallTransferInitiate, "callTransferInitiate"}, - { CallTransferSetup, "callTransferSetup"}, - { CallTransferUpdate, "callTransferUpdate"}, - { SubaddressTransfer, "subaddressTransfer"}, - { CallTransferComplete, "callTransferComplete"}, - { CallTransferActive, "callTransferActive"}, - - /* H.450.3 Call Diversion opcodes */ - { ActivateDiversionQ, "activateDiversionQ"}, - { DeactivateDiversionQ, "deactivateDiversionQ"}, - { InterrogateDiversionQ, "interrogateDiversionQ"}, - { CheckRestriction, "checkRestriction"}, - { CallRerouting, "callRerouting"}, - { DivertingLegInformation1,"divertingLegInformation1"}, - { DivertingLegInformation2,"divertingLegInformation2"}, - { DivertingLegInformation3,"divertingLegInformation3"}, - { DivertingLegInformation4,"divertingLegInformation4"}, - { CfnrDivertedLegFailed, "cfnrDivertedLegFailed"}, - - /* H.450.4 Call Hold opcodes */ - { HoldNotific, "holdNotific"}, - { RetrieveNotific, "retrieveNotific"}, - { RemoteHold, "remoteHold"}, - { RemoteRetrieve, "remoteRetrieve"}, - - /* H.450.5 Call Park and Pickup opcodes */ - { CpRequest, "cpRequest"}, - { CpSetup, "cpSetup"}, - { GroupIndicationOn, "groupIndicationOn"}, - { GroupIndicationOff, "groupIndicationOff"}, - { Pickrequ, "pickrequ"}, - { Pickup, "pickup"}, - { PickExe, "pickExe"}, - { CpNotify, "cpNotify"}, - { CpickupNotify, "cpickupNotify"}, - - /* H.450.6 Call Waiting opcodes */ - { CallWaiting, "callWaiting"}, - - /* H.450.7 Message Waiting Indication constants */ - { MWIActivate, "mwiActivate"}, - { MWIDeactivate, "mwiDeactivate"}, - { MWIInterrogate, "mwiInterrogate"}, - - /* H.450.8 Name Identification constants */ - { NIcallingName, "niCallingName"}, - { NIalertingName, "niAlertingName"}, - { NIconnectedName, "niConnectedName"}, - { NIbusyName, "niBusyName"}, - - /* H.450.9 Call Completion constants */ - { CCBSRequest, "ccbsRequest"}, - { CCNRRequest, "ccnrRequest"}, - { CCCancel, "ccCancel"}, - { CCExecPossible, "ccExecPossible"}, - { CCRingout, "ccRingout"}, - { CCSuspend, "ccSuspend"}, - { CCResume, "ccResume"}, - - /* H.450.10 Call Offer constants */ - { CallOfferRequest, "callOfferRequest"}, - { RemoteUserAlerting, "remoteUserAlerting"}, - { CFBOverride, "cfbOverride"}, - - /* H.450.11 Call Intrusion constants */ - { CallIntrusionRequest, "callIntrusionRequest"}, - { CallIntrusionGetCIPL, "callIntrusionGetCIPL"}, - { CallIntrusionIsolate, "callIntrusionIsolate"}, - { CallIntrusionForcedRelease,"callIntrusionForcedRelease"}, - { CallIntrusionWOBRequest, "callIntrusionWOBRequest"}, - { CallIntrusionSilentMonitor,"callIntrusionSilentMonitor"}, - { CallIntrusionNotification, "callIntrusionNotification"}, - - /* TODO - add other H.450.x invoke opcodes here */ -/* H.450.12 Common Information Operations constants */ - { CmnRequest, "CmnRequest"}, - { CmnInform, "CmnInform"}, - { 0, NULL } +static const value_string h450_str_operation[] = { +#include "packet-h450-table10.c" + { 0, NULL} }; -static int dissect_h4501_Argument(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index); -static int dissect_ros_ROS(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_ind _U_); - - - -#include "packet-h450-fn.c" - -static const value_string InvokeProblem_vals[] = { - { 0, "duplicateInvocation"}, - { 1, "unrecognizedOperation"}, - { 2, "mistypedArgument"}, - { 3, "resourceLimitation"}, - { 4, "releaseInProgress"}, - { 5, "unrecognizedLinkedId"}, - { 6, "linkedResponseUnexpected"}, - { 7, "unexpectedLinkedOperation"}, - { 0, NULL } -}; -static int -dissect_h4501_InvokeProblem(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0, 7, NULL, FALSE); - return offset; -} - - -static const value_string ReturnResultProblem_vals[] = { - { 0, "unrecognizedInvocation"}, - { 1, "resultResponseUnexpected"}, - { 2, "mistypedResult"}, - { 0, NULL } +static const value_string h450_str_error[] = { +#include "packet-h450-table20.c" + { 0, NULL} }; -static int -dissect_h4501_ReturnResultProblem(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0, 2, NULL, FALSE); - return offset; -} - - -static const value_string ReturnErrorProblem_vals[] = { - { 0, "unrecognizedInvocation"}, - { 1, "errorResponseUnexpected"}, - { 2, "unrecognizedError"}, - { 3, "unexpectedError"}, - { 4, "mistypedParameter"}, - { 0, NULL } -}; -static int -dissect_h4501_ReturnErrorProblem(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0, 4, NULL, FALSE); - return offset; -} - -static const value_string GeneralProblem_vals[] = { - { 0, "unrecognizedCompenent"}, - { 1, "mistypedCompenent"}, - { 2, "badlyStructuredCompenent"}, - { 0, NULL } -}; -static int -dissect_h4501_GeneralProblem(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0, 2, NULL, FALSE); - return offset; -} -static int -dissect_h4501_ReturnResult_result(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - tvbuff_t *result_tvb = NULL; - offset=dissect_per_octet_string(tvb, offset, actx, tree, -1, NO_BOUND, NO_BOUND, &result_tvb); +/* ROSE context */ +static rose_ctx_t h450_rose_ctx; - if(tvb_length(result_tvb)){ - switch (localOpcode) { - case CallTransferIdentify: - dissect_h450_CTIdentifyRes(result_tvb, 0, actx, tree, hf_h4502_CTIdentifyRes); - break; +/* Subdissectors */ +static dissector_handle_t data_handle = NULL; - case CallTransferInitiate: - case CallTransferSetup: - dissect_h450_DummyRes(result_tvb, 0, actx , tree, hf_h4502_DummyRes); - break; - - case ActivateDiversionQ: - dissect_ActivateDiversionQRes_PDU(result_tvb, actx->pinfo, tree); - break; - case DeactivateDiversionQ: - dissect_DeactivateDiversionQRes_PDU(result_tvb, actx->pinfo, tree); - break; - case InterrogateDiversionQ: - dissect_InterrogateDiversionQRes_PDU(result_tvb, actx->pinfo, tree); - break; - case CheckRestriction: - dissect_CheckRestrictionRes_PDU(result_tvb, actx->pinfo, tree); - break; - case CallRerouting: - dissect_CallReroutingRes_PDU(result_tvb, actx->pinfo, tree); - break; - - case RemoteRetrieve: - dissect_h450_RemoteRetrieveRes(result_tvb, 0, actx , tree, hf_h4504_RemoteRetrieveRes); - break; - case MWIActivate: - dissect_h450_MwiDummyRes(result_tvb, 0, actx , tree, hf_h4507_MwiDummyRes); - break; - case MWIDeactivate: - dissect_h450_MwiDummyRes(result_tvb, 0, actx , tree, hf_h4507_MwiDummyRes); - break; - case MWIInterrogate: - dissect_h450_MWIInterrogateRes(result_tvb, 0, actx , tree, hf_h4507_MWIInterrogateRes); - break; - - default: -PER_NOT_DECODED_YET("Unrecognized H.450.x return result"); - break; - } - } - - return offset; -} - -static int -dissect_h4501_LocalOpcode(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_integer(tvb, offset, actx, tree, hf_index, &localOpcode); - is_globalcode = FALSE; - return offset; -} - - -static int -dissect_h4501_GlobalCode(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &globalcode_oid_str); - is_globalcode = TRUE; - return offset; -} - - -static const value_string opcode_vals[] = { - { 0, "local" }, - { 1, "global" }, - { 0, NULL} -}; -static const per_choice_t opcode_choice[] = { - { 0, &hf_h4501_localOpcode, ASN1_NO_EXTENSIONS, - dissect_h4501_LocalOpcode }, - { 1, &hf_h4501_globalCode, ASN1_NO_EXTENSIONS, - dissect_h4501_GlobalCode }, - { 0, NULL, 0, NULL } -}; -static int -dissect_h4501_Opcode(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h4501_opcode, opcode_choice, NULL); - return offset; -} - -static const per_sequence_t result_sequence[] = { - { &hf_h4501_opcode, ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, - dissect_h4501_Opcode }, - { &hf_h4501_dummy, ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, - dissect_h4501_ReturnResult_result }, - { NULL, 0, 0, NULL } -}; -static int -dissect_h4501_Result(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h4501_result, result_sequence); - return offset; -} - -static int -dissect_h4501_Parameter(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - /* TODO - decode return error parameter based on localErrorCode */ - offset=dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, NULL); - return offset; -} -static const value_string localErrorCode_vals[] = { - /* H.450.1 general error list */ - { 0, "userNotSubscribed"}, - { 1, "RejectedByNetwork"}, - { 2, "RejectedByUser"}, - { 3, "NotAvailable"}, - { 5, "InsufficientInformation"}, - { 6, "InvalidServedUserNumber"}, - { 7, "InvalidCallState"}, - { 8, "BasicServiceNotProvided"}, - { 9, "NotIncomingCall"}, - { 10, "SupplementaryServiceInteractionNotAllowed"}, - { 11, "ResourceUnavailable"}, - { 25, "CallFailure"}, - { 43, "ProceduralError"}, - - /* H.450.2 Call Transfer return errors */ - { 1004, "invalidReroutingNumber"}, - { 1005, "unrecognizedCallIdentity"}, - { 1006, "establishmentFailure"}, - { 1008, "unspecified"}, - - /* H.450.4 Call Hold return errors */ - { 2002, "undefined"}, - - /* H.450.5 Call Park and Pickup return errors */ - { 2000, "callPickupIdInvalid"}, - { 2001, "callAlreadyPickedUp"}, - - /* H.450.7 Message Waiting Indication return errors */ - { 1018, "invalidMsgCentreId"}, - { 31, "notActivated"}, - - /* H.450.9 Call Completion return errors */ - { 1010, "shortTermRejection"}, - { 1011, "longTermRejection"}, - { 1012, "remoteUserBusyAgain"}, - { 1013, "failureToMatch"}, - - /* H.450.11 Call Intrusion return errors */ - { 1009, "notBusy"}, - { 1000, "temporarilyUnavailable"}, - { 1007, "notAuthorized"}, - - /* TODO - add other H.450.x error codes here */ - - { 0, NULL } -}; -static int -dissect_h4501_LocalErrorCode(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_integer(tvb, offset, actx, tree, hf_index, &localErrorCode); - return offset; -} - - -static const value_string errorCode_vals[] = { - { 0, "local" }, - { 1, "global" }, - { 0, NULL} -}; -static const per_choice_t errorCode_choice[] = { - { 0, &hf_h4501_localErrorCode, ASN1_NO_EXTENSIONS, - dissect_h4501_LocalErrorCode }, - { 1, &hf_h4501_globalCode, ASN1_NO_EXTENSIONS, - dissect_h4501_GlobalCode }, - { 0, NULL, 0, NULL } -}; -static int -dissect_h4501_ErrorCode(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h4501_errorCode, errorCode_choice, NULL); - return offset; -} - -static const value_string problem_vals[] = { - { 0, "general" }, - { 1, "invoke" }, - { 2, "returnResult" }, - { 3, "returnError" }, - { 0, NULL} -}; -static const per_choice_t problem_choice[] = { - { 0, &hf_h4501_GeneralProblem, ASN1_NO_EXTENSIONS, - dissect_h4501_GeneralProblem }, - { 1, &hf_h4501_InvokeProblem, ASN1_NO_EXTENSIONS, - dissect_h4501_InvokeProblem }, - { 2, &hf_h4501_ReturnResultProblem, ASN1_NO_EXTENSIONS, - dissect_h4501_ReturnResultProblem }, - { 3, &hf_h4501_ReturnErrorProblem, ASN1_NO_EXTENSIONS, - dissect_h4501_ReturnErrorProblem }, - { 0, NULL, 0, NULL } -}; -static int -dissect_h4501_Problem(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h4501_problem, problem_choice, NULL); - return offset; -} -static int -dissect_h4501_Constrained_invokeId(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0, 65535, NULL, FALSE); - return offset; -} +/* Global variables */ +#include "packet-h450-fn.c" -static int -dissect_h4501_InvokeId(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); - return offset; +typedef struct _h450_op_t { + gint32 opcode; + new_dissector_t arg_pdu; + new_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; + new_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 occurence 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 per_sequence_t Reject_sequence[] = { - { &hf_h4501_invokeId, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_InvokeId }, - { &hf_h4501_problem, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_Problem }, - { NULL, 0, 0, NULL } -}; -static int -dissect_h4501_Reject(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h4501_Reject, Reject_sequence); - return offset; -} +static const h450_err_t *get_err(gint32 errcode) { + int i; -static const per_sequence_t ReturnError_sequence[] = { - { &hf_h4501_invokeId, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_InvokeId }, - { &hf_h4501_errorCode, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_ErrorCode }, - { &hf_h4501_parameter, ASN1_NO_EXTENSIONS, ASN1_OPTIONAL, - dissect_h4501_Parameter }, - { NULL, 0, 0, NULL } -}; -static int -dissect_h4501_ReturnError(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h4501_ReturnError, ReturnError_sequence); - return offset; + /* search from the end to get the last occurence 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; } -static const per_sequence_t ReturnResult_sequence[] = { - { &hf_h4501_invokeId, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_InvokeId }, - { &hf_h4501_result, ASN1_NO_EXTENSIONS, ASN1_OPTIONAL, - dissect_h4501_Result }, - { NULL, 0, 0, NULL } -}; -static int -dissect_h4501_ReturnResult(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h4501_ReturnResult, ReturnResult_sequence); - return offset; -} +/*--- dissect_h450_arg ------------------------------------------------------*/ +static int +dissect_h450_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + int offset; + rose_ctx_t *rctx; + gint32 opcode; + const h450_op_t *op_ptr; + const gchar *p; + + offset = 0; + rctx = get_rose_ctx(pinfo->private_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; + + proto_tree_add_uint_hidden(tree, hf_h450_operation, tvb, 0, 0, opcode); + p = match_strval(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); + } -static const per_sequence_t Invoke_sequence[] = { - { &hf_h4501_constrained_invokeId, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_Constrained_invokeId }, - { &hf_h4501_invokeId, ASN1_NO_EXTENSIONS, ASN1_OPTIONAL, - dissect_h4501_InvokeId }, - { &hf_h4501_opcode, ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL, - dissect_h4501_Opcode }, - { &hf_h4501_dummy, ASN1_NO_EXTENSIONS, ASN1_OPTIONAL, - dissect_h4501_Argument }, - { NULL, 0, 0, NULL } -}; -static int -dissect_h4501_Invoke(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - offset=dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h4501_Invoke, Invoke_sequence); - return offset; -} + if (op_ptr->arg_pdu && (tvb_length_remaining(tvb, offset) > 0)) + offset = op_ptr->arg_pdu(tvb, pinfo, tree); + else + if (tvb_length_remaining(tvb, offset) > 0) { + proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED ARGUMENT TYPE (H.450)"); + offset += tvb_length_remaining(tvb, offset); + } -static const value_string ROS_vals[] = { - { 1, "invoke" }, - { 2, "returnResult" }, - { 3, "returnError" }, - { 4, "reject" }, - { 0, NULL} -}; -static const per_choice_t ROS_choice[] = { - { 1, &hf_h4501_Invoke, ASN1_NO_EXTENSIONS, - dissect_h4501_Invoke }, - { 2, &hf_h4501_ReturnResult, ASN1_NO_EXTENSIONS, - dissect_h4501_ReturnResult }, - { 3, &hf_h4501_ReturnError, ASN1_NO_EXTENSIONS, - dissect_h4501_ReturnError }, - { 4, &hf_h4501_Reject, ASN1_NO_EXTENSIONS, - dissect_h4501_Reject }, - { 0, NULL, 0, NULL } -}; -static int -dissect_h4501_ROS(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree) -{ - offset=dissect_per_choice(tvb, offset, actx, tree, hf_h4501_ROS, ett_h4501_ROS, ROS_choice, NULL); - return offset; + return offset; } -static int -dissect_h4501_Argument(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index) -{ - tvbuff_t *argument_tvb = NULL; - - if ( is_globalcode ){ - /* TODO call oid dissector - * call_ber_oid_callback isn't realy apropriate ? - */ - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_h4501_globalargument, NO_BOUND, NO_BOUND, NULL); - is_globalcode = FALSE; - return offset; - +/*--- dissect_h450_res ------------------------------------------------------*/ +static int +dissect_h450_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + int offset; + rose_ctx_t *rctx; + gint32 opcode; + const h450_op_t *op_ptr; + const gchar *p; + + offset = 0; + rctx = get_rose_ctx(pinfo->private_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; + + proto_tree_add_uint_hidden(tree, hf_h450_operation, tvb, 0, 0, opcode); + p = match_strval(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); } - offset=dissect_per_octet_string(tvb, offset, actx, tree, -1, NO_BOUND, NO_BOUND, &argument_tvb); - - if(tvb_length(argument_tvb)){ - switch (localOpcode) { - /* h450.2 */ - case CallTransferIdentify: /* Localvalue 7 */ - dissect_CallTransferIdentify_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferAbandon: /* Localvalue 8 */ - dissect_CallTransferAbandon_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferInitiate: /* Localvalue 9 */ - dissect_CallTransferInitiate_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferSetup: /* Localvalue 10 */ - dissect_CallTransferSetup_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferUpdate: /* Localvalue 13 */ - dissect_CallTransferUpdate_PDU(argument_tvb, actx->pinfo, tree); - break; - case SubaddressTransfer: /* Localvalue 14 */ - dissect_SubaddressTransfer_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferComplete: /* Localvalue 12 */ - dissect_CallTransferComplete_PDU(argument_tvb, actx->pinfo, tree); - break; - case CallTransferActive: /* Localvalue 11 */ - dissect_CallTransferActive_PDU(argument_tvb, actx->pinfo, tree); - break; - /* h450.3*/ - case ActivateDiversionQ: /* Localvalue 15 */ - dissect_ActivateDiversionQArg_PDU(argument_tvb, actx->pinfo, tree); - break; - case DeactivateDiversionQ: /* Localvalue 16 */ - dissect_h450_DeactivateDiversionQArg(argument_tvb, 0, actx , tree, hf_h4503DeactivateDiversionQArg); - break; - case InterrogateDiversionQ: /* Localvalue 17 */ - dissect_h450_InterrogateDiversionQ(argument_tvb, 0, actx , tree, hf_h4503InterrogateDiversionQ); - break; - case CheckRestriction: /* Localvalue 18 */ - dissect_h450_CheckRestrictionArg(argument_tvb, 0, actx , tree, hf_h4503CheckRestrictionArg); - break; - case CallRerouting: /* Localvalue 19 */ - dissect_h450_CallReroutingArg(argument_tvb, 0, actx , tree, hf_h4503CallReroutingArg); - break; - case DivertingLegInformation1: /* Localvalue 20 */ - dissect_h450_DivertingLegInformation1Arg(argument_tvb, 0, actx , tree, hf_h4503DivertingLegInformation1Arg); - break; - case DivertingLegInformation2: /* Localvalue 21 */ - dissect_h450_DivertingLegInformation2Arg(argument_tvb, 0, actx , tree, hf_h4503DivertingLegInformation2Arg); - break; - case DivertingLegInformation3: /* Localvalue 22 */ - dissect_h450_DivertingLegInformation3Arg(argument_tvb, 0, actx , tree, hf_h4503DivertingLegInformation3Arg); - break; - case DivertingLegInformation4: /* Localvalue 100 */ - dissect_h450_DivertingLegInformation4Arg(argument_tvb, 0, actx , tree, hf_h4503DivertingLegInformation4Arg); - break; - case CfnrDivertedLegFailed: /* Localvalue 23 */ - dissect_h450_CfnrDivertedLegFailedArg(argument_tvb, 0, actx , tree, hf_h4503CfnrDivertedLegFailedArg); - break; - /* H.450.4 Call Hold */ - case HoldNotific: /* Localvalue 101 */ - dissect_h450_HoldNotificArg(argument_tvb, 0, actx , tree, hf_h4504_HoldNotificArg); - break; - case RetrieveNotific: /* Localvalue 102 */ - dissect_h450_RetrieveNotificArg(argument_tvb, 0, actx , tree, hf_h4504_RetrieveNotificArg); - break; - case RemoteHold: /* Localvalue 103 */ - dissect_h450_RemoteHoldArg(argument_tvb, 0, actx , tree, hf_h4504_RemoteHoldArg); - break; - case RemoteRetrieve: /* Localvalue 104 */ - dissect_h450_RemoteRetrieveArg(argument_tvb, 0, actx , tree, hf_h4504_RemoteRetrieveArg); - break; - -/* H.450.5 Call Park and Pickup constants */ - case CpRequest: /* Localvalue 106 */ - case CpSetup: /* Localvalue 107 */ - case GroupIndicationOn: /* Localvalue 108 */ - case GroupIndicationOff: /* Localvalue 109 */ - case Pickrequ: /* Localvalue 110 */ - case Pickup: /* Localvalue 111 */ - case PickExe: /* Localvalue 112 */ - case CpNotify: /* Localvalue 113 */ - case CpickupNotify: /* Localvalue 114 */ - -/* H.450.6 Call Waiting constants */ - case CallWaiting: /* Localvalue 105 */ -PER_NOT_DECODED_YET("Unrecognized H.450.x operation"); - break; - - /* H.450.7 Message Waiting Indication */ - case MWIActivate: /* Localvalue 80 */ - dissect_h450_MWIActivateArg(argument_tvb, 0, actx , tree, hf_h4507_MWIActivateArg); - break; - case MWIDeactivate: /* Localvalue 81 */ - dissect_h450_MWIDeactivateArg(argument_tvb, 0, actx , tree, hf_h4507_MWIDeactivateArg); - break; - case MWIInterrogate: /* Localvalue 82 */ - dissect_h450_MWIInterrogateArg(argument_tvb, 0, actx , tree, hf_h4507_MWIInterrogateArg); - break; + if (op_ptr->res_pdu && (tvb_length_remaining(tvb, offset) > 0)) + offset = op_ptr->res_pdu(tvb, pinfo, tree); + else + if (tvb_length_remaining(tvb, offset) > 0) { + proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED RESULT TYPE (H.450)"); + offset += tvb_length_remaining(tvb, offset); + } - /* H.450.8 Name Identification */ - case NIcallingName: /* Localvalue 0 */ - dissect_h450_NameArg(argument_tvb, 0, actx , tree, hf_h4508_CallingNameArg); - break; - case NIalertingName: /* Localvalue 1 */ - dissect_h450_NameArg(argument_tvb, 0, actx , tree, hf_h4508_AlertingNameArg); - break; - case NIconnectedName: /* Localvalue 2 */ - dissect_h450_NameArg(argument_tvb, 0, actx , tree, hf_h4508_ConnectedNameArg); - break; - case NIbusyName: /* Localvalue 3 */ - dissect_h450_NameArg(argument_tvb, 0, actx , tree, hf_h4508_BusyNameArg); - break; - -/* H.450.9 Call Completion constants */ - case CCBSRequest: /* Localvalue 40 */ - case CCNRRequest: /* Localvalue 27 */ - case CCCancel: /* Localvalue 28 */ - case CCExecPossible: /* Localvalue 29 */ - case CCRingout: /* Localvalue 31 */ - case CCSuspend: /* Localvalue 32 */ - case CCResume: /* Localvalue 33 */ - -/* H.450.10 Call Offer constants */ - case CallOfferRequest: /* Localvalue 34 */ - case RemoteUserAlerting: /* Localvalue 115 */ - case CFBOverride: /* Localvalue 49 */ - -/* H.450.11 Call Intrusion constants */ - case CallIntrusionRequest: /* Localvalue 43 */ - case CallIntrusionGetCIPL: /* Localvalue 44 */ - case CallIntrusionIsolate: /* Localvalue 45 */ - case CallIntrusionForcedRelease: /* Localvalue 46 */ - case CallIntrusionWOBRequest: /* Localvalue 47 */ - case CallIntrusionSilentMonitor: /* Localvalue 116 */ - case CallIntrusionNotification: /* Localvalue 117 */ -PER_NOT_DECODED_YET("Unrecognized H.450.x operation"); -break; -/* H.450.12 Common Information Operations constants */ - case CmnRequest: /* Localvalue 84 */ - dissect_h450_CmnRequestArg(argument_tvb, 0, actx , tree, hf_h45012_CmnRequest); - break; - case CmnInform: /* Localvalue 85 */ - dissect_h450_CmnArg(argument_tvb, 0, actx , tree, hf_h45012_CmnInform); - break; - - /* TODO - decode other H.450.x invoke arguments here */ - default: -PER_NOT_DECODED_YET("Unrecognized H.450.x operation"); - break; - } - } - return offset; + return offset; } -static int -dissect_ros_ROS(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_ind _U_){ - offset = dissect_h4501_ROS(tvb, offset, actx, tree); - return offset; - -} -static void -dissect_h4501(tvbuff_t *tvb, packet_info *pinfo, proto_tree* tree) -{ - proto_item *it; - proto_tree *tr; - guint32 offset=0; - asn1_ctx_t asn1_ctx; +/*--- dissect_h450_err ------------------------------------------------------*/ +static int +dissect_h450_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + int offset; + rose_ctx_t *rctx; + gint32 errcode; + const h450_err_t *err_ptr; + const gchar *p; + + offset = 0; + rctx = get_rose_ctx(pinfo->private_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; + + proto_tree_add_uint_hidden(tree, hf_h450_error, tvb, 0, 0, errcode); + p = match_strval(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); + } - it=proto_tree_add_protocol_format(tree, proto_h4501, tvb, 0, -1, "H.450.1"); - tr=proto_item_add_subtree(it, ett_h4501); + if (err_ptr->err_pdu && (tvb_length_remaining(tvb, offset) > 0)) + offset = err_ptr->err_pdu(tvb, pinfo, tree); + else + if (tvb_length_remaining(tvb, offset) > 0) { + proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED ERROR TYPE (H.450)"); + offset += tvb_length_remaining(tvb, offset); + } - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - dissect_h450_H4501SupplementaryService(tvb, offset, &asn1_ctx, tr, hf_h4501); + return offset; } /*--- proto_register_h450 -------------------------------------------*/ void proto_register_h450(void) { /* List of fields */ - static hf_register_info hf[] = { - { &hf_h4501, - { "SupplementaryService", "h4501.SupplementaryService", FT_NONE, BASE_NONE, - NULL, 0, "SupplementaryService sequence", HFILL }}, - { &hf_h4501_dummy, - { "dummy", "h4501.dummy", FT_NONE, BASE_NONE, - NULL, 0, "Dummy", HFILL }}, - { &hf_h4501_constrained_invokeId, - { "invokeId", "h4501.invokeId", FT_UINT32, BASE_DEC, - NULL, 0, "constrained_invokeId", HFILL }}, - { &hf_h4501_invokeId, - { "invokeId", "h4501.invokeId", FT_INT32, BASE_DEC, - NULL, 0, "invokeId", HFILL }}, - { &hf_h4501_localOpcode, - { "localOpcode", "h4501.localOpcode", FT_INT32, BASE_DEC, - VALS(localOpcode_vals), 0, "local", HFILL }}, - { &hf_h4501_globalCode, - { "globalCode", "h4501.globalCode", FT_STRING, BASE_HEX, - NULL, 0, "global", HFILL }}, - { &hf_h4501_globalargument, - { "argumentArgument", "h4501.globalArgument", FT_BYTES, BASE_HEX, - NULL, 0, "argument", HFILL }}, - { &hf_h4501_opcode, - { "opcode", "h4501.opcode", FT_UINT32, BASE_DEC, - VALS(opcode_vals), 0, "opcode choice", HFILL }}, - { &hf_h4501_ReturnResult_result, - { "ReturnResult_result", "h4501.ReturnResult.result", FT_BYTES, BASE_HEX, - NULL, 0, "result", HFILL }}, - { &hf_h4501_result, - { "result", "h4501.result", FT_NONE, BASE_NONE, - NULL, 0, "result sequence of", HFILL }}, - { &hf_h4501_ReturnResult, - { "ReturnResult", "h4501.ReturnResult", FT_NONE, BASE_NONE, - NULL, 0, "ReturnResult sequence of", HFILL }}, - { &hf_h4501_localErrorCode, - { "localErrorCode", "h4501.localErrorCode", FT_INT32, BASE_DEC, - VALS(localErrorCode_vals), 0, "local", HFILL }}, - { &hf_h4501_errorCode, - { "errorCode", "h4501.errorCode", FT_UINT32, BASE_DEC, - VALS(errorCode_vals), 0, "errorCode", HFILL }}, - { &hf_h4501_parameter, - { "parameter", "h4501.parameter", FT_BYTES, BASE_HEX, - NULL, 0, "parameter", HFILL }}, - { &hf_h4501_ReturnError, - { "ReturnError", "h4501.ReturnError", FT_NONE, BASE_NONE, - NULL, 0, "ReturnError sequence of", HFILL }}, - { &hf_h4501_GeneralProblem, - { "GeneralProblem", "h4501.GeneralProblem", FT_UINT32, BASE_DEC, - VALS(GeneralProblem_vals), 0, "GeneralProblem", HFILL }}, - { &hf_h4501_InvokeProblem, - { "InvokeProblem", "h4501.InvokeProblem", FT_UINT32, BASE_DEC, - VALS(InvokeProblem_vals), 0, "InvokeProblem", HFILL }}, - { &hf_h4501_ReturnResultProblem, - { "ReturnResultProblem", "h4501.ReturnResultProblem", FT_UINT32, BASE_DEC, - VALS(ReturnResultProblem_vals), 0, "ReturnResultProblem", HFILL }}, - { &hf_h4501_ReturnErrorProblem, - { "ReturnErrorProblem", "h4501.ReturnErrorProblem", FT_UINT32, BASE_DEC, - VALS(ReturnErrorProblem_vals), 0, "ReturnErrorProblem", HFILL }}, - { &hf_h4501_problem, - { "problem", "h4501.problem", FT_UINT32, BASE_DEC, - VALS(problem_vals), 0, "problem choice", HFILL }}, - { &hf_h4501_Reject, - { "Reject", "h4501.Reject", FT_NONE, BASE_NONE, - NULL, 0, "Reject sequence of", HFILL }}, - { &hf_h4501_ROS, - { "ROS", "h4501.ROS", FT_UINT32, BASE_DEC, - VALS(ROS_vals), 0, "ROS choice", HFILL }}, - { &hf_h4501_Invoke, - { "Invoke", "h4501.Invoke", FT_NONE, BASE_NONE, - NULL, 0, "Invoke sequence of", HFILL }}, - { &hf_h4502_CTIdentifyRes, - { "CTIdentifyRes", "h4502.CTIdentifyRes", FT_NONE, BASE_NONE, - NULL, 0, "CTIdentifyRes sequence of", HFILL }}, - { &hf_h4502_DummyRes, - { "DummyRes", "h4502.DummyRes", FT_UINT32, BASE_DEC, - VALS(h450_DummyRes_vals), 0, "DummyRes Choice", HFILL }}, - { &hf_h4502_DummyArg, - { "DummyArg", "h4502.DummyArg", FT_UINT32, BASE_DEC, - VALS(h450_DummyArg_vals), 0, "DummyArg choice", HFILL }}, - { &hf_h4503DeactivateDiversionQArg, - { "DeactivateDiversionQArg", "h4503.DeactivateDiversionQArg", FT_NONE, BASE_NONE, - NULL, 0, "ActivateDiversionQArg sequence of", HFILL }}, - { &hf_h4503InterrogateDiversionQ, - { "InterrogateDiversionQ", "h4503.InterrogateDiversionQ", FT_NONE, BASE_NONE, - NULL, 0, "InterrogateDiversionQ sequence of", HFILL }}, - { &hf_h4503CheckRestrictionArg, - { "CheckRestrictionArg", "h4503.CheckRestrictionArg", FT_NONE, BASE_NONE, - NULL, 0, "CheckRestrictionArg sequence of", HFILL }}, - { &hf_h4503CallReroutingArg, - { "CallReroutingArg", "h4503.CallReroutingArg", FT_NONE, BASE_NONE, - NULL, 0, "ActivateDiversionQArg sequence of", HFILL }}, - { &hf_h4503DivertingLegInformation1Arg, - { "DivertingLegInformation1Arg", "h4503.DivertingLegInformation1Arg", FT_NONE, BASE_NONE, - NULL, 0, "DivertingLegInformation1Arg sequence of", HFILL }}, - { &hf_h4503DivertingLegInformation2Arg, - { "DivertingLegInformation2Arg", "h4503.DivertingLegInformation2Arg", FT_NONE, BASE_NONE, - NULL, 0, "DivertingLegInformation1Arg sequence of", HFILL }}, - { &hf_h4503DivertingLegInformation3Arg, - { "DivertingLegInformation3Arg", "h4503.DivertingLegInformation3Arg", FT_NONE, BASE_NONE, - NULL, 0, "DivertingLegInformation1Arg sequence of", HFILL }}, - { &hf_h4503DivertingLegInformation4Arg, - { "DivertingLegInformation4Arg", "h4503.DivertingLegInformation4Arg", FT_NONE, BASE_NONE, - NULL, 0, "DivertingLegInformation4Arg sequence of", HFILL }}, - { &hf_h4503CfnrDivertedLegFailedArg, - { "CfnrDivertedLegFailedArg", "h4503.CfnrDivertedLegFailedArg", FT_NONE, BASE_NONE, - NULL, 0, "ActivateDiversionQArg sequence of", HFILL }}, - - { &hf_h4504_HoldNotificArg, - { "HoldNotificArg", "h4504.HoldNotificArg", FT_NONE, BASE_NONE, - NULL, 0, "HoldNotificArg sequence of", HFILL }}, - { &hf_h4504_RetrieveNotificArg, - { "RetrieveNotificArg", "h4504.RetrieveNotificArg", FT_NONE, BASE_NONE, - NULL, 0, "RetrieveNotificArg sequence of", HFILL }}, - { &hf_h4504_RemoteHoldArg, - { "RemoteHoldArg", "h4504.RemoteHoldArg", FT_NONE, BASE_NONE, - NULL, 0, "RemoteHoldArg sequence of", HFILL }}, - { &hf_h4504_RemoteRetrieveArg, - { "RemoteRetrieveArg", "h4504.RemoteRetrieveArg", FT_NONE, BASE_NONE, - NULL, 0, "RemoteRetrieveArg sequence of", HFILL }}, - { &hf_h4504_RemoteRetrieveRes, - { "RemoteRetrieveRes", "h4504.RemoteRetrieveRes", FT_NONE, BASE_NONE, - NULL, 0, "RemoteRetrieveRes sequence of", HFILL }}, - - { &hf_h4507_MWIActivateArg, - { "MWIActivateArg", "h4507.MWIActivateArg", FT_NONE, BASE_NONE, - NULL, 0, "MWIActivateArg sequence of", HFILL }}, - { &hf_h4507_MwiDummyRes, - { "MwiDummyRes", "h4507.MwiDummyRes", FT_NONE, BASE_NONE, - NULL, 0, "MwiDummyRes sequence of", HFILL }}, - { &hf_h4507_MWIDeactivateArg, - { "MWIDeactivateArg", "h4507.MWIDeactivateArg", FT_NONE, BASE_NONE, - NULL, 0, "MWIDeactivateArg sequence of", HFILL }}, - { &hf_h4507_MWIInterrogateArg, - { "MWIInterrogateArg", "h4507.MWIInterrogateArg", FT_NONE, BASE_NONE, - NULL, 0, "MWIInterrogateArg sequence of", HFILL }}, - { &hf_h4507_MWIInterrogateRes, - { "MWIInterrogateRes", "h4507.MWIInterrogateRes", FT_NONE, BASE_NONE, - NULL, 0, "MWIInterrogateRes sequence of", HFILL }}, - - { &hf_h4508_CallingNameArg, - { "CallingNameArg", "h4508.CallingNameArg", FT_NONE, BASE_NONE, - NULL, 0, "CallingNameArg sequence of", HFILL }}, - { &hf_h4508_AlertingNameArg, - { "AlertingNameArg", "h4508.AlertingNameArg", FT_NONE, BASE_NONE, - NULL, 0, "AlertingNameArg sequence of", HFILL }}, - { &hf_h4508_ConnectedNameArg, - { "ConnectedNameArg", "h4508.ConnectedNameArg", FT_NONE, BASE_NONE, - NULL, 0, "ConnectedNameArg sequence of", HFILL }}, - { &hf_h4508_BusyNameArg, - { "BusyNameArg", "h4508.BusyNameArg", FT_NONE, BASE_NONE, - NULL, 0, "BusyNameArg sequence of", HFILL }}, - { &hf_h45012_CmnRequest, - { "CmnRequest", "h4508.CmnRequest", FT_NONE, BASE_NONE, - NULL, 0, "CmnRequest sequence of", HFILL }}, - { &hf_h45012_CmnInform, - { "CmnRequest", "h4508.CmnRequest", FT_NONE, BASE_NONE, - NULL, 0, "CmnRequest sequence of", HFILL }}, - + static hf_register_info hf[] = { + { &hf_h450_operation, { "Operation", "h450.operation", + FT_UINT8, BASE_DEC, VALS(h450_str_operation), 0x0, + "Operation", HFILL }}, + { &hf_h450_error, { "Error", "h450.error", + FT_UINT8, BASE_DEC, VALS(h450_str_error), 0x0, + "Error", HFILL }}, #include "packet-h450-hfarr.c" }; /* List of subtrees */ static gint *ett[] = { - &ett_h4501, - &ett_h4501_opcode, - &ett_h4501_result, - &ett_h4501_errorCode, - - &ett_h4501_problem, - &ett_h4501_Reject, - &ett_h4501_ReturnError, - &ett_h4501_ReturnResult, - &ett_h4501_Invoke, - &ett_h4501_ROS, #include "packet-h450-ettarr.c" }; /* Register protocol */ - proto_h4501 = proto_register_protocol(PNAME, PSNAME, PFNAME); + proto_h450 = proto_register_protocol(PNAME, PSNAME, PFNAME); + new_register_dissector("h4501", dissect_h450_H4501SupplementaryService_PDU, proto_h450); /* Register fields and subtrees */ - proto_register_field_array(proto_h4501, hf, array_length(hf)); + proto_register_field_array(proto_h450, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - register_dissector("h4501", dissect_h4501, proto_h4501); + rose_ctx_init(&h450_rose_ctx); + /* Register dissector tables */ + h450_rose_ctx.arg_global_dissector_table = register_dissector_table("h450.ros.global.arg", "H.450 Operation Argument (global opcode)", FT_STRING, BASE_NONE); + h450_rose_ctx.res_global_dissector_table = register_dissector_table("h450.ros.global.res", "H.450 Operation Result (global opcode)", FT_STRING, BASE_NONE); + h450_rose_ctx.arg_local_dissector_table = register_dissector_table("h450.ros.local.arg", "H.450 Operation Argument (local opcode)", FT_UINT32, BASE_HEX); + h450_rose_ctx.res_local_dissector_table = register_dissector_table("h450.ros.local.res", "H.450 Operation Result (local opcode)", FT_UINT32, BASE_HEX); + h450_rose_ctx.err_global_dissector_table = register_dissector_table("h450.ros.global.err", "H.450 Error (global opcode)", FT_STRING, BASE_NONE); + h450_rose_ctx.err_local_dissector_table = register_dissector_table("h450.ros.local.err", "H.450 Error (local opcode)", FT_UINT32, BASE_HEX); } -/*--- proto_reg_handoff_h4501 ---------------------------------------*/ +/*--- proto_reg_handoff_h450 ---------------------------------------*/ void -proto_reg_handoff_h4501(void) +proto_reg_handoff_h450(void) { - - h4501_handle = find_dissector("h4501"); + int i; + dissector_handle_t h450_arg_handle; + dissector_handle_t h450_res_handle; + dissector_handle_t h450_err_handle; + + data_handle = find_dissector("data"); + + h450_arg_handle = new_create_dissector_handle(dissect_h450_arg, proto_h450); + h450_res_handle = new_create_dissector_handle(dissect_h450_res, proto_h450); + for (i=0; i<(int)array_length(h450_op_tab); i++) { + dissector_add("h450.ros.local.arg", h450_op_tab[i].opcode, h450_arg_handle); + dissector_add("h450.ros.local.res", h450_op_tab[i].opcode, h450_res_handle); + } + h450_err_handle = new_create_dissector_handle(dissect_h450_err, proto_h450); + for (i=0; i<(int)array_length(h450_err_tab); i++) { + dissector_add("h450.ros.local.err", h450_err_tab[i].errcode, h450_err_handle); + } } |