//////////////////////////////////////////////////////////////////////////////// // // // Copyright Test Competence Center (TCC) ETH 2008 // // // // The copyright to the computer program(s) herein is the property of TCC. // // The program(s) may be used and/or copied only with the written permission // // of TCC or in accordance with the terms and conditions stipulated in the // // agreement/contract under which the program(s) have been supplied // // // /////////////////////////////////////////////////////////////////////////////// // File: SCCP_Types.ttcn // Description: SS7 SCCP definitions according to specification // ITU-T SS7 SCCP, ANSI ..., ttc ..., mpt // Reference: ITU-T: Recommendation Q.711-Q.714 (07/96) // ANSI: T1.112-2001 // ttc: JT-Q711 -JT-Q714 (ver 2, 04/97) // Rev: R6A05 // Prodnr: CNL 113 341 // Updated: 2008-05-08 // Contact: http://ttcn.ericsson.se module SCCP_Types.objid { itu_t(0) identified_organization (4) etsi(0) reserved(127) etsi_identified_organization(0) ericsson(5) testing (0) generic(0) sccp(1) v3(3) typeDefinitions(2) patchNo(3)} {//start of the module modulepar {//startparameters //------------------Protocol Timer Values---------------------------------- //Waiting for connection confirm message -1 to 2 minutes float tspc_timer_T_conn_est:=120.0; //Delay to send a message on a conn IT on a //connection section when there are no //messages to send //5 to 10 minutes float tspc_timer_T_ias:=600.0; //Waiting to receive a message on a connection //section //11 to 21 minutes float tspc_timer_T_iar:=1260.0; //Waiting for release complete message -10 to 20 seconds float tspc_timer_T_rel:=20.0; //Waiting for release complete message; or to //repeat sending released message after the //initial T(rel) expiry //10 to 20 seconds float tspc_timer_T_repeat_rel:=20.0; //Waiting for release complete message; or to //release connection resources, freeze the LRN //and alert a maintenance function after the //initial T(rel) expiry //extending to 1 minute float tspc_timer_T_int:=60.0; //Waiting to resume normal procedure for //temporary connection sections during the //restart procedure //23 to 25 minutes float tspc_timer_T_guard:=1500.0; //Waiting to release temporary connection //section or alert maintenance function after //reset request message is sent //10 to 20 seconds float tspc_timer_T_reset:=20.0; //Waiting to receive all the segments of the //remaining segments single segmented //message after receiving the first segment //10 to 20 seconds // float tspc_timer_T_reasssembly; float tspc_timer_T_internal_reset:=0.0; //zero-only for sending internal signals!! float tspc_timer_guard :=120.0 //the same as tspc_timer_T_conn_est:1 or 2 minutes }//end parameters import from General_Types all; import from MTP3asp_Types all; //import from MTP3asp_PortType all; import from SCCPasp_Types all; external function enc_PDU_SCCP( in PDU_SCCP pdu) return octetstring with { extension "prototype(convert)" extension "encode(RAW)" }; external function dec_PDU_SCCP( in octetstring o) return PDU_SCCP with { extension "prototype(convert)" extension "decode(RAW)" }; // Address encoder/decoder for itu: external function enc_PDU_SCCP_Address_itu( in SCCP_param_CPartyAddress_itu pdu) return octetstring with { extension "prototype(convert)" extension "encode(RAW)" }; external function dec_PDU_SCCP_Address_itu( in octetstring o) return SCCP_param_CPartyAddress_itu with { extension "prototype(convert)" extension "decode(RAW)" }; // Address encoder/decoder for ansi: external function enc_PDU_SCCP_Address_ansi( in SCCP_param_CPartyAddress_ansi pdu) return octetstring with { extension "prototype(convert)" extension "encode(RAW)" }; external function dec_PDU_SCCP_Address_ansi( in octetstring o) return SCCP_param_CPartyAddress_ansi with { extension "prototype(convert)" extension "decode(RAW)" }; // Address encoder/decoder for ttc: external function enc_PDU_SCCP_Address_ttc( in SCCP_param_CPartyAddress_ttc pdu) return octetstring with { extension "prototype(convert)" extension "encode(RAW)" }; external function dec_PDU_SCCP_Address_ttc( in octetstring o) return SCCP_param_CPartyAddress_ttc with { extension "prototype(convert)" extension "decode(RAW)" }; // Address encoder/decoder for mpt: external function enc_PDU_SCCP_Address_mpt( in SCCP_param_CPartyAddress_mpt pdu) return octetstring with { extension "prototype(convert)" extension "encode(RAW)" }; external function dec_PDU_SCCP_Address_mpt( in octetstring o) return SCCP_param_CPartyAddress_mpt with { extension "prototype(convert)" extension "decode(RAW)" }; group Types { group FieldDefinitions { //--------------------------------------------------------------------------- // Field Parameter Name (ITU:$3/Q713 $3, ANSI:Table 2/T1.112.3-2001 //--------------------------------------------------------------------------- type integer SCCP_field_ParameterName with { variant "FIELDLENGTH(8)"}; const SCCP_field_ParameterName con_SCCP_eop :=0, con_SCCP_dLocRef:=1, con_SCCP_sLocRef:=2, con_SCCP_cdPA:=3, con_SCCP_cgPA:=4, con_SCCP_protclass:=5, con_SCCP_segmReas:=6, con_SCCP_recSeqNum:=7, con_SCCP_seqSegm:=8, con_SCCP_credit:=9, con_SCCP_relCause:=10, con_SCCP_retCause:=11, con_SCCP_resCause:=12, con_SCCP_errorCause:=13, con_SCCP_refCause:=14, con_SCCP_data:=15, con_SCCP_segm:=16, con_SCCP_hopCount:=17, con_SCCP_imp:=18, con_SCCP_longData:=19, con_SCCP_mti:=248, con_SCCP_ins:=249, con_SCCP_isni:=250; //EOP End of optional parameters, DLocRef Destination local reference, //SLocRef Source local reference, CdPA Called party address, //CgPA Calling party address, ProtClass Protocol class, //SegmReas Segmenting/reassembling, RecSeqNum Receive sequence number, //SeqSegm Sequencing/segmenting, Credit Credit, //RelCause Release cause, RetCau Return cause, //ResCau Reset cause, ErrCau Error cause, //RefCau Refusal cause, Data Data, //SEGM Segmentation, HopCount Hop counter, //IMP Importance, LongData Long data, // --- only in ANSI:--- //MTI Message Type Interworking //INS //ISNI //ISNI //--------------------------------------------------------------------------- // Field Address Indicator (ITU: Q713 $3.4.1, ANSI: T1.112.3 $3.4.1) //--------------------------------------------------------------------------- type record SCCP_field_AddressIndicator_itu { BIT1 pointCodeIndic, BIT1 ssnIndicator, BIT4 globalTitleIndic, BIT1 routingIndicator, BIT1 reserved } with { variant "" } // field order is interesting at coding/decoding type record SCCP_field_AddressIndicator_ansi { BIT1 ssnIndicator, BIT1 pointCodeIndic, BIT4 globalTitleIndic, BIT1 routingIndicator, BIT1 reserved } with { variant "" } //--------------------------------------------------------------------------- // Subfield Signalling Point Code (Q713 $3.4.2.1) //--------------------------------------------------------------------------- // use functions SCCP_getSPC and SCCP_setSPC to handle it!!! type BIT16 SCCP_field_SignallingPointCode_itu; // TO BE DEFINED: msb or lsb ??? type BIT24 SCCP_field_SignallingPointCode_ansi; // TO BE DEFINED: msb or lsb ??? type BIT16 SCCP_field_SignallingPointCode_ttc; // TO BE DEFINED: msb or lsb ??? type BIT24 SCCP_field_SignallingPointCode_mpt; // TO BE DEFINED: msb or lsb ??? //--------------------------------------------------------------------------- // Subfield Subsystem Number (Q713 $3.4.2.2) //--------------------------------------------------------------------------- //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_field_SubsystemNumber with { variant "FIELDLENGTH(8)" }; //--------------------------------------------------------------------------- // Subfield Global Title (ITU: Q713 $3.4.2.3, ANSI T1.112.3 $3.4.2.3 //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Subfield Global Title, Nature of address only //ITU: GTI=0001, Q713 $3.4.2.3.1 //ANSI: - type record SCCP_field_GlobalTitle_NoA { BIT7 natureOfAddress, BIT1 oddeven, hexstring globalTitleAddress //it should be hexstring, number digits are in BCD; //hexstring is already supported yet by ETH compiler } with { variant "" } //--------------------------------------------------------------------------- // Global Title, Translation type only ( // ITU: GTI=0010, Q713 $3.4.2.3.2 // ANSI: GTI=0010, Figure6A/T1.112.3 type record SCCP_field_GlobalTitle_TT { OCT1 translationType, hexstring globalTitleAddress } with { variant "" } //--------------------------------------------------------------------------- // Global Title, Translation type & numbering plan & encoding scheme // ITU: GTI=0011, Q713 $3.4.2.3.3) // ANSI GTI=0001, Figure6/T1.112.3 type record SCCP_field_GlobalTitle_TT_NP_ES { OCT1 translationType, BIT4 encodingScheme, BIT4 numberingPlan, hexstring globalTitleAddress } with { variant "" } //----------------------------------------------------------------------------- // Global Title, Translation type & numbering plan & encoding scheme & nature of // address // GTI=0100, Q713 $3.4.2.3.4) // ANSI: - // Suggested to change name to SCCP_field_GlobalTitle_TT_NP_ES_NoA type record SCCP_field_SignallingPointCode_TT_NP_ES_NoA { OCT1 translationType, BIT4 encodingScheme, BIT4 numberingPlan, BIT7 natureOfAddress, BIT1 reserved, hexstring globalTitleAddress } with { variant "" } type union SCCP_field_GlobalTitle_itu { SCCP_field_GlobalTitle_NoA gti0001, SCCP_field_GlobalTitle_TT gti0010, SCCP_field_GlobalTitle_TT_NP_ES gti0011, SCCP_field_SignallingPointCode_TT_NP_ES_NoA gti0100 } with { variant "" } // no TAG is added as alternatives depend on the gti field of the address indicator type union SCCP_field_GlobalTitle_ansi { SCCP_field_GlobalTitle_TT_NP_ES gti0001, SCCP_field_GlobalTitle_TT gti0010 } with { variant "" } //--------------------------------------------------------------------------- // Field Protocol Class (Q713 $3.6) //--------------------------------------------------------------------------- //type enumerated SCCP_field_ProtocolClass // { class0 (0), class1(1), class2(2), class3(3) } // with { variant "FIELDLENGTH(4)" } //ethgry(2002-08-01): replaced by BIT4 //--------------------------------------------------------------------------- // Field Importance (Q713 $3.19) //--------------------------------------------------------------------------- type integer SCCP_field_Importance with { variant "FIELDLENGTH(3)" } }//endgroup FieldDefinitions group ParameterDefinitions { //--------------------------------------------------------------------------- // Parameter Message Type (Q713 $2.1) //--------------------------------------------------------------------------- type integer SCCP_param_MessageType with { variant "FIELDLENGTH(8)" } const SCCP_param_MessageType cr:=1, cc:=2, cref:=3, rlsd:=4, rlc:=5, dt1:=6, dt2:=7, ak:=8, udt:=9, udts:=10, ed:=11, ea:=12, rsr:=13, rsc:=14, err:=15, it:=16, xudt:=17, xudts:=18, ludt:=19, ludts:=20; //CR Connection request, CC Connection confirm, CREF Connection refused, //RLSD Released, RLC Release complete, DT1 Data form 1, //DT2 Data form 2, AK Data acknowledgement, UDT Unitdata, //UDTS Unitdata service, ED Expedited data, EA Expedited data acknowledgement, //RSR Reset request, RSC Reset confirm, ERR Protocol data unit error, //IT Inactivity test, XUDT Extended unitdata, XUDTS Extended unitdata service, //LUDT Long unitdata, LUDTS Long unitdata service //--------------------------------------------------------------------------- // End of Optional Parameters (Q713 $3.1) //--------------------------------------------------------------------------- type record SCCP_param_EndOfOptionalParams { SCCP_field_ParameterName paramName (con_SCCP_eop) } with { variant "" } //--------------------------------------------------------------------------- // Parameter Destination Local Reference (Q713 $3.2) //--------------------------------------------------------------------------- type octetstring SCCP_param_DestLocalReference with { variant "FIELDLENGTH(3)"} //--------------------------------------------------------------------------- // Parameter Source Local Reference (Q713 $3.3) //--------------------------------------------------------------------------- type octetstring SCCP_param_SourceLocalReference with { variant "FIELDLENGTH(3)" } //--------------------------------------------------------------------------- // Parameter Called/Calling Party Address (Q713 $3.4/$3.5) //--------------------------------------------------------------------------- /* Removed 2004.02.16 by ethbaat: type union SCCP_superfield_SignallingPointCode_itu { SCCP_field_SignallingPointCode_itu present, Dummy absent } with { variant "" } type union SCCP_superfield_SignallingPointCode_ansi { SCCP_field_SignallingPointCode_ansi present, Dummy absent } with { variant "" } type union SCCP_superfield_SignallingPointCode_ttc { SCCP_field_SignallingPointCode_ttc present, Dummy absent } with { variant "" } type union SCCP_superfield_SubsystemNumber { SCCP_field_SubsystemNumber present, Dummy absent } with { variant "" } */ // Standard Independent Encoded Calling/Called Party Address: // used in SCCP.ttcn/Convert // this address is used everywhere in SCCP inside: type octetstring SCCP_CPartyAddressEnc_addr with { variant ""}; type record SCCP_param_CPartyAddressEnc { LIN1 paramLength, SCCP_CPartyAddressEnc_addr addr } with { variant (paramLength) "LENGTHTO( addr )"} // Structured, decoded versions: type record SCCP_param_CPartyAddress_itu { SCCP_field_AddressIndicator_itu addressIndicator, SCCP_field_SignallingPointCode_itu signPointCode optional, SCCP_field_SubsystemNumber subsystemNumber optional, SCCP_field_GlobalTitle_itu globalTitle optional } with { variant (signPointCode) "PRESENCE( addressIndicator.pointCodeIndic = '1'B)"; variant (subsystemNumber) "PRESENCE( addressIndicator.ssnIndicator = '1'B)"; variant (globalTitle) "PRESENCE( {addressIndicator.globalTitleIndic = '0001'B, addressIndicator.globalTitleIndic = '0010'B, addressIndicator.globalTitleIndic = '0011'B, addressIndicator.globalTitleIndic = '0100'B}), CROSSTAG( gti0001, addressIndicator.globalTitleIndic = '0001'B; gti0010, addressIndicator.globalTitleIndic = '0010'B; gti0011, addressIndicator.globalTitleIndic = '0011'B; gti0100, addressIndicator.globalTitleIndic = '0100'B)" } type record SCCP_param_CPartyAddress_ansi { SCCP_field_AddressIndicator_ansi addressIndicator, SCCP_field_SubsystemNumber subsystemNumber optional, SCCP_field_SignallingPointCode_ansi signPointCode optional, SCCP_field_GlobalTitle_ansi globalTitle optional } with { variant (subsystemNumber) "PRESENCE( addressIndicator.ssnIndicator = '1'B )"; variant (signPointCode) "PRESENCE( addressIndicator.pointCodeIndic = '1'B )"; variant (globalTitle) "PRESENCE( {addressIndicator.globalTitleIndic = '0001'B, addressIndicator.globalTitleIndic = '0010'B}), CROSSTAG( gti0001, addressIndicator.globalTitleIndic = '0001'B; gti0010, addressIndicator.globalTitleIndic = '0010'B)" } type record SCCP_param_CPartyAddress_ttc { SCCP_field_AddressIndicator_itu addressIndicator, SCCP_field_SignallingPointCode_ttc signPointCode optional, SCCP_field_SubsystemNumber subsystemNumber optional, SCCP_field_GlobalTitle_itu globalTitle optional } with { variant (signPointCode) "PRESENCE( addressIndicator.pointCodeIndic = '1'B)"; variant (subsystemNumber) "PRESENCE( addressIndicator.ssnIndicator = '1'B)"; variant (globalTitle) "PRESENCE( {addressIndicator.globalTitleIndic = '0001'B, addressIndicator.globalTitleIndic = '0010'B, addressIndicator.globalTitleIndic = '0011'B, addressIndicator.globalTitleIndic = '0100'B}), CROSSTAG( gti0001, addressIndicator.globalTitleIndic = '0001'B; gti0010, addressIndicator.globalTitleIndic = '0010'B; gti0011, addressIndicator.globalTitleIndic = '0011'B; gti0100, addressIndicator.globalTitleIndic = '0100'B)" } type record SCCP_param_CPartyAddress_mpt { SCCP_field_AddressIndicator_itu addressIndicator, SCCP_field_SignallingPointCode_mpt signPointCode optional, SCCP_field_SubsystemNumber subsystemNumber optional, SCCP_field_GlobalTitle_itu globalTitle optional } with { variant (signPointCode) "PRESENCE( addressIndicator.pointCodeIndic = '1'B)"; variant (subsystemNumber) "PRESENCE( addressIndicator.ssnIndicator = '1'B)"; variant (globalTitle) "PRESENCE( {addressIndicator.globalTitleIndic = '0001'B, addressIndicator.globalTitleIndic = '0010'B, addressIndicator.globalTitleIndic = '0011'B, addressIndicator.globalTitleIndic = '0100'B}), CROSSTAG( gti0001, addressIndicator.globalTitleIndic = '0001'B; gti0010, addressIndicator.globalTitleIndic = '0010'B; gti0011, addressIndicator.globalTitleIndic = '0011'B; gti0100, addressIndicator.globalTitleIndic = '0100'B)" } // type record SCCP_param_CPartyAddress_opt_itu type record SCCP_param_CPartyAddressEnc_opt { SCCP_field_ParameterName paramName(con_SCCP_cdPA, con_SCCP_cgPA), LIN1 paramLength, SCCP_CPartyAddressEnc_addr addr } with { variant (paramLength) "LENGTHTO( addr )"} //--------------------------------------------------------------------------- // Parameter Protocol Class (Q713 $3.6) //--------------------------------------------------------------------------- type record SCCP_param_ProtocolClass { BIT4 class, BIT4 messageHandling } with { variant "" } //--------------------------------------------------------------------------- // Parameter Segmenting/reassembling (Q713 $3.7) //--------------------------------------------------------------------------- type record SCCP_param_SegmentingReassembl { BIT1 more, BIT7 reserved } with { variant "" } //--------------------------------------------------------------------------- // Parameter Receive Sequence Number (Q713 $3.8) //--------------------------------------------------------------------------- type record SCCP_param_RecSeqNumber { BIT1 reserved, BIT7 pr } with { variant "" } //--------------------------------------------------------------------------- // Parameter Sequencing/Segmenting (Q713 $3.9) //--------------------------------------------------------------------------- type record SCCP_param_SequencingSegmenting { BIT1 reserved, BIT7 p_s, BIT1 more, BIT7 pr } with { variant "" } //--------------------------------------------------------------------------- // Parameter Credit(Q713 $3.10) //--------------------------------------------------------------------------- type octetstring SCCP_param_Credit with { variant "FIELDLENGTH(1)" }//ethlel0813 type record SCCP_param_Credit_opt { SCCP_field_ParameterName paramName(con_SCCP_credit), LIN1 paramLength, // always 1! OCT1 credit } with { variant "" } //--------------------------------------------------------------------------- // Parameter Release Cause(Q713 $3.11) //--------------------------------------------------------------------------- //type enumerated SCCP_param_ReleaseCause // { endUserOrig(0), endUserCong(1), endUserFailure(2), sCCPUserOrig(3), // remProcError(4), inconsConnData(5), accessFailure(6), accessCongestion(7), // subsystFailure(8), subsystCongest(9), mTPFailure(10), networkCongest(11), // expResetTimer(12), expRecInacTimer(13), reserved(14), unqualified(15), // sCCPFailure(16) // } // with { variant "FIELDLENGTH(8)" } //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_param_ReleaseCause with { variant "FIELDLENGTH(8), COMP(nosign)" }; //--------------------------------------------------------------------------- // Parameter Return Cause(Q713 $3.12) //--------------------------------------------------------------------------- //type enumerated SCCP_param_ReturnCause // { noTransl4AddrNature(0), noTransl4SpecifAddr(1), subsystemCongestion(2), // subsystemFailure(3), unequippedUser(4), mTPFailure(5), // networkCongestion(6), unqualified(7), errorMessageTransport(8), // errorLocalProcessing(9), destNoReassembly(10), sCCPFailure(11), // hopCounterViolation(12), segmeNotSupported(13), segmentationFailure(14) // } // with { variant "FIELDLENGTH(8)" } //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_param_ReturnCause with { variant "FIELDLENGTH(8), COMP(nosign)" }; //--------------------------------------------------------------------------- // Parameter Reset Cause(Q713 $3.13) //--------------------------------------------------------------------------- //type enumerated SCCP_param_ResetCause // { endUserOriginated(0), sCCPUserOriginated(1), // messOutOfOrder_incPs(2), messOutOfOrder_incPr(3), // remProcErr_messOutOfWindow(4), emProcErr_IncPsAfterReinit(5), // remProcErr_general(6), remEndUserOperational(7), // networkOperational(8), accessOperational(9), // networkCongestion(10), reserved(11), // unqualified(12) // } // with { variant "FIELDLENGTH(8)" } //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_param_ResetCause with { variant "FIELDLENGTH(8), COMP(nosign)" }; //--------------------------------------------------------------------------- // Parameter Error Cause(Q713 $3.14) //--------------------------------------------------------------------------- //type enumerated SCCP_param_ErrorCause // { unassignedDestinationLRN(0), inconsistentSourceLRN(1), // pointCodeMismatch(2), serviceClassMismatch(3), // unqualified(4) // } // with { variant "FIELDLENGTH(8)" } //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_param_ErrorCause with { variant "FIELDLENGTH(8), COMP(nosign)" }; //--------------------------------------------------------------------------- // Parameter Refusal Cause(Q713 $3.15) //--------------------------------------------------------------------------- //type enumerated SCCP_param_RefusalCause // { endUserOrigin(0), endUserConges(1), endUserFailure(2), // sCCPUserOrigin(3), destAddrUnkn(4), destInaccess(5), // qOSNotAvail_nonTransient(6), qOSNotAvail_transient(7), accessFailure(8), // accessCongestion(9), subsystemFailure(10), subsystemCongest(11), // expConnEstTimer(12), incomUserData(13), reserved(14), // unqualified(15), hopCounterViol(16), sCCPFailure(17), // noTransl4address(18), unequippedUser(19) // } // with { variant "FIELDLENGTH(8)" } //values declared in SCCPConstants in SCCP.ttcn type integer SCCP_param_RefusalCause with { variant "FIELDLENGTH(8), COMP(nosign)" }; //--------------------------------------------------------------------------- // Parameter User data (Q713 $3.16) //--------------------------------------------------------------------------- type record SCCP_param_Data { LIN1 paramLength, OCTN data } with { variant (paramLength) "LENGTHTO(data)" } type record SCCP_param_Data_opt { SCCP_field_ParameterName paramName(con_SCCP_data), LIN1 paramLength, OCTN data } with { variant (paramLength) "LENGTHTO(data)" } //--------------------------------------------------------------------------- // Parameter Segmentation (Q713 $3.17) //--------------------------------------------------------------------------- type record SCCP_param_Segmentation_opt { SCCP_field_ParameterName paramName(con_SCCP_segm), LIN1 paramLength, //always 4! BIT4 remainingSegment, BIT2 reserved, BIT1 class, BIT1 firstSegm, OCT3 segmLocalRef } with { variant "" } //--------------------------------------------------------------------------- // Parameter Hop counter (Q713 $3.18) //--------------------------------------------------------------------------- type integer SCCP_param_HopCounter with { variant "FIELDLENGTH(8), COMP(nosign)" }; type record SCCP_param_HopCounter_opt { SCCP_field_ParameterName paramName(con_SCCP_hopCount), LIN1 paramLength, //always 1! SCCP_param_HopCounter counter } with { variant (paramLength) "LENGTHTO(counter)" } //--------------------------------------------------------------------------- // Parameter Importance (Q713 $3.19) //--------------------------------------------------------------------------- type record SCCP_param_Importance_opt { SCCP_field_ParameterName paramName(con_SCCP_imp), LIN1 paramLength, //always 1! SCCP_field_Importance importance, BIT5 reserved } with { variant ""} //with { variant (paramLength) "LENGTHTO(importance)" } //???? //--------------------------------------------------------------------------- // Parameter Long data (Q713 $3.20) //--------------------------------------------------------------------------- type record SCCP_param_LongData { LIN2 paramLength, OCTN data } with { variant (paramLength) "LENGTHTO(data)" } //******************************************************************************** // SCCP management parameters (Q713 $5) //******************************************************************************** //--------------------------------------------------------------------------- // SCMG format identifier (Q713 $5.1) //--------------------------------------------------------------------------- type enumerated SCMG_param_FormatId { sSAallowed(1), // SSA subsystem-allowed sSPprohib(2), // SSP subsystem-prohibited sSTstaTest(3), // SST subsystem-status-test sORoutReq(4), // SOR subsystem-out-of-service-request sORoutGrant (5), // SOG subsystem-out-of-service-grant sSCcongest(6) // SSC SCCP/subsystem-congested } with { variant "FIELDLENGTH(8)" } //--------------------------------------------------------------------------- // Affected SSN (Q713 $5.2.1) //--------------------------------------------------------------------------- /* not supported yet: type SCCP_field_SubsystemNumber SCMG_param_AffectedSSN with { variant "" } */ //--------------------------------------------------------------------------- // Affected Pointcode (Q713 $5.2.2) //--------------------------------------------------------------------------- /* not supported yet: type SCCP_field_SignallingPointCode SCMG_param_AffectedPointCode with { variant "" } */ //--------------------------------------------------------------------------- // Subsystem Multiplicity Indicator (Q713 $5.2.3) //--------------------------------------------------------------------------- /* not supported yet: type record SCMG_param_MultiplIndicator { BIT2 smi, BIT6 reserved } with { variant "" } */ //--------------------------------------------------------------------------- // SCCP congestion level (Q713 $5.2.4) //--------------------------------------------------------------------------- /* not supported yet: type record SCMG_param_CongestionLevel { BIT4 congLevel, BIT4 reserved } with { variant "" } */ }//endgroup ParameterDefinitions group PDUDefinitions { //******************************************************************************** // Message Connection Request (CR) (Q713 $4.2) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part type set SCCP_ConnReq_optionalPart { SCCP_param_Credit_opt credit optional, SCCP_param_CPartyAddressEnc_opt callingPAddress optional, SCCP_param_Data_opt data optional, SCCP_param_HopCounter_opt hopCounter optional, SCCP_param_Importance_opt importance optional } with { variant "TAG ( credit, paramName= con_SCCP_credit; callingPAddress, paramName= con_SCCP_cgPA; data, paramName= con_SCCP_data; hopCounter, paramName= con_SCCP_hopCount; importance , paramName= con_SCCP_imp)" } //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ConnectionRequest { SCCP_param_MessageType messageType, SCCP_param_SourceLocalReference sourceLocRef, SCCP_param_ProtocolClass protClass, LIN1 pointer1, //will be 2 LIN1 pointer2, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_ConnReq_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop )" //Note, that optional part itself is mandatory but it may be empty! } //******************************************************************************** // Message Connection Confirm (CC) (Q713 $4.3) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part type set SCCP_ConnConfirm_optionalPart { SCCP_param_Credit_opt credit optional, SCCP_param_CPartyAddressEnc_opt calledPAddress optional, SCCP_param_Data_opt data optional, SCCP_param_Importance_opt importance optional } with { variant "TAG ( credit, paramName= con_SCCP_credit; calledPAddress, paramName= con_SCCP_cdPA; data, paramName= con_SCCP_data; importance, paramName= con_SCCP_imp)" } //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ConnectionConfirm { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef, SCCP_param_ProtocolClass protClass, LIN1 pointer1, SCCP_ConnConfirm_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop )"} //******************************************************************************** // Message Connection Refused (CREF) (Q713 $4.4) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part type set SCCP_ConnRefused_optionalPart { SCCP_param_CPartyAddressEnc_opt calledPAddress optional, SCCP_param_Data_opt data optional, SCCP_param_Importance_opt importance optional } with { variant "TAG (calledPAddress, paramName= con_SCCP_cdPA; data, paramName= con_SCCP_data; importance, paramName= con_SCCP_imp)" } //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ConnectionRefused { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_RefusalCause refusalCause, LIN1 pointer1, SCCP_ConnRefused_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop )"} //******************************************************************************** // Message Released (RLSD) (Q713 $4.5) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part type set SCCP_Released_optionalPart { SCCP_param_Data_opt data optional, SCCP_param_Importance_opt importance optional } with { variant "TAG (data, paramName= con_SCCP_data; importance, paramName= con_SCCP_imp)" } //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_Released { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef, SCCP_param_ReleaseCause releaseCause, LIN1 pointer1, SCCP_Released_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop )" } //******************************************************************************** // Message Release Complete (RLC) (Q713 $4.6) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ReleaseComplete { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef } with { variant "" } //******************************************************************************** // Message Data form 1 (DT1) (Q713 $4.7) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_DataForm1 { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SegmentingReassembl segmentingReassembl, LIN1 pointer1, //always 1! SCCP_param_Data data } with { variant (pointer1) "POINTERTO(data)"; } //******************************************************************************** // Message Data form 2 (DT2) (Q713 $4.8) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_DataForm2 { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SequencingSegmenting sequencingSegmenting, LIN1 pointer1, //always 1! SCCP_param_Data data } with { variant (pointer1) "POINTERTO(data)"; } //******************************************************************************** // Message Data Acknowledgement (AK) (Q713 $4.9) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_DataAcknowledgement { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_RecSeqNumber recSeqNumber, SCCP_param_Credit credit } with { variant "" } //******************************************************************************** // Message Unitdata (UDT) (Q713 $4.10) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_Unitdata { SCCP_param_MessageType messageType, SCCP_param_ProtocolClass protClass, LIN1 pointer1, //will be 3 LIN1 pointer2, LIN1 pointer3, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_Data data } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(data)" } //******************************************************************************** // Message Unitdata service (UDTS) (Q713 $4.11) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_UnitdataService { SCCP_param_MessageType messageType, SCCP_param_ReturnCause returnCause, LIN1 pointer1, //will be 3 LIN1 pointer2, LIN1 pointer3, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_Data data } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(data)" } //******************************************************************************** // Message Expedited Data (ED) (Q713 $4.12) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ExpeditedData { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, LIN1 pointer1, //always 1! SCCP_param_Data data } with { variant (pointer1) "POINTERTO(data)" } //******************************************************************************** // Message Expedited Data Acknowledgement (EA) (Q713 $4.13) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ExpeditedDataAck { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef } with { variant "" } //******************************************************************************** // Message Reset Request (RSR) (Q713 $4.14) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ResetRequest { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef, SCCP_param_ResetCause resetCause } with { variant "" } //******************************************************************************** // Message Reset Confirmation (RSC) (Q713 $4.15) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ResetConfirm { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef } with { variant "" } //******************************************************************************** // Message Protocol data unit error (ERR) (Q713 $4.16) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ProtDataUnitError { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_ErrorCause errorCause } with { variant "" } //******************************************************************************** // Message Inactivity test (IT) (Q713 $4.17) //******************************************************************************** //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_InactivityTest { SCCP_param_MessageType messageType, SCCP_param_DestLocalReference destLocRef, SCCP_param_SourceLocalReference sourceLocRef, SCCP_param_ProtocolClass protClass, SCCP_param_SequencingSegmenting sequencingSegmenting, SCCP_param_Credit credit } with { variant "" } //******************************************************************************** // Message Extended Unitdata (XUDT) (Q713 $4.18) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part type record SCCP_ExtUnitdata_optionalPart { SCCP_param_Segmentation_opt segmentation optional, SCCP_param_Importance_opt importance optional } with { variant "TAG (segmentation, paramName= con_SCCP_segm; importance, paramName= con_SCCP_imp)" } //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ExtUnitdata { SCCP_param_MessageType messageType, SCCP_param_ProtocolClass protClass, SCCP_param_HopCounter hopCounter, LIN1 pointer1, //will be 4 LIN1 pointer2, LIN1 pointer3, LIN1 pointer4, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_Data data, SCCP_ExtUnitdata_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(data)"; variant (pointer4) "POINTERTO(optionalPart)"; variant "TAG (eop, paramName=con_SCCP_eop )" } //******************************************************************************** // Message Extended Unitdata Service(XUDTS) (Q713 $4.19) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part // The same as SCCP_ExtUnitdata_optionalPart //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_ExtUnitdataService { SCCP_param_MessageType messageType, SCCP_param_ReturnCause returnCause, SCCP_param_HopCounter hopCounter, LIN1 pointer1, //will be 4 LIN1 pointer2, LIN1 pointer3, LIN1 pointer4, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_Data data, SCCP_ExtUnitdata_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(data)"; variant (pointer4) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop )" } //******************************************************************************** // Message Long Unitdata (LUDT) (Q713 $4.20) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part // The same as SCCP_ExtUnitdata_optionalPart //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_LongUnitdata { SCCP_param_MessageType messageType, SCCP_param_ProtocolClass protClass, SCCP_param_HopCounter hopCounter, LIN2 pointer1, LIN2 pointer2, LIN2 pointer3, LIN2 pointer4, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_LongData longData, SCCP_ExtUnitdata_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(longData)"; variant (pointer4) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop) " } //******************************************************************************** // Message Long Unitdata Service (LUDTS) (Q713 $4.21) //******************************************************************************** //--------------------------------------------------------------------------- // Optional part // The same as SCCP_ExtUnitdata_optionalPart //--------------------------------------------------------------------------- // Message definition //--------------------------------------------------------------------------- type record PDU_SCCP_LongUnitdataService { SCCP_param_MessageType messageType, SCCP_param_ReturnCause returnCause, SCCP_param_HopCounter hopCounter, LIN2 pointer1, //will be 5 LIN2 pointer2, LIN2 pointer3, LIN2 pointer4, SCCP_param_CPartyAddressEnc calledPAddress, SCCP_param_CPartyAddressEnc callingPAddress, SCCP_param_LongData longData, SCCP_ExtUnitdata_optionalPart optionalPart optional, SCCP_param_EndOfOptionalParams eop optional } with { variant (pointer1) "POINTERTO(calledPAddress)"; variant (pointer2) "POINTERTO(callingPAddress)"; variant (pointer3) "POINTERTO(longData)"; variant (pointer4) "POINTERTO(optionalPart)"; variant "TAG (eop,paramName=con_SCCP_eop) " } //******************************************************************************** // SCCP management messages (Q713 $5.3) //******************************************************************************** /*type record PDU_SCMG_message { SCMG_param_FormatId messageType, SCMG_param_AffectedSSN affectedSSN, SCMG_param_AffectedPointCode affectedPC, SCMG_param_MultiplIndicator smi, SCMG_param_CongestionLevel congLevel optional //shall be present in all messages except SSG } with { variant "" } */ //******************************************************************************** // SCCP Top Level PDU (Q713 $4.2) //******************************************************************************** type union PDU_SCCP { PDU_SCCP_ConnectionRequest connrequest, PDU_SCCP_ConnectionRefused connrefused, PDU_SCCP_Released released, PDU_SCCP_ReleaseComplete relcomp, PDU_SCCP_DataForm1 dataform1, PDU_SCCP_DataForm2 dataform2, PDU_SCCP_DataAcknowledgement dataack, PDU_SCCP_UnitdataService udataserv, PDU_SCCP_ExpeditedData expdata, PDU_SCCP_ExpeditedDataAck expdataack , PDU_SCCP_ResetRequest resetreq, PDU_SCCP_ResetConfirm resconf, PDU_SCCP_ProtDataUnitError pduerror, PDU_SCCP_InactivityTest inacttest, PDU_SCCP_ExtUnitdata extudata, PDU_SCCP_ExtUnitdataService extudataserv , PDU_SCCP_LongUnitdata longudata, PDU_SCCP_LongUnitdataService longudataserv, PDU_SCCP_Unitdata unitdata, PDU_SCCP_ConnectionConfirm connconfirm // PDU_SCMG_message scmg } with { variant "TAG (connrequest, messageType = cr; connconfirm, messageType = cc; connrefused, messageType = cref; released, messageType = rlsd; relcomp, messageType = rlc; dataform1, messageType = dt1; dataform2, messageType = dt2; dataack, messageType = ak; unitdata, messageType = udt; udataserv, messageType = udts; expdata, messageType = ed; expdataack, messageType = ea; resetreq, messageType = rsr; resconf, messageType = rsc; pduerror, messageType = err; inacttest, messageType = it; extudata, messageType = xudt; extudataserv, messageType = xudts; longudata, messageType = ludt; longudataserv, messageType = ludts)" } }//endgroup PDUDefinitions }//endgroup Types group OtherTypedefinitions {//startgroup OtherTypedefinitions // enum replaced with this solution: type integer states; const states idle:=0, connection_pending_OG:=1, connection_pending_IC:=2, active:=3, // ==data transfer, see 6.1.1.2.1/Q.711. disconnect_pending:=4, // == //reset_OG,- as N_RESET_req and N_RESET_resp will not be received, this state should never occur reset_bothway:=5, reset_IC:=5, //frozen_reference, wait_conn_confirm:=6; type record sccp_buffer { octetstring buffer, integer actlen, integer maxlen } // === Connection Oriented Data: === // record holding all data of a connection type record ConnectionData { OCT3 localReference, //segmLocReference????, OCT3 remoteReference, //segmRemoteRef????, states state, integer connectionId, //integer max_len, //maximal length of input buffer sccp_buffer reassembler_buffer // data collected here before sending up to the User } // === Connectionless Data: ======================= // == sending:== // Segmentation Local Reference type integer segmLocRef_states; const segmLocRef_states segmLocRef_idle :=0, segmLocRef_busy:=1; type record segmLocRef { OCT3 val, segmLocRef_states state } // == receiving: == type record ClessRcvBuff { //OCT3 segmLocalRef, // not used ?? OCT3 segmRemoteRef, segmLocRef_states state, sccp_buffer reassembler_buffer } type charstring SCCP_ServiceType; const charstring mtp3_itu := "mtp3_itu"; // SCCP_itu const charstring mtp3_ansi := "mtp3_ansi"; //SCCP_ansi const charstring mtp3_ttc := "mtp3_ttc"; //SCCP_ttc const charstring mtp3b_itu := "mtp3b_itu"; const charstring mtp3b_ansi:= "mtp3b_ansi"; const charstring mtp3b_ttc := "mtp3b_ttc"; const charstring m3ua := "m3ua"; const charstring mtp3_mpt := "mtp3_mpt"; type record MSC_SCCP_MTP3_parameters { MTP3_Field_sio sio, integer opc, integer dpc, integer sls, SCCP_ServiceType sccp_serviceType, integer ssn optional //This should be set if you want only one } //active subsystem on the link. }//endgroup OtherTypedefinitions group MessageTypes { // ************************************************************************* // * ASP_sccp type definitions * // ************************************************************************* // type record ASP_MTP3_TRANSFERind_sccp // { // octetstring sio length(1), // see values in Q.704 $14.2.1 // integer opc, // integer dpc, // integer sls, // PDU_SCCP data // } type record ASP_MTP3_TRANSFERreq_sccp { octetstring sio length(1), // see values in Q.704 $14.2.1 integer opc, integer dpc, integer sls, PDU_SCCP data } }//end group Messagetypes group ASPTemplates { // ************************************************************************* // * ASP template definitions sending // ************************************************************************* // template ASP_MTP3_TRANSFERind_sccp t_ASP_MTP3_TRANSFERind_sccp // ( // // octetstring pl_sio, // integer pl_opc, // integer pl_dpc, // integer pl_sls, // template PDU_SCCP pl_data) := // { // sio := pl_sio, // opc := pl_opc, // dpc := pl_dpc, // sls := pl_sls, // data := pl_data // } template ASP_MTP3_TRANSFERreq_sccp t_ASP_MTP3_TRANSFERreq_sccp ( octetstring pl_sio, integer pl_opc, integer pl_dpc, integer pl_sls, template PDU_SCCP pl_data ) := { sio := pl_sio, opc := pl_opc, dpc := pl_dpc, sls := pl_sls, data := pl_data } // ************************************************************************* // * ASP template definitions receiving * // ************************************************************************* //template ASP_MTP3_TRANSFERind_sccp tr_ASP_MTP3_TRANSFERind_sccp // ( // // PDU_SCCP pl_data) := // { // sio := ?, // opc := ?, // dpc := ?, // sls := ?, // data := pl_data // } template ASP_MTP3_TRANSFERreq_sccp tr_ASP_MTP3_TRANSFERreq_sccp // ( // PDU_SCCP pl_data) := { sio := ?, opc := ?, dpc := ?, sls := ?, data := ? //pl_data } }//endgroup ASPTemplates } with { encode "RAW" } // end module