Added some more h450.x functions

svn path=/trunk/; revision=13089
This commit is contained in:
Anders Broman 2005-01-17 21:31:37 +00:00
parent 2aad197f9e
commit f6d41ad776
2 changed files with 377 additions and 28 deletions

View File

@ -51,6 +51,7 @@ ServiceApdus ::= CHOICE {
...
}
Notassignedlocalopcode ::= OCTET STRING -- Dummy assigment used
-- actual values are defined by individual supplementary service specifications
-- (e.g. H.450.x or manufacturer specific)
@ -168,26 +169,20 @@ 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 ethereal purposes
CallTransferIdentify ::= OCTET STRING
CallTransferAbandon ::= OCTET STRING
CallTransferInitiate ::= OCTET STRING
CallTransferSetup ::= OCTET STRING
CallTransferUpdate ::= OCTET STRING
SubaddressTransfer ::= OCTET STRING
CallTransferComplete ::= OCTET STRING
CallTransferActive ::= OCTET STRING
CallTransferIdentify ::= DummyArg
CallTransferAbandon ::= DummyArg
CallTransferInitiate ::= DummyRes
CallTransferSetup ::= DummyRes
CallTransferUpdate ::= CTUpdateArg
SubaddressTransfer ::= SubaddressTransferArg
CallTransferComplete ::= CTCompleteArg
CallTransferActive ::= CTActiveArg
DummyArg ::= CHOICE {
extensionSeq ExtensionSeq,
@ -271,13 +266,249 @@ CallIdentity ::= NumericString(SIZE (0..4))
-- size 0 means 'empty'
ExtensionSeq ::= SEQUENCE OF Extension{{ExtensionSet}}
--END
-- of Call-Transfer-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 ::=
--CallHoldOperations OPERATION ::=
-- {holdNotific | retrieveNotific | remoteHold | remoteRetrieve}
HoldNotific ::= HoldNotificArg
HoldNotificArg ::= SEQUENCE {
extensionArg ExtensionArg OPTIONAL,
...
}
ExtensionArg ::= SEQUENCE SIZE (0..255) OF MixedExtension
RetrieveNotific ::= RetrieveNotificArg
RetrieveNotificArg ::= SEQUENCE {
extensionArg ExtensionArg OPTIONAL,
...
}
RemoteHold ::= RemoteHoldArg
RemoteHoldArg ::= SEQUENCE {
extensionArg ExtensionArg OPTIONAL,
...
}
RemoteHoldRes ::= SEQUENCE {
extensionRes SEQUENCE SIZE (0..255) OF MixedExtension OPTIONAL,
...
}
RemoteRetrieve ::= RemoteRetrieveArg
RemoteRetrieveArg ::= SEQUENCE {
extensionArg ExtensionArg 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
-- 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))
-- 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)}
--NameOperations OPERATION ::=
-- {callingName | alertingName | connectedName | busyName}
CallingName ::= SEQUENCE {name Name,
extensionArg ExtensionArg OPTIONAL,
...}
AlertingName ::= SEQUENCE {name Name,
extensionArg ExtensionArg OPTIONAL,
...}
ConnectedName ::= SEQUENCE {name Name,
extensionArg ExtensionArg OPTIONAL,
...}
BusyName ::= SEQUENCE {name Name,
extensionArg ExtensionArg 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 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
-- Is this correct ?
-- Actual values defined by individual manufacturers
Unspecified ::=

View File

@ -1,5 +1,7 @@
/* packet-h450.c
* Routines for h450 packet dissection
* Based on the previous h450 dissector by:
* 2003 Graeme Reid (graeme.reid@norwoodsystems.com)
* Copyright 2005, Anders Broman <anders.broman@ericsson.com>
*
* $Id$
@ -159,6 +161,23 @@ static int hf_h4502_SubaddressTransferArg = -1;
static int hf_h4502_CTCompleteArg = -1;
static int hf_h4502_CTActiveArg = -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_h4501_Invoke = -1;
static int hf_h4501_ROS = -1;
@ -366,6 +385,18 @@ dissect_h4501_ReturnResult_result(tvbuff_t *tvb, int offset, packet_info *pinfo,
case CallTransferSetup:
dissect_h450_DummyRes(result_tvb, 0, pinfo , tree, hf_h4502_DummyRes);
break;
case RemoteRetrieve:
dissect_h450_RemoteRetrieveRes(result_tvb, 0, pinfo , tree, hf_h4504_RemoteRetrieveRes);
break;
case MWIActivate:
dissect_h450_MwiDummyRes(result_tvb, 0, pinfo , tree, hf_h4507_MwiDummyRes);
break;
case MWIDeactivate:
dissect_h450_MwiDummyRes(result_tvb, 0, pinfo , tree, hf_h4507_MwiDummyRes);
break;
case MWIInterrogate:
dissect_h450_MWIInterrogateRes(result_tvb, 0, pinfo , tree, hf_h4507_MWIInterrogateRes);
break;
default:
PER_NOT_DECODED_YET("Unrecognized H.450.x return result");
@ -659,41 +690,77 @@ dissect_h4501_argument(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
switch (localOpcode) {
case CallTransferIdentify:
case CallTransferAbandon:
case CallTransferIdentify: /* Localvalue 7 */
case CallTransferAbandon: /* Localvalue 8 */
dissect_h450_DummyArg(argument_tvb, 0, pinfo , tree, hf_h4502_DummyArg);
break;
case CallTransferInitiate:
case CallTransferInitiate: /* Localvalue 9 */
dissect_h450_CTInitiateArg(argument_tvb, 0, pinfo , tree, hf_h4502_CTInitiateArg);
break;
case CallTransferSetup:
case CallTransferSetup: /* Localvalue 10 */
dissect_h450_CTSetupArg(argument_tvb, 0, pinfo , tree, hf_h4502_CTSetupArg);
break;
case CallTransferUpdate:
case CallTransferUpdate: /* Localvalue 13 */
dissect_h450_CTUpdateArg(argument_tvb, 0, pinfo , tree, hf_h4502_CTUpdateArg);
break;
case SubaddressTransfer:
dissect_h450_SubaddressTransferArg(argument_tvb, 0, pinfo , tree, hf_h4502_SubaddressTransferArg);
case SubaddressTransfer: /* Localvalue 14 */
dissect_h450_SubaddressTransfer(argument_tvb, 0, pinfo , tree, hf_h4502_SubaddressTransferArg);
break;
case CallTransferComplete:
case CallTransferComplete: /* Localvalue 12 */
dissect_h450_CTCompleteArg(argument_tvb, 0, pinfo , tree, hf_h4502_CTCompleteArg);
break;
case CallTransferActive:
case CallTransferActive: /* Localvalue 11 */
dissect_h450_CTActiveArg(argument_tvb, 0, pinfo , tree, hf_h4502_CTActiveArg);
break;
/* H.450.4 */
case HoldNotific: /* Localvalue 101 */
dissect_h450_HoldNotificArg(argument_tvb, 0, pinfo , tree, hf_h4504_HoldNotificArg);
break;
case RetrieveNotific: /* Localvalue 102 */
dissect_h450_RetrieveNotificArg(argument_tvb, 0, pinfo , tree, hf_h4504_RetrieveNotificArg);
break;
case RemoteHold: /* Localvalue 103 */
dissect_h450_RemoteHoldArg(argument_tvb, 0, pinfo , tree, hf_h4504_RemoteHoldArg);
break;
case RemoteRetrieve: /* Localvalue 104 */
dissect_h450_RemoteRetrieveArg(argument_tvb, 0, pinfo , tree, hf_h4504_RemoteRetrieveArg);
break;
/* H.450.7 Message Waiting Indication */
case MWIActivate: /* Localvalue 80 */
dissect_h450_MWIActivateArg(argument_tvb, 0, pinfo , tree, hf_h4507_MWIActivateArg);
break;
case MWIDeactivate: /* Localvalue 81 */
dissect_h450_MWIDeactivateArg(argument_tvb, 0, pinfo , tree, hf_h4507_MWIDeactivateArg);
break;
case MWIInterrogate: /* Localvalue 82 */
dissect_h450_MWIInterrogateArg(argument_tvb, 0, pinfo , tree, hf_h4507_MWIInterrogateArg);
break;
/* H.450.8 */
case NIcallingName: /* Localvalue 0 */
dissect_h450_CallingName(argument_tvb, 0, pinfo , tree, hf_h4508_CallingNameArg);
break;
case NIalertingName: /* Localvalue 1 */
dissect_h450_AlertingName(argument_tvb, 0, pinfo , tree, hf_h4508_AlertingNameArg);
break;
case NIconnectedName: /* Localvalue 2 */
dissect_h450_ConnectedName(argument_tvb, 0, pinfo , tree, hf_h4508_ConnectedNameArg);
break;
case NIbusyName: /* Localvalue 3 */
dissect_h450_BusyName(argument_tvb, 0, pinfo , tree, hf_h4508_BusyNameArg);
break;
/* TODO - decode other H.450.x invoke arguments here */
default:
PER_NOT_DECODED_YET("Unrecognized H.450.x operation");
break;
}
}
}
return offset;
}
static int
@ -790,7 +857,13 @@ void proto_register_h450(void) {
{ "Invoke", "h4501.Invoke", FT_NONE, BASE_NONE,
NULL, 0, "Invoke sequence of", HFILL }},
{ &hf_h4502_CTIdentifyRes,
{ &hf_h4502_CTActiveArg,
{ "CTActiveArg", "h4502.CTActiveArg", FT_NONE, BASE_NONE,
NULL, 0, "CTActiveArg sequence of", HFILL }},
{ &hf_h4502_CTCompleteArg,
{ "CTCompleteArg", "h4502.CTCompleteArg", FT_NONE, BASE_NONE,
NULL, 0, "CTCompleteArg sequence of", HFILL }},
{ &hf_h4502_CTIdentifyRes,
{ "CTIdentifyRes", "h4502.CTIdentifyRes", FT_NONE, BASE_NONE,
NULL, 0, "CTIdentifyRes sequence of", HFILL }},
{ &hf_h4502_DummyRes,
@ -812,6 +885,51 @@ void proto_register_h450(void) {
{ "SubaddressTransferArg", "h4502.SubaddressTransferArg", FT_NONE, BASE_NONE,
NULL, 0, "SubaddressTransferArg 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 }},
#include "packet-h450-hfarr.c"
};