Compare Revisions

The credentials to download the source code are:
 Username: svnusers
 Password: svnusers

Ignore whitespace Rev 648 → Rev 649

/tags/v3.0.3/trunk/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn
File deleted
\ No newline at end of file
/tags/v3.0.3/trunk/ttcn/LibSip_SIPTypesAndValues.ttcn
File deleted
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_SMSTemplates.ttcn3
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_SMSTemplates.ttcn3 (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_SMSTemplates.ttcn3 (nonexistent)
@@ -1,304 +0,0 @@
-/**
- * @author STF 435, STF 471
- * @version $Id$
- * @desc This module provides the types used by the test component
- * for SIP-SMS over IMS as specified in 3GPP 24-341 tests.
- * This module is part of LibSipV3.
- */
-module LibSip_SMSTemplates {
- import from LibCommon_DataStrings all;
- import from LibSip_SMSTypesAndValues all;
- import from LibSip_SMSFunctions all;
-
- group SMS_Templates_Group {
-
- /* Non-SMS Type Constraints */
- template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlanAny := {
- extBit := ?,
- typeOfNumber := ?,
- numberingPlanId := ?
- }
-
- template(value) TypeOfNumberingPlan m_TypeOfNumberingPlan := {
- extBit := '1'B,
- typeOfNumber := '001'B, // international number
- numberingPlanId :=
- '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163)
- }
-
- template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlan := mw_TypeOfNumberingPlanAny;
-
- /* End Non-SMS Type Constraints */
- template(value) RP_OriginatorAddress_dl m_RP_OriginatorAddress_dl := {
- spare := omit,
- iei := omit,
- iel := '06'O, // 6 semi-octets
- typeOfNumberingPlan := m_TypeOfNumberingPlan,
- digits := '001122'O
- }
-
- template(present) RP_OriginatorAddress_ul mw_RP_OriginatorAddress_ul := {
- spare := omit,
- iei := omit,
- iel := '00'O
- }
-
- template(present) RP_DestinationAddress_ul mw_RP_DestinationAddress_ul := {
- spare := omit,
- iei := omit,
- iel := ?,
- typeOfNumberingPlan := mw_TypeOfNumberingPlan,
- digits := ?
- }
- template(omit) RP_DestinationAddress_dl m_RP_DestinationAddress_dl := {
- spare := omit,
- iei := omit,
- iel := '00'O
- }
-
- template(omit) RP_UserData m_RP_UserData_DELIVER(
- octetstring p_Digits
- ) := {
- spare := omit,
- iei := omit,
- iel := int2oct((153 + lengthof(p_Digits)), 1),
- tP_PDU := {SMS_DELIVER := m_SMS_DELIVER(p_Digits)}
- }
-
- template(value) RP_UserData m_RP_UserData_SUBMIT_REPORT := {
- spare := '0'B,
- iei := c_IEI_RP_UserData,
- iel := '0A'O, // the TPDU data length is 10 octets
- tP_PDU := {SMS_SUBMIT_REPORT := m_SMS_SUBMIT_REPORT}
- }
- template(value) RP_UserData m_RP_UserData_STATUS_REPORT(
- template(value) TP_MessageReference_Type p_MessageRef,
- template(value) TP_Address_Type p_RecipientAddress,
- template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
- ) modifies m_RP_UserData_SUBMIT_REPORT := {
- tP_PDU := {SMS_STATUS_REPORT := m_SMS_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)}
- }
-
- template(present) RP_UserData mw_RP_UserData_SUBMIT := {
- spare := omit,
- iei := omit,
- iel := ?,
- tP_PDU := {SMS_SUBMIT := mw_SMS_SUBMIT_VPF_REF}
- }
-
- template(present) RP_UserData mw_RP_UserData_DELIVER_REPORT := {
- spare := '0'B,
- iei := c_IEI_RP_UserData,
- iel := ?,
- tP_PDU := {SMS_DELIVER_REPORT := mw_SMS_DELIVER_REPORT}
- }
-
- /* End SM-RP Type Constraints */
- /* SM-RP PDU Constraints */
- template(value) RP_DATA_dl_Type m_RP_DATA_dl_base := {
- spare5 := '00000'B,
- rP_MessageTypeIndicator := c_MT_RP_DATA_dl,
- rP_MessageReference := '00'O,
- rP_OriginatorAddress := m_RP_OriginatorAddress_dl,
- rP_DestinationAddress := m_RP_DestinationAddress_dl,
- rP_UserData := m_RP_UserData_DELIVER('0000'O)
- }
-
- template(value) RP_DATA_dl_Type m_RP_DATA_dl_DELIVER(
- octetstring p_Digits
- ) modifies m_RP_DATA_dl_base := {rP_UserData := m_RP_UserData_DELIVER(p_Digits)}
-
- template(value) RP_DATA_dl_Type m_RP_DATA_dl_STATUS_REPORT(
- template(value) TP_MessageReference_Type p_MessageRef,
- template(value) TP_Address_Type p_RecipientAddress,
- template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
- ) modifies m_RP_DATA_dl_base := {
- rP_UserData := m_RP_UserData_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)
- }
-
-
- template(present) RP_DATA_ul_Type mw_RP_DATA_ul_SUBMIT := {
- spare5 := '00000'B,
- rP_MessageTypeIndicator := c_MT_RP_DATA_ul,
- rP_MessageReference := ?,
- rP_OriginatorAddress := mw_RP_OriginatorAddress_ul,
- rP_DestinationAddress := mw_RP_DestinationAddress_ul,
- rP_UserData := mw_RP_UserData_SUBMIT
- }
-
- template(value) RP_ACK_Type m_RP_ACK_SUBMIT_REPORT(
- template(value) Oct1 p_msgReference := '00'O
- ) := {
- spare5 := '00000'B,
- rP_MessageTypeIndicator := c_MT_RP_ACK_dl,
- rP_MessageReference := p_msgReference,
- rP_UserData := m_RP_UserData_SUBMIT_REPORT
- }
-
- template(present) RP_ACK_Type mw_RP_ACK_DELIVER_REPORT := {
- spare5 := '00000'B,
- rP_MessageTypeIndicator := c_MT_RP_ACK_ul,
- rP_MessageReference := ?,
- rP_UserData := mw_RP_UserData_DELIVER_REPORT
- }
-
- /* End SM-RP PDU Constraints */
- /* SM-TP Type Constraints */
- template(value) TP_ProtocolIdentifier_Type mw_TP_ProtocolIdentifier := {
- pidType := '01'B,
- interworking := '0'B,
- pidValue := '00000'B
- }
-
- template(value) TP_ProtocolIdentifier_Type m_TP_ProtocolIdentifier := {
- pidType := '01'B,
- interworking := '0'B,
- pidValue := '00000'B
- }
-
- template(value) TP_DataCodingScheme_Type m_TP_DataCodingScheme := {
- codingGroup := '0000'B,
- codeValue := '0000'B
- }
-
- template(present) TP_Address_Type mw_TP_AddressAny := {
- iel := ?,
- typeOfNumberingPlan := mw_TypeOfNumberingPlanAny,
- digits := *
- }
-
- template(value) TP_Address_Type m_TP_Address(
- octetstring p_Digits
- ) := {
- iel := int2oct(2 * lengthof(p_Digits), 1),
- // length is number of useful semi-octets
- // as p_digits is declared as octetstring the number must be even
- typeOfNumberingPlan := m_TypeOfNumberingPlan,
- digits := p_Digits
- }
-
- template(value) TP_ParameterIndicator_Type m_TP_ParameterIndicator := {
- extBit1 := '0'B,
- spare4 := '0000'B,
- tP_UDL := '0'B,
- tP_DCS := '0'B,
- tP_PID := '1'B
- }
-
- /* End SM-TP Type Constraints */
- /* SM-TP PDU Constraints */
- template(value) SMS_DELIVER_Type m_SMS_DELIVER(
- octetstring p_Digits
- ) := {
- tP_ReplyPath := '0'B,
- tP_UserDataHeaderIndicator := '0'B,
- tP_StatusReportIndication := '1'B,
- spare2 := '00'B,
- tP_MoreMessagesToSend := '0'B,
- tP_MessageTypeIndicator := c_MT_SMS_DELIVER,
- tP_OriginatingAddress := m_TP_Address(p_Digits),
- tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
- tP_DataCodingScheme_Type := m_TP_DataCodingScheme,
- tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed
- tP_UserDataLength := int2oct(160, 1),
- tP_UserData := f_IA5_2oct(c_Fox)
- }
-
- template(present) SMS_DELIVER_REPORT_Type mw_SMS_DELIVER_REPORT := {
- spare1 := '0'B,
- tP_UserDataHeaderIndicator := '0'B,
- spare4 := '0000'B,
- tP_MessageTypeIndicator := c_MT_SMS_DELIVER_REPORT,
- tP_FailureCause := omit,
- tP_ParameterIndicator := ?,
- tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier,
- tP_DataCodingScheme_Type := *,
- tP_UserDataLength := *,
- tP_UserData := *
- }
-
- template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT := {
- tP_ReplyPath := '0'B,
- tP_UserDataHeaderIndicator := '0'B,
- tP_StatusReportRequest := '1'B,
- tP_ValidityPeriodFormat := '??'B,
- tP_RejectDuplicates := '0'B,
- tP_MessageTypeIndicator := c_MT_SMS_SUBMIT,
- tP_MessageReference := ?,
- tP_DestinationAddress := mw_TP_AddressAny,
- tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier,
- tP_DataCodingScheme_Type := ?,
- tP_ValidityPeriod := *,
- tP_UserDataLength := int2oct(160, 1),
- tP_UserData :=
- ? // any data will do: 140 octets
- }
-
- template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_NP modifies mw_SMS_SUBMIT := {
- tP_ValidityPeriodFormat := '00'B,
- tP_ValidityPeriod := omit
- }
-
- template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_REF modifies mw_SMS_SUBMIT := {
- tP_ValidityPeriodFormat := '10'B,
- tP_ValidityPeriod := ?
- }
-
- template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ENH modifies mw_SMS_SUBMIT := {
- tP_ValidityPeriodFormat := '01'B,
- tP_ValidityPeriod := ?
- }
-
- template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ABS modifies mw_SMS_SUBMIT := {
- tP_ValidityPeriodFormat := '11'B,
- tP_ValidityPeriod := ?
- }
-
- template(value) SMS_SUBMIT_REPORT_Type m_SMS_SUBMIT_REPORT := {
- spare1 := '0'B,
- tP_UserDataHeaderIndicator := '0'B,
- spare4 := '0000'B,
- tP_MessageTypeIndicator := c_MT_SMS_SUBMIT_REPORT,
- tP_FailureCause := omit,
- tP_ParameterIndicator := m_TP_ParameterIndicator,
- tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed
- tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
- tP_DataCodingScheme_Type := omit,
- tP_UserDataLength := omit,
- tP_UserData := omit
- }
-
- template(value) SMS_STATUS_REPORT_Type m_SMS_STATUS_REPORT(
- template(value) TP_MessageReference_Type p_MessageRef,
- template(value) TP_Address_Type p_RA,
- template(value) TP_ServiceCentreTimeStamp_Type p_SCTP
- ) := {
- // TS 34.229-1 clause A.7.5
- spare1 := '0'B,
- tP_UserDataHeaderIndicator := '0'B,
- tP_StatusReportQualifier := '0'B,
- spare2 := '00'B,
- tP_MoreMessagesToSend := '0'B,
- tP_MessageTypeIndicator := c_MT_SMS_STATUS_REPORT,
- tP_MessageReference := p_MessageRef,
- tP_RecipientAddress := p_RA,
- tP_ServiceCentreTimeStamp := p_SCTP,
- tP_DischargeTime := '00000000000000'H,
- tP_Status := {
- reserved := '0'B,
- status := '0000000'B
- },
- tP_ParameterIndicator := m_TP_ParameterIndicator,
- tP_ProtocolIdentifier := m_TP_ProtocolIdentifier,
- tP_DataCodingScheme_Type := omit,
- tP_UserDataLength := omit,
- tP_UserData := omit
- }
-
-
-
-
-
- /* End SM-TP PDU Constraints */
- } // group SMS_Templates_Group
-} // End of module LibSip_SMSTypesAndValues
\ No newline at end of file
Index: tags/v3.0.3/trunk/ttcn/LibSip_Library.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_Library.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_Library.ttcn (nonexistent)
@@ -1,23 +0,0 @@
-/**
- * @author STF471
- * @version $Id: LibSip_Steps.ttcn 614 2014-07-07 10:01:14Z tepelmann $
- * @desc This module provides all modules of the LibSip as public imports.
- * Importing this module will automatically import all here listed modules,
- * no other LibSip_xxx module import needed in this case.
- * This module is part of LibSipV3.
- */
-module LibSip_Library {
-
- public import from LibSip_Interface all;
- public import from LibSip_MessageBodyTypes all;
- public import from LibSip_PIXITS all;
- public import from LibSip_SDPTypes all;
- public import from LibSip_SimpleMsgSummaryTypes all;
- public import from LibSip_SMSFunctions all;
- public import from LibSip_SMSTemplates all;
- public import from LibSip_SMSTypesAndValues all;
- public import from LibSip_Steps all;
- public import from LibSip_Templates all;
- public import from LibSip_XMLTypes all;
-
-}
\ No newline at end of file
Index: tags/v3.0.3/trunk/ttcn/LibSip_XMLTypes.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_XMLTypes.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_XMLTypes.ttcn (nonexistent)
@@ -1,112 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF471
- * @version $Id$
- * @desc
- * This module provides the XML type system for SIP tests. The types have been generated automatically, followed by manual modifications: - bitType substituted by OneBitType - twobitType substituted by TwoBitType - addition of pattern for: OneBitType, TwoBitType, ThreeBitType, FourBitType, FourBitType, SixBitType - application of enumerated for: State_type, Endpoint_status_type, Joining_type, Disconnection_type, Media_status_type, Originating_identity_presentation_restriction, Terminating_identity_presentation_restriction - addition of length value: NetworkIdentityType, SixteenbitType - addition of value restriction: CugIndexType - substitution of "content" by "choice": Call_type, Mcid - additional type renaming (upper first letter): AbsService, Anonymous, Busy, Communication_diverted,
- * Conference_description_type, Conference_info, Conference_media_type, Conference_medium_type, Conference_state_type, Conference_type, Cug, CugRequestType, Empty_element_type, Endpoint_type, Execution_type, Host_type, Keywords_type, Media, Media_type, No_answer, Not_reachable, Not_registered, Originating_identity_presentation, Presence_status, Presence_status_activity_type, RequestType, ResponseType, Roaming, Rule_deactivated, Sidebars_by_val_type, Simservs, SimservType, Terminating_identity_presentation, Uri_type, Uris_type, User_roles_type, User_languages_type, User_type, Users_type - new group CDIV added by STF369 - new group ACR_CD added by STF38 - new types RegInfo and Pidf_Lo added by STF160.
- * This module is part of LibSipV3.
- */
-module LibSip_XMLTypes {
- import from http_www_w3_org_XML_1998_namespace language "XSD" all
- with {
- extension "File:../xsd/xml.xsd";
- }
-
- import from urn_ietf_params_xml_ns_common_policy language "XSD" all
- with {
- extension "File:../xsd/common-policy.xsd";
- }
-
- import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
- with {
- extension "File:../xsd/ResourceList.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all
- with {
- extension "File:../xsd/SupplementaryServices.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all
- with {
- extension "File:../xsd/MCID.xsd";
- }
-
- import from NoTargetNamespace language "XSD" all
- with {
- extension "File:../xsd/Ims3gpp.xsd";
- }
-
- import from urn_3gpp_ns_cw_1_0 language "XSD" all
- with {
- extension "File:../xsd/cw.xsd";
- }
-
- import from urn_ietf_params_xml_ns_conference_info language "XSD" all
- with {
- extension "File:../xsd/CONF.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all
- with {
- extension "File:../xsd/PSTN.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all
- with {
- extension "File:../xsd/CDIVN.xsd";
- }
-
- import from urn_oma_xml_xdm_common_policy language "XSD" all
- with {
- extension "File:../xsd/xdm_commonPolicy-v1_0.xsd";
- }
- // RFC 3680 Registration Info
- import from urn_ietf_params_xml_ns_reginfo language "XSD" all
- with {
- extension "File:../xsd/regInfo.xsd";
- }
- // RFC 3863 Presence Information Data Format
- import from urn_ietf_params_xml_ns_pidf language "XSD" all
- with {
- extension "File:../xsd/pidf.xsd";
- }
- // RFC 4119 Presence Information Data Format, Location Object extension
- import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all
- with {
- extension "File:../xsd/geopriv10basic.xsd";
- }
-
- // RFC 4119 Presence Information Data Format, Location Object extension
- import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all
- with {
- extension "File:../xsd/pidf_lo.xsd";
- }
-
- group XmlTypes {
- type union XmlBody {
- Mcid mcid,
- // if there is XML Mcid
- Comm_div_info_type cdivn,
- // if there is XML cdivn
- Simservs simservs,
- // if there is XML simservs (Oip/r, Tip/r, Call Diversion, ICB, OCB ...)
- Conference_type conference,
- // if there is XML conf
- Ims_cw cw,
- // if there is XML cw (defined in X_3gpp_ns_cw_1_0.ttcn3view)
- Cug cug,
- // if there is XML cug (defined in org_etsi_uri__ngn_params_xml_simservs_xcap.ttcn3view)
- TIMS3GPP ims3gpp,
- // if there is XML IMS 3GPP
- PSTN_transit pstnTransit,
- // if there is XML PSTN_transit
- Resource_lists resourceLists,
- // if there is XML Resource List data
- Reginfo regInfo,
- // if it is a registration event
- Geopriv
- geopriv // if it is a Presence Information Data Format Location Object
- }
- }
-}
\ No newline at end of file
/tags/v3.0.3/trunk/ttcn/LibSip_XMLTypes.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_MessageBodyTypes.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_MessageBodyTypes.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_MessageBodyTypes.ttcn (nonexistent)
@@ -1,56 +0,0 @@
-/******************************************************************************
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id: LibSip_MessageBodyTypes.ttcn 622 2014-07-10 14:50:54Z nikolajev $
- * @desc This module provides the types used for alternative SIP message
- * body variants and combinations.
- * This module is part of LibSipV3.
- */
-
-module LibSip_MessageBodyTypes {
- import from LibSip_SDPTypes all;
- import from LibSip_SimpleMsgSummaryTypes all;
- import from LibSip_XMLTypes all;
-
- /*
- * Simple body types that can be used instead of the more detailed XML and SDP
- * without codec support
- * */
- //type charstring XmlBody;
- //type charstring SDP_Message;
- type octetstring MsdBody;
-
- group MIMETypes {
- type union MIME_Encapsulated_Parts {
- SDP_Message sdpMessageBody,
- XmlBody xmlBody, // if there is XML body
- MsdBody msdBody // RFC 8147: Minimum Set of Data octets
- }
-
- type record MIME_Encapsulated_Part {
- charstring content_type,
- charstring content_disposition optional,
- charstring content_id optional, // @sic R5-174537 [email protected]
- MIME_Encapsulated_Parts mime_encapsulated_part
- }
-
- type record MIME_Message {
- charstring boundary, // len:
- MimeEncapsulatedList mimeEncapsulatedList
- }
-
- type record of MIME_Encapsulated_Part MimeEncapsulatedList;
-
-
- } // group MIMETypes
-
- type union MessageBody {
- SDP_Message sdpMessageBody, // if there is only SDP part
- // XMLMessage xmlMessage, // if there is XML message (with header and body)
- XmlBody xmlBody, // if there is XML body
- MIME_Message mimeMessageBody, // if there is SDP and encapsulated ISUP part
- charstring sipfrag, // if content-Type is message/sipfrag (cp. NOTIFY, cp TS124147 A.4.3.1.2)
- charstring textplain, // if content type is text/plain (for testing long messages)
- SimpleMsgSummary simpleMsgSummary, // RFC 3842
- octetstring smsMessage // encoded SMS message 3GPP 23.040, 24.011
- }
-}
Index: tags/v3.0.3/trunk/ttcn/LibSip_Common.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_Common.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_Common.ttcn (nonexistent)
@@ -1,39 +0,0 @@
-/**
- * @author STF160, STF471
- * @version $Id: LibSip_Common.ttcn 488 2014-09-18 10:17:19Z rennoch $
- * @desc This module provides the common definitions for SIP messages.
- * This module is part of LibSipV3.
-*/
-module LibSip_Common {
-
- type set length (1..infinity) of charstring Charstring_List;
-
- // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31,
- // 20.33, 20.34, 20.39, 20.42, 20.44]
-
-
- type union GenValue {
- charstring tokenOrHost,
- charstring quotedString
- }
-
- type record GenericParam
- {
- charstring id,
- GenValue paramValue optional
- }
-
- // [?]
- type set of GenericParam SemicolonParam_List;
-
- // [?]
- type set of GenericParam AmpersandParam_List;
-
- // [?]
- type set of GenericParam CommaParam_List;
- //------------------------------------------------------------------------------
-
-}
-with {
- encode "LibSip V3";
-} // end module LibSip_Common
Index: tags/v3.0.3/trunk/ttcn/LibSip_SMSTypesAndValues.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_SMSTypesAndValues.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_SMSTypesAndValues.ttcn (nonexistent)
@@ -1,485 +0,0 @@
-/******************************************************************************
- * @author STF 435, STF471
- * @version $Id$
- * @desc This module contains the type definitions for SMS messages as specified in
- * 3GPP 24-011 and 3GPP 23-040 Rel 8 and 9.
- * SMS over IMS is specified in 3GPP 24-341.
- * This module is part of LibSipV3.
- */
-module LibSip_SMSTypesAndValues {
- import from LibCommon_DataStrings all;
-
- group SMS_Declarations {
-
- const RP_MessageTypeIndicator_Type c_MT_RP_DATA_ul := '000'B;
- /* RP_DATA_ul */
- const RP_MessageTypeIndicator_Type c_MT_RP_DATA_dl := '001'B;
- /* RP_DATA_dl */
- const RP_MessageTypeIndicator_Type c_MT_RP_ACK_ul := '010'B;
- /* RP_ACK_ul */
- const RP_MessageTypeIndicator_Type c_MT_RP_ACK_dl := '011'B;
- /* RP_ACK_dl */
- const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_ul := '100'B;
- /* RP_ERROR_ul */
- const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_dl := '101'B;
- /* RP_ERROR_dl */
- const RP_MessageTypeIndicator_Type c_MT_RP_SMMA := '110'B;
- /* RP_SMMA */
- const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER := '00'B;
- /* SMS DELIVER */
- const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER_REPORT := '00'B;
- /* SMS DELIVER REPORT */
- const TP_MessageTypeIndicator_Type c_MT_SMS_STATUS_REPORT := '10'B;
- /* SMS STATUS REPORT */
- const TP_MessageTypeIndicator_Type c_MT_SMS_COMMAND := '10'B;
- /* SMS COMMAND */
- const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT := '01'B;
- /* SMS SUBMIT, SMS SUBMIT REPORT */
- const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT_REPORT := '01'B;
- /* SMS SUBMIT, SMS SUBMIT REPORT */
- const Bit7 c_IEI_RP_UserData := '1000001'B;
- /* 24.011 cl. 8.2.5.3 */
- const charstring c_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK.";
-
-
-
- type record TypeOfNumberingPlan {
- /* 24.008 cl. 10.5.4.7, 10.5.4.9, 10.5.4.13 */
- Bit1 extBit,
- /* Extension Bit */
- Bit3 typeOfNumber,
- /* Type Of Number */
- Bit4 numberingPlanId /* Numbering Plan Identification */
- }
- /* SM-RP Type Declarations */
- type Bit3 RP_MessageTypeIndicator_Type;
- /* 24.011 cl. 8.2.2 */
- type Oct1 RP_MessageReference_Type;
- /* 24.011 cl. 8.2.3 */
- type record RP_OriginatorAddress_dl {
- /* 24.011 cl. 8.2.5.1 */
- Bit1 spare optional,
- /* 0 */
- Bit7 iei optional,
- /* 0101 1110 */
- Oct1 iel,
- /* min value 2 and max value is 11 */
- TypeOfNumberingPlan typeOfNumberingPlan,
- /* */
- octetstring digits length(1 .. 10)
- }
-
- type record RP_OriginatorAddress_ul {
- /* 24.011 cl. 8.2.5.1 */
- Bit1 spare optional,
- /* 0 */
- Bit7 iei optional,
- /* 0101 1110 */
- Oct1 iel /* 0 */
- }
-
- type record RP_DestinationAddress_ul {
- /* 24.011 cl. 8.2.5.2 */
- Bit1 spare optional,
- /* 0 */
- Bit7 iei optional,
- /* 0101 1110 */
- Oct1 iel,
- /* min value 2 and max value is 11 */
- TypeOfNumberingPlan typeOfNumberingPlan,
- /* */
- octetstring digits length(1 .. 10)
- }
- type record RP_DestinationAddress_dl {
- /* 24.011 cl. 8.2.5.2 */
- Bit1 spare optional,
- /* 0 */
- Bit7 iei optional,
- /* 0101 1110 */
- Oct1 iel /* 0 */
- }
-
- type record RP_UserData {
- /* 24.011 cl. 8.2.5.3 */
- Bit1 spare optional,
- /* 0, present in case of TLV; omit in case of LV */
- Bit7 iei optional,
- /* 1000001, present in case of TLV; omit in case of LV */
- Oct1 iel,
- /* */
- TP_PDU_Type tP_PDU /* <= 232 octets */
- }
-
- type record RP_Cause {
- /* 24.011 cl. 8.2.5.4 */
- Bit1 spare optional,
- /* present in case of TLV; omit in case of LV */
- Bit7 iei optional,
- /* present in case of TLV; omit in case of LV */
- Oct1 iel,
- /* 2 or 3 */
- Bit1 extBit1,
- /* 0 */
- Bit7 causeValue1,
- /* Table 8.4/3GPP TS 24.011 */
- Bit1 extBit2,
- /* 0 */
- Bit7 causeValue2,
- /* Table 8.4/3GPP TS 24.011 */
- Oct1 diagnostic optional /* Parameters included in the return error from MAP */
- }
-
- /* End SM-RP Type Declarations */
- /* SM-RP PDU Declarations */
- type record RP_DATA_dl_Type {
- /* 24.011 cl. 7.3.1.1
- Direction: n -> ue */
- Bit5 spare5,
- /* cl. 8.2.2 M V 5 bits */
- RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
- /* cl. 8.2.2 M V 3 bits */
- RP_MessageReference_Type rP_MessageReference,
- /* cl. 8.2.3 M LV 1 */
- RP_OriginatorAddress_dl rP_OriginatorAddress,
- /* cl. 8.2.5.1 M LV 1-12 octets */
- RP_DestinationAddress_dl rP_DestinationAddress,
- /* cl. 8.2.5.2 M LV 1 */
- RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */
- }
-
- type record RP_DATA_ul_Type {
- /* 24.011 cl. 7.3.1.2
- Direction: ue -> n */
- Bit5 spare5,
- /* cl. 8.2.2 M V 5 bits */
- RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
- /* cl. 8.2.2 M V 3 bits */
- RP_MessageReference_Type rP_MessageReference,
- /* cl. 8.2.3 M LV 1 */
- RP_OriginatorAddress_ul rP_OriginatorAddress,
- /* cl. 8.2.5.1 M LV 1 */
- RP_DestinationAddress_ul rP_DestinationAddress,
- /* cl. 8.2.5.2 M LV 1 */
- RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */
- }
-
- type record RP_SMMA_Type {
- /* 24.011 cl. 7.3.2
- Direction: ue -> n */
- Bit5 spare5,
- /* cl. 8.2.2 M V 5 bits */
- RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
- /* cl. 8.2.2 M V 3 bits */
- RP_MessageReference_Type rP_MessageReference /* cl. 8.2.3 M LV 1 */
- }
-
- type record RP_ACK_Type {
- /* 24.011 cl. 7.3.3
- Direction: ue <-> n */
- Bit5 spare5,
- /* cl. 8.2.2 M V 5 bits */
- RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
- /* cl. 8.2.2 M V 3 bits */
- RP_MessageReference_Type rP_MessageReference,
- /* cl. 8.2.3 M LV 1 */
- RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */
- }
-
- type record RP_ERROR_Type {
- /* 24.011 cl. 7.3.4
- Direction: ue <-> n */
- Bit5 spare5,
- /* cl. 8.2.2 M V 5 bits */
- RP_MessageTypeIndicator_Type rP_MessageTypeIndicator,
- /* cl. 8.2.2 M V 3 bits */
- RP_MessageReference_Type rP_MessageReference,
- /* cl. 8.2.3 M LV 1 */
- RP_Cause rP_Cause,
- /* cl. 8.2.5.4 M LV 2-3 */
- RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */
- }
-
- type union RP_PDU_Type {
- RP_DATA_dl_Type RP_DATA_dl,
- RP_DATA_ul_Type RP_DATA_ul,
- RP_SMMA_Type RP_SMMA,
- RP_ACK_Type RP_ACK,
- RP_ERROR_Type RP_ERROR
- }
-
- /* End SM-RP PDU Declarations */
- /* SM-TP Type Declarations */
- type record TP_Address_Type {
- /* 23.040 cl. 9.1.2.5 */
- Oct1 iel,
- /* min value 2 and max value is 11 */
- TypeOfNumberingPlan typeOfNumberingPlan,
- octetstring digits length(0 .. 10) optional
- }
-
- type Bit2 TP_MessageTypeIndicator_Type;
- /* 23.040 cl. 9.2.3.1 */
- type Oct1 TP_MessageReference_Type;
- /* 23.040 cl. 9.2.3.6 */
- type Oct1 TP_UserDataLength_Type;
- /* 23.040 cl. 9.2.3.16 */
- type record TP_ProtocolIdentifier_Type {
- /* 23.040 cl. 9.2.3.9 */
- Bit2 pidType,
- /* */
- Bit1 interworking,
- /* */
- Bit5 pidValue /* */
- }
-
- type record TP_DataCodingScheme_Type {
- /* 23.040 cl. 9.2.3.10 + 23.040 cl. 4 */
- Bit4 codingGroup,
- /* */
- Bit4 codeValue /* */
- }
-
- type hexstring TP_ServiceCentreTimeStamp_Type length(14);
- /* 23.040 cl. 9.2.3.11 */
- type Oct1 TP_ValidityPeriodRelative_Type;
- /* 23.040 cl. 9.2.3.12.1 */
- type hexstring TP_ValidityPeriodAbsolute_Type length(14);
- /* 23.040 cl. 9.2.3.12.2 */
- type record TP_ValidityPeriodEnhanced_Type {
- /* 23.040 cl. 9.2.3.12.3 */
- Bit1 extBit,
- /* */
- Bit1 singleShot,
- /* */
- Bit3 spare3,
- /* */
- Bit3 validityPeriodFormat,
- /* */
- Oct6 validityPeriod /* */
- }
-
- type union TP_ValidityPeriod_Type {
- /* 23.040 cl. 9.2.3.3 */
- TP_ValidityPeriodRelative_Type TP_ValidityPeriodRelative,
- /* Relative format */
- TP_ValidityPeriodAbsolute_Type TP_ValidityPeriodAbsolute,
- /* Absolute format */
- TP_ValidityPeriodEnhanced_Type TP_ValidityPeriodEnhanced /* Enhanced format */
- }
-
- type record TP_Status_Type {
- /* 23.040 cl. 9.2.3.15 */
- Bit1 reserved,
- /* */
- Bit7 status /* */
- }
-
- type Bit8 TP_Command_Type;
- /* 23.040 cl. 9.2.3.19 */
- type record TP_ParameterIndicator_Type {
- /* 23.040 cl. 9.2.3.27 */
- Bit1 extBit1,
- /* */
- Bit4 spare4,
- /* */
- Bit1 tP_UDL,
- /* */
- Bit1 tP_DCS,
- /* */
- Bit1 tP_PID /* */
- }
-
- /* End SM-TP Type Declarations */
- /* SM-TP PDU Declarations */
- type record SMS_DELIVER_Type {
- /* 23.040 cl. 9.2.2.1
- Direction: n -> ue */
- Bit1 tP_ReplyPath,
- /* 23.040 cl. 9.2.3.17 */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit1 tP_StatusReportIndication,
- /* 23.040 cl. 9.2.3.4 */
- Bit2 spare2,
- /* */
- Bit1 tP_MoreMessagesToSend,
- /* 23.040 cl. 9.2.3.2 */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- TP_Address_Type tP_OriginatingAddress,
- /* 23.040 cl. 9.1.2.5 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
- /* 23.040 cl. 9.2.3.9 */
- TP_DataCodingScheme_Type tP_DataCodingScheme_Type,
- /* 23.040 cl. 9.2.3.10 */
- TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
- /* 23.040 cl. 9.2.3.11 */
- TP_UserDataLength_Type tP_UserDataLength,
- /* 23.040 cl. 9.2.3.16, derived from SUBMIT */
- octetstring tP_UserData length(0 .. 140) optional /* 23.040 cl. 9.2.3.24, derived from SUBMIT */
- }
-
- type record SMS_DELIVER_REPORT_Type {
- /* 23.040 cl. 9.2.2.1a
- Direction: ue -> n */
- Bit1 spare1,
- /* */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit4 spare4,
- /* */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- Oct1 tP_FailureCause optional,
- /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */
- TP_ParameterIndicator_Type tP_ParameterIndicator,
- /* 23.040 cl. 9.2.3.27 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
- /* 23.040 cl. 9.2.3.9 */
- TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
- /* 23.040 cl. 9.2.3.10 */
- TP_UserDataLength_Type tP_UserDataLength optional,
- /* 23.040 cl. 9.2.3.16 */
- octetstring tP_UserData length(0 .. 159) optional /* 23.040 cl. 9.2.3.24 */
- }
-
- type record SMS_SUBMIT_Type {
- /* 23.040 cl. 9.2.2.2
- Direction: ue -> n */
- Bit1 tP_ReplyPath,
- /* 23.040 cl. 9.2.3.17 */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit1 tP_StatusReportRequest,
- /* 23.040 cl. 9.2.3.5 */
- Bit2 tP_ValidityPeriodFormat,
- /* 23.040 cl. 9.2.3.3 */
- Bit1 tP_RejectDuplicates,
- /* 23.040 cl. 9.2.3.25 */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- TP_MessageReference_Type tP_MessageReference,
- /* 23.040 cl. 9.2.3.6 */
- TP_Address_Type tP_DestinationAddress,
- /* 23.040 cl. 9.1.2.5 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
- /* 23.040 cl. 9.2.3.9 */
- TP_DataCodingScheme_Type tP_DataCodingScheme_Type,
- /* 23.040 cl. 9.2.3.10 */
- // one of the subsequent ValidityPeriod solutions has be removed
- TP_ValidityPeriod_Type tP_ValidityPeriod optional,
- /* 23.040 cl. 9.2.3.12 */
- // TP_ValidityPeriodRelative_Type tP_ValidityPeriodRelative optional, /* 23.040 cl. 9.2.3.12.1 */
- // TP_ValidityPeriodAbsolute_Type tP_ValidityPeriodAbsolute optional, /* 23.040 cl. 9.2.3.12.2 */
- // TP_ValidityPeriodEnhanced_Type tP_ValidityPeriodEnhanced optional, /* 23.040 cl. 9.2.3.12.3 */
- TP_UserDataLength_Type tP_UserDataLength,
- /* 23.040 cl. 9.2.3.16 */
- octetstring tP_UserData length(0 .. 140) optional /* 23.040 cl. 9.2.3.24 */
- }
- type record SMS_SUBMIT_REPORT_Type {
- /* 23.040 cl. 9.2.2.2a
- Direction: n -> ue */
- Bit1 spare1,
- /* */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit4 spare4,
- /* */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- Oct1 tP_FailureCause optional,
- /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */
- TP_ParameterIndicator_Type tP_ParameterIndicator,
- /* 23.040 cl. 9.2.3.27 */
- TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
- /* 23.040 cl. 9.2.3.11 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
- /* 23.040 cl. 9.2.3.9 */
- TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
- /* 23.040 cl. 9.2.3.10 */
- TP_UserDataLength_Type tP_UserDataLength optional,
- /* 23.040 cl. 9.2.3.16 */
- octetstring tP_UserData length(0 .. 152) optional /* 23.040 cl. 9.2.3.24 */
- }
-
- type record SMS_STATUS_REPORT_Type {
- /* 23.040 cl. 9.2.2.3
- Direction: n -> ue */
- Bit1 spare1,
- /* */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit1 tP_StatusReportQualifier,
- /* 23.040 cl. 9.2.3.26 */
- Bit2 spare2,
- /* */
- Bit1 tP_MoreMessagesToSend,
- /* 23.040 cl. 9.2.3.2 */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- TP_MessageReference_Type tP_MessageReference,
- /* 23.040 cl. 9.2.3.6 */
- TP_Address_Type tP_RecipientAddress,
- /* 23.040 cl. 9.1.2.5 */
- TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp,
- /* 23.040 cl. 9.2.3.11 */
- TP_ServiceCentreTimeStamp_Type tP_DischargeTime,
- /* 23.040 cl. 9.2.3.12 */
- TP_Status_Type tP_Status,
- /* 23.040 cl. 9.2.3.15 */
- TP_ParameterIndicator_Type tP_ParameterIndicator optional,
- /* 23.040 cl. 9.2.3.27 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional,
- /* 23.040 cl. 9.2.3.9 */
- TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional,
- /* 23.040 cl. 9.2.3.10 */
- TP_UserDataLength_Type tP_UserDataLength optional,
- /* 23.040 cl. 9.2.3.16 */
- octetstring tP_UserData length(0 .. 143) optional /* 23.040 cl. 9.2.3.24 */
- }
-
- type record SMS_COMMAND_Type {
- /* 23.040 cl. 9.2.2.4
- Direction: ue -> n */
- Bit1 spare1,
- /* */
- Bit1 tP_UserDataHeaderIndicator,
- /* 23.040 cl. 9.2.3.23 */
- Bit1 tP_StatRptReq,
- /* Table 8.4/3GPP TS 24.011 */
- Bit3 spare3,
- /* */
- TP_MessageTypeIndicator_Type tP_MessageTypeIndicator,
- /* 23.040 cl. 9.2.3.1 */
- TP_MessageReference_Type tP_MessageReference,
- /* 23.040 cl. 9.2.3.6 */
- TP_ProtocolIdentifier_Type tP_ProtocolIdentifier,
- /* 23.040 cl. 9.2.3.9 */
- TP_Command_Type tP_CommandType,
- /* 23.040 cl. 9.2.3.19 */
- TP_MessageReference_Type tP_MessageNumber,
- /* 23.040 cl. 9.2.3.18 */
- TP_Address_Type tP_DestinationAddress,
- /* 23.040 cl. 9.1.2.5 */
- TP_UserDataLength_Type tP_CommandDataLength,
- /* 23.040 cl. 9.2.3.20 (number of octets) */
- octetstring tP_CommandData length(0 .. 156) optional /* 23.040 cl. 9.2.3.21 */
- }
-
- type union TP_PDU_Type {
- SMS_DELIVER_Type SMS_DELIVER,
- SMS_DELIVER_REPORT_Type SMS_DELIVER_REPORT,
- SMS_SUBMIT_Type SMS_SUBMIT,
- SMS_SUBMIT_REPORT_Type SMS_SUBMIT_REPORT,
- SMS_STATUS_REPORT_Type SMS_STATUS_REPORT,
- SMS_COMMAND_Type SMS_COMMAND
- }
-
-
-
- /* End SM-TP PDU Declarations */
- }
- with {
- encode "SMS Types";
- } // group SMS_Declarations
-} // End of module LibSip_SMSTypesAndValues
Index: tags/v3.0.3/trunk/ttcn/LibSip_SDPTypes.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_SDPTypes.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_SDPTypes.ttcn (nonexistent)
@@ -1,391 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id$
- * @desc This module defines message, attribute, structured and simple
- * SDP types as well constants used by LipSip constructs. <br>
- * Note that any changes made to the definitions in this module
- * may be overwritten by future releases of this library
- * End users are encouraged to contact the distributers of this
- * module regarding their modifications or additions
- * This module is part of LibSipV3.
- * @remark Adding of new attributes types is ok; Adding of new optional attributes in @see SDP_attribute type is ok; Existing attribute types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org
- */
-module LibSip_SDPTypes {
- import from LibSip_Common all;
- group Constants {
- group SimpleConstants {
- // SDP net_type
- const charstring c_in := "IN";
-
- // SDP addr_type
- const charstring c_ip4 := "IP4";
- const charstring c_ip6 := "IP6";
-
- // SDP_media_desc: media
- const charstring c_audio := "audio";
- const charstring c_image := "image";
- const charstring c_video := "video";
- const charstring c_text := "text";
- const charstring c_msrp := "msrp";
-
- // SDP_media_desc: transport
- const charstring c_rtpAvp := "RTP/AVP";
- const charstring c_rtpAvpf := "RTP/AVPF";
- const charstring c_msrpTcp := "TCP/MSRP";
- const charstring c_udptl := "Udptl";
-
- // SDP_attribute_list constants:
- const charstring c_local := "local";
- const charstring c_mandatory := "mandatory";
- const charstring c_optional := "optional";
- const charstring c_none := "none";
- const charstring c_qos := "qos";
- const charstring c_remote := "remote";
- const charstring c_sendrecv := "sendrecv";
- const charstring c_sendonly := "sendonly";
- const charstring c_inactive := "inactive";
- const charstring c_send := "send";
- const charstring c_recv := "recv";
- const charstring c_e2e := "e2e";
- }
- }
- group Types {
- group SubTypes {
- group AttributeTypes {
- type record SDP_attribute_cat {
- charstring attr_value
- }
-
- type record SDP_attribute_keywds {
- charstring attr_value
- }
-
- type record SDP_attribute_tool {
- charstring attr_value
- }
-
- type record SDP_attribute_ptime {
- charstring attr_value
- }
-
- type record SDP_attribute_recvonly {
- }
-
- type record SDP_attribute_sendrecv {
- }
-
- type record SDP_attribute_sendonly {
- }
-
- type record SDP_attribute_inactive {
- }
-
- type record SDP_attribute_orient {
- charstring attr_value
- }
-
- type record SDP_attribute_type {
- charstring attr_value
- }
-
- type record SDP_attribute_charset {
- charstring attr_value
- }
-
- type record SDP_attribute_sdplang {
- charstring attr_value
- }
-
- type record SDP_attribute_lang {
- charstring attr_value
- }
-
- type record SDP_attribute_framerate {
- charstring attr_value
- }
-
- type record SDP_attribute_quality {
- charstring attr_value
- }
-
- type union SDP_attribute_fmtp_format_specific_params {
- SemicolonParam_List paramList,
- charstring unstructured
- }
-
- type record SDP_attribute_fmtp {
- charstring format,
- SDP_attribute_fmtp_format_specific_params params
- }
-
- type record SDP_attribute_curr {
- charstring preconditionType,
- charstring statusType,
- charstring direction
- }
-
- type record SDP_attribute_des {
- charstring preconditionType,
- charstring strength,
- charstring statusType,
- charstring direction
- }
-
- type record SDP_attribute_conf {
- charstring preconditionType,
- charstring statusType,
- charstring direction
- }
-
- type record SDP_attribute_rtpmap_codec {
- charstring encoding,
- charstring clockrate,
- charstring parameters optional
- }
-
- type record SDP_attribute_rtpmap {
- charstring payload_type,
- SDP_attribute_rtpmap_codec codec
- }
-
- type record SDP_attribute_rtcp {
- integer portnumber,
- SDP_connection connection optional
- }
-
- type record SDP_attribute_msrp {
- charstring attr_value
- }
-
- type record SDP_attribute_unknown {
- charstring name,
- charstring attr_value optional
- }
-
- type record SDP_attribute_maxptime {
- charstring attr_value
- }
-
- type record SDP_attribute_tcap {
- integer trpr_cap_num,
- Charstring_List proto_list
- }
-
- type record SDP_attribute_pcfg {
- integer config_number,
- Charstring_List pot_cfg_list optional
- }
-
- type record SDP_attribute_acfg {
- integer config_number,
- Charstring_List sel_cfg_list optional
- }
-
- type record SDP_attribute_ecn_capable_rtp {
- Charstring_List init_list,
- Charstring_List parm_list optional
- }
-
- type record SDP_attribute_rtcp_fb {
- charstring rtcp_fb_pt,
- charstring rtcp_fb_val
- }
-
- type record SDP_attribute_rtcp_xr {
- Charstring_List xr_format_list optional
- }
-
- type record SDP_attribute_rtcp_rsize {
- }
-
- type record SDP_attribute_3ge2ae {
- charstring indicator
- }
-
- type record SDP_attribute_crypto {
- charstring tag,
- charstring crypto_suite,
- charstring key_params,
- Charstring_List session_params optional
- }
-
- type union SDP_attribute {
- SDP_attribute_cat cat,
- SDP_attribute_keywds keywds,
- SDP_attribute_tool tool,
- SDP_attribute_ptime ptime,
- SDP_attribute_recvonly recvonly,
- SDP_attribute_sendrecv sendrecv,
- SDP_attribute_sendonly sendonly,
- SDP_attribute_inactive inactive,
- SDP_attribute_orient orient,
- SDP_attribute_type sdp_type,
- SDP_attribute_charset charset,
- SDP_attribute_sdplang sdplang,
- SDP_attribute_lang lang,
- SDP_attribute_framerate framerate,
- SDP_attribute_quality quality,
- SDP_attribute_fmtp fmtp,
- SDP_attribute_curr curr,
- SDP_attribute_des des,
- SDP_attribute_conf conf,
- SDP_attribute_rtpmap rtpmap,
- SDP_attribute_rtcp rtcp,
- SDP_attribute_msrp msrp,
- SDP_attribute_maxptime maxptime,
- SDP_attribute_tcap tcap,
- SDP_attribute_pcfg pcfg,
- SDP_attribute_acfg acfg,
- SDP_attribute_ecn_capable_rtp ecn_capable_rtp,
- SDP_attribute_rtcp_fb rtcp_fb,
- SDP_attribute_rtcp_xr rtcp_xr,
- SDP_attribute_rtcp_rsize rtcp_rsize,
- SDP_attribute_3ge2ae e2ae,
- SDP_attribute_crypto crypto,
- //* unknown has to be the last else encoding/decoding won't work!
- SDP_attribute_unknown unknown
- }
-
- } //* group AttributeTypes
-
- type set of SDP_attribute SDP_attribute_list;
-
- type record SDP_bandwidth {
- charstring modifier,
- integer bandwidth
- }
-
- type set of SDP_bandwidth SDP_bandwidth_list;
-
- type record SDP_connection {
- charstring net_type,
- charstring addr_type,
- SDP_conn_addr conn_addr
- }
-
- type record SDP_conn_addr {
- charstring addr,
- integer ttl optional,
- integer num_of_addr optional
- }
-
- type set of SDP_connection SDP_connection_list;
-
- type record SDP_contact {
- charstring addr_or_phone,
- charstring disp_name optional
- }
-
- type SDP_contact SDP_contact_tel;
-
- type SDP_contact SDP_contact_email;
-
- type set of SDP_contact_email SDP_email_list;
-
- type record of charstring SDP_fmt_list;
-
- type record SDP_key {
- charstring method,
- charstring key optional
- }
-
- type record SDP_media_desc {
- SDP_media_field media_field,
- charstring information optional,
- SDP_connection_list connections optional,
- SDP_bandwidth_list bandwidth optional,
- SDP_key key optional,
- SDP_attribute_list attributes optional
- }
-
- type set of SDP_media_desc SDP_media_desc_list;
-
- type record SDP_media_port {
- integer port_number,
- integer num_of_ports optional
- }
-
- type record SDP_media_field {
- charstring media,
- SDP_media_port ports,
- charstring transport,
- SDP_fmt_list fmts
- }
-
- type record SDP_time {
- SDP_time_field time_field,
- SDP_repeat_list time_repeat optional
- }
-
- type record SDP_time_field {
- charstring start_time,
- //* field is numeric strings that may not fit into 32-bit signed int
- charstring
- stop_time //* field is numeric strings that may not fit into 32-bit signed int
- }
-
- type record SDP_repeat {
- SDP_typed_time repeat_interval,
- SDP_typed_time active,
- SDP_typed_time_list offsets
- }
-
- type set of SDP_repeat SDP_repeat_list;
-
- type record SDP_typed_time {
- integer time,
- charstring unit optional
- }
-
- type set of SDP_typed_time SDP_typed_time_list;
-
- type set of SDP_time SDP_time_list;
-
- type record SDP_timezone {
- charstring adjustment_time,
- SDP_typed_time offset
- }
-
- type set of SDP_timezone SDP_timezone_list;
-
- type record SDP_Origin {
- charstring user_name,
- charstring session_id,
- //* field is numeric strings that may not fit into 32-bit signed int
- charstring session_version,
- //* field is numeric strings that may not fit into 32-bit signed int
- charstring net_type,
- charstring addr_type,
- charstring addr
- }
-
- type set of SDP_contact_tel SDP_phone_list;
-
- } //* group SubTypes
-
-
- group MessageTypes {
- type record SDP_Message {
- integer protocol_version,
- SDP_Origin origin,
- charstring session_name,
- charstring information optional,
- charstring uri optional,
- SDP_email_list emails optional,
- SDP_phone_list phone_numbers optional,
- SDP_connection connection optional,
- SDP_bandwidth_list bandwidth optional,
- SDP_time_list times,
- SDP_timezone_list timezone_adjustments optional,
- SDP_key key optional,
- SDP_attribute_list attributes optional,
- SDP_media_desc_list media_list optional
- }
- with {
- encode "SDPCodec";
- }
-
- } // group MessageTypes
-
- } // group Types
-} // end module LibSip_SDPTypes
/tags/v3.0.3/trunk/ttcn/LibSip_SDPTypes.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_Steps.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_Steps.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_Steps.ttcn (nonexistent)
@@ -1,4909 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id$
- * @desc This module provides the functions, altsteps and external functions used
- * for SIP-IMS tests.
- * This module is part of LibSipV3.
-*/
-module LibSip_Steps {
- // LibCommon
- import from LibCommon_Sync all;
- import from LibCommon_VerdictControl all;
- // LibSip
- import from LibSip_SIPTypesAndValues all;
- import from LibSip_SDPTypes all;
- import from LibSip_Templates all;
- import from LibSip_Interface all;
- import from LibSip_PIXITS all;
- import from LibSip_XMLTypes all;
- import from LibSip_Common all;
-
- group externalfunctions {
-
- /**
- * @desc External function to return random charstring
- */
- external function fx_rndStr(
- ) return charstring;
-
- /**
- * @desc External function to return the equivalent string in lower case
- */
- external function fx_putInLowercase(
- charstring p_string
- ) return charstring;
-
- /**
- * @desc External function to get IP address.
- */
- external function fx_getIpAddr(
- charstring p_host_name
- ) return charstring;
-
- /**
- * @desc External function to generate a digest response.
- * @reference RFC 2617 HTTP Authentication: Basic and Digest Access Authentication, and RFC 1321 The MD5 Message-Digest Algorithm
- * @see RFC 2617, chapter 5 Sample implementation, for example usage, as the signature of calculateDigestResponse is according to the example given in the RFC.
- */
- external function fx_calculateDigestResponse(
- charstring p_nonce,
- charstring p_cnonce,
- charstring p_user,
- charstring p_realm,
- charstring p_passwd,
- charstring p_alg,
- charstring p_nonceCount,
- charstring p_method,
- charstring p_qop,
- charstring p_URI,
- charstring p_HEntity
- ) return charstring;
-
- }
-
- group ParameterOperations {
-
- /**
- * @desc function to generate a 32 bits random number as a charstring for tag field (used as e.g.: tag in from-header field, or branch parameter in via header)
- * @return random value with at least 32 bits of randomness
- */
- function f_getRndTag(
- ) return charstring {
- var charstring v_tag_value;
- // tag_value is initialized with a random value with at least 32 bits of randomness
- // 4294967296 is a 32 bits integer
- v_tag_value := fx_rndStr() & fx_rndStr();
- return (v_tag_value);
- }
-
- /**
- * @desc Function to prepare credentials for request that has an empty entity body such as a REGISTER message.
- * @param p_userprofile to get important parameters
- * @param p_algorithm Algorthm to be used. Default: omit
- * @return Credentials field
- */
- function f_calculatecCredentials_empty(
- in SipUserProfile p_userprofile,
- in boolean p_algorithm := false
- ) return Credentials {
- var Credentials v_result;
-
-
- // RFC 2617 3.2.2 username:
- // The name of user in the specified realm.
- var charstring v_username := p_userprofile.privUsername;
- var charstring v_realm := p_userprofile.registrarDomain;
- var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
- var CommaParam_List v_digestResponse := {};
- // Construct credentials for an Authorization field of a request.
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "username",
- paramValue := { quotedString := v_username }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "realm",
- paramValue := { quotedString := v_realm }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "uri",
- paramValue := { quotedString := v_uri }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nonce",
- paramValue := { quotedString := "" }
- }); // already enclosed to " characters
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "response",
- paramValue := { quotedString := "" }
- }); // already enclosed to " characters
-
- if (p_algorithm) {
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "algorithm",
- paramValue := { tokenOrHost := PX_AUTH_ALGORITHM }
- }); // already enclosed to " characters
- }
- v_result := {digestResponse := v_digestResponse};
-
- return v_result;
- }
-
-
- /**
- * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message.
- * @param p_userprofile to get important parameters
- * @param p_method (can be "REGISTER", "INVITE",....)
- * @param p_challenge parameter from 4xx response
- * @return Credentials field
- * @verdict
- */
- function f_calculatecCredentials(
- in SipUserProfile p_userprofile,
- in charstring p_method,
- in CommaParam_List p_challenge
- ) return Credentials {
- var Credentials v_result;
- var charstring v_nonce := "";
- var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265);
-
- // RFC 2617 3.2.2 username:
- // The name of user in the specified realm.
- var charstring v_username := p_userprofile.privUsername;
- var charstring v_realm;
-
- // RFC 2617 3.2.2.2 passwd:
- // A known shared secret, the password of user of the specified
- // username.
- var charstring v_passwd := p_userprofile.passwd;
- var charstring v_algorithm;
-
- // a new pseudo-random cnonce value is used every time
- // that assumes it is only used once
- const charstring cl_nonceCount := "00000001";
- var charstring v_qop := p_userprofile.qop;
- var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
-
- // MD5 hash of empty entity body.
- const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
- var charstring v_response;
- var charstring v_opaque;
- var CommaParam_List v_digestResponse := {};
-
-
- // extract nonce, realm, algorithm, and opaque from challenge
- v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce");
- v_realm := f_extractParamValueFromChallenge(p_challenge, "realm");
- v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm");
- v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque");
-
- // calculate a digest response for the Authorize header
- v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity);
-
- // Construct credentials for an Authorization field of a request.
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "username",
- paramValue := { quotedString := v_username }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "realm",
- paramValue := { quotedString := v_realm }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nonce",
- paramValue := { quotedString := v_nonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "uri",
- paramValue := { quotedString := v_uri }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "response",
- paramValue := { quotedString := v_response }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "algorithm",
- paramValue := { tokenOrHost := "md5" }
- }); // algorithm is not enclosed to " characters
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "cnonce",
- paramValue := { quotedString := v_cnonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "qop",
- paramValue := { tokenOrHost := v_qop }
- }); // qop
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nc",
- paramValue := { tokenOrHost := cl_nonceCount }
- }); // nonceCount
- if (v_opaque != "") {
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "opaque",
- paramValue := { quotedString := v_opaque }
- }); // already enclosed to " characters
- }
- v_result := {digestResponse := v_digestResponse};
-
- return v_result;
- }
-
- /**
- * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message. NO RESPONSE value to cause an error!
- * @param p_userprofile to get important parameters
- * @param p_method (can be "REGISTER", "INVITE",....)
- * @param p_challenge parameter from 4xx response
- * @return Credentials field
- * @verdict
- */
- function f_calculatecCredentials_wo_response(
- in SipUserProfile p_userprofile,
- in charstring p_method,
- in CommaParam_List p_challenge
- ) return Credentials {
- var Credentials v_result;
- var charstring v_nonce := "";
- var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265);
-
- // RFC 2617 3.2.2 username:
- // The name of user in the specified realm.
- var charstring v_username := p_userprofile.privUsername;
- var charstring v_realm;
-
- // RFC 2617 3.2.2.2 passwd:
- // A known shared secret, the password of user of the specified
- // username.
- var charstring v_passwd := p_userprofile.passwd;
- var charstring v_algorithm;
-
-
- // a new pseudo-random cnonce value is used every time
- // that assumes it is only used once
- const charstring cl_nonceCount := "00000001";
- var charstring v_qop := p_userprofile.qop;
- var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
-
- // MD5 hash of empty entity body.
- const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
- var charstring v_response;
- var charstring v_opaque;
- var CommaParam_List v_digestResponse := {};
-
- // extract nonce, realm, algorithm, and opaque from challenge
- v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce");
- v_realm := f_extractParamValueFromChallenge(p_challenge, "realm");
- v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm");
- v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque");
-
- // calculate a digest response for the Authorize header
- v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity);
-
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "username",
- paramValue := { quotedString := v_username }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "realm",
- paramValue := { quotedString := v_realm }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nonce",
- paramValue := { quotedString := v_nonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "uri",
- paramValue := { quotedString := v_uri }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "algorithm",
- paramValue := { tokenOrHost := "md5" }
- }); // algorithm is not enclosed to " characters
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "cnonce",
- paramValue := { quotedString := v_cnonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "qop",
- paramValue := { tokenOrHost := v_qop }
- }); // qop
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nc",
- paramValue := { tokenOrHost := cl_nonceCount }
- }); // nonceCount
- if (v_opaque == "") {
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "opaque",
- paramValue := { quotedString := v_opaque }
- }); // already enclosed to " characters
- }
- v_result := {digestResponse := v_digestResponse};
-
- return v_result;
- }
-
- /**
- * @desc Function to calculate credentials for response 401 - WWW-Authorization
- * @param p_qop of the peer UE (alternatively )
- * @param p_authorization parameter from 1st REGISTER request
- * @return Credentials field
- * @verdict
- */
- function f_calculatecChallenge_forWWWAuthorizationBody(
- in charstring p_qop,
- in Authorization p_authorization
- ) return Challenge {
- var CommaParam_List v_challenge;
-
- if (ischosen(p_authorization.body[0].digestResponse)) {
- v_challenge := p_authorization.body[0].digestResponse;
- }
- else {
- v_challenge := p_authorization.body[0].otherResponse.authParams;
- }
-
- return (f_calculatecChallenge_forWWWAuthorization(p_qop, v_challenge));
- }
-
- /**
- * @desc Function to calculate credentials for response 401 - WWW-Authorization
- * @param p_qop of the peer UE (alternatively )
- * @param p_challenge parameter from 1st REGISTER request
- * @return Credentials field
- * @verdict
- */
- function f_calculatecChallenge_forWWWAuthorization(
- in charstring p_qop,
- in CommaParam_List p_challenge
- ) return Challenge {
- var Challenge v_result;
-
- var charstring v_realm;
-
- var charstring v_qop := p_qop;
-
- v_realm := f_extractParamValueFromChallenge(p_challenge, "realm");
-
- // Construct credentials for an Authorization field of a request.
- v_result := {
- digestCln := {
- {
- id := "realm",
- paramValue := { quotedString := v_realm }
- },
- {
- id := "nonce",
- paramValue := { quotedString := "0edff6c521cc3f407f2d9e01cf6ed82b" }
- },
- {
- id := "algorithm",
- paramValue := { tokenOrHost := PX_AUTH_ALGORITHM }
- }, // algorithm is not enclosed with " characters
- {
- id := "ck",
- paramValue := { quotedString := "00112233445566778899aabbccddeeff" }
- },
- {
- id := "ik",
- paramValue := { quotedString := "ffeeddccbbaa99887766554433221100" }
- }, // already enclosed to " characters
- {
- /**
- * This directive is optional, but is made so only for backward compatibility with RFC 2069
- * it SHOULD be used by all implementations compliant with this version of the Digest scheme
- */
- id := "qop",
- paramValue := { tokenOrHost := v_qop }
- } // qop
- }
- };
-
- return v_result;
- }
-
- /**
- * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message and at the end put different private name
- * @param p_userprofile to get important parameters
- * @param p_method (can be "REGISTER", "INVITE",....)
- * @param p_challenge parameter from 4xx response
- * @return Credentials field
- * @verdict
- */
- function f_calculatecCredentialsAndChangeUserName(
- in SipUserProfile p_userprofile,
- in charstring p_method,
- in CommaParam_List p_challenge
- ) return Credentials {
- var Credentials v_result;
- var charstring v_nonce := "";
- var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265);
-
- // RFC 2617 3.2.2 username:
- // The name of user in the specified realm.
- var charstring v_username := p_userprofile.privUsername;
- var charstring v_realm;
-
- // RFC 2617 3.2.2.2 passwd:
- // A known shared secret, the password of user of the specified
- // username.
- var charstring v_passwd := p_userprofile.passwd;
- var charstring v_algorithm;
-
-
- // a new pseudo-random cnonce value is used every time
- // that assumes it is only used once
- const charstring cl_nonceCount := "00000001";
- var charstring v_qop := p_userprofile.qop;
- var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
-
-
- // MD5 hash of empty entity body.
- const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
- var charstring v_response;
- var charstring v_opaque;
- var CommaParam_List v_digestResponse := {};
-
-
- // extract nonce, realm, algorithm, and opaque from challenge
- v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce");
- v_realm := f_extractParamValueFromChallenge(p_challenge, "realm");
- v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm");
- v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque");
-
- // calculate a digest response for the Authorize header
- v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity);
-
- // Construct credentials for an Authorization field of a request.
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "username",
- paramValue := { quotedString := "DifferentToPrivateUser" }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "realm",
- paramValue := { quotedString := v_realm }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nonce",
- paramValue := { quotedString := v_nonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "uri",
- paramValue := { quotedString := v_uri }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "response",
- paramValue := { quotedString := v_response }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "algorithm",
- paramValue := { tokenOrHost := "md5" }
- }); // algorithm is not enclosed to " characters
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "cnonce",
- paramValue := { quotedString := v_cnonce }
- });
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "qop",
- paramValue := { tokenOrHost := v_qop }
- }); // qop
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "nc",
- paramValue := { tokenOrHost := cl_nonceCount }
- });
- if (v_opaque != "") {
- v_digestResponse := f_addParameter(v_digestResponse, {
- id := "opaque",
- paramValue := { quotedString := "" }
- }); // already enclosed to " characters
- }
- v_result := {digestResponse := v_digestResponse};
-
- return v_result;
- }
-
-
- /**
- * @desc Function to check if param related to id from CommanParam_List exist containing challenge.
- * @param p_challenge parameter from 4xx response
- * @param p_id name of parameter("nonce", "realm", "ck", "ik"...)
- * @return parameter p_id value
- */
- function f_checkParamValueFromChallengeIfPresent(
- in CommaParam_List p_challenge,
- in charstring p_id
- ) return boolean {
- var boolean v_result := false;
- var integer v_len := lengthof(p_challenge);
- var charstring v_id := fx_putInLowercase(p_id);
- var integer i;
-
- for (i := 0; i < v_len; i := i + 1) {
- if (fx_putInLowercase(p_challenge[i].id) == v_id) {
- v_result := true;
- }
- }
-
- return v_result;
- }
-
- /**
- * @desc Function to check if tag is present in SemicolonParam_List
- * @param p_param_l SemicolonParam_List
- * @return boolean true if tag is present
- */
- function f_checkTagPresent(
- SemicolonParam_List p_param_l
- ) runs on SipComponent
- return boolean {
- var integer v_numberOfParams;
- var integer i := 0;
-
- v_numberOfParams := lengthof(p_param_l);
- while (i < v_numberOfParams) {
- if (fx_putInLowercase(p_param_l[i].id) == c_tagId) {
- return (true);
- }
- i := i + 1;
- }
- return (false);
- }
-
- /**
- * @desc Function to remove a parameter from SemicolonParam_List
- * @param p_param_l SemicolonParam_List
- * @return SemicolonParam_List new parameter list
- */
- function f_removeParameter(
- SemicolonParam_List p_param_l,
- charstring p_id
- ) runs on SipComponent
- return SemicolonParam_List {
- var integer v_numberOfParams;
- var integer i := 0;
- var integer j := 0;
- var SemicolonParam_List v_newParamList;
-
- v_numberOfParams := lengthof(p_param_l);
- while (i < v_numberOfParams) {
- if (not fx_putInLowercase(p_param_l[i].id) == p_id) {
- v_newParamList[j] := p_param_l[i];
- j := j + 1;
- }
- i := i + 1;
- }
- return v_newParamList;
- }
-
- /**
- * @desc Function to add a parameter to SemicolonParam_List
- * @param p_param_l SemicolonParam_List
- * @return SemicolonParam_List new parameter list
- */
- function f_addParameter(
- SemicolonParam_List p_param_l,
- GenericParam p_genparam
- )
- return SemicolonParam_List {
- var SemicolonParam_List v_newParamList := p_param_l;
- var integer v_numberOfParams := lengthof(p_param_l);
- v_newParamList[v_numberOfParams] := p_genparam;
- return v_newParamList;
- }
-
- /**
- * @desc Function to extract paramValue related to id from CommanParam_List containing challenge.
- * @param p_challenge parameter from 4xx response
- * @param p_id name of parameter("nonce", "realm",...)
- * @return parameter p_id value
- */
- function f_extractParamValueFromChallenge(
- in CommaParam_List p_challenge,
- in charstring p_id
- ) return charstring {
- var charstring v_result := "";
- var integer v_len := lengthof(p_challenge);
- var charstring v_id := fx_putInLowercase(p_id);
- var integer i;
- var charstring v_tmpchar;
-
- for (i := 0; i < v_len; i := i + 1) {
- if (fx_putInLowercase(p_challenge[i].id) == v_id) {
- if (isvalue(p_challenge[i].paramValue)) {
- if(ischosen(p_challenge[i].paramValue.quotedString)) {
- v_result := valueof(p_challenge[i].paramValue.quotedString);
- } else {
- v_result := valueof(p_challenge[i].paramValue.tokenOrHost);
- }
- }
- }
- }
-
- if (v_result == "") {
- if (match(p_id, "algorithm")) {
- v_result := "MD5";
- }
- else if (match(p_id, "opaque")) {
- v_result := "";
- }
- else {
- v_tmpchar := "Cannot acquire value from credentials.";
- log("*** " & __SCOPE__ &": INFO: Cannot acquire value from credentials ***");
- setverdict(inconc);
- stop;
- }
- }
-
- return v_result;
- }
-
- /**
- * @desc Return the updated component variable of via header
- * @return component variable of via header
- */
- function f_updateViaHeaderAS(
- in Via p_via
- ) runs on SipComponent
- return Via {
- var Via v_via;
- var ViaBody_List v_viaBody_List := p_via.viaBody;
- var integer v_size_via := lengthof(v_viaBody_List);
- var integer v_size_via_updated := v_size_via + 1;
- var ViaBody_List v_viaBody_List_updated;
- var integer i;
- vc_branch := c_branchCookie & f_getRndTag();
- v_viaBody_List_updated[0] := valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile));
- // p_viaBody_List_updated[0 ] := vc_request.msgHeader.route.routeBody[0 ] ;
- for (i := 1; i < v_size_via_updated; i := i + 1) {
- v_viaBody_List_updated[i] := v_viaBody_List[i - 1];
- }
- v_via.fieldName := p_via.fieldName;
- v_via.viaBody := v_viaBody_List_updated;
- return (v_via);
- }
-
- /**
- * @desc Return the updated component variable of route header
- * @return component variable of route header
- */
- function f_updateRouteHeaderAS(
- in Route p_route
- ) runs on SipComponent
- return Route {
- var Route v_route;
- var RouteBody_List v_routeBody_List := p_route.routeBody;
- var integer v_size_route := lengthof(v_routeBody_List);
- var integer v_size_route_updated := v_size_route - 1;
- var RouteBody_List v_routeBody_List_updated;
- var integer i;
-
- for (i := 0; i < v_size_route_updated; i := i + 1) {
- v_routeBody_List_updated[i] := v_routeBody_List[i + 1];
- }
- v_route.fieldName := p_route.fieldName;
- v_route.routeBody := v_routeBody_List_updated;
- return (v_route);
- }
-
- /**
- * @desc Return the updated component variable of record route header
- * @return component variable of record route header
- */
- function f_updateRecordRouteHeaderAS(
- in template(value) RecordRoute p_recordRoute
- ) runs on SipComponent
- return RecordRoute {
- var
- RecordRoute
- v_recordRoute :=
- valueof(
- m_recordRoute_currIpAddr_params(
- vc_userprofile,
- {
- {
- "lr",
- omit
- }
- }
- )
- );
- var integer v_size_recordRoute := 0;
- var integer i;
-
- if (isvalue(p_recordRoute)) {
- v_size_recordRoute := lengthof(valueof(p_recordRoute).routeBody);
- }
- for (i := 1; i < v_size_recordRoute + 1; i := i + 1) {
- v_recordRoute.routeBody[i] := valueof(p_recordRoute).routeBody[i - 1];
- }
-
- return (v_recordRoute);
- }
-
-
-
- } // end group ParameterOperations
-
- group FieldOperations {
-
- /**
- * @desc function adds "Tag"-parameter in "To"-headerfield
- * @param p_to To header field that should get a Tag parameter
- */
- function f_addTagInTo(
- inout To p_to
- ) runs on SipComponent {
- f_addParameterTagIfNotPresent(c_tagId, { tokenOrHost := f_getRndTag() }, p_to);
- }
-
- /**
- * @desc addition of a single parameter in the via header field
- * @param p_parameter_name name of parameter to be added
- * @param p_parameter_value value of parameter to be added
- * @param p_viaBody the via parameter to be extended
- * @verdict
- */
- function f_addParameterIfNotPresent(
- in charstring p_parameter_name,
- in GenValue p_parameter_value,
- inout ViaBody p_viaBody
- ) {
- if (isvalue(p_viaBody.viaParams)) {
- return;
- }
- p_viaBody.viaParams := {
- {
- p_parameter_name,
- p_parameter_value
- }
- };
- }
-
- /**
- * @desc function to addd a parameter to the "To" header field (if there is not any parameter)
- * @param p_parameter_name name of the parameter to be added
- * @param p_parameter_value value of the paramter to be added
- * @param p_to "To" header field to be extended
- * @verdict
- */
- function f_addParameterTagIfNotPresent(
- in charstring p_parameter_name,
- in GenValue p_parameter_value,
- inout To p_to
- ) {
- if (isvalue(p_to.toParams)) {
- return;
- }
- p_to.toParams := {
- {
- p_parameter_name,
- p_parameter_value
- }
- };
- }
-
- /**
- * @desc function compares the IP address of two hosts
- * @param p_host1 hostname
- * @param p_host2 hostname
- * @return boolean value that is true if the IP addresses are identical
- * @verdict
- */
- function f_equivalentHostAddr(
- in charstring p_host1,
- in charstring p_host2
- ) return boolean {
- // A DNS server may be used
- return (fx_getIpAddr(p_host1) == fx_getIpAddr(p_host2));
- }
-
-
- /**
- * @desc function checks if Require contains Precondition
- * @param p_message (request or response) SIP message to be analysed
- * @return true if p_id parameter exist
- */
- function f_checkRequirePrecondition(
- in Request p_message
- ) {
- var boolean v_precondition_found;
- var integer i;
- if (isvalue(p_message.msgHeader.require)) {
- v_precondition_found := false;
- for (i := 0; i < lengthof(p_message.msgHeader.require.optionsTags); i := i + 1) {
- if (match(p_message.msgHeader.require.optionsTags[i], c_tagPrecond)) {
- v_precondition_found := true;
- }
- }
- if (not (v_precondition_found)) {
- setverdict(fail);
- log("*** " & __SCOPE__ & ": FAIL: precondition not found in Require options list! ***");
- }
- }
- else {
- setverdict(fail);
- log("*** " & __SCOPE__ & ": FAIL: Require options is not present! ***");
- }
- }
-
- /**
- * @desc function checks if P-Charging-Vector contains a particular parameter
- * @param p_message (request or response) SIP message to be analysed
- * @param p_id name of parameter
- * @return true if p_id parameter exist
- */
- function f_checkPChargingVectorHeaderParamId(
- in Request p_message,
- charstring p_id
- ) return boolean {
- var integer i;
-
- if (isvalue(p_message.msgHeader.pChargingVector)) {
- for (i := 0; i < lengthof(p_message.msgHeader.pChargingVector.chargeParams); i := i + 1) {
- if (p_message.msgHeader.pChargingVector.chargeParams[i].id == p_id) {
- return (true);
- }
- }
- }
- return (false);
- }
-
- /**
- * @desc function checks if P-Charging-Vector contains a particular parameter
- * @param p_message (request or response) SIP message to be analysed
- * @param p_id name of parameter
- * @return true if p_id parameter exist
- */
- function f_checkPChargingVectorHeaderParamIdResponse(
- in Response p_message,
- charstring p_id
- ) return boolean {
- var integer i;
-
- if (isvalue(p_message.msgHeader.pChargingVector)) {
- for (i := 0; i < lengthof(p_message.msgHeader.pChargingVector.chargeParams); i := i + 1) {
- if (p_message.msgHeader.pChargingVector.chargeParams[i].id == p_id) {
- return true;
- }
- }
- }
- return (false);
- }
-
- /**
- * @desc function returns the Host/Port of a given Contact header field
- * @param p_contact contact header field to be analysed
- * @return Host/Port record from the contact header field
- */
- function f_getContactUri(
- in ContactAddress p_contact
- ) runs on SipComponent
- return SipUrl {
- var SipUrl v_SipUrl;
-
- if (ischosen(p_contact.addressField.nameAddr)) {
- v_SipUrl := p_contact.addressField.nameAddr.addrSpec;
- }
- else {
- v_SipUrl := p_contact.addressField.addrSpecUnion;
- }
-
- return (v_SipUrl);
- } // end f_getContactUri
-
- /**
- * @desc function returns the Host/Port of a given Contact header field
- * @param p_contact contact header field to be analysed
- * @return Host/Port record from the contact header field
- */
- function f_getContactAddr(
- in ContactAddress p_contact
- ) runs on SipComponent
- return HostPort {
- var HostPort v_locAddr;
- var SipUrl v_SipUrl;
-
- if (ischosen(p_contact.addressField.nameAddr)) {
- v_SipUrl := p_contact.addressField.nameAddr.addrSpec;
- }
- else {
- v_SipUrl := p_contact.addressField.addrSpecUnion;
- }
-
- v_locAddr.host := v_SipUrl.components.sip.hostPort.host;
-
- if (isvalue(v_SipUrl.components.sip.hostPort.portField)) {
- v_locAddr.portField := v_SipUrl.components.sip.hostPort.portField;
- }
- else {
- v_locAddr.portField := c_defaultSipPort;
- }
-
- return (v_locAddr);
- } // end f_getContactAddr
-
- /**
- * @desc function checks if History-Info-Header of the p_message contains a particular URI
- * @param p_message (request or response) SIP message to be analysed
- * @param p_URI name of parameter
- * @return true if p_URI parameter exist
- */
- function f_checkHeaderInfoURI(
- in Response p_message,
- SipUrl p_URI
- ) return boolean {
- var integer i;
-
- if (isvalue(p_message.msgHeader.historyInfo)) {
- for (i := 0; i < lengthof(p_message.msgHeader.historyInfo.historyInfoList); i := i + 1) {
- if (p_message.msgHeader.historyInfo.historyInfoList[i].nameAddr.addrSpec == p_URI) {
- return (true);
- }
- }
- }
- return (false);
- }
-
- /**
- * @desc function returns the Userinfo from a given To header field
- * @param p_to To header field to be analysed
- * @return Userinfo from the To header field as a charstring
- */
- function f_getUserfromTo(
- in To p_to
- ) runs on SipComponent
- return charstring {
- var SipUrl v_SipUrl;
-
- if (ischosen(p_to.addressField.nameAddr)) {
- v_SipUrl := p_to.addressField.nameAddr.addrSpec;
- }
- else {
- v_SipUrl := p_to.addressField.addrSpecUnion;
- }
-
- return (v_SipUrl.components.sip.userInfo.userOrTelephoneSubscriber);
- } // end f_getUserfromTo
-
- /**
- * @desc function to generate a 32 bits random number as a charstring for tag field
- * @param p_cSeq_s CSeq parameter used to modify the tag field value
- * @return tag value
- */
- function f_getRndCallId(
- ) return charstring {
- var charstring v_tag_value := fx_rndStr() & fx_rndStr();
- // v_tag_value is initialized with a random value with at least 32 bits of randomness
- // 4294967296 is a 32 bits integer
- // v_tag_value := int2str(float2int(4294967296.0*rnd()) + loc_CSeq_s.seqNumber );
- return (v_tag_value);
- }
-
- /**
- * @desc function give access to the top element of the Path header field.
- * @param p_Request SIP message to be analysed
- * @return NameAddr (e.g. <sip:p.home.com>) or omit
- */
- function f_getPathHeaderTop(
- inout Request p_Request
- ) return template(omit) NameAddr {
- if (isvalue(p_Request.msgHeader.path)) {
- if (lengthof(p_Request.msgHeader.path.pathValues) > 0) {
- return (p_Request.msgHeader.path.pathValues[0].nameAddr);
- }
- }
- return (omit);
- }
-
- /**
- * @desc function updates first element of a Via headerfield list
- * @param p_viaBody_List address list of a Via header field
- * @param p_source_address address to be inserted in the top element
- */
- function f_getViaReplyAddr(
- inout ViaBody_List p_viaBody_List,
- inout Address4SIP p_source_address
- ) runs on SipComponent {
- var ViaBody v_viaBody;
- // The address to send message shall be updated after getting information
- // in the Via header fied and according to 18.2.2
- v_viaBody := p_viaBody_List[0];
-
- // received parameter has to be addded to the via hader field
- // Be careful it could be an Host name and not an IP Address
- // One of the reasons this error can occur is if no DNS server is available.
- // As a workaround, it is possible to adapt the configuration on the local machine the test
- // suite is running on (e.g. under Windows the following file could be configured:
- // C:\WINDOWS\system32\drivers\etc\hosts).
- // Check if host address can be rosolved
- if (not f_equivalentHostAddr(valueof(v_viaBody.sentBy.host), valueof(p_source_address.host))) {
- f_addParameterIfNotPresent(c_receivedId, { tokenOrHost := valueof(p_source_address.host) }, v_viaBody);
- }
- if (isvalue(v_viaBody.sentBy.portField)) {
- p_source_address.portField := valueof(v_viaBody.sentBy.portField);
- }
- else {
- p_source_address.portField := c_defaultSipPort;
- }
- }
-
- /**
- * @desc functions give access to an element of the Route header field (record).
- * @param p_message (request) SIP message to be analysed
- * @param p_index index of Route record element to be retrieved
- * @return HostPort value of the Route element or omit
- */
- function f_getRouteHeaderElementAddressFromRequest(
- in Request p_message,
- in integer p_index
- ) return HostPort {
- if (isvalue(p_message.msgHeader.route)) {
- if (lengthof(p_message.msgHeader.route.routeBody) > p_index) {
- return (p_message.msgHeader.route.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort);
- }
- }
- setverdict(fail);
- return (c_hostport_dummy);
- }
-
- /**
- * @desc functions give access to an element of the Record-Route header field (record).
- * @param p_message (request) SIP message to be analysed
- * @param p_index index of recordRoute record element to be retrieved
- * @return HostPort value of the Record-Route element or omit
- */
- function f_getRecordRouteHeaderElementAddressFromRequest(
- in Request p_message,
- in integer p_index
- ) return HostPort {
- if (isvalue(p_message.msgHeader.recordRoute)) {
- if (lengthof(p_message.msgHeader.recordRoute.routeBody) > p_index) {
- return (p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort);
- }
- }
- setverdict(fail);
- return (c_hostport_dummy);
- }
-
- /**
- * @desc functions give access to an element of the Record-Route header field (record).
- * @param p_message (response) SIP message to be analysed
- * @param p_index index of recordRoute record element to be retrieved
- * @return HostPort value of the Record-Route element or omit
- */
- function f_getRecordRouteHeaderElementAddressFromResponse(
- in Response p_message,
- in integer p_index
- ) return HostPort {
- if (isvalue(p_message.msgHeader.recordRoute)) {
- if (lengthof(p_message.msgHeader.recordRoute.routeBody) > p_index) {
- return (p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort);
- }
- }
- setverdict(fail);
- return (c_hostport_dummy);
- }
-
- /**
- * @desc functions give access to an element of the Via header field (record).
- * @param p_message (request) SIP message to be analysed
- * @param p_index index of via record element to be retrieved
- * @return HostPort value of the Via element or omit
- */
- function f_getViaHeaderElementHostPort(
- in Request p_message,
- in integer p_index
- ) return HostPort {
-
- if (lengthof(p_message.msgHeader.via.viaBody) > p_index) {
- return (p_message.msgHeader.via.viaBody[p_index].sentBy);
- }
- setverdict(fail);
- return (c_hostport_dummy);
- }
-
- /**
- * @desc functions give access to an element of the Via header field (record).
- * @param p_message (response) SIP message to be analysed
- * @param p_index index of via record element to be retrieved
- * @return HostPort value of the Via element or omit
- */
- function f_getViaHeaderElementHostPortResponse(
- in Response p_message,
- in integer p_index
- ) return HostPort {
-
- if (lengthof(p_message.msgHeader.via.viaBody) > p_index) {
- return (p_message.msgHeader.via.viaBody[p_index].sentBy);
- }
- setverdict(fail);
- return (c_hostport_dummy);
- }
-
- /**
- * @desc function checks indicators if topology hiding (TH) has been applied: - second element in via-header record has tokenized-by parameter
- * @param p_Request SIP message to be analysed
- * @return boolean value (true indicate TH, false otherwise)
- */
- function f_topologyHiding(
- inout Request p_request
- ) runs on SipComponent
- return boolean {
- var GenericParam v_viaParameter;
-
- if (lengthof(p_request.msgHeader.via.viaBody) <2 ) {
- return (false);
- }
- v_viaParameter := p_request.msgHeader.via.viaBody[1].viaParams[0];
- // second element
- if (not v_viaParameter.id == "tokenized-by") {
- return (false);
- }
- return (true);
- }
-
- /**
- * @desc function checks indicators if topology hiding (TH) has been applied: - any element in via-header record has tokenized-by parameter
- * @param Response SIP message to be analysed
- * @return boolean value (true indicate TH, false otherwise)
- */
- function f_topologyHidingResponse(
- inout Response p_response
- ) runs on SipComponent
- return boolean {
- var GenericParam v_viaParameter;
- var integer i;
-
- for (i := 0; i < lengthof(p_response.msgHeader.via.viaBody); i := i + 1) {
-
- v_viaParameter := p_response.msgHeader.via.viaBody[i].viaParams[0]; // first parameter
- if (not v_viaParameter.id == "tokenized-by") {
- return (false);
- }
- }
- return (true);
- }
-
-
-
- group SetHeaders {
-
-
- /**
- * @desc function for setting of component variables related to message header fields (message type independent: CSeq, contact, via), function uses information from userprofile
- * @param p_cSeq_s CSeq parameter
- * @param p_method method name for cSeq header field
- */
- function f_setHeadersGeneral(
- inout CSeq p_cSeq_s,
- in charstring p_method
- ) runs on SipComponent {
- p_cSeq_s.fieldName := CSEQ_E;
- p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1;
- p_cSeq_s.method := p_method;
- vc_cSeq := p_cSeq_s;
-
- vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile)));
- vc_branch := c_branchCookie & f_getRndTag();
- vc_via := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
- } // end function f_setHeadersGeneral
-
-
-
- /**
- * @desc function for setting of component variables related to message header fields (message type independent: CSeq, contact, via), function uses information from userprofile
- * @param p_cSeq_s CSeq parameter
- * @param p_method method name for cSeq header field
- */
- function f_setHeadersACK(
- ) runs on SipComponent {
- // vc_requestUri.hostPort := vc_reqHostPort;
- if (vc_response.statusLine.statusCode >= 200 and vc_response.statusLine.statusCode <= 299)
- // ref. RFC3261 8.1.1.7 Via
- {
- vc_branch := c_branchCookie & f_getRndTag();
- }
- vc_via := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
- } // end function f_setHeadersGeneral
-
- /**
- * @desc setting of general and basic Bye header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersBYE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "BYE"); // cseq, contact, branch, via
- // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr };
- f_addTagInTo(vc_to);
-
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersBYE
-
- /**
- * @desc setting of general and basic CANCEL header fields
- * @param p_cSeq_s
- */
- function f_setHeadersCANCEL(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
-
- p_cSeq_s.method := "CANCEL";
- // vc_branch := c_branchCookie & f_getRndTag(); // STF 406: CANCEL and ACK should have the same branch as the INVITE
- vc_via := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
- } // end function f_setHeadersCANCEL
-
- /**
- * @desc function sets header field for the next outgoing REGISTER message
- * @param p_cSeq_s CSeq parameter to be applied
- * @param p_emergency Set to true in case of emergency
- */
- function f_setHeaders_REGISTER(
- inout CSeq p_cSeq_s,
- boolean p_emergency := false
- ) runs on SipComponent {
- var SemicolonParam_List v_params := {};
-
- f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
- vc_requestUri := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := vc_userprofile.registrarDomain,
- portField := omit
- }
- }
- },
- urlParameters := omit,
- headers := omit
- };
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
-
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
- vc_callIdReg := vc_callId; // remember callId for de-registration
- vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile)));
- vc_cancel_To := vc_to;
- v_params := f_addParameter(v_params,
- {
- id := c_tagId,
- paramValue := {
- tokenOrHost := f_getRndTag()
- }
- });
- vc_from := {
- fieldName := FROM_E,
- addressField := vc_to.addressField,
- fromParams := v_params
- };
-
- if (not vc_firstREGISTER_sent) {
- if (p_emergency) {
- v_params := {
- {
- "sos",
- omit
- }
- };
- vc_contact.contactBody.contactAddresses[0].addressField.addrSpecUnion.urlParameters := v_params;
- }
- else {
- v_params := {
- {
- id := c_expiresId,
- paramValue := {
- tokenOrHost := c_shortRegistration
- }
- }
- };
- vc_contact.contactBody.contactAddresses[0].contactParams := v_params;
- }
- }
-
- vc_firstREGISTER_sent := true; // f_setHeaders_Register is called in deREGISTER function
- vc_authorization := {
- fieldName := AUTHORIZATION_E,
- body := {f_calculatecCredentials_empty(vc_userprofile)}
- };
-
- vc_via_REG := vc_via;
- } // end function setHeaders_REGISTER
-
- /**
- * @desc function sets via, cseq and authorization header for the next outgoing (protected) REGISTER
- * @verdict
- */
- function f_setHeaders_2ndREGISTER(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- var CommaParam_List v_challenge;
-
- // Increment CSeq sequence number
- p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1;
- vc_cSeq := p_cSeq_s;
-
- vc_requestUri := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := vc_userprofile.registrarDomain,
- portField := omit
- }
- }
- },
- urlParameters := omit,
- headers := omit
- };
-
- // new branch tag due to different branch tag in new REGISTER method
- vc_branch := c_branchCookie & f_getRndTag();
-
- vc_via_REG := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
-
- // Extract challenge and calculate credentials for a response.
- v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.digestCln;
-
-
- // Prepair right answer
- vc_authorization := {
- fieldName := AUTHORIZATION_E,
- body := {f_calculatecCredentials(vc_userprofile, "REGISTER", v_challenge)}
- };
- } // end function f_setHeaders_2ndREGISTER
-
- /**
- * @desc function sets via, cseq and authorization header for the next outgoing (protected) REGISTER NO response in Authorization header to cause an error
- * @verdict
- */
- function f_setHeaders_2ndREGISTER_wo_response(
- ) runs on SipComponent {
- var CommaParam_List v_challenge;
-
- vc_branch := c_branchCookie & f_getRndTag();
-
- vc_via_REG := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
-
- if (ischosen(vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge))
- // Extract challenge and calculate credentials for a response.
- {
- v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge.authParams;
- }
- else {
- v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.digestCln;
- }
-
- // Increment CSeq sequence number
- vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1;
-
- // Prepair right answer
- vc_authorization := {
- fieldName := AUTHORIZATION_E,
- body := {f_calculatecCredentials_wo_response(vc_userprofile, "REGISTER", v_challenge)}
- };
- } // end function f_setHeaders_2ndREGISTER_wo_response
-
- /**
- * @desc function sets via, cseq and authorization header with different private name for the next outgoing (protected) REGISTER
- * @verdict
- */
- function f_setHeaders_2ndREGISTER_authorizationWithDifferentUserName(
- ) runs on SipComponent {
- var CommaParam_List v_challenge;
-
- vc_branch := c_branchCookie & f_getRndTag();
-
- vc_requestUri := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := vc_userprofile.registrarDomain,
- portField := omit
- }
- }
- },
- urlParameters := omit,
- headers := omit
- };
-
- vc_via_REG := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
-
- // Extract challenge and calculate credentials for a response.
- v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge.authParams;
-
- // Increment CSeq sequence number
- vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1;
-
- // Prepair right answer
- vc_authorization := {
- fieldName := AUTHORIZATION_E,
- body := {f_calculatecCredentialsAndChangeUserName(vc_userprofile, "REGISTER", v_challenge)}
- };
- } // end function f_setHeaders_2ndREGISTER_authorizationWithDifferentUserName
-
-
- /**
- * @desc function sets header fields for the next outgoing REGISTER (de-registration)
- * @param p_cSeq_s cSeq to be used
- * @verdict
- */
- function f_setHeaders_deREGISTER(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- var SemicolonParam_List v_params := {};
-
- f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
- // reset authorization header to not use nonce from registration (otherwise we have to increase nc)
- vc_authorization := {
- fieldName := AUTHORIZATION_E,
- body := {f_calculatecCredentials_empty(vc_userprofile)}
- };
- vc_requestUri := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := vc_userprofile.registrarDomain,
- portField := omit
- }
- }
- },
- urlParameters := omit,
- headers := omit
- };
- vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile)));
- v_params := f_addParameter(v_params,
- {
- id := c_tagId,
- paramValue := {
- tokenOrHost := f_getRndTag()
- }
- });
- vc_from := {
- fieldName := FROM_E,
- addressField := vc_to.addressField,
- fromParams := v_params
- };
-
- vc_contact := {
- fieldName := CONTACT_E,
- contactBody := {wildcard := "*"}
- };
- } // end function f_setHeaders_deREGISTER
-
-
- /**
- * @desc setting of general and basic Invite header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersINVITE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
-
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- if (ischosen(vc_requestUri.components.sip)) {
- // sip/sips call
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- }
- else if (ischosen(vc_requestUri.components.urn)) {
- // Emergency call
- vc_reqUrnUri := vc_requestUri.components.urn;
- }
- else {
- log("*** " & __SCOPE__ &": INFO:f_setHeadersINVITE: unsupported field: ", vc_requestUri," ***");
- setverdict(fail);
- }
- }
-
- /**
- * @desc setting of general and basic Update header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersUPDATE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "UPDATE"); // cseq, contact, branch, via
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
-
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersUPDATE
-
- /**
- * @desc setting of general and basic Message header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersMESSAGE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "MESSAGE"); // cseq, contact, branch, via
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
-
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersMESSAGE
-
- /**
- * @desc setting of general and basic Notify header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersNOTIFY(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "NOTIFY"); // cseq, contact, branch, via
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersNOTIFY
-
- /**
- * @desc setting of general and basic Publish header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersPUBLISH(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "PUBLISH"); // cseq, contact, branch, via
- // after SUBSCRIBE message callid shall be same
- // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr };
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersPUBLISH
-
- /**
- * @desc function sets header field for the next outgoing SUBSCRIBE message
- * @param p_cSeq_s CSeq parameter to be applied
- */
- function f_setHeaders_SUBSCRIBE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- var SemicolonParam_List v_params := {};
-
- f_setHeadersGeneral(p_cSeq_s, "SUBSCRIBE"); // cseq, contact, branch, via
- vc_requestUri := valueof(m_SipUrl_currDomain(vc_userprofile));
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
-
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
-
- // store callId from Subscribe message
- vc_callIdSub := vc_callId;
-
- vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile)));
- vc_cancel_To := vc_to;
- v_params := f_addParameter(v_params,
- {
- id := c_tagId,
- paramValue := {
- tokenOrHost := f_getRndTag()
- }
- });
- vc_from := {
- fieldName := FROM_E,
- addressField := vc_to.addressField,
- fromParams := v_params
- };
- } // end function setHeaders_SUBSCRIBE
-
- /**
- * @desc setting of general and basic Subscribe header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersSUBSCRIBE(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "SUBSCRIBE"); // cseq, contact, branch, via
- vc_callId := {
- fieldName := CALL_ID_E,
- callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr
- };
-
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersMESSAGE
-
- /**
- * @desc setting of general and basic REFER header fields in additon to the addresses (To, From, ReqUri)
- * @param p_cSeq_s
- */
- function f_setHeadersREFER(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- f_setHeadersGeneral(p_cSeq_s, "REFER"); // cseq, contact, branch, via
- // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr };
- vc_cancel_To := vc_to;
- vc_caller_To := vc_to;
-
- vc_caller_From := vc_from;
-
- vc_reqHostPort := vc_requestUri.components.sip.hostPort;
- } // end function f_setHeadersREFER
-
- /**
- * @desc This function reads all necessary headers from the received REGISTER message and generate the tag for the answer
- * @param p_Request REGISTER that has been received
- */
- function f_setHeadersOnReceiptOfREGISTER(
- Request p_Request
- ) runs on SipComponent {
-
- f_setHeadersOnReceiptOfRequest(p_Request);
-
- vc_callId := p_Request.msgHeader.callId;
- vc_caller_From := vc_from;
- f_addTagInTo(vc_to);
- vc_caller_To := vc_to;
- vc_requestUri := p_Request.requestLine.requestUri;
-
- vc_cancel_To := p_Request.msgHeader.toField;
-
- if (isvalue(p_Request.msgHeader.contact) and (not ischosen(p_Request.msgHeader.contact.contactBody.wildcard))) {
- vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- }
-
- // update callee information and pick up tag if the call need to be canceled
- vc_callee_To := {
- fieldName := TO_E,
- addressField := vc_caller_From.addressField,
- toParams := vc_caller_From.fromParams
- };
-
- vc_callee_From := {
- fieldName := FROM_E,
- addressField := vc_caller_To.addressField,
- fromParams := vc_caller_To.toParams
- };
-
- if (isvalue(p_Request.msgHeader.authorization)) {
- vc_authorization := valueof(p_Request.msgHeader.authorization);
- }
- } // end f_setHeadersOnReceiptOfREGISTER
-
- /**
- * @desc This function reads all necessary headers from the received SUBSCRIBE message and generate the tag for the answer
- * @param p_Request SUBSCRIBE that has been received
- */
- function f_setHeadersOnReceiptOfSUBSCRIBE(
- Request p_Request
- ) runs on SipComponent {
-
- f_setHeadersOnReceiptOfRequest(p_Request);
-
- vc_callId := p_Request.msgHeader.callId;
- vc_caller_From := vc_from;
- f_addTagInTo(vc_to);
- vc_caller_To := vc_to;
- vc_requestUri := p_Request.requestLine.requestUri;
-
- vc_cancel_To := p_Request.msgHeader.toField;
-
- if (isvalue(p_Request.msgHeader.contact)) {
- vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- }
-
- // update callee information and pick up tag if the call need to be canceled
- vc_callee_To := {
- fieldName := TO_E,
- addressField := vc_caller_From.addressField,
- toParams := vc_caller_From.fromParams
- };
-
- vc_callee_From := {
- fieldName := FROM_E,
- addressField := vc_caller_To.addressField,
- fromParams := vc_caller_To.toParams
- };
- } // end f_setHeadersOnReceiptOfSUBSCRIBE
-
- function f_setHeadersOnReceiptOfREFER(
- Request p_Request
- ) runs on SipComponent {
-
- f_setHeadersOnReceiptOfRequest(p_Request);
-
- vc_requestUri := p_Request.requestLine.requestUri;
- vc_cancel_To := p_Request.msgHeader.toField;
-
- if (isvalue(p_Request.msgHeader.contact)) {
- vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- vc_requestUri := f_getContactUri(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- }
-
- // update callee information and pick up tag if the call need to be canceled
- vc_callee_To := {
- fieldName := TO_E,
- addressField := vc_caller_From.addressField,
- toParams := vc_caller_From.fromParams
- };
-
- vc_callee_From := {
- fieldName := FROM_E,
- addressField := vc_caller_To.addressField,
- fromParams := vc_caller_To.toParams
- };
- } // end f_setHeadersOnReceiptOfREFER
-
- /**
- * @desc function reads all necessary headers from the received INVITE message and generate the tag for the answer
- * @param p_Request received INVITE message
- * @verdict
- */
- function f_setHeadersOnReceiptOfINVITE(
- Request p_Request
- ) runs on SipComponent {
- var integer i, j;
- var integer v_length;
-
- f_setHeadersOnReceiptOfRequest(p_Request);
-
- vc_callId := p_Request.msgHeader.callId;
-
- vc_requestUri2 := p_Request.requestLine.requestUri;
-
- vc_cancel_To := p_Request.msgHeader.toField;
- f_addTagInTo(vc_to);
- vc_caller_From := vc_from;
- vc_caller_To := vc_to;
-
- if (isvalue(p_Request.msgHeader.contact)) {
- vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- vc_requestUri := f_getContactUri(p_Request.msgHeader.contact.contactBody.contactAddresses[0]);
- }
-
- // update callee information and pick up tag if the call need to be canceled
- vc_callee_To := {
- fieldName := TO_E,
- addressField := vc_caller_From.addressField,
- toParams := vc_caller_From.fromParams
- };
-
- vc_callee_From := {
- fieldName := FROM_E,
- addressField := vc_caller_To.addressField,
- fromParams := vc_caller_To.toParams
- };
-
- if (isvalue(p_Request.msgHeader.privacy)) {
- vc_privacy := p_Request.msgHeader.privacy;
- }
-
- if (isvalue(p_Request.messageBody)) {
- // cleaning of attributes before assignment
- if (isvalue(vc_sdp_remote.media_list)) {
- v_length := lengthof(vc_sdp_remote.media_list);
- for (i := 0; i < v_length; i := i + 1) {
- if (isvalue(vc_sdp_remote.media_list[i].attributes)) {
- vc_sdp_remote.media_list[i].attributes := omit;
- }
- }
- }
-
- // save SDP if present
- if (ischosen(p_Request.messageBody.sdpMessageBody)) {
- vc_sdp_remote := p_Request.messageBody.sdpMessageBody;
- vc_sdp_remote_is_valid := true;
- f_prepare_SDP_answer();
- }
-
- // save XML if present
- if (ischosen(p_Request.messageBody.xmlBody)) {
- vc_xml_remote := p_Request.messageBody.xmlBody;
- }
-
- if (ischosen(p_Request.messageBody.mimeMessageBody)) {
-
- for (j := 0; j < lengthof(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList); j := j + 1) {
- if (match(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_sdpApplication)) {
- vc_sdp_remote := p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.sdpMessageBody;
- vc_sdp_remote_is_valid := true;
- f_prepare_SDP_answer();
- }
- if (match(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_xmlApplication)) {
- vc_xml_remote := p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.xmlBody;
- }
- }
- }
- }
-
- if (isvalue(p_Request.msgHeader.supported.optionsTags)) {
- for (i := lengthof(p_Request.msgHeader.supported.optionsTags); i > 0; i := i - 1) {
- if (p_Request.msgHeader.supported.optionsTags[i - 1] == "100rel") {
- vc_supported_100rel := true;
- }
- if (p_Request.msgHeader.supported.optionsTags[i - 1] == "precondition") {
- vc_supported_precondition := true;
- }
- }
- }
- } // end f_setHeadersOnReceiptOfINVITE
-
- /**
- * @desc function reads header field of a received BYE message
- * @param p_Request received BYE
- */
- function f_setHeadersOnReceiptOfBYE(
- Request p_BYE_Request
- ) runs on SipComponent {
-
- f_setHeadersOnReceiptOfRequest(p_BYE_Request);
- vc_callId := p_BYE_Request.msgHeader.callId;
- } // end f_setHeadersOnReceiptOfBYE
-
- /**
- * @desc function reads header field from an incoming Request message
- * @param p_Request received Request message
- */
- function f_setHeadersOnReceiptOfRequest(
- Request p_Request
- ) runs on SipComponent {
- vc_request := p_Request;
- vc_callId := p_Request.msgHeader.callId;
- vc_cSeq := valueof(p_Request.msgHeader.cSeq); // CSeq is mandatory
- vc_iut_CSeq := p_Request.msgHeader.cSeq;
- vc_from := p_Request.msgHeader.fromField;
- vc_caller_From := p_Request.msgHeader.fromField;
- vc_to := p_Request.msgHeader.toField;
- vc_caller_To := p_Request.msgHeader.toField;
- vc_via := p_Request.msgHeader.via;
- // update sent_label according to received via header field
- f_getViaReplyAddr(vc_via.viaBody, vc_sent_label);
-
- // Catch route
- vc_boo_recordRoute := false;
-
- // add tag field into To header if tag is not present
- if (not (isvalue(p_Request.msgHeader.toField.toParams))) {
- vc_to.toParams := {
- {
- id := c_tagId,
- paramValue := {
- tokenOrHost := f_getRndTag()
- }
- }
- };
- vc_caller_To := vc_to;
- }
- if (isvalue(p_Request.msgHeader.recordRoute.fieldName)) {//Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present
- vc_boo_recordRoute := true;
- vc_recordRoute := p_Request.msgHeader.recordRoute;
- }
- } // end f_setHeadersOnReceiptOfRequest
-
- /**
- * @desc functions reads header fields from an incoming Response message
- * @param p_cSeq
- * @param p_response received response message
- * @verdict
- */
- function f_setHeadersOnReceiptOfResponse(
- Response p_response
- ) runs on SipComponent {
- var integer i, j, v_nbroute;
- var template(omit) Contact v_contact;
- // only for local purpose
- vc_response := p_response;
- // vc_cSeq := p_cSeq; //must not save global c_seq because it can overwrite temporary cSeq
- vc_to := p_response.msgHeader.toField;
- vc_from := p_response.msgHeader.fromField;
- vc_caller_To := vc_to;
- vc_caller_From := vc_from;
-
- if (isvalue(p_response.msgHeader.contact)) {
- v_contact := p_response.msgHeader.contact;
- if (ischosen(v_contact.contactBody.contactAddresses)) {
- vc_reqHostPort := f_getContactAddr(valueof(v_contact.contactBody.contactAddresses[0]));
- vc_requestUri := f_getContactUri(valueof(v_contact.contactBody.contactAddresses[0]));
- }
- }
- else {
- if (ischosen(vc_to.addressField.addrSpecUnion.components.sip)) {
- // sip/sips call
- vc_reqHostPort := vc_to.addressField.addrSpecUnion.components.sip.hostPort;
- }
- else if (ischosen(vc_to.addressField.addrSpecUnion.components.urn)) {
- // Emergency call
- vc_reqUrnUri := vc_to.addressField.addrSpecUnion.components.urn;
- }
- else {
- log("*** f_setHeadersOnReceiptOfResponse: INFO: unsupported field: ", vc_to, " ***");
- setverdict(fail);
- }
- vc_requestUri := vc_to.addressField.addrSpecUnion;
- }
-
- vc_callee_To := {
- fieldName := TO_E,
- addressField := vc_caller_From.addressField,
- toParams := vc_caller_From.fromParams
- };
-
- vc_callee_From := {
- fieldName := FROM_E,
- addressField := vc_caller_To.addressField,
- fromParams := vc_caller_To.toParams
- };
-
- vc_via := p_response.msgHeader.via;
-
- // Route Management
- if (isvalue(p_response.msgHeader.recordRoute)) {
- vc_recordRoute := p_response.msgHeader.recordRoute;
- v_nbroute := lengthof(vc_recordRoute.routeBody);
- // copy and reverse the order of the routes in route header
- for (i := 0; i <= (v_nbroute - 1); i := i + 1) {
- j := v_nbroute - 1 - i;
- vc_route.routeBody[j] := vc_recordRoute.routeBody[i];
- }
- vc_route.fieldName := ROUTE_E;
- vc_boo_recordRoute := true;
- vc_boo_route := true;
- }
- else {
- vc_boo_recordRoute := false;
- vc_boo_route := false;
- }
-
-
- // extentions due to new fields in PRACK and UPDATE messages
- if (isvalue(p_response.msgHeader.rSeq)) {
- vc_rAck := {
- fieldName := RACK_E,
- responseNum := valueof(p_response.msgHeader.rSeq).responseNum,
- seqNumber := valueof(p_response.msgHeader.cSeq).seqNumber,
- method := valueof(p_response.msgHeader.cSeq).method
- };
- }
-
- // extentions due to new HistoryInfo fields 180 or 200OK messages
- if (isvalue(p_response.msgHeader.historyInfo)) {
- vc_historyInfoList := valueof(p_response.msgHeader.historyInfo).historyInfoList;
- vc_history_is_valid := true;
- }
- else {
- vc_history_is_valid := false;
- }
-
- // sdpMessageBody answer
- if (isvalue(p_response.messageBody)) {
- if (ischosen(p_response.messageBody.sdpMessageBody)) {
- vc_sdp_remote := p_response.messageBody.sdpMessageBody;
- vc_sdp_remote_is_valid := true;
- }
-
- if (ischosen(p_response.messageBody.xmlBody)) {
- vc_xml_remote := p_response.messageBody.xmlBody;
- }
-
- if (ischosen(p_response.messageBody.mimeMessageBody)) {
-
- for (j := 0; j < lengthof(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList); j := j + 1) {
- if (match(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_sdpApplication)) {
- vc_sdp_remote := p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.sdpMessageBody;
- }
- if (match(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_xmlApplication)) {
- vc_xml_remote := p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.xmlBody;
- }
- }
- }
- }
- } // end function f_setHeadersOnReceiptOfResponse
-
- /**
- * @desc functions reads ServiceRoute header field from an incoming 200 Response message in registration
- * @param p_cSeq
- * @param p_response received response message
- */
- function f_getServiceRouteMapIntoRouteInRegistration(
- Response p_response
- ) runs on SipComponent {
- var integer i, j, v_nbroute;
- var template(omit) ServiceRoute v_serviceRoute;
-
- // Route Management
- if (isvalue(p_response.msgHeader.serviceRoute.fieldName)) {////Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present
- v_serviceRoute := p_response.msgHeader.serviceRoute;
- v_nbroute := lengthof(v_serviceRoute.routeBody);
- // copy and reverse the order of the routes in route header
- for (i := 0; i <= (v_nbroute - 1); i := i + 1) {
- j := v_nbroute - 1 - i;
- vc_route.routeBody[j] := v_serviceRoute.routeBody[i];
- }
- vc_route.fieldName := ROUTE_E;
- vc_route_REG := vc_route;
- vc_boo_route := true;
- }
- } // end function f_getServiceRouteMapIntoRouteInRegistration
-
- /**
- * @desc functions reads Route header field from an incoming Request message and generate RecordRoute
- * @param p_cSeq
- * @param p_request received request message
- */
- function f_getRouteMapIntoRecordRoute(
- Request p_request
- ) runs on SipComponent {
- var integer i, j, v_nbroute;
- var template(omit) Route v_route;
-
- // Route Management
- if (isvalue(p_request.msgHeader.route)) {
- v_route := p_request.msgHeader.route;
- v_nbroute := lengthof(v_route.routeBody);
- // copy and reverse the order of the routes in route header
- for (i := 0; i <= (v_nbroute - 1); i := i + 1) {
- j := v_nbroute - 1 - i;
- vc_recordRoute.routeBody[j] := v_route.routeBody[i];
- }
- vc_recordRoute.fieldName := RECORD_ROUTE_E;
-
- vc_boo_recordRoute := true;
- }
- } // end function f_getRouteMapIntoRecordRoute
-
-
- } // end group SetHeaders
-
-
-
- } // end group FieldOperations
-
- group SDPOperations {
-
- /**
- * @desc check if message body include SDP attribute (2nd parameter) for any media
- */
- function f_check_attribute(
- in SDP_Message p_sdp,
- in template SDP_attribute p_attribute
- ) runs on SipComponent
- return boolean {
- var integer i, j;
-
- if (isvalue(p_sdp.media_list)) {
- for (j := 0; j < lengthof(p_sdp.media_list); j := j + 1) {
- if (isvalue(p_sdp.media_list[j].attributes)) {
- for (i := 0; i < lengthof(p_sdp.media_list[j].attributes); i := i + 1) {
- if (match(p_sdp.media_list[j].attributes[i], p_attribute)) {
- return (true);
- }
- }
- }
- }
- }
- if (isvalue(p_sdp.attributes)) {
- for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) {
- if (match(p_sdp.attributes[j], p_attribute)) {
- return (true);
- }
- }
- }
-
- return (false);
- }
-
- /**
- * @desc check if message body include SDP (session level) attribute (2nd parameter) for any media
- */
- function f_check_session_attribute(
- in SDP_Message p_sdp,
- in template SDP_attribute p_attribute
- ) runs on SipComponent
- return boolean {
- var integer j;
-
- if (isvalue(p_sdp.attributes)) {
- for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) {
- if (match(p_sdp.attributes[j], p_attribute)) {
- return (true);
- }
- }
- }
-
- return (false);
- }
-
- /**
- * @desc identify an SDP direction attribute (session or first media attribute) in a SDP message and return its answer value
- * @param p_sdp the SDP message that has been received
- * @param p_attribute incoming SDP attribute that need to be used for the SDP direction (answer)
- * @return the new attribute (to be send out) derived from the incoming SDP value
- * @verdict
- */
- function f_get_attribute_answer(
- in SDP_Message p_sdp,
- in template SDP_attribute p_attribute
- ) runs on SipComponent
- return SDP_attribute {
- var integer i, j;
- var template SDP_attribute v_attribute := p_attribute;
-
- // check if the selected attribute is included in the SDP offer (session attributes)
- if (isvalue(p_sdp.attributes)) {
- for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) {
- if (match(p_sdp.attributes[j], p_attribute)) {
- v_attribute := p_sdp.attributes[j];
- }
- }
- }
- else
- // check if the selected attribute is included in the SDP offer (any of the media attributes)
- {
- if (isvalue(p_sdp.media_list)) {
- for (j := 0; j < lengthof(p_sdp.media_list); j := j + 1) {
- if (isvalue(p_sdp.media_list[j].attributes)) {
- for (i := 0; i < lengthof(p_sdp.media_list[j].attributes); i := i + 1) {
- if (match(p_sdp.media_list[j].attributes[i], p_attribute)) {
- v_attribute := p_sdp.media_list[j].attributes[i];
- }
- }
- }
- }
- }
- }
-
- select (valueof(v_attribute)) {
- case (mw_attribute_sendonly) {
- return (valueof(m_attribute_recvonly));
- }
- case (mw_attribute_sendrecv) {
- return (valueof(m_attribute_sendrecv));
- } // MRO
- case (mw_attribute_inactive) {
- return (valueof(m_attribute_inactive));
- } // MRO
- case (mw_attribute_recvonly) {
- return (valueof(m_attribute_sendonly));
- } // MRO
- }
- return (valueof(m_attribute_sendrecv)); // the default return value in case of missing attribute offer
- }
-
- /**
- * @desc check if message body include SDP bandwidth (2nd parameter) either for the session or a media description
- */
- function f_check_bandwidth(
- in SDP_Message p_loc_sdp,
- in template SDP_bandwidth p_loc_bandw
- ) runs on SipComponent
- return boolean {
- var integer i, j;
- if (isvalue(p_loc_sdp.bandwidth)) {
- for (j := 0; j < lengthof(p_loc_sdp.bandwidth); j := j + 1) {
- if (match(p_loc_sdp.bandwidth[j], p_loc_bandw)) {
- return (true);
- }
- }
- }
- if (isvalue(p_loc_sdp.media_list)) {
- for (j := 0; j < lengthof(p_loc_sdp.media_list); j := j + 1) {
- if (isvalue(p_loc_sdp.media_list[j].bandwidth)) {
- for (i := 0; i < lengthof(p_loc_sdp.media_list[j].bandwidth); i := i + 1) {
- if (match(p_loc_sdp.media_list[j].bandwidth[i], p_loc_bandw)) {
- return (true);
- }
- }
- }
- }
- }
-
- return (false);
- }
-
- /**
- * @desc check if message body include SDP media (2nd parameter)
- */
- function f_check_media(
- in SDP_Message p_loc_sdp,
- in template(present) SDP_media_desc p_loc_media
- ) runs on SipComponent
- return boolean {
- var integer j;
- if (isvalue(p_loc_sdp.media_list)) {
- for (j := 0; j < lengthof(p_loc_sdp.media_list); j := j + 1) {
- if (match(p_loc_sdp.media_list[j].media_field.transport, p_loc_media.media_field.transport) and match(p_loc_sdp.media_list[j].media_field.fmts, p_loc_media.media_field.fmts)) {
- return (true);
- }
- }
- }
- return (false);
- }
-
- /**
- * @desc check if message body include precondition mechanism (a=des and a=curr) retrun true, else false
- * @param loc_sdp SDP message
- */
- function f_check_precondition(
- in SDP_Message p_loc_sdp
- ) runs on SipComponent
- return boolean {
- if (f_check_attribute(p_loc_sdp, mw_attribute_des) or f_check_attribute(p_loc_sdp, mw_attribute_curr)) {
- return (true);
- }
-
- return (false);
- }
-
-
- /**
- * @desc check if message body include SDP media direction return true, else false
- */
- function f_check_media_direction(
- in SDP_Message p_loc_sdp
- ) runs on SipComponent
- return boolean {
-
- if (f_check_attribute(p_loc_sdp, mw_attribute_sendonly) or f_check_attribute(p_loc_sdp, mw_attribute_recvonly) or f_check_attribute(p_loc_sdp, mw_attribute_sendrecv) or f_check_attribute(p_loc_sdp, mw_attribute_inactive)) {
- return (true);
- }
-
- return (false);
- }
-
- /**
- * @desc copy media/attribute lines from remote to local SDP variable
- */
- function f_check_SDP(
- integer p_loc_sdp,
- integer p_loc_codec
- ) runs on SipComponent
- return boolean {
- var SDP_media_desc v_media := f_prepare_media(p_loc_sdp, p_loc_codec);
- if (vc_sdp_remote.media_list[0].media_field.media != v_media.media_field.media) {
- return false;
- }
- if (vc_sdp_remote.media_list[0].media_field.transport != v_media.media_field.transport) {
- return false;
- }
- if (vc_sdp_remote.media_list[0].media_field.fmts != v_media.media_field.fmts) {
- return false;
- }
-
- return true;
- }
-
- /**
- * @desc replace the first curr media attribute with the given value.
- * @param p_sdp SDP message to modify
- * @param p_curr new curr attribute
- */
- function f_replace_curr_attribute(
- inout SDP_Message p_sdp,
- in SDP_attribute_curr p_curr
- ) {
- var integer i;
- var integer v_mn;
- if (isvalue(p_sdp.media_list)) {
- v_mn := lengthof(p_sdp.media_list[0].attributes);
- for (i := 0; i < v_mn; i := i + 1) {
- if (ischosen(p_sdp.media_list[0].attributes[i].curr)) {
- p_sdp.media_list[0].attributes[i].curr := p_curr;
- i := v_mn;
- }
- }
- }
- }
-
- /**
- * @desc append new media attribute to the first media description.
- * @param p_sdp SDP message to modify
- * @param p_att SDP attribute to appand
- */
- function f_append_media_attribute(
- inout SDP_Message p_sdp,
- in SDP_attribute p_att
- ) {
- var integer v_mn;
- if (isvalue(p_sdp.media_list)) {
- v_mn := lengthof(p_sdp.media_list[0].attributes);
- p_sdp.media_list[0].attributes[v_mn] := p_att;
- }
- }
-
-
- /**
- * @desc append new media to the existing media list in SDP
- */
- function f_append_media(
- inout SDP_Message p_loc_SDP,
- template(value) SDP_media_desc p_loc_media
- ) {
- var integer v_mn := lengthof(p_loc_SDP.media_list);
- p_loc_SDP.media_list[v_mn] := valueof(p_loc_media);
- }
-
- /**
- * @desc repare media/attribute lines
- */
- function f_prepare_media(
- integer p_loc_sdp,
- integer p_loc_codec
- ) runs on SipComponent
- return SDP_media_desc {
- var SDP_attribute_rtpmap_codec v_codecs[32] := {
- {"PCMU", "8000", omit}, {"GSM", "8000", omit}, {"G723", "8000", omit}, {"DVI4", "8000", omit},
- {"DVI4", "16000", omit}, {"LPC", "8000", omit}, {"PCMA", "8000", omit}, {"G722", "8000", omit},
- {"L16", "44100", "2"}, {"L16", "44100", omit}, {"QCELP", "8000", omit}, {"CN","8000", omit},
- {"MPA", "90000", omit}, {"G728", "8000", omit}, {"DVI4", "11025", omit}, {"DVI4", "22050", omit},
- {"G729", "8000", omit}, {"G726-40", "8000", omit}, {"G726-32", "8000", omit}, {"G726-24", "8000", omit},
- {"G726-16", "8000", omit}, {"G726D", "8000", omit}, {"G726E", "8000", omit}, {"GSM-EFR", "8000", omit},
- {"CelB", "90000", omit}, {"JPEG", "90000", omit}, {"Nv", "90000", omit}, {"H261", "90000", omit},
- {"MPV", "90000", omit}, {"MP2T" ,"90000", omit}, {"H263", "90000", omit}, {"H263-1998", "90000", omit}};
- var SDP_media_desc v_media := {
- media_field := {
- media := "audio",
- ports := {
- port_number := 10000,
- num_of_ports := omit
- },
- transport := "RTP/AVP",
- fmts := {"0"}
- }, // m=audio
- // 8500
- // RTP/AVP
- // 0
- information := omit,
- connections := omit,
- bandwidth := omit,
- key := omit,
- attributes := omit
- };
-
- if (32 < p_loc_codec or p_loc_codec < 1) {
- log("*** " & __SCOPE__ & ": INFO: Unexpected SDP variant ***");
- setverdict(inconc);
- return (v_media);
- }
-
- if (p_loc_sdp == 1) {
- }
- else if (p_loc_sdp == 2) {
- v_media.media_field.fmts := {PX_SIP_SDP_DYN}; // { "98", "0" };
- v_media.attributes := {
- {
- rtpmap := {
- payload_type := PX_SIP_SDP_DYN,
- codec := v_codecs[p_loc_codec - 1]
- }
- }
- };
- }
- else if (p_loc_sdp == 3) {
- v_media.media_field.fmts := {"8"};
- }
- else if (p_loc_sdp == 4) {
- v_media.media_field.fmts := {"99", "8"};
- v_media.attributes := {
- {
- rtpmap := {
- payload_type := "99",
- codec := v_codecs[p_loc_codec - 1]
- }
- }
- };
- }
- else if (p_loc_sdp == 5) {
- v_media.media_field.media := "image";
- v_media.media_field.transport := "udptl";
- v_media.media_field.fmts := {"t38"};
- }
- else if (p_loc_sdp == 6) {
- v_media.media_field.media := "image";
- v_media.media_field.transport := "tcptl";
- v_media.media_field.fmts := {"t38"};
- }
- else {
- log("*** " & __SCOPE__ & ": INFO: Unexpected SDP variant ***");
- setverdict(inconc);
- }
-
- return (v_media);
- }
-
- /**
- * @desc repare media/attribute lines
- */
- function f_prepare_SDP(
- integer p_loc_sdp,
- integer p_loc_codec
- ) runs on SipComponent {
-
- vc_sdp_local.media_list := {f_prepare_media(p_loc_sdp, p_loc_codec)};
- }
-
- /**
- * @desc function that copy media/attribute lines from remote to local SDP variable
- */
- function f_prepare_SDP_answer(
- ) runs on SipComponent {
- var integer v_mn, v_cn := 0, i, j, k := 0;
- var charstring v_PT;
- var SDP_attribute_rtpmap_codec v_rtpmap := { "", "", omit};
- var SDP_attribute_list v_mediaAttributes := {};
- // increase session version
- vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_remote.origin.session_version) + 1);
- // if more than one codec, select the firs one
- v_mn := lengthof(vc_sdp_remote.media_list);
- for (i := 0; i < v_mn; i := i + 1) {
- // for every single media
- if (isvalue(vc_sdp_remote.media_list[i].attributes)) {
- v_cn := lengthof(vc_sdp_remote.media_list[i].attributes);
- }
- if (lengthof(vc_sdp_remote.media_list[i].media_field.fmts) > 0) {
- // select the first one
- v_PT := vc_sdp_remote.media_list[i].media_field.fmts[0];
- vc_sdp_local.media_list[i].media_field.fmts := {v_PT};
- for (j := 0; j < v_cn; j := j + 1) {
- if (ischosen(vc_sdp_remote.media_list[i].attributes[j].rtpmap)) {
- if (v_PT == vc_sdp_remote.media_list[i].attributes[j].rtpmap.payload_type) {
- v_rtpmap := vc_sdp_remote.media_list[i].attributes[j].rtpmap.codec;
- v_mediaAttributes[k] := {rtpmap := {v_PT, v_rtpmap}};
- k := k + 1;
- } // else line is not copied
- }
- else {
- // simple copy of attribute
- v_mediaAttributes[k] := vc_sdp_remote.media_list[i].attributes[j];
- k := k + 1;
- }
- }
- vc_sdp_local.media_list[i].attributes := v_mediaAttributes;
-
- if (isvalue(vc_sdp_local.media_list[i].attributes)) {
- v_cn := lengthof(vc_sdp_local.media_list[i].attributes);
- for (j := 0; j < v_cn; j := j + 1) {
- // simplified handling of status attributes (copy/keep status from peer):
- // a) copy/keep SDP_attribute_curr (invert tags if applicable)
- if (ischosen(vc_sdp_local.media_list[i].attributes[j].curr)) {
- // invert local/remote status tags
- if (vc_sdp_local.media_list[i].attributes[j].curr.statusType == "local") {
- vc_sdp_local.media_list[i].attributes[j].curr.statusType := "remote";
- }
- if (vc_sdp_local.media_list[i].attributes[j].curr.statusType == "remote") {
- vc_sdp_local.media_list[i].attributes[j].curr.statusType := "local";
- }
- // invert send/recv direction tags
- if (vc_sdp_local.media_list[i].attributes[j].curr.direction == "send") {
- vc_sdp_local.media_list[i].attributes[j].curr.direction := "recv";
- }
- if (vc_sdp_local.media_list[i].attributes[j].curr.direction == "recv") {
- vc_sdp_local.media_list[i].attributes[j].curr.direction := "send";
- }
- }
- else
- if (
- // b) copy/keep SDP_attribute_des (keep strength, invert tags if applicable)
- ischosen(vc_sdp_local.media_list[i].attributes[j].des)
- ) {
- // invert local/remote status tags
- if (vc_sdp_local.media_list[i].attributes[j].des.statusType == "local") {
- vc_sdp_local.media_list[i].attributes[j].des.statusType := "remote";
- }
- if (vc_sdp_local.media_list[i].attributes[j].des.statusType == "remote") {
- vc_sdp_local.media_list[i].attributes[j].des.statusType := "local";
- }
- // invert send/recv direction tags
- if (vc_sdp_local.media_list[i].attributes[j].des.direction == "send") {
- vc_sdp_local.media_list[i].attributes[j].des.direction := "recv";
- }
- if (vc_sdp_local.media_list[i].attributes[j].des.direction == "recv") {
- vc_sdp_local.media_list[i].attributes[j].des.direction := "send";
- }
- }
- else
- if (
- // c) simplification: assume no SDP_attribute_conf
- ischosen(vc_sdp_local.media_list[i].attributes[j].conf)
- ) {
- // handle SDP_attribute_conf
- }
- }
- }
- }
- }
- // add handling of prenegotiation, change ports if required etc.
- // if prenegotiation...
- }
-
- /**
- * @desc reject SDP offer by setting media ports to 0
- */
- function f_reject_SDP_offer(
- ) runs on SipComponent {
- var integer mn, i;
- f_copy_SDP(); // TO BE DONE with more details!
- // increase session version
- vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_local.origin.session_version) + 1);
- // if more than one codec, select the firs one
- mn := lengthof(vc_sdp_local.media_list);
- for (i := 0; i < mn; i := i + 1) {
- vc_sdp_local.media_list[i].media_field.ports := {0, omit};
- vc_sdp_local.media_list[i].attributes := omit; // {};
- }
- }
-
- /**
- * @desc copies SDP message elements from remote to local component variable: - bandwidth - session version (will be incremented) - media list modify the direction attribute of an SDP media list entry within an SDP message (vc_sdp_local)
- * @param p_medianum list position number of the media (if value 0 identifies first media list element)
- * @param p_direction the new direction attribute to be included in the media entry
- * @verdict
- */
- function f_SIP_modMediaDirection(
- integer p_medianum,
- template(value) SDP_attribute p_direction
- ) runs on SipComponent {
- var boolean v_set_direction;
-
- // flag indicates if direction attribute has been modified
- var integer v_mn := 0;
-
- // length of media list (number of entries)
- var integer v_cn := 0;
-
- // number of attributes of a media entry
- var integer i, j, k := 0;
- var SDP_attribute_list v_mediaAttributes := {};
- // collect the media attributes (to be assigned at end of function)
- f_copy_SDP(); // copy SDP session bandwidth and media list from remote to local component variable
- // increment session version
- vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_local.origin.session_version) + 1);
-
- // if more than one codec, select the first one
- v_mn := lengthof(vc_sdp_local.media_list);
-
- if (p_medianum == 0)
- // specific media requested
- {
- p_medianum := 1; // start checking from first media
- }
- if (p_medianum > 0)
- // specific media requested
- {
- if (not (p_medianum > v_mn)) {
- v_mn := p_medianum;
- }
- }
-
- // handling of media list elements
- for (i := 0; i < v_mn; i := i + 1) {
- v_cn := 0; // initialize the number of attributes of the media list entry
- if (isvalue(vc_sdp_local.media_list))
- // media_list is optional
- {
- // log("vc_sdp_local.media_list[i ] ",vc_sdp_local.media_list[i ] );
- if (isvalue(vc_sdp_local.media_list[i].attributes)) {
- v_cn := lengthof(vc_sdp_local.media_list[i].attributes);
- }
-
- v_set_direction := false;
-
- // if (lengthof(vc_sdp_local.media_list[i ] .media_field.fmts)>1)
- // select the first one
- for (j := 0; j < v_cn; j := j + 1) {
- if (ischosen(vc_sdp_local.media_list[i].attributes[j].recvonly) or ischosen(vc_sdp_local.media_list[i].attributes[j].sendonly) or ischosen(vc_sdp_local.media_list[i].attributes[j].inactive) or ischosen(vc_sdp_local.media_list[i].attributes[j].sendrecv)) {
- v_mediaAttributes[k] := valueof(p_direction);
- v_set_direction := true;
- }
- else
- // non-direction attributes will be copied
- {
- v_mediaAttributes[k] := vc_sdp_local.media_list[i].attributes[j];
- }
- k := k + 1;
- }
-
- if (not v_set_direction) {
- v_mediaAttributes[k] := valueof(p_direction);
- }
- vc_sdp_local.media_list[i].attributes := v_mediaAttributes;
- // }
- }
- }
- // add handling of prenegotiation, change ports if required etc.
- // if prenegotiation...
- }
-
- /**
- * @desc modify session and media attributes direction
- */
- function f_SIP_modSessionDirection(
- template(value) SDP_attribute p_direction
- ) runs on SipComponent {
- var boolean v_set_direction := false;
- var integer v_mn := 0, i := 0;
-
- if (isvalue(vc_sdp_local.attributes)) {
- v_mn := lengthof(vc_sdp_local.attributes);
-
- for (i := 0; i < v_mn; i := i + 1) {
- // for every single attribute (that is not omit)
- if (ischosen(vc_sdp_local.attributes[i].recvonly) or ischosen(vc_sdp_local.attributes[i].sendonly) or ischosen(vc_sdp_local.attributes[i].inactive) or ischosen(vc_sdp_local.attributes[i].sendrecv)) {
- vc_sdp_local.attributes[i] := valueof(p_direction);
- v_set_direction := true;
- }
- }
- if (not v_set_direction)
- // if not sent before
- {
- vc_sdp_local.attributes[v_mn] := valueof(p_direction);
- }
- }
- else {
- vc_sdp_local.attributes[0] := valueof(p_direction);
- }
- }
-
- /**
- * @desc check (from remote) and set (local) the session/media attribute lines on directions
- * @param p_direction_in incoming SDP attribute that need to be checked
- * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer)
- * @return
- * @verdict
- */
- function f_SIP_checksetSDPreqDirection(
- template(value) SDP_attribute p_direction_in,
- template(value) SDP_attribute p_direction_out
- ) runs on SipComponent {
- var template(value) SDP_attribute v_direction_out := p_direction_out;
- // check incoming SDP attribute
- if (not (isvalue(vc_request.messageBody) and (f_check_attribute(vc_request.messageBody.sdpMessageBody, p_direction_in)))) {
- if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_inactive))) {
- log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***");
- }
- else {
- setverdict(fail);
- }
- }
- else {
- setverdict(pass);
- log("*** " &__SCOPE__& ": INFO: attribute found in message body ***");
- }
- if (match(omit, p_direction_out))
- // not isvalue(v_direction_out))//MRO
- {
- v_direction_out := f_get_attribute_answer(vc_request.messageBody.sdpMessageBody, p_direction_in);
- }
- f_SIP_modMediaDirection(1, v_direction_out); // handling of attribute in media description
- f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session
- }
-
- /*
- *
- * @desc check (from remote) and set (local) the session/media attribute lines on directions
- * @param p_direction_in incoming SDP attribute that need to be checked
- * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer)
- * @return
- * @verdict
- */
- function f_SIP_checkResponsesetSDPreqDirection(
- template(value) SDP_attribute p_direction_in,
- template(value) SDP_attribute p_direction_out
- ) runs on SipComponent {
- var template(value) SDP_attribute v_direction_out := p_direction_out;
- // check incoming SDP attribute
- if (not (isvalue(vc_response.messageBody) and (f_check_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in)))) {
- if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_inactive))) {
- log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***");
- }
- else {
- setverdict(fail);
- }
- }
- else {
- setverdict(pass);
- log("*** " &__SCOPE__& ": INFO: attribute found in message body ***");
- }
- if (match(omit, p_direction_out))
- // not isvalue(v_direction_out))//MRO
- {
- v_direction_out := f_get_attribute_answer(vc_response.messageBody.sdpMessageBody, p_direction_in);
- }
- f_SIP_modMediaDirection(1, v_direction_out); // handling of attribute in media description
- f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session
- }
-
- /*
- *
- * @desc check (from remote) and set (local) the session attribute lines on directions
- * @param p_direction_in incoming SDP attribute that need to be checked
- * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer)
- * @return
- * @verdict
- */
- function f_SIP_checksetSDPreqDirectionSession(
- template(value) SDP_attribute p_direction_in,
- template(value) SDP_attribute p_direction_out
- ) runs on SipComponent {
- var template(value) SDP_attribute v_direction_out := p_direction_out;
- // check incoming SDP attribute
- if (not (isvalue(vc_request.messageBody) and (f_check_session_attribute(vc_request.messageBody.sdpMessageBody, p_direction_in)))) {
- if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_inactive))) {
- log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***");
- }
- else {
- setverdict(fail);
- }
- }
- if (match(omit, p_direction_out))
- // not isvalue(v_direction_out))//MRO
- {
- v_direction_out := f_get_attribute_answer(vc_request.messageBody.sdpMessageBody, p_direction_in);
- }
- f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session
- }
-
- /*
- *
- * @desc check (from remote) and set (local) the session attribute lines on directions
- * @param p_direction_in incoming SDP attribute that need to be checked
- * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer)
- * @return
- * @verdict
- */
- function f_SIP_checkResponsesetSDPreqDirectionSession(
- template(value) SDP_attribute p_direction_in,
- template(value) SDP_attribute p_direction_out
- ) runs on SipComponent {
- var template(value) SDP_attribute v_direction_out := p_direction_out;
- // check incoming SDP attribute
- if (not (isvalue(vc_response.messageBody) and (f_check_session_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in)))) {
- if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_inactive))) {
- log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***");
- }
- else {
- setverdict(fail);
- }
- }
- if (match(omit, p_direction_out))
- // not isvalue(v_direction_out))//MRO
- {
- v_direction_out := f_get_attribute_answer(vc_response.messageBody.sdpMessageBody, p_direction_in);
- }
- f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session
- }
-
-
- /*
- *
- * @desc check (from remote) and set (local)the session/media attribute lines on directions
- * @param p_direction_in attribute to be check
- * @param p_direction_out attrubyte to be
- * @return
- * @verdict
- */
- function f_SIP_checkSDPrespDirection(
- template SDP_attribute p_direction_in
- ) runs on SipComponent {
- // check incoming SDP attribute
- if (not (isvalue(vc_response.messageBody) and f_check_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in))) {
- setverdict(fail);
- }
- }
-
- /**
- * @desc check media/attribute lines from remote
- */
- function f_SIP_checkMediaDirection(
- integer p_medianum,
- template SDP_attribute p_direction
- ) runs on SipComponent
- return boolean {
- var integer v_mn, v_cn := 0, i, j;
- var boolean v_result := false;
- // increase session version
- vc_sdp_remote.origin.session_version := int2str(str2int(vc_sdp_remote.origin.session_version) + 1);
- // if more than one codec, select the firs one
- v_mn := lengthof(vc_sdp_remote.media_list);
- if (p_medianum == 0)
- // specific media requested
- {
- p_medianum := 1; // start checking from first media
- }
- if (p_medianum > 0)
- // specific media requested
- {
- if (p_medianum > v_mn) {
- return false;
- }
- else {
- v_mn := p_medianum;
- }
- }
- for (i := p_medianum - 1; i < v_mn; i := i + 1) {
- // for every single media
- if (isvalue(vc_sdp_remote.media_list[i].attributes)) {
- v_cn := lengthof(vc_sdp_remote.media_list[i].attributes);
- }
- if (lengthof(vc_sdp_remote.media_list[i].attributes) > 0) {
- // select the first one
- for (j := 0; j < lengthof(vc_sdp_remote.media_list[i].attributes); j := j + 1) {
- if (ischosen(vc_sdp_remote.media_list[i].attributes[j].recvonly) or ischosen(vc_sdp_remote.media_list[i].attributes[j].sendonly) or ischosen(vc_sdp_remote.media_list[i].attributes[j].inactive) or ischosen(vc_sdp_remote.media_list[i].attributes[j].sendrecv)) {
- if (match(vc_sdp_remote.media_list[i].attributes[j], p_direction)) {
- v_result := true;
- }
- else {
- return false;
- }
- }
- }
- }
- }
- return v_result;
- }
-
- /**
- * @desc copy media/attribute lines from remote to local SDP variable
- */
- function f_copy_SDP(
- ) runs on SipComponent {
- if (isvalue(vc_sdp_remote.connection)) {
- vc_sdp_local.connection := vc_sdp_remote.connection;
- }
- else {
- vc_sdp_local.connection := omit;
- }
-
- vc_sdp_local.origin := vc_sdp_remote.origin;
- vc_sdp_local.session_name := vc_sdp_remote.session_name;
-
- if (isvalue(vc_sdp_remote.bandwidth)) {
- vc_sdp_local.bandwidth := vc_sdp_remote.bandwidth;
- }
- else {
- vc_sdp_local.bandwidth := {};
- }
-
- if (isvalue(vc_sdp_remote.media_list)) {
- // // cleaning of media before assignment
- // if (isvalue(vc_sdp_local.media_list))
- // {
- // for (var integer i:=0; i<lengthof(vc_sdp_local.media_list); i:=i+1)
- // {
- // vc_sdp_local.media_list[i ] := omit ;
- // }
- // };
- vc_sdp_local.media_list := vc_sdp_remote.media_list;
- }
- }
-
-
- } // end group SDPOperations
-
- group AwaitingMessage {
-
- /**
- * @desc Function for time delay
- */
- function f_awaitingDelayTimer(
- float p_delay
- ) runs on SipComponent {
- tc_tDelay.start(p_delay);
- alt {
- [] tc_tDelay.timeout {
- setverdict(pass);
- }
- }
- } // end f_awaitingDelayTimer
-
- /**
- * @desc Function waiting for any MSG -request/response
- */
- function f_awaitingAnyPassOnTimeout(
- ) runs on SipComponent {
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive
- {
- tc_wait.stop;
- vc_boo_response := true;
- vc_boo_request := true;
- // setverdict(pass)
- }
- [] tc_wait.timeout {
- vc_boo_response := false;
- vc_boo_request := false;
- // setverdict (pass)
- }
- }
- } // end f_awaitingResponsePassOnTimeout
-
- /**
- * @desc Function waiting for no MSG -request/response
- */
- function f_awaitingNonePassOnTimeout(
- ) runs on SipComponent {
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] tc_wait.timeout {
- setverdict(pass);
- }
- }
- } // end f_awaitingNonePassOnTimeout
-
- /**
- * @desc function awaits REGISTER
- * @param p_register expected REGISTER request
- */
- function f_awaitingREGISTER(
- in template(present) REGISTER_Request p_register := ?
- ) runs on SipComponent {
- var REGISTER_Request v_request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_register) -> value v_request sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfREGISTER(v_request);
- }
- [] tc_wait.timeout {
- setverdict(fail);
- f_componentStop();
- }
- }
- }
-
- /**
- * @desc function awaits SUBSCRIBE
- * @param p_register expected SUBSCRIBE request
- */
- function f_awaitingSUBSCRIBE(
- in template(present) SUBSCRIBE_Request p_subscribe := ?
- ) runs on SipComponent {
- var SUBSCRIBE_Request v_request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_subscribe) -> value v_request sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfSUBSCRIBE(v_request);
- }
- [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label {
- tc_wait.stop;
- setverdict(fail);
- f_setHeadersOnReceiptOfSUBSCRIBE(v_request);
- // f_send200OK();
- }
- }
- }
-
- /**
- * @desc function awaits REGISTER and sends a 200 OK response
- * @param p_reply flag used to avoid the 200OK response sending
- */
- function f_awaitingREGISTER_sendReply(
- in template(present) REGISTER_Request p_register := ?,
- in boolean p_reply
- ) runs on SipComponent {
- var REGISTER_Request v_request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_register) -> value v_request sender vc_sent_label {
- tc_wait.stop;
- vc_request := v_request;
- f_setHeadersOnReceiptOfREGISTER(v_request);
- // Answer to the Request
- if (p_reply) {
- f_send200OK();
- }
- }
- [] tc_wait.timeout {
- setverdict(fail);
- f_componentStop();
- }
- }
- }
-
-
- /**
- * @desc Function waiting for a 200 OK response
- * @param p_cSeq_s current cSeq expectation
- */
- function f_awaitingOkResponse(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
-
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- setverdict(pass);
- }
- }
- } // end awaitingOkResponse
-
- /**
- * @desc Function waiting for a response
- * @param p_Response expected response message
- */
- function f_awaitingResponse(
- in template(present) Response p_Response := ?
- ) runs on SipComponent {
- tc_resp.start;
- a_awaitingResponse(p_Response);
- } // end f_awaitingResponse
-
- altstep a_awaitingResponse(
- in template(present) Response p_Response := ?
- ) runs on SipComponent {
- [] SIPP.receive(p_Response) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // setverdict(pass)
- }
- } // end f_awaitingResponse
-
- /**
- * @desc Function waiting for a response, repeat if 100 Trying is received
- * @param p_Response expected response message
- */
- function f_awaitingResponseIgnore100Trying(
- in template(present) Response p_Response := ?
- ) runs on SipComponent {
- tc_resp.start;
- alt {
- [] SIPP.receive(p_Response) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // setverdict(pass)
- }
- [] SIPP.receive(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)) -> value vc_response {
- repeat;
- }
- }
- } // end f_awaitingResponseIgnore100Trying
-
- /**
- * @desc Function waiting for a response and send ACK on FailureResponses 4xx,5xx,6xx
- * @param p_Response expected response message
- */
- function f_awaitingResponseSendACK(
- in template(present) Response p_Response := ?
- ) runs on SipComponent {
- tc_resp.start;
- alt {
- [] SIPP.receive(p_Response) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- LibSip_Steps.f_setHeadersACK();
- f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
- setverdict(pass);
- }
- }
- } // end f_awaitingResponse
-
- /**
- * @desc Function waiting for a response
- * @param p_Response expected response message
- */
- function f_awaitingResponsePassOnTimeout(
- in template(present) Response p_Response := ?
- ) runs on SipComponent {
- tc_resp.start;
- alt {
- [] SIPP.receive(p_Response) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- vc_boo_response := true;
- // setverdict(pass)
- }
- [] tc_resp.timeout {
- vc_boo_response := false;
- // setverdict (pass)
- }
- }
- } // end f_awaitingResponsePassOnTimeout
-
- /**
- * @desc Function waiting for a 200 OK response
- * @param p_cSeq_s current cSeq expectation
- */
- function f_awaitingOkResponseAndNOTIFY_sendReply(
- inout CSeq p_cSeq_s,
- in template(present) NOTIFY_Request p_MSG := ?
- ) runs on SipComponent {
-
- var boolean v_received_OK := false;
- var boolean v_received_NOTIFY := false;
- var NOTIFY_Request v_MSG;
- tc_resp.start;
- tc_wait.start(PX_SIP_TWAIT);
-
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- vc_subscribed := true;
- f_setHeadersOnReceiptOfResponse(vc_response);
- v_received_OK := true;
- setverdict(pass);
- if (not (v_received_NOTIFY)) {
- repeat;
- }
- }
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_getRouteMapIntoRecordRoute(v_MSG);
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the NOTIFY
- f_send200OK();
- v_received_NOTIFY := true;
- if (not (v_received_OK)) {
- repeat;
- }
- }
- }
- } // end f_awaitingOkResponseAndNOTIFY_sendReply
-
- /**
- * @desc await INFO request reply with 200 OK
- */
- function f_awaitingINFO_sendReply(
- in template(value) INFO_Request p_info
- ) runs on SipComponent {
- var INFO_Request v_request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_info) -> value v_request sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_request);
- // Answer to the INFO
- f_send200OK();
- }
- }
- } // end of f_awaitingINFO_sendReply
-
- /**
- * @desc function awaiting for an incoming INVITE
- * @param p_request expected message
- */
- function f_awaitingINVITE(
- template(present) INVITE_Request p_request := ?
- ) runs on SipComponent {
- var INVITE_Request v_INVITE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_invite := true;
- vc_first_recv := true; // communication has started
- f_setHeadersOnReceiptOfINVITE(v_INVITE_Request);
- SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label;
- }
- [vc_interface_isc] SIPP.receive(mw_INVITE_Request_Base) -> value v_INVITE_Request sender vc_sent_label {
- tc_wait.stop;
- setverdict(fail);
- f_setHeadersOnReceiptOfINVITE(v_INVITE_Request);
- SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label;
- // clear session - send 486 and await ACK
- f_sendResponse(m_Response_Base(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
- f_awaitingACK(mw_ACK_Request_Base(?));
- // await 486 which go towards and send ACK
- f_awaitingResponse(mw_Response_Base(c_statusLine486, ?, ?));
- f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
- syncPort.send(m_syncClientStop);
- stop;
- }
- }
- } // end f_awaitingINVITE
-
- /**
- * @desc function awaiting for an incoming INVITE
- * @param p_request expected message
- */
- function f_awaitingINVITE_No100Response(
- template(present) INVITE_Request p_request := ?
- ) runs on SipComponent {
- var INVITE_Request v_INVITE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_invite := true;
- vc_first_recv := true; // communication has started
- f_setHeadersOnReceiptOfINVITE(v_INVITE_Request);
- // SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label;
- }
- }
- } // end f_awaitingInviteRequest
-
- /**
- * @desc function awaiting for an incoming INVITE
- * @param p_request expected message
- */
- function f_awaitingINVITE_PassOnTimeout(
- template(present) INVITE_Request p_request := ?
- ) runs on SipComponent {
- var INVITE_Request v_INVITE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_invite := true;
- vc_first_recv := true; // communication has started
- vc_boo_request := true;
- f_setHeadersOnReceiptOfINVITE(v_INVITE_Request);
- SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label;
- }
- [] tc_wait.timeout {
- vc_boo_request := false;
- }
- }
- } // end f_awaitingInviteRequest
-
- /**
- * @desc function awaiting ACK request
- */
- function f_awaitingACK(
- in template(present) ACK_Request p_ACK := ?
- ) runs on SipComponent {
- f_awaitingACK_setHeaders(p_ACK, false);
- } // end f_awaitingACK
-
- /**
- * @desc function awaiting ACK request
- */
- function f_awaitingACK_setHeaders(
- in template(present) ACK_Request p_ACK := ?,
- in boolean p_setHeaders
- ) runs on SipComponent {
- var ACK_Request v_ACK_Request;
- tc_ack.start;
-
- alt {
- [] SIPP.receive(p_ACK) -> value v_ACK_Request {
- tc_ack.stop;
- if (p_setHeaders) {
- f_setHeadersOnReceiptOfRequest(v_ACK_Request);
- }
- }
- }
- } // end f_awaitingACK_setHeaders
-
- /**
- * @desc function awaiting BYE and sending 200OK response
- * @param p_BYE expected BYE
- */
- function f_awaitingBYE(
- in template(present) BYE_Request p_BYE := ?
- ) runs on SipComponent {
- var BYE_Request v_BYE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_bye := true;
- f_setHeadersOnReceiptOfBYE(v_BYE_Request);
- // f_send200OK();
- }
- }
- } // end f_awaitingBYE
-
- /**
- * @desc function awaiting BYE and sending 200OK response
- * @param p_BYE expected BYE
- */
- function f_awaitingBYE_sendReply(
- in template(present) BYE_Request p_BYE := ?
- ) runs on SipComponent {
- var BYE_Request v_BYE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_bye := true;
- f_setHeadersOnReceiptOfBYE(v_BYE_Request);
- f_send200OK();
- }
- }
- } // end f_awaitingBYE_sendReply
-
- /**
- * @desc function awaiting BYE and sending 200OK response
- * @param p_BYE expected BYE
- */
- function f_awaitingBYE_sendReply_PassOnTimeout(
- in template(present) BYE_Request p_BYE := ?
- ) runs on SipComponent {
- var BYE_Request v_BYE_Request;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label {
- tc_wait.stop;
- vc_ignore_bye := true;
- vc_boo_request := true;
- f_setHeadersOnReceiptOfBYE(v_BYE_Request);
- f_send200OK();
- }
- [] tc_wait.timeout {
- vc_boo_request := false;
- }
- }
- } // end f_awaitingBYE_sendReply_PassOnTimeout
-
- /**
- * @desc function awaiting CANCEL
- * @param p_CANCEL expected CANCEL
- */
- function f_awaitingCANCEL(
- in template(present) CANCEL_Request p_CANCEL := ?
- ) runs on SipComponent {
- var CANCEL_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_CANCEL) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- }
- }
- } // end f_awaitingCANCEL
- /**
- * @desc await MESSAGE request
- */
- function f_awaitingMESSAGE(
- in template(present) MESSAGE_Request p_MSG := ?
- ) runs on SipComponent {
- var MESSAGE_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- }
- [] SIPP.receive(mw_MESSAGE_Request_Base) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- log("*** " &__SCOPE__& ": INFO: Received MESSAGE not as expected! ***");
- setverdict(fail);
- }
- }
- } // end of f_awaitingMESSAGE
-
- /**
- * @desc await MESSAGE request reply with 200 OK
- */
- function f_awaitingMESSAGE_sendReply(
- ) runs on SipComponent {
- var MESSAGE_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(mw_MESSAGE_Request_Base) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the MESSAGE
- f_send200OK();
- }
- }
- } // end of f_awaitingMESSAGE_sendReply
-
- /**
- * @desc await MESSAGE request
- */
- function f_awaitingMESSAGE_sendReply_PassOnTimeout(
- in template(present) MESSAGE_Request p_MSG := ?
- ) runs on SipComponent {
- var MESSAGE_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the MESSAGE
- // f_send200OK();
- vc_boo_request := true;
- f_send200OK();
- // setverdict (pass);
- }
- [] tc_wait.timeout {
- vc_boo_request := false;
- // setverdict (pass);
- }
- }
- } // end of f_awaitingMESSAGE_PassOnTimeout
-
- /**
- * @desc await NOTIFY request
- */
- function f_awaitingNOTIFY(
- in template(present) NOTIFY_Request p_MSG := ?
- ) runs on SipComponent {
- var NOTIFY_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_getRouteMapIntoRecordRoute(v_MSG);
- f_setHeadersOnReceiptOfRequest(v_MSG);
- }
- }
- } // end of f_awaitingNOTIFY
-
- /**
- * @desc await NOTIFY request reply with 200 OK
- */
- function f_awaitingNOTIFY_sendReply(
- in template(present) NOTIFY_Request p_MSG := ?
- ) runs on SipComponent {
- var NOTIFY_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_getRouteMapIntoRecordRoute(v_MSG);
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the NOTIFY
- f_send200OK();
- }
- }
- } // end of f_awaitingNOTIFY_sendReply
-
- function f_awaitingNOTIFY_sendReply_postamble(
- in template(present) NOTIFY_Request p_MSG := ?
- ) runs on SipComponent {
- var NOTIFY_Request v_MSG;
-
- tc_wait.start(5.0);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_getRouteMapIntoRecordRoute(v_MSG);
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the NOTIFY
- f_send200OK();
- }
- [] tc_wait.timeout {
- // do nothing as receiving the Notify in de-registration is not part of the test body
- }
- }
- } // end of f_awaitingNOTIFY_sendReply_postamble
-
- /**
- * @desc await PRACK request reply with 200 OK
- */
- function f_awaitingPRACK_sendReply(
- in template(present) PRACK_Request p_MSG := ?
- ) runs on SipComponent {
- var PRACK_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the PRACK
- if (isvalue(vc_request.messageBody) and ischosen(vc_request.messageBody.sdpMessageBody)) {
- f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute(), m_MBody_SDP(vc_sdp_local)));
- }
- else {
- f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute()));
- }
- }
- }
- } // end of f_awaitingPRACK_sendReply
-
- function f_awaitingPRACK(
- in template(present) PRACK_Request p_MSG := ?
- ) runs on SipComponent {
- var PRACK_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- }
- }
- } // end of f_awaitingPRACK
-
- /**
- * @desc await PUBLISH request reply with 200 OK
- */
- function f_awaitingPUBLISH_sendReply(
- in template(present) PUBLISH_Request p_MSG := ?
- ) runs on SipComponent {
- var PUBLISH_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the PUBLISH
- f_send200OK();
- }
- }
- } // end of f_awaitingPUBLISH_sendReply
-
- /**
- * @desc await UPDATE request
- */
- function f_awaitingUPDATE(
- in template(present) UPDATE_Request p_MSG := ?
- ) runs on SipComponent {
- var UPDATE_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- }
- }
- } // end of f_awaitingUPDATE
-
- /**
- * @desc await UPDATE request reply with 200 OK
- */
- function f_awaitingUPDATE_sendReply(
- in template(present) UPDATE_Request p_MSG := ?
- ) runs on SipComponent {
- var UPDATE_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the UPDATE
- if (isvalue(vc_request.messageBody) and ischosen(vc_request.messageBody.sdpMessageBody)) {
- f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute(), m_MBody_SDP(vc_sdp_local)));
- }
- else {
- f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute()));
- }
- }
- }
- } // end of f_awaitingUPDATE_sendReply
-
-
- /**
- * @desc await REFER request
- */
- function f_awaitingREFER(
- in template(present) REFER_Request p_MSG := ?
- ) runs on SipComponent {
- var REFER_Request v_MSG;
-
- tc_wait.start(PX_SIP_TWAIT);
- alt {
- [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- tc_wait.stop;
- f_setHeadersOnReceiptOfREFER(v_MSG);
- }
- }
- } // end of f_awaitingUPDATE
-
-
-
- } // end AwaitingMessage
-
- group SendMessage {
-
- /**
- * @desc send ACK message, update the route and recordRoute header fields depending on boolean flags
- * @param p_request template of the message to be sent
- */
- function f_SendACK(
- template(value) ACK_Request p_request
- ) runs on SipComponent {
- // p_request.msgHeader.route := f_route(); // update the route header field depending on vc_boo_route
- // n/a p_request.msgHeader.recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send BYE message, update the route and recordRoute header fields depending on boolean flags
- * @param p_request template of the message to be sent
- */
- function f_SendBYE(
- template(value) BYE_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send CANCEL message
- * @param p_request template of the message to be sent
- */
- function f_SendCANCEL(
- template(value) CANCEL_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send INFO message
- * @param p_request template of the message to be sent
- */
- function f_SendINFO(
- template(value) INFO_Request p_request
- ) runs on SipComponent {
- f_setHeadersGeneral(vc_cSeq, "INFO"); // cseq, contact, branch, via
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send INVITE message
- * @param p_request template of the message to be sent
- */
- function f_SendINVITE(
- template(value) INVITE_Request p_request
- ) runs on SipComponent {
- vc_requestFor407 := valueof(p_request);
- SIPP.send(p_request) to vc_sent_label;
- vc_request := vc_requestFor407;
- if (PX_SIP_INVITE_AUTHENTICATION_ENABLED) {
- a_altstep_401or407();
- }
- }
-
- /**
- * @desc send PRACK message
- * @param p_request template of the message to be sent
- */
- function f_SendPRACK(
- ) runs on SipComponent {
- var integer responseNum := 1;
- var PRACK_Request prackReq;
- if (isvalue(vc_response.msgHeader.rSeq) and
- isvalue(vc_response.msgHeader.rSeq.responseNum)){
- responseNum := vc_response.msgHeader.rSeq.responseNum;
- }
- vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method));
- f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via
- prackReq := valueof(m_PRACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_rAck));
- if (isvalue(vc_response.msgHeader.recordRoute)){
- prackReq.msgHeader.route := valueof(f_route());
- }
- SIPP.send(prackReq) to vc_sent_label;
- }
-
- /**
- * @desc send PUBLISH message
- * @param p_request template of the message to be sent
- */
- function f_SendPUBLISH(
- template(value) PUBLISH_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send REGISTER message
- * @param p_request template of the message to be sent
- */
- function f_SendREGISTER(
- template(value) REGISTER_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send SUBSCRIBE message
- * @param p_request template of the message to be sent
- */
- function f_SendSUBSCRIBE(
- template(value) SUBSCRIBE_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send UPDATE message
- * @param p_request template of the message to be sent
- */
- function f_SendUPDATE(
- template(value) UPDATE_Request p_request
- ) runs on SipComponent {
- f_setHeadersGeneral(vc_cSeq, "UPDATE"); // cseq, contact, branch, via
- p_request.msgHeader.cSeq := vc_cSeq;
- p_request.msgHeader.contact := vc_contact;
- p_request.msgHeader.via := vc_via;
- vc_requestFor407 := valueof(p_request);
- SIPP.send(p_request) to vc_sent_label;
- if (PX_SIP_INVITE_AUTHENTICATION_ENABLED) {
- a_altstep_401or407();
- }
- }
-
- /**
- * @desc function send MESSAGE message
- * @param p_request template of the message to be sent
- */
- function f_SendMESSAGE(
- template(value) MESSAGE_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc function send NOTIFY message
- * @param p_request template of the notify to be sent
- */
- function f_SendNOTIFY(
- template(value) NOTIFY_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send REFER message
- * @param p_request template of the message to be sent
- */
- function f_SendREFER(
- template(value) REFER_Request p_request
- ) runs on SipComponent {
- SIPP.send(p_request) to vc_sent_label;
- }
-
- /**
- * @desc send 200 OK
- */
- function f_send200OK(
- ) runs on SipComponent {
- f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
- }
-
- /**
- * @desc send response
- * @param p_request template of the message to be sent
- */
- function f_sendResponse(
- template(value) Response p_response
- ) runs on SipComponent {
- p_response.msgHeader.route := f_route(); // update the route header field depending on vc_boo_route
- p_response.msgHeader.recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route
- SIPP.send(p_response) to vc_sent_label;
- }
-
-
-
- } // end SendMessage
-
- group GlobalSteps {
- /**
- * @desc component initialization
- * @param p_cSeq_s cSeq value to be assigned to the component variable
- */
- function f_init_component(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- // Variables
- vc_cSeq := p_cSeq_s;
-
- // Defaults
- vc_def_catchSyncStop := activate(a_Sip_catchSyncStop());
- vc_default := activate(a_clearRegistration());
- }
-
- /**
- * @desc component termination
- */
- function f_terminate_component(
- ) runs on SipComponent {
- log("*** " &__SCOPE__& ": INFO: component terminated - forced! ***");
- deactivate;
- stop;
- }
-
- /**
- * @desc component termination
- */
- function f_componentStop(
- ) runs on SipComponent {
- syncPort.send(m_syncClientStop);
- SIPP.clear;
- stop;
- }
-
- /**
- * @desc function waits for particular time that allows the SUT to return to idle state
- */
- function f_awaitSUTidle(
- ) runs on SipComponent {
- vc_ignore4xx := true; // allow 4xx in default
- tc_noAct.start;
- alt {
- [] tc_noAct.timeout {
- }
- }
- }
-
- /**
- * @desc function waits for particular time before next expected message
- */
- function f_wait(
- float p_time
- ) runs on SipComponent {
- tc_noAct.start(p_time);
- alt {
- [] tc_noAct.timeout {
- }
- }
- }
-
- /**
- * @desc function cause termination of a PTC
- * @param p_syncPoint dummy parameter (copied from the common lib)
- */
- function f_check2Null(
- in charstring p_syncPoint
- ) runs on SipComponent {
- // != pass does not work, because in case of "none" execution shall continue
- if (getverdict == inconc or getverdict == fail) {
- log("*** f_check2Null: INFO: Verdict evaluated to fail or inconc. Stopping test execution now ***");
- f_selfOrClientSyncAndVerdict(p_syncPoint, e_error);
- } // end if
- }
-
- /*
- *
- * @desc original copied from older LibCommon_VerdictControl
- */
- function f_getVerdict(
- ) return FncRetCode {
- var FncRetCode v_ret := e_error;
- if (getverdict == pass or getverdict == none) {
- v_ret := e_success;
- }
- return v_ret;
- }
-
-
-
- } // end group GlobalSteps
-
- group Registration {
-
- /**
- * @desc registration and authentication with MD5
- * @param p_cSeq_s cseq parameter
- * @param p_register register template
- * @param p_auth flag indicating if authentication is needed
- * @param p_emergency Set to true in case of emergency call
- */
- function f_Registration(
- inout CSeq p_cSeq_s,
- out template(value) REGISTER_Request p_register,
- in boolean p_auth,
- in boolean p_emergency := false
- ) runs on SipComponent {
- if (PX_SIP_REGISTRATION) {
- f_setHeaders_REGISTER(p_cSeq_s, p_emergency);
- p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization);
- f_SendREGISTER(p_register); // LibSip
- // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
- if (p_auth) {
- // receiving 401 Unauthorized response.
- // and Re-send REGISTER request with Authorization header
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // set headers via, cseq and authorization
- f_setHeaders_2ndREGISTER(p_cSeq_s);
- p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization);
- // Re-send protected REGISTER
- f_SendREGISTER(p_register); // LibSip
- // awaiting 200 OK REGISTER
- f_awaitingOkResponse(p_cSeq_s);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- }
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- log("*** " &__SCOPE__& ": INFO: Authorization was not requested as expected ***");
- }
- }
- }
- else {
- f_awaitingOkResponse(p_cSeq_s);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- }
- }
- } // end function f_Registration
-
- /**
- * @desc registration and authentication with MD5
- * @param p_cSeq_s cseq parameter
- * @param p_register register template
- * @param p_auth flag indicating if authentication is needed
- */
- function f_Registration_withTemplate(
- inout CSeq p_cSeq_s,
- inout template(value) REGISTER_Request p_register,
- in boolean p_auth
- ) runs on SipComponent {
- if (PX_SIP_REGISTRATION) {
- if(not isbound(p_register)){
- f_setHeaders_REGISTER(p_cSeq_s);
- p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization);
- }
- f_SendREGISTER(p_register); // LibSip
- // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
- if (p_auth) {
- // receiving 401 Unauthorized response.
- // and Re-send REGISTER request with Authorization header
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // set headers via, cseq and authorization
- f_setHeaders_2ndREGISTER(p_cSeq_s);
- // p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact,
- // vc_authorization);
- // Re-send protected REGISTER
- p_register.requestLine.requestUri := vc_requestUri;
- p_register.msgHeader.cSeq := vc_cSeq;
- p_register.msgHeader.via := vc_via_REG;
- p_register.msgHeader.authorization := vc_authorization;
- f_SendREGISTER(p_register); // LibSip
- // awaiting 200 OK REGISTER
- f_awaitingOkResponse(p_cSeq_s);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- }
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- log("*** " &__SCOPE__& ": INFO: Authorization was not requested as expected ***");
- }
- }
- }
- else {
- f_awaitingOkResponse(p_cSeq_s);
- f_getServiceRouteMapIntoRouteInRegistration(vc_response);
- }
- }
- } // end function f_Registration_withTemplate
-
-
- /**
- * @desc remove registration
- * @param p_cSeq_s cseq parameter
- */
- function f_RemoveRegistration(
- inout CSeq p_cSeq
- ) runs on SipComponent {
- var template(value) REGISTER_Request v_request;
- var boolean v_receivedNotify := false;
-
- //
- if (vc_DeregDone) {
- f_componentStop();
- }
- else {
- vc_DeregDone := true;
- }
-
- if (PX_SIP_REGISTRATION) {
- f_setHeaders_deREGISTER(p_cSeq);
- v_request := m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization, "0");
-
- f_SendREGISTER(v_request);
- if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) {
- // receiving 401 Unauthorized response.
- // and Re-send REGISTER request with Authorization header
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // set headers via, cseq and authorization
- f_setHeaders_2ndREGISTER(p_cSeq);
- v_request := m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization, "0");
- // v_request.msgHeader.route := f_route();
- // Re-send protected REGISTER
- f_SendREGISTER(v_request); // LibSip
- // awaiting 200 OK REGISTER
- f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
- }
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) -> value vc_response {
- tc_resp.stop;
- f_setHeadersOnReceiptOfResponse(vc_response);
- // log ("Authorization was not requested as expected");
- }
- [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
- }
- }
- }
- else {
- tc_resp.start;
- alt {
- [] a_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) {
- }
- [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
- }
- }
- }
-
- // await NOTIFY and send reply 200 OK
- if (vc_subscribed and v_receivedNotify == false) {
- f_awaitingNOTIFY_sendReply_postamble(mw_NOTIFY_Request_Base(vc_callIdReg));
- }
- }
- } // end f_RemoveRegistration
-
- /**
- * @desc remove registration without authorization
- * @param p_cSeq_s cseq parameter
- */
- function f_RemoveRegistration_wo_authorization(
- inout CSeq p_cSeq
- ) runs on SipComponent {
- if (PX_SIP_REGISTRATION) {
- f_setHeaders_deREGISTER(p_cSeq);
- f_SendREGISTER(m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"));
- f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq));
- }
- } // end f_RemoveRegistration_wo_authorization
-
-
-
- } // end group Registration
-
- group Subscription {
-
- /**
- * @desc UE send subscrbe, await on 200 OK, await notify and send 200 OK
- * @param p_cSeq_s cseq parameter
- * @param p_subscribe subscribe template
- */
- function f_Subscription(
- inout CSeq p_cSeq_s,
- template(value) SUBSCRIBE_Request p_subscribe
- ) runs on SipComponent {
- // send SUBSCRIBE
- f_SendSUBSCRIBE(p_subscribe);
- // awaiting 200 OK SUBSCRIBE
- // await NOTIFY and send reply 200 OK
- f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, mw_NOTIFY_Request_Base(vc_callId));
- } // end function f_Subscription
-
- /**
- * @desc UE send subscrbe, await on 200 OK, await notify and send 200 OK
- * @param p_cSeq_s cseq parameter
- * @param p_subscribe subscribe template
- * @param p_notify notify template
- */
- function f_SubscriptionWithNotification(
- inout CSeq p_cSeq_s,
- template(value) SUBSCRIBE_Request p_subscribe,
- template(present) NOTIFY_Request p_notify := ?
- ) runs on SipComponent {
- f_setHeaders_SUBSCRIBE(p_cSeq_s);
- // send SUBSCRIBE
- f_SendSUBSCRIBE(p_subscribe);
- // awaiting 200 OK SUBSCRIBE
- // await NOTIFY and send reply 200 OK
- f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, p_notify);
- } // end function f_SubscriptionWithNotification
-
- /**
- * @desc UE await subscrbe, send on 200 OK; possibility to handle also other SUBSCRIBE methods where event is different than reg
- * @param p_cSeq_s cseq parameter
- * @param p_subscribe subscribe template
- */
- function f_awaitingSubscription(
- template(present) SUBSCRIBE_Request p_subscribe := ?
- ) runs on SipComponent {
- var SUBSCRIBE_Request v_request;
-
- tc_wait.start(2.0); // awaiting of all SUBSCRIBES
- alt {
- [] SIPP.receive(p_subscribe) -> value v_request sender vc_sent_label {
- f_setHeadersOnReceiptOfSUBSCRIBE(v_request);
- f_send200OK();
- repeat;
- }
- [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label {
- f_setHeadersOnReceiptOfSUBSCRIBE(v_request);
- f_send200OK();
- repeat;
- }
- [] tc_wait.timeout {
- setverdict(pass);
- }
- }
- } // end function f_awaitingSubscription
-
-
-
- } // end group Subscription
-
- group Preambles {
-
- /**
- * @desc Set variables and default initialization for user profile
- * @param p_userprofile user profile of call
- * @param p_cSeq_s cseq parameter
- */
- function f_SIP_preamble_woREG(
- inout CSeq p_cSeq_s
- ) runs on SipComponent {
- // varables and altsteps
- f_init_component(p_cSeq_s);
-
- // Preamble
- //NOTE STF471: removed f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable
- vc_sdp_local := valueof(m_SDP_bandwidth(m_media_dynPT(PX_SIP_SDP_DYN, PX_SIP_SDP_ENCODING, PX_SIP_SDP_CLOCKRATE, omit), vc_userprofile));
- }
-
- /**
- * @desc Set variables and default initialization for user profile and handle registration and authentication with MD5
- * @param p_userprofile user profile of call
- * @param p_cSeq_s cseq parameter
- * @param p_register register template
- */
- function f_SIP_preamble_withREG(
- inout CSeq p_cSeq_s,
- template(value) REGISTER_Request p_register
- ) runs on SipComponent {
- // preamble
- f_SIP_preamble_woREG(p_cSeq_s);
-
- // Registration, Awaiting
- f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED);
- }
-
-
-
- } // end group Preambles
-
- group Postambles {
-
- /**
- * @desc function send BYE and awaits reponse
- * @param p_CallId parameter for outgoing BYE
- * @param p_cSeq parameter for outgoing BYE
- * @param p_from parameter for outgoing BYE
- * @param p_to parameter for outgoing BYE
- * @param p_reqHostPort parameter for outgoing BYE
- * @param p_byeCause parameter for Release cause to be used
- * in BYE and in Failure messages, former PX_SIP_BYE_CAUSE
- */
- function f_terminateCall(
- SipUrl p_requestUri,
- CallId p_CallId,
- inout CSeq p_cSeq,
- From p_from,
- template(value) To p_to,
- integer p_byeCause
- ) runs on SipComponent {
- // Sending of a BYE request to release the call and expect a final response
- f_SendBYE(m_BYE_Request_cause(p_requestUri, p_CallId, p_cSeq, p_from, p_to, vc_via, p_byeCause));
-
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) {
- repeat;
- }
- [] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) {
- tc_resp.stop;
- }
- }
- } // end function f_terminateCall
-
- function f_cancelCall(
- template(value) CANCEL_Request p_request
- ) runs on SipComponent {
- // This function is called to bring back the IUT in idle condition
- // in case of errors or unexpected behaviour.
- // Sending of a CANCEL request with the same Cseq
- f_setHeadersCANCEL(vc_cSeq);
- f_SendCANCEL(p_request);
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)) {
- tc_resp.stop;
- }
- }
- }
-
- function f_cancelCall_await487(
- template(value) CANCEL_Request p_request
- ) runs on SipComponent {
- // This function is called to bring back the IUT in idle condition
- // in case of errors or unexpected behaviour.
- // Sending of a CANCEL request with the same Cseq
- f_cancelCall(p_request);
- // set method on INVITE
- vc_cSeq.method := "INVITE";
-
- // await on 487 response and send ACK
- f_awaitingResponse(mw_Response_Base(c_statusLine487, vc_callId, vc_cSeq));
- f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
- }
-
- function f_awaitCancelCall_send487(
- template(present) CANCEL_Request p_request := ?
- ) runs on SipComponent {
- f_awaitingCANCEL(p_request);
- f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
-
- // set method on INVITE
- vc_cSeq.method := "INVITE";
-
- // send 487 response and await ACK
- f_sendResponse(m_Response_Base(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
- // await ACK
- f_awaitingACK(mw_ACK_Request_Base(vc_callId));
- }
-
- altstep a_receiveCANCELorNothing(
- in template(present) CANCEL_Request p_CANCEL := ?
- ) runs on SipComponent {
- var CANCEL_Request v_MSG;
- [] SIPP.receive(p_CANCEL) -> value v_MSG sender vc_sent_label {
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the CANCEL
- f_send200OK();
- }
- }
-
- altstep a_awaitNotify(
- in template(present) NOTIFY_Request p_MSG := ?,
- inout boolean p_receivedNotify
- ) runs on SipComponent {
- var NOTIFY_Request v_MSG;
- [vc_subscribed] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label {
- p_receivedNotify := true;
- f_getRouteMapIntoRecordRoute(v_MSG);
- f_setHeadersOnReceiptOfRequest(v_MSG);
- // Answer to the NOTIFY
- f_send200OK();
- repeat;
- }
- }
-
-
-
- } // end group Postambles
-
- group SipChecks {
-
-
- /**
- * @desc check the presence of conversation at SIP side
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_Conversation(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if conversation at SIP port";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_conversation:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_conversation:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_conversation:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_uPlane, f_getVerdict()); // Note: implemented in test bodies
- return;
- } // end of f_check_Conversation
-
- /**
- * @desc check the presence of conversation at SIP side
- * @param p_checkRinging boolean to perform check if ringing check is implemented.
- * former PX_SIP_CHECK_RINGING
- */
- function f_check_Ringing(
- boolean p_checkRinging := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if ringing at SIP port";
-
- if (p_checkRinging) {
- opPort
- .call(
- s_SIP_ringing:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_ringing:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_ringing:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_Ringing, f_getVerdict());
- return;
- } // end of f_check_Ringing
-
- /**
- * @desc check the announcement at SIP side (UE A)
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_AnnouncementUE_A(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if announcement at UE A";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_announcementA:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_announcementA:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_announcementA:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_annoucA, f_getVerdict());
- return;
- } // end of f_check_AnnouncementUE_A
-
- /**
- * @desc check the announcement at SIP side (UE B)
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_AnnouncementUE_B(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if announcement at UE B";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_announcementB:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_announcementB:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_announcementB:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_annoucB, f_getVerdict());
- return;
- } // end of f_check_AnnouncementUE_B
-
- /**
- * @desc check the announcement at SIP side
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_Announcement(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if announcement at SIP side";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_announcement:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_announcement:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_announcement:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_annouc, f_getVerdict());
- return;
- } // end of f_check_Announcement
-
- /**
- * @desc check the Voice message at SIP side
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_VoiceMessage(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if voice message at SIP side";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_voiceMessage:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_voiceMessage:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_voiceMessage:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_voicem, f_getVerdict());
- return;
- } // end of f_check_Announcement
-
- /**
- * @desc check the stop of media stream
- * @param p_checkConversation boolean to perform check if conversation check is implemented.
- * former PX_SIP_CHECK_CONVERSATION
- */
- function f_check_MediaStopped(
- boolean p_checkConversation := false
- ) runs on SipComponent {
- var charstring v_question := "confirm if media stream stopped";
-
- if (p_checkConversation) {
- opPort
- .call(
- s_SIP_mediastopped:
- {
- v_question,
- -
- }
- ) {
- [] opPort
- .getreply(
- s_SIP_mediastopped:
- {
- -,
- true
- }
- ) {
- }
- [] opPort
- .getreply(
- s_SIP_mediastopped:
- {
- -,
- false
- }
- ) {
- all timer.stop;
- setverdict(fail);
- syncPort.send(m_syncClientStop);
- stop;
- }
- };
- }
-
- f_selfOrClientSyncAndVerdict(c_uPlaneStop, f_getVerdict());
- return;
- } // end of f_check_MediaStopped
-
- }
-
- group DefaultsTestStep {
-
-
- /**
- * @desc This default handles receiving of the sync server STOP message and calls the RT HUT postamble. (copy from common lib)
- */
- altstep a_Sip_catchSyncStop(
- ) runs on SipComponent {
- [] syncPort.receive(m_syncServerStop) {
- tc_sync.stop;
- log("*** a_Sip_catchSyncStop: INFO: Test component received STOP signal from MTC - going to IDLE state *** ");
- syncPort.send(m_syncClientStop);
- // in case if deregistration was not done
- // f_RemoveRegistration(vc_cSeq);
- f_terminate_component();
- log("*** a_Sip_catchSyncStop: INFO: TEST COMPONENT NOW STOPPING ITSELF! *** ");
- setverdict(inconc);
- stop;
- }
- }
-
-
- /**
- * @desc main default altstep to handle unexpected messages and timeout
- * @verdict fail for all unexpected branches
- */
- altstep a_clearRegistration(
- ) runs on SipComponent {
- var Response v_response;
- var Request v_request;
- var INFO_Request v_info_request;
- var NOTIFY_Request v_notify_request;
- var SUBSCRIBE_Request v_subscribe_request;
- var BYE_Request v_bye_request;
- var CANCEL_Request v_cancel_request;
- var REGISTER_Request v_register_request;
- var CSeq v_cSeq;
- [] any timer.timeout {
- setverdict(fail);
- all timer.stop;
- // f_SendCANCEL(m_CANCEL_Request(vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_reqHostPort, vc_via )); // difference between registration
- // state or transaction state
- vc_callId := vc_callIdReg;
- f_RemoveRegistration(vc_cSeq);
- }
- // allow repeated INVITEs
- [vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) {
- repeat;
- }
- // allow repeated BYEs after ack of the first BYE
- [vc_ignore_bye] SIPP.receive(mw_BYE_Request_Base(?)) {
- repeat;
- }
- [] SIPP.receive(mw_ACK_Request_Base(?)) {
- repeat;
- }
- // allow 100 replies
- [] SIPP.receive(mw_Response_Base(c_statusLine100, ?, ?)) {
- repeat;
- }
- // ignore 181 if flag is set (following TS 183004 4.5.2.1)
- [vc_ignore181] SIPP.receive(mw_Response_Base(c_statusLine181, vc_callId, vc_cSeq)) -> value v_response sender vc_sent_label {
- v_cSeq := valueof(v_response.msgHeader.cSeq);
- f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory
- repeat;
- }
- // according to SIP chap.8.1.3.2
- [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, vc_cSeq)) {
- repeat;
- }
- // ignore 484 if flag is set
- [vc_ignore484] SIPP.receive(mw_Response_Base(c_statusLine484, vc_callId, vc_cSeq)) {
- repeat;
- }
- [vc_ignore4xx] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
- v_cSeq := valueof(v_response.msgHeader.cSeq);
- f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory
- f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
- repeat;
- }
- [vc_ignore200OKinv] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, ?)) {
- repeat;
- }
- [] SIPP.receive(mw_INFO_Request_Base(vc_callId)) -> value v_info_request sender vc_sent_label {
- f_setHeadersOnReceiptOfRequest(v_info_request);
- f_send200OK();
- repeat;
- }
- // awaiting of Notify
- [] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId)) -> value v_notify_request sender vc_sent_label {
- f_setHeadersOnReceiptOfRequest(v_notify_request);
- f_send200OK();
- repeat;
- }
- // awaiting of subscribe from UE
- [vc_ignore_subscribe] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_subscribe_request sender vc_sent_label {
- f_setHeadersOnReceiptOfSUBSCRIBE(v_subscribe_request);
- f_send200OK();
- repeat;
- }
- // awaiting of subscribe on proxy
- [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_subscribe_request sender vc_sent_label {
- f_setHeadersOnReceiptOfRequest(v_subscribe_request);
- f_sendResponse(m_Response_Contact(c_statusLine200, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact));
- // f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via
- // f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact));
- f_SendNOTIFY(m_NOTIFY_Request_contact(v_subscribe_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact));
- f_awaitingOkResponse(vc_cSeq);
- repeat;
- }
- // unexpected BYE is acknowledged to avoid retransmissions
- [] SIPP.receive(mw_BYE_Request_Base(?)) -> value v_bye_request sender vc_sent_label {
- setverdict(fail);
- f_setHeadersOnReceiptOfRequest(v_bye_request);
- f_send200OK();
- f_RemoveRegistration(vc_cSeq);
- }
- // unexpected CANCEL is acknowledged to avoid retransmissions
- [] SIPP.receive(mw_CANCEL_Request_Base(?)) -> value v_cancel_request sender vc_sent_label {
- setverdict(fail);
- f_setHeadersOnReceiptOfRequest(v_cancel_request);
- // Answer to the CANCEL
- f_send200OK();
- f_RemoveRegistration(vc_cSeq);
- }
- // catch 4xx response
- [] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
- setverdict(fail);
- if (v_response.msgHeader.cSeq.method == "INVITE") {
- v_cSeq := valueof(v_response.msgHeader.cSeq);
- f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory
- LibSip_Steps.f_setHeadersACK();
- f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
- }
- f_RemoveRegistration(vc_cSeq);
- }
- // catch 5xx response
- [] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?)) -> value v_response sender vc_sent_label {
- setverdict(fail);
- if (v_response.msgHeader.cSeq.method == "INVITE") {
- v_cSeq := valueof(v_response.msgHeader.cSeq);
- f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory
- LibSip_Steps.f_setHeadersACK();
- f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route));
- }
- f_RemoveRegistration(vc_cSeq);
- }
- // catch invalid REGISTER
- [] SIPP.receive(mw_REGISTER_Request_Base) -> value v_register_request sender vc_sent_label {
- setverdict(fail);
- f_componentStop();
- }
- // any
- [] SIPP.receive {
- setverdict(fail);
- all timer.stop;
- // f_setHeadersCANCEL(vc_cSeq);
- // f_SendCANCEL(m_CANCEL_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_via )); // difference between
- // registration state or transaction state
- f_RemoveRegistration(vc_cSeq);
- }
- }
-
- /**
- * @desc altstep handle authentication for INVITE message
- */
- altstep a_altstep_401or407(
- ) runs on SipComponent {
- var CommaParam_List v_challenge;
- var Credentials v_Credentials;
- var Response v_Response;
- var Request v_Request := vc_requestFor407;
- [] any port.check(receive) {
-
- tc_resp.start;
- alt {
- [] SIPP.receive(mw_Response_Base((c_statusLine401, c_statusLine407), vc_callId, vc_cSeq)) -> value v_Response {
- tc_resp.stop;
- // get tag from To header if available
- vc_to := v_Response.msgHeader.toField;
- if (vc_cSeq.method == "INVITE") {
- // send ACK
- f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
- }
- // resent the INVITE message with Proxyauthorization header include
- // Extract challenge and calculate credentials for a response.
- if (
- ischosen(
- v_Response.msgHeader.proxyAuthenticate.challenge
- .otherChallenge // instead of digestCln (changed by axr to comply to alcatel)
- )
- ) {
- v_challenge := v_Response.msgHeader.proxyAuthenticate.challenge.otherChallenge.authParams;
- v_Credentials := f_calculatecCredentials(vc_userprofile, vc_requestFor407.msgHeader.cSeq.method, v_challenge);
- }
- else {
- log("*** " &__SCOPE__& ": INFO: No scheme in Proxy Authenticate header!!! ***");
- setverdict(inconc);
- stop;
- }
-
- vc_branch := c_branchCookie & f_getRndTag();
- vc_via := {
- fieldName := VIA_E,
- viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))}
- };
-
- v_Request.msgHeader.via := vc_via;
- // Increment CSeq sequence number of and add the credentials
- // to the original saved INVITE message.
- vc_cSeq.method := vc_requestFor407.msgHeader.cSeq.method;
- vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1;
- v_Request.msgHeader.cSeq.seqNumber := vc_cSeq.seqNumber;
- v_Request.msgHeader.proxyAuthorization.fieldName := PROXY_AUTHORIZATION_E;
- v_Request.msgHeader.proxyAuthorization.credentials := {v_Credentials};
-
- // Re-send the saved INVITE with Authorization header
- // included.
- SIPP.send(v_Request) to vc_sent_label;
- }
- }
- }
- }
-
- } // end of group DefaultsTestStep
-} // end module LibSip_Steps
/tags/v3.0.3/trunk/ttcn/LibSip_Steps.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_Templates.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_Templates.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_Templates.ttcn (nonexistent)
@@ -1,4610 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id$
- * @desc This module defines SIP Templates for message, header, and
- * structured types. <br>
- * Note that any changes made to the definitions in this module
- * may be overwritten by future releases of this library
- * End users are encouraged to contact the distributers of this
- * module regarding their modifications or additions.
- * This module is part of LibSipV3.
- * @remark Any additions to the templates shall follow the design rules and always modify base templates only; Existing templates shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org
- */
-module LibSip_Templates {
- // LibSip
- import from LibSip_SIPTypesAndValues all;
- import from LibSip_SDPTypes all;
- import from LibSip_Interface all;
- import from LibSip_PIXITS all;
- import from LibSip_XMLTypes all;
- import from LibSip_SimpleMsgSummaryTypes all;
- import from LibSip_MessageBodyTypes all;
- import from LibSip_Common all;
-
- import from NoTargetNamespace language "XSD" all
- with {
- extension "File:../xsd/Ims3gpp.xsd";
- }
-
- import from urn_ietf_params_xml_ns_conference_info language "XSD" all
- with {
- extension "File:../xsd/CONF.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all
- with {
- extension "File:../xsd/PSTN.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all
- with {
- extension "File:../xsd/SupplementaryServices.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all
- with {
- extension "File:../xsd/MCID.xsd";
- }
-
- import from urn_ietf_params_xml_ns_resource_lists language "XSD" all
- with {
- extension "File:../xsd/ResourceList.xsd";
- }
-
- import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all
- with {
- extension "File:../xsd/CDIVN.xsd";
- }
-
- import from urn_3gpp_ns_cw_1_0 language "XSD" all
- with {
- extension "File:../xsd/cw.xsd";
- }
-
- group SubFields {
-
- template(value) Addr_Union m_AddrUnion_NameAddr(template(value) NameAddr p_nameAddr) := {nameAddr := p_nameAddr}
-
- template(value) Addr_Union m_AddrUnion_DisplayAndSipUrl(
- template(value) DisplayName p_displayName,
- template(value) SipUrl p_addrSpec
- ) := {
- nameAddr := m_CallingAddr(p_displayName, p_addrSpec)
- }
-
- template(value) NameAddr m_NameAddr(
- template(omit) DisplayName p_displayName := omit,
- template(value) SipUrl p_addrSpec
- ) := {
- displayName := p_displayName,
- addrSpec := p_addrSpec
- }
-
- template(value) NameAddr m_CallingAddr(
- template(value) DisplayName p_displayName,
- template(value) SipUrl p_addrSpec
- ) := m_NameAddr(p_displayName, p_addrSpec);
-
- template(present) NameAddr mw_NameAddr(
- template DisplayName p_displayName,
- template(present) SipUrl p_addrSpec := ?
- ) := {
- displayName := p_displayName,
- addrSpec := p_addrSpec
- }
-
- template(present) CommaParam_List mw_digestResponse(
- template(present) GenericParam p_genericParam := ?
- ) := superset(p_genericParam);
-
- //* c_Integrity_protected_yes
- /**
- * @desc send template for parameter list with CPC set to a specific value
- * @param p_ISUP_CPC_value CPC parameter value
- * former PX_SIP_ISUP_CPC_VALUE
- */
- template(value) SemicolonParam_List m_cpc(
- template(value) charstring p_ISUP_CPC_value := "prison"
- ) := {
- {
- "cpc",
- {tokenOrHost := p_ISUP_CPC_value}
- }
- }
-
- template(value) SemicolonParam_List m_ReasonParams(
- template(omit) GenValue p_cause := omit,
- template(value) GenValue p_text
- ) := {
- m_Cause(p_cause), m_Text(p_text)
- }
-
- template(present) SemicolonParam_List mw_ReasonParams(
- template GenValue p_cause,
- template GenValue p_text
- ) := {
- mw_Cause_base(p_cause), mw_Text(p_text)
- }
-
- template(value) ReasonValue m_ReasonValue_Base := {
- token := "",
- reasonParams := omit
- }
-
- template(present) ReasonValue mw_ReasonValue_Base := {
- token := ?,
- reasonParams := *
- }
-
- template(value) ReasonValue m_ReasonValue_param(
- template(value) GenValue p_cause,
- template(value) GenValue p_text
- ) modifies m_ReasonValue_Base := {
- reasonParams := m_ReasonParams(p_cause, p_text)
- }
-
- template(present) ReasonValue mw_ReasonValue_param(
- template GenValue p_cause,
- template GenValue p_text
- ) modifies mw_ReasonValue_Base := {
- reasonParams := mw_ReasonParams(p_cause, p_text)
- }
-
- template(value) ReasonValue m_ReasonValue(
- template(value) GenValue p_cause,
- template(value) GenValue p_text
- ) modifies m_ReasonValue_param := {
- token := "Q.850"
- }
-
- template(present) ReasonValue mw_ReasonValue(
- template GenValue p_cause,
- template GenValue p_text
- ) modifies mw_ReasonValue_param := {
- token := "Q.850"
- }
-
- template(value) ReasonValue m_ReasonValueSIP(
- template(value) GenValue p_cause,
- template(value) GenValue p_text
- ) modifies m_ReasonValue_param := {
- token := "SIP"
- }
-
- template(present) ReasonValue mw_ReasonValueSIP(
- template GenValue p_cause,
- template GenValue p_text
- ) modifies mw_ReasonValue_param := {
- token := "SIP"
- }
-
- template(present) RouteBody mw_routeBody(
- template(present) SipUrl p_sipurl := ?
- ) := {
- nameAddr := mw_NameAddr(*, p_sipurl),
- rrParam := *
- }
-
- template(value) SentProtocol m_SentProtocol(
- template(value) charstring p_protocol
- ) := {
- protocolName := c_sipName,
- protocolVersion := c_sipVersion,
- transport := p_protocol
- }
-
- template(value) SipUrl m_BasicSipUrl := {
- scheme := (c_sipScheme),
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := "", //* charstring
- password :=
- omit //* optional charstring
- },
- hostPort := {
- host := omit, //* hostname, IPv4 or IPv6 as a charstring
- portField :=
- omit //* p_userprofile.currPort - optional integer
- }
- }
- },
- urlParameters := omit,
- headers := omit
- }
-
- template(value) SipUrl m_SipUrl_currDomain_Base(
- template(value) SipUserProfile p_userprofile
- ) modifies m_BasicSipUrl := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := p_userprofile.publUsername
- }
- }
- }
- }
-
- template(value) SipUrl m_SipUrl_currDomain(
- template(value) SipUserProfile p_userprofile
- ) modifies m_SipUrl_currDomain_Base := {
- components := {
- sip := {
- hostPort := {
- host :=
- p_userprofile
- .homeDomain //* hostname, IPv4 or IPv6 as a charstring
- }
- }
- }
- }
-
- template(value) SipUrl m_SipUrl_contactIpaddr(
- template(value) SipUserProfile p_userprofile
- ) modifies m_SipUrl_currDomain_Base := {
- components := {
- sip := {
- hostPort := {
- host := p_userprofile.contactIpaddr, //* hostname, IPv4 or IPv6 as a charstring
- portField :=
- p_userprofile
- .contactPort //* optional integer
- }
- }
- }
- }
- /**
- * @desc send template with SIP userinfo
- * @param p_userprofile SIP user profile values
- * @param p_ISUP_CPC_value CPC parameter value
- * former PX_SIP_ISUP_CPC_VALUE
- */
- template(value) SipUrl m_SipUrl_contactIpaddrAndCpc(
- template(value) SipUserProfile p_userprofile,
- template(value) charstring p_ISUP_CPC_value := "prison"
- ) modifies m_SipUrl_contactIpaddr := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber :=
- p_userprofile.publUsername & "; cpc=" &
- p_ISUP_CPC_value
- }
- }
- }
- }
-
- template(value) SipUrl m_SipUrl_currIpaddr(
- template(value) SipUserProfile p_userprofile
- ) modifies m_SipUrl_currDomain_Base := {
- components := {
- sip := {
- hostPort := {
- host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring
- portField :=
- p_userprofile
- .currPort //* optional integer
- }
- }
- }
- }
-
- template(value) SipUrl m_SipUrl_Anonymous modifies m_BasicSipUrl := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber :=
- "Anonymous" //* charstring
- },
- hostPort := {
- host :=
- "Anonymous.invalid" //* hostname, IPv4 or IPv6 as a charstring
- }
- }
- }
- }
-
- template(value) SipUrl m_SipUrl_NumberHostHeader(
- template(value) charstring p_number,
- template(value) charstring p_host,
- template(omit) AmpersandParam_List p_urlParameters := omit
- ) modifies m_BasicSipUrl := {
- components := {
- sip := {
- userInfo := {userOrTelephoneSubscriber := p_number},
- hostPort := {host := p_host}
- }
- },
- urlParameters := p_urlParameters
- }
-
- template(value) SipUrl m_SipUrl_NumberHostParam(
- template(value) charstring p_number,
- template(value) charstring p_host,
- template(omit) AmpersandParam_List p_urlParameters := omit
- ) modifies m_SipUrl_NumberHostHeader := {
- components := {sip := {hostPort := {portField := c_defaultSipPort}}}
- }
-
- template(value) SipUrl m_SipUrl_NumberHostParam_woPort(
- template(value) charstring p_number,
- template(value) charstring p_host,
- template(omit) AmpersandParam_List p_urlParameters := omit
- ) modifies m_SipUrl_NumberHostParam := {
- components := {sip := {hostPort := {portField := omit}}}
- }
-
- template(present) SipUrl m_BasicTelUrl := {
- scheme := (c_telScheme),
- components := {tel := {subscriber := ""}},
- urlParameters := omit,
- headers := omit
- }
-
- template(value) SipUrl m_TelUrl_publUser(
- template(value) SipUserProfile p_userprofile
- ) modifies m_BasicTelUrl := {
- components := {
- tel := {
- subscriber :=
- p_userprofile
- .publUsername //* charstring
- }
- }
- }
-
- template(present) SipUrl mw_TelUrl := {
- scheme := c_telScheme,
- components := {tel := {subscriber := ?}},
- urlParameters := *,
- headers := *
- }
-
- template(present) SipUrl mw_SipUrl := {
- scheme := c_sipScheme,
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := ?,
- password := *
- },
- hostPort := {
- host := *,
- portField := *
- }
- }
- },
- urlParameters := *,
- headers := *
- }
-
- template(present) SipUrl mw_TelSip_unavailableInvalidUri := (mw_TelSip_unavailableInvalidUri1, mw_TelSip_unavailableInvalidUri2);
-
- template(present) SipUrl mw_TelSip_unavailableInvalidUri1 modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := "unavailable"
- },
- hostPort := {
- host := "anonymous.invalid",
- portField := c_defaultSipPort
- }
- }
- }
- }
- template(present) SipUrl mw_TelSip_unavailableInvalidUri2 modifies mw_TelUrl := {
- components := {tel := {subscriber := "unavailable"}}
- }
-
- template(present) SipUrl mw_TelSip_unavailableUri(
- template(value) charstring p_host
- ) := (mw_TelSip_unavailableUri1, mw_TelSip_unavailableUri2(p_host));
-
- template(present) SipUrl mw_TelSip_unavailableUri1 modifies mw_TelUrl := {
- components := {tel := {subscriber := "unavailable"}}
- }
-
- template(present) SipUrl mw_TelSip_unavailableUri2(
- template(value) charstring p_host
- ) modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := "unavailable"
- },
- hostPort := {
- host := p_host,
- portField := c_defaultSipPort
- }
- }
- }
- }
-
- template(present) SipUrl mw_SipUrl_Number(
- template(present) charstring p_number := ?
- ) modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := {userOrTelephoneSubscriber := p_number},
- hostPort := ?
- }
- }
- }
-
- template(present) SipUrl mw_TelSipUrl_Number(
- template(present) charstring p_number := ?
- ) := (mw_SipUrl_Number(p_number), mw_TelSipUrl_Number2(p_number));
-
- template(present) SipUrl mw_TelSipUrl_Number1(
- template(present) charstring p_number := ?
- ) := mw_SipUrl_Number(p_number);
-
- template(present) SipUrl mw_TelSipUrl_Number2(
- template(present) charstring p_number := ?
- ) modifies mw_TelUrl := {
- components := {
- tel := {
- subscriber := p_number
- }
- }
- }
-
- template(present) SipUrl mw_SipUrl_Host(
- template charstring p_host
- ) modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := *,
- hostPort := {host := p_host}
- }
- }
- }
-
- template(present) SipUrl mw_SipUrl_User_Host(
- template(present) charstring p_user := ?,
- template charstring p_host
- ) modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := {userOrTelephoneSubscriber := p_user},
- hostPort := {
- host :=
- p_host //* hostname, IPv4 or IPv6 as a charstring
- }
- }
- },
- urlParameters := {m_UserPhone}
- }
-
- template(present) SipUrl mw_SipUrl_Anonymous modifies mw_SipUrl := {
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := pattern "[a,A][n,N][o,O][n,N][y,Y][m,M][o,O][u,U][s,s]" //* charstring
- },
- hostPort := {
- host :=
- pattern
- "[a,A]nonymous.invalid" //* hostname, IPv4 or IPv6 as a charstring
- }
- }
- }
- }
-
- template(present) SipUrl mw_SipUrl_urlParam(
- template SemicolonParam_List p_urlParameters
- ) modifies mw_SipUrl := {
- urlParameters := p_urlParameters
- }
-
- template(present) ContactAddress mw_ContactAddress := {
- addressField := ?,
- contactParams := *
- }
-
- template(present) HostPort mw_hostPort(
- template charstring p_host,
- template integer p_portField
- ) := {
- host := p_host,
- portField := p_portField
- }
-
- template(present) StatusLine mw_statusLine_any := {
- sipVersion := c_sipNameVersion,
- statusCode := ?,
- reasonPhrase := ?
- }
-
- template(present) StatusLine mw_statusLine(
- in template(present) integer p_statusCode := ?,
- in template(present) charstring p_reasonPhrase := ?
- ) modifies mw_statusLine_any := {
- statusCode := p_statusCode,
- reasonPhrase := p_reasonPhrase
- }
-
- template(present) StatusLine mw_statusLine1xx modifies mw_statusLine_any := {statusCode := (100 .. 199)}
-
- template(present) StatusLine mw_statusLine2xx modifies mw_statusLine_any := {statusCode := (200 .. 299)}
-
- template(present) StatusLine mw_statusLine3xx modifies mw_statusLine_any := {statusCode := (300 .. 399)}
-
- template(present) StatusLine mw_statusLine4xx modifies mw_statusLine_any := {statusCode := (400 .. 499)}
-
- template(present) StatusLine mw_statusLine5xx modifies mw_statusLine_any := {statusCode := (500 .. 599)}
-
- template(present) StatusLine mw_statusLine6xx modifies mw_statusLine_any := {statusCode := (600 .. 699)}
-
- template(present) StatusLine mw_statusLineFinal modifies mw_statusLine_any := {statusCode := (200 .. 699)}
-
- template(present) NameAddr mw_NameAddr_DispName_User_Host(
- template DisplayName p_dn,
- template(present) charstring p_user := ?,
- template charstring p_host
- ) := {
- displayName := p_dn,
- addrSpec := {
- scheme := c_sipScheme, //* contains "sip"
- components := {
- sip := {
- userInfo := {
- userOrTelephoneSubscriber := p_user,
- password := *
- },
- hostPort := {
- host := p_host, //* hostname, IPv4 or IPv6 as a charstring
- portField :=
- * //* optional integer
- }
- }
- },
- urlParameters := {m_UserPhone},
- headers := *
- }
- }
-
- template(present) Addr_Union mw_AddrUnion_Nameaddr(
- template DisplayName p_dn,
- template(present) charstring p_user := ?,
- template charstring p_host
- ) := {
- nameAddr := mw_NameAddr_DispName_User_Host(p_dn, p_user, p_host)
- }
-
- template(present) Addr_Union mw_AddrUnion_SipUrl(
- template(present) charstring p_user := ?,
- template charstring p_host
- ) := {
- addrSpecUnion := mw_SipUrl_User_Host(p_user, p_host)
- }
-
-
- } //* end group Subfields
-
- group HeaderFieldTemplates {
- template(value) LibSip_SIPTypesAndValues.Allow m_Allow(
- template(value) Method_List p_methods
- ) := {
- fieldName := ALLOW_E,
- methods := p_methods
- }
-
- template(present) LibSip_SIPTypesAndValues.Allow mw_Allow(
- template(value) charstring p_method
- ) := {
- fieldName := ALLOW_E,
- methods := superset(p_method)
- }
-
- template(value) GenericParam m_Cause(
- template(omit) GenValue p_cause := omit
- ) := {
- id := "cause",
- paramValue := p_cause
- }
-
- template(present) GenericParam mw_Cause_base(
- template GenValue p_cause
- ) := {
- id := "cause",
- paramValue := p_cause
- }
-
- template(present) GenericParam mw_Cause(
- template(value) charstring p_cause
- ) := {
- id := ?,
- paramValue := { tokenOrHost := pattern "*{p_cause}*" }
- }
-
- template(value) Authorization m_Authorization(
- template(value) Credentials p_credentials
- ) := {
- fieldName := AUTHORIZATION_E,
- body := {p_credentials}
- }
-
- template(value) Authorization m_Authorization_digest(
- template(value) CommaParam_List p_commaParam_List
- ) := {
- fieldName := AUTHORIZATION_E,
- body := {{digestResponse := p_commaParam_List}}
- }
-
- template(present) Authorization mw_Authorization_digest(
- template(present) CommaParam_List p_commaParam_List := ?
- ) := {
- fieldName := AUTHORIZATION_E,
- body := {{digestResponse := p_commaParam_List}}
- }
-
- template(value) Authorization m_add_Authorization_digest(
- template(value) Authorization p_auth,
- template(value) CommaParam_List p_commaParam_List
- ) := {
- fieldName := AUTHORIZATION_E,
- body := {{digestResponse := f_merge_CommaParam_List(p_auth.body[0].digestResponse, p_commaParam_List)}}
- }
-
- template(present) Authorization mw_Authorization_other := {
- fieldName := AUTHORIZATION_E,
- body := {{otherResponse := ?}}
- }
-
- template(value) Contact m_Contact(
- template(value) SipUrl p_sipUrl
- ) := {
- fieldName := CONTACT_E,
- contactBody := {
- contactAddresses := {
- {
- addressField := {addrSpecUnion := p_sipUrl},
- contactParams := omit
- }
- }
- } //* end contactBody
- } //* end m_Contact
-
- template(value) Contact m_Contact_profile(
- template(value) SipUserProfile p_userprofile
- ) := {
- fieldName := CONTACT_E,
- contactBody := {
- contactAddresses := {
- {
- addressField := {addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
- contactParams := omit
- }
- }
- } //* end
- //* contactBody
- } //* end m_Contact
-
-
- template(value) Contact m_Contact_profile_expires(
- template(value) SipUserProfile p_userprofile,
- template(value) GenValue p_expires
- ) := {
- fieldName := CONTACT_E,
- contactBody := {
- contactAddresses := {
- {
- addressField := {addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
- contactParams := {
- {
- "expires",
- p_expires
- }
- }
- }
- }
- } //* end contactBody
- } //* end m_Contact
-
- template(value) From m_From(
- template(value) NameAddr p_nameAddr,
- template(value) GenValue p_tag_str
- ) := {
- fieldName := FROM_E,
- addressField := {nameAddr := p_nameAddr}, //* end addressField
- fromParams := {
- {
- id := c_tagId,
- paramValue := p_tag_str
- }
- }
- }
-
- template(value) From m_From_Anonymous(
- template(value) GenValue p_tag_str
- ) := {
- fieldName := FROM_E,
- addressField := {
- nameAddr :=
- m_NameAddr(
- {token:="Anonymous"},
- //* optional charstring
- m_SipUrl_Anonymous //* SipUrl
- )
- }, //* end addressField
- fromParams := {
- {
- id := c_tagId,
- paramValue := p_tag_str
- }
- }
- }
-
- template(value) From m_From_SipUrl(
- template(value) SipUrl p_sipUrl
- ) := {
- fieldName := FROM_E,
- addressField := {
- nameAddr :=
- m_NameAddr(
- omit,
- //* optional charstring
- p_sipUrl //* SipUrl
- )
- }, //* end addressField
- fromParams := omit
- }
-
- template(value) Event m_Event_base := {
- fieldName := EVENT_E,
- eventType := "",
- eventParams := omit
- }
-
- template(value) Event m_Event_refer modifies m_Event_base := {eventType := "refer"}
-
- template(value) Event m_Event_conference modifies m_Event_base := {eventType := "conference"}
-
- template(value) Event m_Event_presence modifies m_Event_base := {eventType := "presence"}
-
- template(value) Event m_Event_reg modifies m_Event_base := {eventType := "reg"}
-
- template(value) Event m_Event_cdiv modifies m_Event_base := {eventType := "comm-div-info"}
-
- template(value) Event m_Event_mcid := m_Event_cdiv;
-
- template(value) Expires m_Expires_base := {
- fieldName := EXPIRES_E,
- deltaSec := ""
- }
-
- template(value) Expires m_Expires_600000 modifies m_Expires_base := {deltaSec := "600000"}
-
- template(value) Expires m_Expires(
- template(value) charstring p_deltaSec
- ) modifies m_Expires_base := {
- deltaSec := p_deltaSec
- }
-
- template(present) Expires mw_Expires(
- template(present) charstring p_deltaSec := ?
- ) := {
- fieldName := EXPIRES_E,
- deltaSec := p_deltaSec
- }
-
- template(value) HistoryInfo m_HistoryInfo(
- template(value) HistoryInfo_List p_HistoryInfo_List
- ) := {
- fieldName := HISTORY_INFO_E,
- historyInfoList := p_HistoryInfo_List
- }
-
- template(present) HistoryInfo mw_HistoryInfo(
- template(present) HistoryInfo_List p_HistoryInfo_List := ?
- ) := {
- fieldName := HISTORY_INFO_E,
- historyInfoList := p_HistoryInfo_List
- }
-
- template(value) HistoryInfoEntry m_HistoryInfoEntry(
- template(value) SipUrl p_Url,
- template(omit) IntegerList p_index := omit,
- template(omit) SemicolonParam_List p_paramlist := omit
- ) := {
- nameAddr := m_NameAddr(omit, p_Url),
- hiIndex := p_index,
- hiExtention := p_paramlist
- }
-
- template(present) HistoryInfoEntry mw_HistoryInfoEntry(
- template(present) SipUrl p_Url := ?,
- template IntegerList p_index,
- template SemicolonParam_List p_paramlist
- ) := {
- nameAddr := mw_NameAddr(*, p_Url),
- hiIndex := p_index,
- hiExtention := p_paramlist
- }
-
- template(value) PAssertedID m_PAssertedID(
- template(value) Addr_Union p_pAssertedIDValue
- ) := {
- fieldName := P_ASSERTED_ID_E,
- pAssertedIDValueList := {p_pAssertedIDValue}
- }
-
- template(value) PAssertedID m_PAssertedID_2x(
- template(value) Addr_Union p_pAssertedIDValue,
- template(value) Addr_Union p_pAssertedIDValue2
- ) modifies m_PAssertedID := {
- pAssertedIDValueList := {p_pAssertedIDValue, p_pAssertedIDValue2}
- }
-
- template(present) PAssertedID mw_PAssertedID(
- template(present) PAssertedIDValue p_pAssertedIDValue := ?
- ) := {
- fieldName := P_ASSERTED_ID_E,
- pAssertedIDValueList := {p_pAssertedIDValue}
- }
-
- template(present) PAssertedIDValue mw_PAssertedIDValue(
- template(present) SipUrl p_SipUrl := ?
- ) := {
- nameAddr := {
- displayName := *,
- addrSpec := p_SipUrl
- }
- }
-
- template(value) PPreferredID m_PPreferredID(
- template(value) Addr_Union p_pPreferredIDValue
- ) := {
- fieldName := P_PREFERRED_ID_E,
- pPreferredIDValueList := {p_pPreferredIDValue}
- }
-
- template(value) Privacy m_Privacy(
- template(value) PrivacyValue p_privacy
- ) := {
- fieldName := PRIVACY_E,
- privValueList := {p_privacy}
- }
-
- template(present) Privacy mw_Privacy_Base(
- template(present) charstring p_value := ?
- ) := {
- fieldName := PRIVACY_E,
- privValueList := {*, p_value, *}
- }
-
- template(present) Privacy mw_Privacy_id := mw_Privacy_Base("id");
-
- template(present) Privacy mw_Privacy_user := mw_Privacy_Base("user");
-
- template(value) RAck m_RAck(
- integer p_responseNum,
- integer p_seqNumber,
- charstring p_method
- ) := {
- fieldName := RACK_E,
- responseNum := p_responseNum,
- seqNumber := p_seqNumber,
- method := p_method
- }
-
- template(value) Reason m_Reason(
- template(value) integer p_cause
- ) := {
- fieldName := REASON_E,
- reasonValues := {m_ReasonValue({tokenOrHost := int2str(valueof(p_cause))}, { tokenOrHost := "dummy"})}
- }
-
- template(value) Reason m_Reason21 := {
- fieldName := REASON_E,
- reasonValues := {m_ReasonValue({tokenOrHost := int2str(21)}, { tokenOrHost := "call reject"})}
- }
-
- template(present) Reason mw_Reason_Base := {
- fieldName := REASON_E,
- reasonValues := {}
- }
-
- template(present) Reason mw_Reason(
- template(value) GenValue p_cause
- ) modifies mw_Reason_Base := {
- reasonValues := {mw_ReasonValue(p_cause, ?)}
- }
-
- template(present) Reason mw_ReasonSIP(
- template(value) GenValue p_cause
- ) modifies mw_Reason_Base := {
- reasonValues := {mw_ReasonValueSIP(p_cause, ?)}
- }
-
- template(value) RecordRoute m_recordRoute_currIpAddr(
- template(value) SipUserProfile p_userprofile
- ) := {
- fieldName := RECORD_ROUTE_E,
- routeBody := {
- {
- nameAddr := {
- displayName := omit,
- addrSpec := {
- scheme := c_sipScheme, //* contains "sip"
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := p_userprofile.currIpaddr,
- portField := p_userprofile.currPort
- }
- }
- },
- urlParameters := omit,
- headers := omit
- }
- },
- rrParam := omit
- }
- }
- }
-
- template(value) RecordRoute m_recordRoute_currIpAddr_params(
- template(value) SipUserProfile p_userprofile,
- template(value) SemicolonParam_List p_urlParameters
- ) := {
- fieldName := RECORD_ROUTE_E,
- routeBody := {
- {
- nameAddr := {
- displayName := omit,
- addrSpec := {
- scheme := c_sipScheme, //* contains "sip"
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := p_userprofile.currIpaddr,
- portField := p_userprofile.currPort
- }
- }
- },
- urlParameters := p_urlParameters,
- headers := omit
- }
- },
- rrParam := omit
- }
- }
- }
-
- template(value) RouteBody m_routeBody_currIpAddr(
- template(value) SipUserProfile p_userprofile
- ) := {
- nameAddr := {
- displayName := omit,
- addrSpec := {
- scheme := c_sipScheme, //* contains "sip"
- components := {
- sip := {
- userInfo := omit,
- hostPort := {
- host := p_userprofile.homeDomain,
- portField := p_userprofile.currPort
- }
- }
- },
- urlParameters := omit,
- headers := omit
- }
- },
- rrParam := omit
- }
-
- template(value) ReferredBy m_ReferredBy_SipUrl(
- template(value) SipUrl p_sipUrl
- ) := {
- fieldName := REFERRED_BY_E,
- nameAddr :=
- m_NameAddr(
- // STF471 {displayName
- omit,
- // := omit,
- p_sipUrl // addrSpec:=p_sipUrl}
- ),
- referredbyIdParams := omit
- }
-
- template(value) ReferTo m_ReferTo_SipUrl(
- template(value) SipUrl p_sipUrl,
- template(value) GenValue p_method
- ) := {
- fieldName := REFER_TO_E,
- nameAddr :=
- m_NameAddr(
- // STF471 {displayName
- omit,
- // := omit,
- p_sipUrl // addrSpec:=p_sipUrl}
- ),
- referToParams := {
- {
- id := "method",
- paramValue := p_method
- }
- }
- }
-
- template(value) ReferSub m_ReferSub(
- template(value) boolean p_value
- ) := {
- fieldName := REFER_SUB_E,
- referSubValue := p_value,
- referSubParams := omit
- }
-
- template(value) Replaces m_Replaces(
- template(value) charstring p_callId,
- template(value) GenValue p_toTag,
- template(value) GenValue p_fromTag
- ) := {
- fieldName := REPLACES_E,
- callid := p_callId,
- replacesParams := {
- {
- id := "to-tag",
- paramValue := p_toTag
- },
- {
- id := "from-tag",
- paramValue := p_fromTag
- }
- }
- }
-
- template(value) Require m_Require_empty := {
- fieldName := REQUIRE_E,
- optionsTags := {""}
- }
-
- template(value) Require m_Require_replaces modifies m_Require_empty := {optionsTags := {c_replaces}}
-
- template(value) Require m_Require_100rel modifies m_Require_empty := {optionsTags := {c_tag100rel}}
-
- template(value) Require m_Require_prec modifies m_Require_empty := {optionsTags := {c_tagPrecond}}
-
- template(value) SubscriptionState m_SubscriptionState_active := {
- fieldName := SUBSCRIPTION_STATE_E,
- subState := "active",
- substateParams := {
- {
- id := "expires",
- paramValue := {tokenOrHost := "60000"}
- }
- }
- }
-
- template(value) Supported m_Supported_empty := {
- fieldName := SUPPORTED_E,
- optionsTags := {""}
- }
-
- template(value) Supported m_Supported_fromChange modifies m_Supported_empty := {optionsTags := {c_tagFromChange}}
-
- template(value) Supported m_Supported_prec modifies m_Supported_empty := {optionsTags := {c_tagPrecond}}
-
- template(value) Supported m_Supported_100rel modifies m_Supported_empty := {optionsTags := {c_tag100rel}}
-
- template(value) Supported m_Supported_100rel_prec modifies m_Supported_empty := {optionsTags := {c_tag100rel, c_tagPrecond}}
-
- template(value) GenericParam m_Text(
- template(value) GenValue p_text
- ) := {
- id := "text",
- paramValue := p_text
- }
-
- template(present) GenericParam mw_Text(
- template GenValue p_text
- ) := {
- id := "text",
- paramValue := p_text
- }
-
- template(value) GenericParam m_UserPhone := {
- id := "user",
- paramValue := { quotedString := "phone" }
- }
-
- template(value) GenericParam m_UserToUserEncodingHex := {
- id := "encoding",
- paramValue := { quotedString := "hex" }
- }
-
- template(value) UserToUser m_UserToUserData(
- template(value) UserToUser.uuiData p_U2UData
- ) := {
- fieldName := USER_TO_USER_E,
- uuiData := p_U2UData,
- uuiParam := m_UserToUserEncodingHex
- }
-
- template(value) To m_To(
- template(value) SipUrl p_sipUrl
- ) := {
- fieldName := TO_E,
- addressField := {
- nameAddr :=
- m_NameAddr(
- {token:="ETSI Tester"},
- //* optional charstring
- p_sipUrl //* SipUrl
- )
- }, //* end addressField
- toParams := omit
- }
-
- template(value) To m_To_SipUrl(
- template(value) SipUrl p_sipUrl
- ) modifies m_To := {
- addressField := {
- nameAddr := {
- displayName :=
- omit //* optional charstring
- }
- } //* end addressField
- }
-
- template(present) To mw_To_NameAddr_SipUrl(
- template DisplayName p_dn,
- template(present) charstring p_user := ?,
- template charstring p_host
- ) := {
- fieldName := TO_E,
- addressField := (mw_AddrUnion_Nameaddr(p_dn, p_user, p_host), mw_AddrUnion_SipUrl(p_user, p_host)),
- toParams := *
- }
-
- template(present) To mw_To(
- template(present) SipUrl p_sipUrl := ?
- ) := {
- fieldName := TO_E,
- addressField := {nameAddr := mw_NameAddr(*, p_sipUrl)},
- toParams := *
- }
-
- template(present) From mw_From(
- template(present) SipUrl p_sipUrl := ?
- ) := {
- fieldName := FROM_E,
- addressField := {nameAddr := mw_NameAddr(*, p_sipUrl)},
- fromParams := *
- }
-
- template(present) From mw_From_NameAddr_SipUrl(
- template DisplayName p_dn,
- template(present) charstring p_user := ?,
- template charstring p_host
- ) := {
- fieldName := FROM_E,
- addressField := (mw_AddrUnion_Nameaddr(p_dn, p_user, p_host), mw_AddrUnion_SipUrl(p_user, p_host)),
- fromParams := *
- }
- template(value) ViaBody m_ViaBody_currIpaddr(
- template(value) charstring p_branch_val,
- template(value) SipUserProfile p_userprofile
- ) := {
- sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
- sentBy := {
- host := p_userprofile.currIpaddr,
- portField := p_userprofile.currPort
- },
- viaParams := {
- {
- id := c_branchId,
- paramValue := {
- tokenOrHost := p_branch_val
- }
- }
- }
- }
-
- template(present) ViaBody mw_ViaBody_interface(
- template(present) HostPort p_hostport := ?
- ) := {
- sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
- sentBy := {
- host := p_hostport.host,
- portField := p_hostport.portField
- },
- viaParams := *
- }
-
- template(present) Via mw_Via(
- template(present) ViaBody p_viabody := ?
- ) := {
- fieldName := VIA_E,
- viaBody := {*, p_viabody, *} // superset(p_viabody)
- }
-
- template(present) CallId mw_CallId_any := {
- fieldName := CALL_ID_E,
- callid := ?
- }
-
- template(present) Require mw_Require_Base := {
- fieldName := REQUIRE_E,
- optionsTags := {}
- }
-
- template(present) Require mw_Require_not_100rel modifies mw_Require_Base := {optionsTags := superset(complement(c_tag100rel))}
-
- template(present) Require mw_require_100rel modifies mw_Require_Base := {optionsTags := superset(c_tag100rel)}
-
- template(present) RecordRoute mw_recordroute(
- template(present) RouteBody p_routeBody := ?
- ) := {
- fieldName := RECORD_ROUTE_E,
- routeBody := {*, p_routeBody, *} // superset(p_routeBody)
- }
-
- template(present) Route mw_route(
- template(present) RouteBody_List p_routeBody := ?
- ) := {
- fieldName := ROUTE_E,
- routeBody := p_routeBody
- }
-
- template(present) Supported mw_Supported_Base := {
- fieldName := SUPPORTED_E,
- optionsTags := {}
- }
-
- template(present) Supported mw_Supported_100rel_prec modifies mw_Supported_Base := {optionsTags := superset(c_tag100rel, c_tagPrecond)}
-
- template(present) Supported mw_Supported_100rel modifies mw_Supported_Base := {optionsTags := superset(c_tag100rel)}
-
- template(present) Supported mw_Supported_fromChange modifies mw_Supported_Base := {optionsTags := superset(c_tagFromChange)}
-
- template(present) UserToUser mw_UserToUserData(
- template(present) UserToUser.uuiData p_U2UData := ?
- ) := {
- fieldName := USER_TO_USER_E,
- uuiData := p_U2UData,
- uuiParam := ?
- }
-
- template(present) Contact mw_Contact_conference := {
- fieldName := CONTACT_E,
- contactBody := {
- contactAddresses := {
- {
- addressField := {
- nameAddr := {
- displayName := *,
- addrSpec := {
- scheme := ?,
- components := ?,
- urlParameters := {
- {
- "isfocus",
- *
- },
- *
- },
- headers := *
- }
- }
- },
- contactParams := *
- }
- }
- }
- }
-
- template(value) AlertInfo m_AlertInfo_Base := {
- fieldName := ALERT_INFO_E,
- alertInfoBody := {}
- }
-
- template(value) AlertInfo m_AlertInfo(
- template(value) charstring p_urn
- ) modifies m_AlertInfo_Base := {
- alertInfoBody := {
- {
- p_urn,
- omit
- }
- }
- }
-
- template(present) AlertInfo mw_AlertInfo(
- template(present) charstring p_urn := ?
- ) modifies m_AlertInfo_Base := {
- alertInfoBody :=
- superset(
- {
- p_urn,
- omit
- }
- )
- }
-
-
- } //* end of group HeaderFieldTemplates
-
-
- group MessageTemplates {
-
- group dummy_templates {
-
- group dummy_parameter_send {
-
- template(value) RequestLine m_requestLine_dummy(
- template(value) Method p_method
- ) := {
- method := p_method,
- requestUri := c_unavailableUri,
- sipVersion := c_sipNameVersion
- }
-
- template(value) MessageHeader m_msgHeader_dummy := {
- accept := omit,
- acceptContact := omit,
- acceptEncoding := omit,
- acceptLanguage := omit,
- alertInfo := omit,
- allow := omit,
- allowEvents := omit, //* RFC3265
- authenticationInfo := omit,
- authorization := omit,
- callId := c_empty_CallId,
- callInfo := omit,
- contact := omit,
- contentDisposition := omit,
- contentEncoding := omit,
- contentLanguage := omit,
- contentLength := {
- fieldName := CONTENT_LENGTH_E,
- len := 0
- },
- contentType := omit, //* if message body present m,
- //* else not present
- cSeq := c_empty_cSeq,
- date := omit,
- errorInfo := omit,
- event := omit, //* RFC3265
- expires := omit,
- featureCaps := omit,
- fromField := c_empty_From,
- geolocation := omit,
- geolocationRouting := omit,
- historyInfo := omit, //* RFC4244
- inReplyTo := omit,
- maxForwards := c_maxForwards70,
- mimeVersion := omit,
- minExpires := omit,
- minSE := omit, //* RFC4028
- organization := omit,
- pAccessNetworkInfo := omit, //* RFC3455
- pAssertedID := omit,
- pAssertedService := omit,
- pAssociatedURI := omit,
- path := omit, //* RFC3327
- pCalledPartyID := omit, //* RFC3455
- pChargingFunctionAddresses := omit, //* RFC3455
- pChargingVector := omit, //* RFC3455
- pEarlyMedia := omit, //* RFC5009
- pMediaAuthorization := omit, //* RFC3313
- pPreferredID := omit,
- pPreferredService := omit,
- priority := omit,
- privacy := omit,
- proxyAuthenticate := omit,
- proxyAuthorization := omit,
- proxyRequire := omit,
- pVisitedNetworkID := omit, //* RFC3455
- rAck := omit,
- rSeq := omit,
- reason := omit,
- recordRoute := omit,
- requestDisposition := omit,
- referredBy := omit, //* RFC3892 - REFER method
- referTo := omit, //* RFC3515 - REFER method
- referSub := omit, //* RFC4488 - REFER method
- replaces := omit, //* RFC3891
- replyTo := omit,
- require := omit,
- retryAfter := omit,
- route := omit,
- securityClient := omit, //* RFC3329
- securityServer := omit, //* RFC3329
- securityVerify := omit, //* RFC3329
- server := omit,
- serviceRoute := omit, //* RFC3608
- sessionExpires := omit, //* RFC4028
- sessionId := omit,
- sipETag := omit,
- sipIfMatch := omit,
- subject := omit,
- subscriptionState := omit, //* RFC3265
- supported := omit,
- timestamp := omit,
- toField := c_empty_To,
- unsupported := omit,
- userToUser := omit,
- userAgent := omit,
- via := c_empty_Via,
- warning := omit,
- wwwAuthenticate := omit,
- undefinedHeader_List := omit
- }
-
-
- } //* group dummy_parameter_send
-
- group dummy_parameter_receive {
-
- template(present) RequestLine mw_requestLine_dummy(
- Method p_method
- ) := {
- method := p_method,
- requestUri := ?,
- sipVersion := c_sipNameVersion
- }
-
- template(present) MessageHeader mw_msgHeader_dummy := {
- accept := *,
- acceptContact := *,
- acceptEncoding := *,
- acceptLanguage := *,
- alertInfo := *,
- allow := *,
- allowEvents := *, //* RFC3265
- authenticationInfo := *,
- authorization := *,
- callId := ?,
- callInfo := *,
- contact := *,
- contentDisposition := *,
- contentEncoding := *,
- contentLanguage := *,
- contentLength := ?,
- contentType := *,
- cSeq := ?,
- date := *,
- errorInfo := *,
- event := *, //* RFC3265
- expires := *,
- featureCaps := *,
- fromField := ?,
- geolocation := *,
- geolocationRouting := *,
- historyInfo := *, //* RFC4244
- inReplyTo := *,
- maxForwards := *,
- mimeVersion := *,
- minExpires := *,
- minSE := *, //* RFC4028
- organization := *,
- pAccessNetworkInfo := *, //* RFC3455
- pAssertedID := *,
- pAssertedService := *,
- pAssociatedURI := *,
- path := *, //* RFC3327
- pCalledPartyID := *, //* RFC3455
- pChargingFunctionAddresses := *, //* RFC3455
- pChargingVector := *, //* RFC3455
- pEarlyMedia := *, //* RFC5009
- pMediaAuthorization := *, //* RFC3313
- pPreferredID := *,
- pPreferredService := *,
- priority := *,
- privacy := *,
- proxyAuthenticate := *,
- proxyAuthorization := *,
- proxyRequire := *,
- pVisitedNetworkID := *, //* RFC3455
- rAck := *,
- rSeq := *,
- reason := *,
- recordRoute := *,
- requestDisposition := *,
- referredBy := *, //* RFC3892 - REFER method
- referTo := *, //* RFC3515 - REFER method
- referSub := *, //* RFC4488 - REFER method
- replaces := *, //* RFC 3891
- replyTo := *,
- require := *,
- retryAfter := *,
- route := *,
- securityClient := *, //* RFC3329
- securityServer := *, //* RFC3329
- securityVerify := *, //* RFC3329
- server := *,
- serviceRoute := *, //* RFC3608
- sessionExpires := *, //* RFC4028
- sessionId := *,
- sipETag := *,
- sipIfMatch := *,
- subject := *,
- subscriptionState := *, //* RFC3265
- supported := *,
- timestamp := *,
- toField := ?,
- unsupported := *,
- userToUser := *,
- userAgent := *,
- via := ?,
- warning := *,
- wwwAuthenticate := *,
- undefinedHeader_List := *
- }
-
-
- } //* end group dummy_parameter_receive
-
- group dummy_request_templates_send {
-
- template(value) ACK_Request m_ACK_Dummy := {
- requestLine := m_requestLine_dummy(ACK_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) BYE_Request m_BYE_Dummy := {
- requestLine := m_requestLine_dummy(BYE_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) CANCEL_Request m_CANCEL_Dummy := {
- requestLine := m_requestLine_dummy(CANCEL_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) INFO_Request m_INFO_Dummy := {
- requestLine := m_requestLine_dummy(INFO_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) INVITE_Request m_INVITE_Dummy := {
- requestLine := m_requestLine_dummy(INVITE_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) MESSAGE_Request m_MESSAGE_Dummy := {
- requestLine := m_requestLine_dummy(MESSAGE_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) NOTIFY_Request m_NOTIFY_Dummy := {
- requestLine := m_requestLine_dummy(NOTIFY_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) OPTIONS_Request m_OPTIONS_Dummy := {
- requestLine := m_requestLine_dummy(OPTIONS_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) PRACK_Request m_PRACK_Dummy := {
- requestLine := m_requestLine_dummy(PRACK_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) PUBLISH_Request m_PUBLISH_Dummy := {
- requestLine := m_requestLine_dummy(PUBLISH_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) REGISTER_Request m_REGISTER_Dummy := {
- requestLine := m_requestLine_dummy(REGISTER_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) REFER_Request m_REFER_Dummy := {
- requestLine := m_requestLine_dummy(REFER_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) SUBSCRIBE_Request m_SUBSCRIBE_Dummy := {
- requestLine := m_requestLine_dummy(SUBSCRIBE_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
- template(value) UPDATE_Request m_UPDATE_Dummy := {
- requestLine := m_requestLine_dummy(UPDATE_E),
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
-
- } //* end group dummy_request_templates_send
- group dummy_request_templates_receive {
-
- template(present) ACK_Request mw_ACK_Dummy := {
- requestLine := mw_requestLine_dummy(ACK_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) BYE_Request mw_BYE_Dummy := {
- requestLine := mw_requestLine_dummy(BYE_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) CANCEL_Request mw_CANCEL_Dummy := {
- requestLine := mw_requestLine_dummy(CANCEL_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) INFO_Request mw_INFO_Dummy := {
- requestLine := mw_requestLine_dummy(INFO_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) INVITE_Request mw_INVITE_Dummy := {
- requestLine := mw_requestLine_dummy(INVITE_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) MESSAGE_Request mw_MESSAGE_Dummy := {
- requestLine := mw_requestLine_dummy(MESSAGE_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) OPTIONS_Request mw_OPTIONS_Dummy := {
- requestLine := mw_requestLine_dummy(OPTIONS_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) NOTIFY_Request mw_NOTIFY_Dummy := {
- requestLine := mw_requestLine_dummy(NOTIFY_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) PRACK_Request mw_PRACK_Dummy := {
- requestLine := mw_requestLine_dummy(PRACK_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) PUBLISH_Request mw_PUBLISH_Dummy := {
- requestLine := mw_requestLine_dummy(PUBLISH_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) REFER_Request mw_REFER_Dummy := {
- requestLine := mw_requestLine_dummy(REFER_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) REGISTER_Request mw_REGISTER_Dummy := {
- requestLine := mw_requestLine_dummy(REGISTER_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Dummy := {
- requestLine := mw_requestLine_dummy(SUBSCRIBE_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
- template(present) UPDATE_Request mw_UPDATE_Dummy := {
- requestLine := mw_requestLine_dummy(UPDATE_E),
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
-
- } //* end group dummy_request_templates_receive
-
- group dummy_response_templates_send {
-
- template(value) Response m_Response_Dummy := {
- statusLine := c_statusLine100,
- msgHeader := m_msgHeader_dummy,
- messageBody := omit,
- payload := omit
- }
-
-
- } //* group dummy_response_templates_send
-
- group dummy_response_templates_receive {
-
- template(present) Response mw_Response_Dummy := {
- statusLine := ?,
- msgHeader := mw_msgHeader_dummy,
- messageBody := *,
- payload := *
- }
-
-
- } //* group dummy_response_templates_receive
- }
-
- group base_templates {
-
- template(value) CSeq m_cSeq(
- template(value) integer p_seqNumber,
- template(value) charstring p_method
- ) := {
- fieldName := CSEQ_E,
- seqNumber := p_seqNumber,
- method := p_method
- }
-
- template(value) ContentLength m_contentLength(
- template(value) integer p_len
- ) := {
- fieldName := CONTENT_LENGTH_E,
- len := p_len
- }
-
- template(value) ContentType m_contentType(
- template(value) charstring p_mediaType
- ) := {
- fieldName := CONTENT_TYPE_E,
- mediaType := p_mediaType
- }
-
- template(present) ContentType mw_contentType(
- in template(present) charstring p_mediaType := ?
- ) := {
- fieldName := CONTENT_TYPE_E,
- mediaType := p_mediaType
- }
-
- group request_send {
-
- template(value) ACK_Request m_ACK_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_ACK_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := m_cSeq(p_cSeq.seqNumber, "ACK"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "ACK"},
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) ACK_Request m_ACK_Request_withRecordRoute(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Route p_route
- ) modifies m_ACK_Request_Base := {
- msgHeader := {
- route := p_route,
- contentLength := m_contentLength(0)
- }
- }
-
- template(value) BYE_Request m_BYE_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_BYE_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) CANCEL_Request m_CANCEL_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_CANCEL_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) INFO_Request m_INFO_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_INFO_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) INVITE_Request m_INVITE_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Contact p_contact
- ) modifies m_INVITE_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- contact := p_contact,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) MESSAGE_Request m_MESSAGE_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_MESSAGE_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) NOTIFY_Request m_NOTIFY_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_NOTIFY_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := m_cSeq(p_cSeq.seqNumber, "NOTIFY"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "NOTIFY"},
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) OPTIONS_Request m_OPTIONS_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_OPTIONS_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := m_cSeq(p_cSeq.seqNumber, "OPTIONS"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "OPTIONS"},
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) PRACK_Request m_PRACK_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) RAck p_RAck
- ) modifies m_PRACK_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := m_cSeq(p_cSeq.seqNumber, "PRACK"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "PRACK"},
- fromField := p_from,
- rAck := p_RAck,
- toField := p_to,
- via := p_via
- },
- messageBody := omit
- }
-
- template(value) PUBLISH_Request m_PUBLISH_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Event p_event := omit,
- template(omit) RAck p_RAck := omit,
- template(value) MessageBody p_mb
- ) modifies m_PUBLISH_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_plainText), // STF471
- // {fieldName
- // :=
- // CONTENT_TYPE_E,
- // mediaType
- // :=
- // c_plainText/*c_sdp*/},
- cSeq := m_cSeq(p_cSeq.seqNumber, "PUBLISH"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "PUBLISH"},
- event := p_event,
- rAck := p_RAck,
- fromField := p_from,
- toField := p_to,
- via := p_via
- },
- messageBody := p_mb
- }
-
- template(value) REFER_Request m_REFER_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(omit) Contact p_contact := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) ReferTo p_referTo := omit,
- template(omit) ReferredBy p_referredBy := omit
- ) modifies m_REFER_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- contact := p_contact,
- cSeq := m_cSeq(p_cSeq.seqNumber, "REFER"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "REFER"},
- fromField := p_from,
- referTo := p_referTo,
- referredBy := p_referredBy,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) REFER_Request m_REFER_Request_replaces(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(omit) Contact p_contact := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) ReferTo p_referTo,
- template(value) ReferredBy p_referredBy,
- template(value) Replaces p_replaces,
- template(omit) Require p_require := omit
- ) modifies m_REFER_Request_Base := {
- msgHeader := {
- replaces := p_replaces,
- require := p_require
- }
- }
-
- template(value) REGISTER_Request m_REGISTER_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit,
- template(omit) Authorization p_authorization := omit
- ) modifies m_REGISTER_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- authorization := p_authorization,
- callId := p_callId,
- contact := p_contact,
- cSeq := p_cSeq,
- fromField := p_from,
- toField := p_to,
- supported := {
- fieldName := SUPPORTED_E,
- optionsTags := {"path"}
- },
- via := p_via
- }
- }
-
- template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_SUBSCRIBE_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- cSeq := m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "SUBSCRIBE"},
- fromField := p_from,
- toField := p_to,
- via := p_via
- }
- }
-
- template(value) UPDATE_Request m_UPDATE_Request_Base(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit,
- template(value) MessageBody p_mb
- ) modifies m_UPDATE_Dummy := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- contact := p_contact,
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_sdpApplication), // STF471
- // {fieldName
- // :=
- // CONTENT_TYPE_E,
- // mediaType
- // :=
- // c_sdp},
- cSeq := m_cSeq(p_cSeq.seqNumber, "UPDATE"), // STF471
- // {fieldName:=CSEQ_E,
- // seqNumber:=
- // p_cSeq.seqNumber,
- // method:=
- // "UPDATE"},
- fromField := p_from,
- toField := p_to,
- via := p_via
- },
- messageBody := p_mb
- }
-
-
- } //* end of group message_send
-
- group request_receive {
-
- template(present) ACK_Request mw_ACK_Request_Base(
- template CallId p_callId
- ) modifies mw_ACK_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) BYE_Request mw_BYE_Request_Base(
- template CallId p_callId
- ) modifies mw_BYE_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) CANCEL_Request mw_CANCEL_Request_Base(
- template CallId p_callId
- ) modifies mw_CANCEL_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) INFO_Request mw_INFO_Request_Base(
- template CallId p_callId
- ) modifies mw_INFO_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) INVITE_Request mw_INVITE_Request_Base modifies mw_INVITE_Dummy := {requestLine := {method := INVITE_E}}
-
- template(present) MESSAGE_Request mw_MESSAGE_Request_Base modifies mw_MESSAGE_Dummy := {msgHeader := {contact := *}}
-
- template(present) NOTIFY_Request mw_NOTIFY_Request_Base(
- template CallId p_callId
- ) modifies mw_NOTIFY_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) OPTIONS_Request mw_OPTIONS_Request_Base(
- template CallId p_callId
- ) modifies mw_OPTIONS_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) PRACK_Request mw_PRACK_Request_Base(
- template CallId p_callId
- ) modifies mw_PRACK_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) PUBLISH_Request mw_PUBLISH_Request_Base(
- template CallId p_callId
- ) modifies mw_PUBLISH_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) REFER_Request mw_REFER_Request_Base(
- template CallId p_callId
- ) modifies mw_REFER_Dummy := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) REFER_Request mw_REFER_Request(
- template CallId p_callId,
- template(value) SipUrl p_requestUri,
- template(value) SipUrl p_referredBy
- ) modifies mw_REFER_Request_Base := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- referredBy := {
- fieldName := REFERRED_BY_E,
- nameAddr := mw_NameAddr(*, p_referredBy), // STF471
- // {displayName
- // :=
- // *,
- // addrSpec
- // :=
- // p_referredBy},
- referredbyIdParams := *
- }
- }
- }
-
- template(present) INVITE_Request mw_INVITE_Request(
- template Require p_require,
- template(value) SipUrl p_referredBy
- ) modifies mw_INVITE_Request_Base := {
- msgHeader := {
- require := p_require,
- referredBy := {
- fieldName := REFERRED_BY_E,
- nameAddr := mw_NameAddr(*, p_referredBy), // STF471
- // {displayName
- // :=
- // *,
- // addrSpec
- // :=
- // p_referredBy},
- referredbyIdParams := *
- }
- }
- }
-
- template(present) REGISTER_Request mw_REGISTER_Request_Base modifies mw_REGISTER_Dummy := {requestLine := {method := REGISTER_E}}
-
- template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Request_Base modifies mw_SUBSCRIBE_Dummy := {requestLine := {method := SUBSCRIBE_E}}
-
- template(present) UPDATE_Request mw_UPDATE_Request_Base(template CallId p_callId) modifies mw_UPDATE_Dummy := {msgHeader := {callId := p_callId}}
-
-
- } //* end group request_receive
-
- group response_send {
-
- template(value) Response m_Response_Base(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via
- ) modifies m_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- cSeq := p_cSeq,
- fromField := p_from,
- maxForwards := omit,
- toField := p_to,
- via := p_via
- },
- messageBody := omit,
- payload := omit
- }
-
-
- } //* end group response_send
-
- group response_receive {
-
- template(present) Response mw_Response_Base(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_Dummy := {
- statusLine := p_statusLine,
- msgHeader := {
- callId := p_callId,
- contentLength := *,
- cSeq := p_cSeq,
- fromField := ?,
- maxForwards := *,
- toField := ?,
- via := ?
- }
- }
-
- template(present) Response mw_Response_StatusCode_Base(
- template(present) StatusLine.statusCode p_statusCode := ?,
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_Dummy := {
- statusLine := mw_statusLine(p_statusCode, ?),
- msgHeader := {
- callId := p_callId,
- contentLength := *,
- cSeq := p_cSeq,
- fromField := ?,
- maxForwards := *,
- toField := ?,
- via := ?
- }
- }
-
- template(present) Response mw_Response_1xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_Dummy := {
- statusLine := mw_statusLine1xx,
- msgHeader := {
- callId := p_callId,
- contentLength := *,
- cSeq := p_cSeq,
- fromField := ?,
- maxForwards := *,
- toField := ?,
- via := ?
- }
- }
-
- template(present) Response mw_Response_2xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_1xx_Base := {
- statusLine := mw_statusLine2xx
- }
-
- template(present) Response mw_Response_3xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_1xx_Base := {
- statusLine := mw_statusLine3xx
- }
-
- template(present) Response mw_Response_4xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_1xx_Base := {
- statusLine := mw_statusLine4xx
- }
-
- template(present) Response mw_Response_5xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_1xx_Base := {
- statusLine := mw_statusLine5xx
- }
-
- template(present) Response mw_Response_6xx_Base(
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_1xx_Base := {
- statusLine := mw_statusLine6xx
- }
-
- template(present) Response mw_Response_Algorithm(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) CredentialsList p_credentialsList
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {
- authorization := {
- fieldName := AUTHORIZATION_E,
- body := p_credentialsList
- }
- }
- }
-
-
- } //* end group message_receive
-
-
- } //* end group full_templates
-
- group modified_templates {
-
- group request_send {
-
- template(value) ACK_Request m_ACK_Request_route(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit
- ) modifies m_ACK_Request_Base := {
- msgHeader := {route := p_route}
- }
-
- template(value) ACK_Request m_ACK_Request_sdp(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) MessageBody p_mb
- ) modifies m_ACK_Request_Base := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_sdpApplication)
- },
- messageBody := p_mb
- }
-
- template(value) BYE_Request m_BYE_Request_cause(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) integer p_cause
- ) modifies m_BYE_Request_Base := {
- msgHeader := {reason := m_Reason(p_cause)}
- }
-
- template(value) INVITE_Request m_INVITE_Request_sdp(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Contact p_contact,
- template(value) MessageBody p_mb
- ) modifies m_INVITE_Request_Base := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_sdpApplication)
- },
- messageBody := p_mb
- }
-
- template(value) INVITE_Request m_INVITE_Request_ResourceList(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Contact p_contact,
- template(value) MessageBody p_mb
- ) modifies m_INVITE_Request_Base := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(p_mb)},
- contentType := m_contentType(c_xmlresourcelistApplication), // STF471
- // {fieldName
- // :=
- // CONTENT_TYPE_E,
- // mediaType
- // :=
- // "application/resource-lists+xml"},
- contentDisposition := {
- fieldName := CONTENT_DISPOSITION_E,
- dispositionType := "recipient-list",
- dispositionParams := omit
- },
- require := {
- fieldName := REQUIRE_E,
- optionsTags := {"recipient-list-invite"}
- }
- },
- messageBody := p_mb
- }
-
- template(value) REFER_Request m_REFER_Request_route(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(omit) Contact p_contact := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) ReferTo p_referTo,
- template(value) ReferredBy p_referredBy,
- template(value) Route p_route
- ) modifies m_REFER_Request_Base := {
- msgHeader := {route := p_route}
- }
-
- template(value) REGISTER_Request m_REGISTER_Request_expires(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit,
- template(omit) Authorization p_authorization := omit,
- template(value) charstring p_expires
- ) modifies m_REGISTER_Request_Base := {
- msgHeader := {
- authorization := p_authorization,
- expires := m_Expires(p_expires)
- }
- }
-
- template(value) NOTIFY_Request m_NOTIFY_Request_contact(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit
- ) modifies m_NOTIFY_Request_Base := {
- msgHeader := {
- contact := p_contact,
- event := m_Event_reg,
- subscriptionState := m_SubscriptionState_active
- }
- }
-
- template(value) NOTIFY_Request m_NOTIFY_Request_sipfrag(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) charstring p_state,
- template(value) charstring p_sipfrag
- ) modifies m_NOTIFY_Request_Base := {
- requestLine := {
- method := NOTIFY_E,
- requestUri := {
- scheme := ?,
- components := {
- sip := {
- userInfo := *,
- hostPort := p_requestUri.components.sip.hostPort
- }
- }
- }
- },
- msgHeader := {
- contentLength := m_contentLength(lengthof(p_sipfrag)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // lengthof(p_sipfrag)},
- contentType := m_contentType(c_sipfragMessage), // STF471
- // {fieldName
- // :=
- // CONTENT_TYPE_E,
- // mediaType
- // :=
- // "message/sipfrag"},
- subscriptionState := {
- fieldName := SUBSCRIPTION_STATE_E,
- subState := p_state,
- substateParams := omit
- },
- event := m_Event_refer
- },
- messageBody := {sipfrag := p_sipfrag}
- }
-
- template(value) UPDATE_Request m_UPDATE_Request_route(
- template(value) SipUrl p_requestUri,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit,
- template(value) MessageBody p_mb,
- template(value) Route p_route
- ) modifies m_UPDATE_Request_Base := {
- msgHeader := {route := p_route}
- }
-
-
- } //* end group request_send
-
-
- group request_receive {
-
- template(present) BYE_Request mw_BYE_Request_Reason(
- template CallId p_callId,
- template(value) GenValue p_cause
- ) modifies mw_BYE_Request_Base := {
- msgHeader := {reason := mw_Reason(p_cause)}
- }
-
- template(present) BYE_Request mw_BYE_Request_ReasonSIP(
- template CallId p_callId,
- template(value) GenValue p_cause
- ) modifies mw_BYE_Request_Base := {
- msgHeader := {reason := mw_ReasonSIP(p_cause)}
- }
-
- template(present) BYE_Request mw_BYE_Request_headerfieldlist(
- template CallId p_callId,
- template(present) SipUrl p_requestUri,
- template(present) To p_to := ?,
- template(present) From p_from := ?,
- template CSeq p_cSeq,
- template Route p_route,
- template RecordRoute p_recordRoute,
- template Reason p_reason
- ) modifies mw_BYE_Request_Base := {
- requestLine := {requestUri := p_requestUri},
- msgHeader := {
- callId := p_callId,
- toField := p_to,
- fromField := p_from,
- cSeq := p_cSeq,
- route := p_route,
- recordRoute := p_recordRoute,
- reason := p_reason
- }
- }
-
- template(present) BYE_Request mw_BYE_Request_UserToUser(
- template CallId p_callId
- ) modifies mw_BYE_Request_Base := {
- msgHeader := {userToUser := ?}
- }
-
-
- template(present) INVITE_Request mw_INVITE_Request_RequestURI(
- template(present) SipUrl p_sipUrl := ?
- ) modifies mw_INVITE_Dummy := {
- requestLine := {
- requestUri := p_sipUrl,
- sipVersion := c_sipNameVersion
- }
- }
-
- template(present) INFO_Request mw_INFO_Request_MB(
- template CallId p_callId,
- template MessageBody p_mb
- ) modifies mw_INFO_Request_Base := {
- messageBody := p_mb
- }
-
- template(present) INVITE_Request mw_INVITE_Request_expires modifies mw_INVITE_Request_Base := {msgHeader := {expires := ?}}
-
- template(present) INVITE_Request mw_INVITE_Request_callid(
- template CallId p_callId
- ) modifies mw_INVITE_Request_Base := {
- msgHeader := {callId := p_callId}
- }
-
- template(present) INVITE_Request mw_INVITE_Request_MB(
- template CallId p_callId,
- template MessageBody p_mb
- ) modifies mw_INVITE_Request_callid := {
- messageBody := p_mb
- }
-
- template(present) INVITE_Request mw_INVITE_Request_noPaccessNetworkInfo(
- template CallId p_callId
- ) modifies mw_INVITE_Request_callid := {
- msgHeader := {pAccessNetworkInfo := omit}
- }
-
- template(present) INVITE_Request mw_INVITE_Request_PaccessNetworkInfo(
- template CallId p_callId
- ) modifies mw_INVITE_Request_callid := {
- msgHeader := {pAccessNetworkInfo := ?}
- }
-
- template(present) INVITE_Request mw_INVITE_MSRP_Session(
- template(present) SDP_media_field p_media_MSRP := ?
- ) modifies mw_INVITE_Request_Base := {
- messageBody := {
- sdpMessageBody := {
- protocol_version := ?,
- origin := ?,
- session_name := ?,
- information := *,
- uri := *,
- emails := *,
- phone_numbers := *,
- connection := *,
- bandwidth := *,
- times := ?,
- timezone_adjustments := *,
- key := *,
- attributes := *,
- media_list := {
- {
- media_field := p_media_MSRP,
- information := *,
- connections := *,
- bandwidth := *,
- key := *,
- attributes := {
- {
- msrp := {
- attr_value :=
- pattern
- "path:msrp://*"
- }
- }
- }
- }
- }
- }
- }
- }
-
- template(present) REGISTER_Request mw_REGISTER_Request_ISC(
- template PAccessNetworkInfo p_access,
- template PVisitedNetworkID p_visited
- ) modifies mw_REGISTER_Request_Base := {
- msgHeader := {
- pAccessNetworkInfo := p_access,
- pVisitedNetworkID := p_visited
- }
- }
-
- template(present) UPDATE_Request mw_UPDATE_Request_SDP(
- template CallId p_callId,
- template MessageBody p_mb
- ) modifies mw_UPDATE_Request_Base := {
- messageBody := p_mb
- }
-
- template(present) NOTIFY_Request mw_NOTIFY_Request_MB(
- template CallId p_callId,
- template MessageBody p_mb
- ) modifies mw_NOTIFY_Request_Base := {
- messageBody := p_mb
- }
-
-
- } //* end group request_receive
-
- group response_send {
-
- template(value) Response m_Response_AlertInfo(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Contact p_contact,
- template(value) AlertInfo p_alertInfo
- ) modifies m_Response_Contact := {
- msgHeader := {alertInfo := p_alertInfo}
- }
-
- template(value) Response m_Response_Contact(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Contact p_contact := omit
- ) modifies m_Response_Base := {
- msgHeader := {contact := p_contact}
- }
-
- template(value) Response m_Response_ext(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordroute := omit
- ) modifies m_Response_Base := {
- msgHeader := {
- route := p_route, // f_route(),
- recordRoute :=
- p_recordroute // f_recordroute()
- }
- }
-
- template(value) Response m_Response_mbody(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordroute := omit,
- template(value) MessageBody p_mb
- ) modifies m_Response_ext := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_sdpApplication)
- },
- messageBody := p_mb
- }
-
- template(value) Response m_Response_mbody_contact (
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(omit) Route p_route := omit,
- template(omit) RecordRoute p_recordroute := omit,
- template(value) MessageBody p_mb,
- template(value) Contact p_contact
- ) modifies m_Response_mbody := {
- msgHeader := {
- contact := p_contact
- }
- }
-
-
- template(value) Response m_Response_PAsserted_Privacy(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Route p_route,
- template(value) RecordRoute p_recordroute,
- template(value) PAssertedID p_pAssertedID,
- template(value) Privacy p_privacy
- ) modifies m_Response_ext := {
- msgHeader := {
- pAssertedID := p_pAssertedID,
- privacy := p_privacy
- }
- }
-
- template(present) Response mw_Response_PAsserted_Privacy_Supported(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template PAssertedID p_pAssertedID,
- template Privacy p_privacy,
- template Supported p_supported
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {
- pAssertedID := p_pAssertedID,
- privacy := p_privacy,
- supported := p_supported
- }
- }
-
- template(value) Response m_Response_PAsserted_Privacy_mbody(
- template(value) StatusLine p_statusLine,
- template(omit) CallId p_callId := omit,
- template(omit) CSeq p_cSeq := omit,
- template(value) From p_from,
- template(value) To p_to,
- template(value) Via p_via,
- template(value) Route p_route,
- template(value) RecordRoute p_recordroute,
- template(value) PAssertedID p_pAssertedID,
- template(value) Privacy p_privacy,
- template(value) MessageBody p_mb
- ) modifies m_Response_ext := {
- msgHeader := {
- contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471
- // {fieldName
- // :=
- // CONTENT_LENGTH_E,
- // len:=
- // f_MessageBodyLength(valueof(p_mb))},
- contentType := m_contentType(c_sdpApplication), // STF471
- // {fieldName
- // :=
- // CONTENT_TYPE_E,
- // mediaType
- // :=
- // c_sdpApplication
- // },
- pAssertedID := p_pAssertedID,
- privacy := p_privacy
- },
- messageBody := p_mb
- }
-
-
- } //* end group response_send
-
-
- group response_receive {
-
- template(present) Response mw_Response_Expires(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) DeltaSec p_deltaSec := ?
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {expires := mw_Expires(p_deltaSec)}
- }
-
- template(present) Response mw_Response_PAsserted_Privacy(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template PAssertedID p_pAssertedID,
- template Privacy p_privacy
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {
- pAssertedID := p_pAssertedID,
- privacy := p_privacy
- }
- }
-
- template(present) Response mw_Response_Reason(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(value) GenValue p_cause
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {reason := mw_Reason(p_cause)}
- }
-
- template(present) Response mw_Response_RecordRoute(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template RecordRoute p_recordRoute
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {recordRoute := p_recordRoute}
- }
-
- template(present) Response mw_Response_Via(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) Via p_via := ?
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {via := p_via}
- }
-
- template(present) Response mw_Response_Contact(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template Contact p_contact
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {contact := p_contact}
- }
-
- template(present) Response mw_Response_AlertInfo(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template AlertInfo p_alertInfo
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {alertInfo := p_alertInfo}
- }
-
- template(present) Response mw_Response_HistoryInfo(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template HistoryInfo p_historyInfo
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {historyInfo := p_historyInfo}
- }
-
- template(present) Response mw_Response_messageBody(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template Require p_require,
- template MessageBody p_mb
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {require := p_require},
- messageBody := p_mb
- }
-
- template(present) Response mw_Response_Require(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template Require p_require
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {require := p_require}
- }
-
- template(present) Response mw_Response_Require_ifpresent(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template(present) Require p_require
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {require := p_require ifpresent}
- }
-
- template(present) Response mw_Response_Supported(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq,
- template Supported p_supported
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {supported := p_supported}
- }
-
- template(present) Response mw_Response_UserToUser(
- template(present) StatusLine p_statusLine := ?,
- template CallId p_callId,
- template CSeq p_cSeq
- ) modifies mw_Response_Base := {
- statusLine := mw_statusLine(p_statusLine.statusCode, ?),
- msgHeader := {userToUser := ?}
- }
-
-
- } //* end group response_receive
-
-
- } //* end group modified_templates
-
-
- } //* end group MessageTemplates
-
- group SDP_Templates {
-
- group SDP_Messages {
-
- group base_templates {
-
- template(value) SDP_Message m_SDP_base := {
- protocol_version := 0, //* v=0
- origin := {
- user_name := PX_SIP_SDP_USER_NAME,
- session_id := PX_SIP_SDP_SESSION_ID,
- session_version := "0",
- net_type := c_in,
- addr_type := c_ip4,
- addr := ""
- },
- //* o=voicesession 12345 12345 IN IP4 172.27.1.219
- session_name := "Voice Session", //* s=Voice Session
- information := omit,
- uri := omit,
- emails := omit,
- phone_numbers := omit,
- connection := omit,
- bandwidth := omit,
- times := {
- {
- time_field := {"0", "0"},
- time_repeat := omit
- }
- }, //* t=0 0
- timezone_adjustments := omit,
- key := omit,
- attributes := omit,
- media_list := omit
- }
-
- template(value) SDP_Message m_SDP(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile
- ) modifies m_SDP_base := {
- origin := {
- addr := p_userprofile.contactIpaddr
- },
- //* o=voicesession 12345 12345 IN IP4 172.27.1.219
- connection := {
- net_type := c_in,
- addr_type := c_ip4,
- conn_addr := {
- addr := p_userprofile.bearerIpaddr,
- ttl := omit,
- num_of_addr := omit
- }
- }, //* c=IN
- //* IP4
- //* 172.27.1.219
- media_list := {p_media}
- }
-
- template(value) SDP_Message m_SDP_mediaList(
- template(value) SDP_media_desc_list p_media_list,
- template(value) SipUserProfile p_userprofile
- ) modifies m_SDP_base := {
- origin := {
- addr := p_userprofile.contactIpaddr
- },
- //* o=voicesession 12345 12345 IN IP4 172.27.1.219
- connection := {
- net_type := c_in,
- addr_type := c_ip4,
- conn_addr := {
- addr := p_userprofile.bearerIpaddr,
- ttl := omit,
- num_of_addr := omit
- }
- }, //* c=IN
- //* IP4
- //* 172.27.1.219
- media_list := p_media_list
- }
-
- template(value) SDP_Message m_SDP_media_attr_preconditions(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile,
- template(value) SDP_attribute_list p_attribute_list
- ) modifies m_SDP := {
- media_list := {
- {
- media_field := {
- media := c_audio,
- ports := {
- port_number := 8500,
- num_of_ports := omit
- },
- transport := c_rtpAvp,
- fmts := {"0"}
- }, //* m=audio
- //* 8500
- //* RTP/AVP
- //* 0
- information := omit,
- connections := omit,
- bandwidth := omit,
- key := omit,
- attributes := p_attribute_list
- }
- }
- }
-
- template(value) SDP_Message m_SDP_attribute(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile,
- template(value) SDP_attribute p_loc_attribute
- ) modifies m_SDP := {
- attributes := {p_loc_attribute}
- }
-
- template(present) SDP_Message mw_SDP := {
- protocol_version := 0, //* v=0
- origin := ?,
- session_name := ?,
- information := omit,
- uri := omit,
- emails := omit,
- phone_numbers := omit,
- connection := ?,
- bandwidth := omit,
- times := {
- {
- time_field := {"0", "0"},
- time_repeat := omit
- }
- }, //* t=0 0
- timezone_adjustments := omit,
- key := omit,
- attributes := omit,
- media_list := ?
- }
-
-
- } //* end group base_templates
-
- group modified_templates {
- template(value) SDP_Message m_SDP_bandwidth(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile
- ) modifies m_SDP := {
- bandwidth := {
- {
- PX_SIP_SDP_B_MODIFIER,
- PX_SIP_SDP_B_BANDWIDTH
- }
- }
- }
-
- template(value) SDP_Message m_SDP_unacceptable(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile
- ) modifies m_SDP := {
- protocol_version := 1, //* v=1 unacceptable version of
- //* SDP
- bandwidth := {
- {
- PX_SIP_SDP_B_MODIFIER,
- PX_SIP_SDP_B_BANDWIDTH
- }
- }
- }
-
- template(value) SDP_Message m_SDP_encrypted(
- template(value) SDP_media_desc p_media,
- template(value) SipUserProfile p_userprofile
- ) modifies m_SDP := {
- bandwidth := {
- {
- PX_SIP_SDP_B_MODIFIER,
- PX_SIP_SDP_B_BANDWIDTH
- }
- },
- key := {
- method := "base64", // prompt
- key := "blablabla"
- }
- }
-
-
- } //* end group modified_templates
-
-
- } //* end group SDP_Messages
-
- group SDP_Fields {
-
- template(value) SDP_media_desc m_media(template(value) SDP_media_field p_mf) := {
- media_field := p_mf,
- information := omit,
- connections := omit,
- bandwidth := omit,
- key := omit,
- attributes := omit
- }
-
- template(value) SDP_media_desc m_mediaFieldBandwdthAttributes(
- template(value) SDP_media_field p_mf,
- template(omit) SDP_bandwidth_list p_bw_l := omit,
- template(omit) SDP_attribute_list p_attributes := omit
- ) := {
- media_field := p_mf,
- information := omit,
- connections := omit,
- bandwidth := p_bw_l,
- key := omit,
- attributes := p_attributes
- }
-
- template(value) SDP_media_desc m_media_dynPT(
- template(value) charstring p_payloadType,
- template(value) charstring p_encoding,
- template(value) charstring p_clockrate,
- template(omit) charstring p_parameters := omit,
- template(omit) SDP_key p_sdpKey := omit
- ) := {
- media_field := {
- media := c_audio, //* "audio",
- ports := {
- port_number := 8500,
- num_of_ports := omit
- },
- transport := c_rtpAvp, //* "RTP/AVP",
- fmts := { p_payloadType }
- }, //* m=audio 8500 RTP/AVP 8
- information := omit,
- connections := omit,
- bandwidth := omit,
- key := p_sdpKey,
- attributes := {{rtpmap := {
- payload_type := p_payloadType,
- codec := {
- encoding := p_encoding,
- clockrate := p_clockrate,
- parameters := p_parameters
- }
- }
- }} //* a=rtpmap:8 PCMA/8000
- }
-
- /**
- * @desc send template with specific media transport and attribute values
- * @param p_mediaAttribute parameter for SDP media transport supported by the IUT
- * former PX_SIP_SDP_media_transport
- * @param p_mediaAttribute parameter for SDP media attribute supported by the IUT,
- * former PX_SIP_SDP_media_attribute_Exp & PX_SIP_SDP_media_transport_Exp
- * @param p_mediaType parameter for SDP media type supported by the IUT,
- * former PX_SIP_SDP_MEDIA_VIDEO
- */
- template(value) SDP_media_desc m_media_unsupported(
- template(value) charstring p_mediaTransport,
- template(value) SDP_attribute_rtpmap p_mediaAttribute,
- template(value) charstring p_mediaType := "video"
- ) := {
- media_field := {
- media := p_mediaType,
- ports := {
- port_number := 11500,
- num_of_ports := omit
- },
- transport := p_mediaTransport,
- fmts := {"99"}
- }, //* m=audio 8500 RTP/AVP 0
- information := omit,
- connections := omit,
- bandwidth := omit,
- key := omit,
- attributes := {{rtpmap := p_mediaAttribute}}
- }
-
- template(value) SDP_bandwidth m_bandwidth(
- template(value) charstring p_loc_m,
- template(value) integer p_loc_b
- ) := {
- modifier := p_loc_m,
- bandwidth := p_loc_b
- }
-
- template(value) SDP_bandwidth m_bandwidth_as_64 := {
- modifier := "AS",
- bandwidth := 64
- }
-
- template(present) SDP_bandwidth mw_bandwidth_rs := {
- modifier := "RS",
- bandwidth := ?
- }
-
- template(present) SDP_bandwidth mw_bandwidth_rr := {
- modifier := "RR",
- bandwidth := ?
- }
-
- template(value) SDP_media_field m_media_field(
- template(value) charstring p_media,
- template(value) integer p_portNum,
- template(value) charstring p_transport,
- template(value) charstring p_fmts
- ) := {
- media := p_media,
- ports := {
- port_number := p_portNum,
- num_of_ports := omit
- },
- transport := p_transport,
- fmts := {p_fmts}
- }
-
- template(present) SDP_media_field mw_media_PCMU := {
- media := c_audio,
- ports := {
- port_number := ?,
- num_of_ports := *
- },
- transport := c_rtpAvp,
- fmts := {"0"}
- }
-
- template(present) SDP_media_field mw_media_PCMA := {
- media := c_audio,
- ports := {
- port_number := 8500,
- num_of_ports := omit
- },
- transport := c_rtpAvp,
- fmts := {"8"}
- }
-
- template(present) SDP_media_field mw_media_PCMA_U_DPT := {
- media := c_audio,
- ports := {
- port_number := ?,
- num_of_ports := *
- },
- transport := c_rtpAvp,
- fmts := {*}
- }
-
- template(present) SDP_media_field mw_media_T38 := {
- media := c_image,
- ports := {
- port_number := ?,
- num_of_ports := *
- },
- transport := pattern "*ptl", //* udptl,tcptl
- fmts := {"t38"}
- }
-
- template(present) SDP_media_field mw_media_G722 := {
- media := c_audio,
- ports := {
- port_number := ?,
- num_of_ports := *
- },
- transport := "RTP/AVP",
- fmts := {"9"}
- }
-
- template(present) SDP_media_field mw_media_AMR_DPT := {
- media := c_audio,
- ports := {
- port_number := ?,
- num_of_ports := *
- },
- transport := c_rtpAvp,
- fmts := {*}
- }
-
- template(present) SDP_media_field mw_media_MSRP := {
- media := c_msrp,
- ports := {
- port_number := ?,
- num_of_ports := omit
- },
- transport := c_msrpTcp,
- fmts := {*}
- }
-
- template(value) SDP_attribute m_attribute_sendonly := {sendonly := {}}
- template(present) SDP_attribute mw_attribute_sendonly := {sendonly := {}}
- // MRO
- template(value) SDP_attribute m_attribute_recvonly := {recvonly := {}}
- template(present) SDP_attribute mw_attribute_recvonly := {recvonly := {}}
- // MRO
- template(value) SDP_attribute m_attribute_sendrecv := {sendrecv := {}}
- template(present) SDP_attribute mw_attribute_sendrecv := {sendrecv := {}}
- // MRO
- template(value) SDP_attribute m_attribute_inactive := {inactive := {}}
- template(present) SDP_attribute mw_attribute_inactive := {inactive := {}}
- // MRO
- template(present) SDP_attribute mw_attribute_sendonly_inactive := (mw_attribute_sendonly, mw_attribute_inactive);
- template SDP_attribute mw_attribute_sendrecv_recvonly_omit := (mw_attribute_sendrecv, mw_attribute_recvonly, omit);
- template(value) SDP_attribute m_attribute_base(
- template(value) SDP_attribute_rtpmap p_attr_value
- ) := {
- rtpmap := p_attr_value
- }
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_AMR
- */
- template(value) SDP_attribute m_attribute_AMR_DPT(//"0 AMR"
- template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"AMR", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_CLE
- */
- template(value) SDP_attribute m_attribute_CLEARMODE_DPT(//"0 CLEARMODE/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"CLEARMODE", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_G222
- */
- template(value) SDP_attribute m_attribute_G722(//"9 G722/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"9", {"G722", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_PCMU
- */
- template(value) SDP_attribute m_attribute_PCMU(//"0 PCMU/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMU", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_PCMU
- */
- template(value) SDP_attribute m_attribute_PCMU_DPT(//"0 PCMU/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMU", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_PCMA
- */
- template(value) SDP_attribute m_attribute_PCMA(//"8 PCMA/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"8", {"PCMA", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
- /**
- * @desc send template for a specific media attribute
- * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_PCMA
- */
- template(value) SDP_attribute m_attribute_PCMA_DPT(//"0 PCMA/8000"
- template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMA", "8000", omit}}
- ) := m_attribute_base(p_attr_value);
-
- template(present) SDP_attribute mw_attribute_T38 := {
- unknown := {
- name := ?,
- attr_value := pattern "*t38*"
- }
- }
-
- template(value) SDP_attribute m_attribute_curr(
- template(value) charstring p_preconditionType,
- template(value) charstring p_statusType,
- template(value) charstring p_direction
- ) := {
- curr := {
- preconditionType := p_preconditionType,
- statusType := p_statusType,
- direction := p_direction
- }
- }
-
- template(present) SDP_attribute mw_attribute_curr := {curr := ?}
-
- template(value) SDP_attribute m_attribute_des(
- template(value) charstring p_preconditionType,
- template(value) charstring p_strength,
- template(value) charstring p_statusType,
- template(value) charstring p_direction
- ) := {
- des := {
- preconditionType := p_preconditionType,
- strength := p_strength,
- statusType := p_statusType,
- direction := p_direction
- }
- }
-
- template(present) SDP_attribute mw_attribute_des := {des := ?}
-
- template(value) SDP_attribute m_attribute_conf(
- template(value) charstring p_preconditionType,
- template(value) charstring p_statusType,
- template(value) charstring p_direction
- ) := {
- conf := {
- preconditionType := p_preconditionType,
- statusType := p_statusType,
- direction := p_direction
- }
- }
-
-
- } //* end group SDP_Fields
-
-
- } //* end group SDP_Templates
-
- group SimpleMsgSummary_Templates {
-
- template(value) SimpleMsgSummary m_SMS(
- template(value) Msg_summary_line_list p_summaryLineList,
- template(value) charstring p_uri
- ) := {
- msg_status_line := m_msgStatusLine_yes,
- msg_account := m_msgAccount(p_uri),
- msg_summary_line_list := p_summaryLineList,
- opt_msg_headers := omit
- }
-
- template(present) SimpleMsgSummary mw_SMS := {
- msg_status_line := ?,
- msg_account := *,
- msg_summary_line_list := *,
- opt_msg_headers := *
- }
-
- template(present) SimpleMsgSummary mw_SMS_yes modifies mw_SMS := {
- msg_status_line := mw_msgStatusLine_yes
- }
-
- template(present) SimpleMsgSummary mw_SMS_yesUri modifies mw_SMS_yes := {
- msg_account := mw_msgAccount
- }
-
- template(present) SimpleMsgSummary mw_SMS_yesVoice modifies mw_SMS_yes := {
- msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)}
- }
-
- template(present) SimpleMsgSummary mw_SMS_yesUriVoice modifies mw_SMS_yesUri := {
- msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)}
- }
-
- template(value) Msg_status_line m_msgStatusLine_yes := {
- msg_type := c_messageWaiting,
- msg_status := "yes"
- }
-
- template(present) Msg_status_line mw_msgStatusLine_yes := {
- msg_type := c_messageWaiting,
- msg_status := "yes"
- }
-
- template(value) Msg_account m_msgAccount(
- template(value) charstring p_uri
- ) := {
- msg_type_account := c_messageAccount,
- account_URI :=
- p_uri // m_SipUrl_NumberHostParam(PX_IMS_SUT_UE2_PUBLIC_USER,PX_IMS_SUT_UE2_HOME_DOMAIN,omit)
- }
-
- template(present) Msg_account mw_msgAccount := {
- msg_type_account := c_messageAccount,
- account_URI := ?
- }
-
- template(value) Msg_summary_line m_msgSummaryLine(
- template(value) charstring p_msgContexClass,
- template(value) charstring p_msgs,
- template(value) charstring p_urgent_msgs
- ) := {
- msg_context_class := p_msgContexClass,
- msgs := p_msgs,
- urgent_msgs := p_urgent_msgs
- }
-
- template(present) Msg_summary_line mw_msgSummaryLine(
- template(present) charstring p_msgContexClass := ?
- ) := {
- msg_context_class := p_msgContexClass,
- msgs := ?,
- urgent_msgs := *
- }
-
-
- } // end group Templates_SMS
-
- group MessageBodies {
-
- template(value) MessageBody m_MBody_SDP(
- template(value) SDP_Message p_SDP
- ) := {
- sdpMessageBody := p_SDP
- }
-
- template(value) MessageBody m_MBody_XML(
- template(value) XmlBody p_xmlBody
- ) := {
- xmlBody := p_xmlBody
- }
-
- template(value) MessageBody m_mBody_SMS(
- template(value) SimpleMsgSummary p_SMS
- ) := {
- simpleMsgSummary := p_SMS
- }
-
- template(value) MessageBody m_MBody_longPlainText := {textplain := c_longMessageContent_1300Bytes}
-
- template(value) MessageBody m_mBody_plainText(
- template(value) charstring p_plaitext
- ) := {
- textplain := p_plaitext
- }
-
- template(value) MessageBody m_MBody_sipfrag(
- template(value) charstring p_sipfrag
- ) := {
- sipfrag := p_sipfrag
- }
-
- template(value) MessageBody m_MBody_MIMESdpXml(
- template(value) SDP_Message p_sdp,
- template(value) XmlBody p_xmlBody
- ) := {
- mimeMessageBody := {
- boundary := "--" & PX_SIP_MIME_BOUNDARY,
- mimeEncapsulatedList := {
- {
- content_type := c_sdpApplication,
- content_disposition := omit,
- mime_encapsulated_part := {sdpMessageBody := p_sdp}
- },
- {
- content_type := c_ims3gppCwApplication,
- content_disposition := omit,
- mime_encapsulated_part := {xmlBody := p_xmlBody}
- }
- }
- }
- }
-
- template(value) MessageBody m_MBody_MIMESdpEncrypted(
- template(value) SDP_Message p_sdp
- ) := {
- mimeMessageBody := {
- boundary := "--" & PX_SIP_MIME_BOUNDARY,
- mimeEncapsulatedList := {
- {
- content_type := "application/sdp",
- content_disposition := "attachment;handling=required;filename=smime.p7",
- mime_encapsulated_part := {sdpMessageBody := p_sdp}
- }
- }
- }
- }
-
- template(present) MessageBody mw_MBody_SDP(
- template(present) SDP_Message p_SDP := ?
- ) := {
- sdpMessageBody := p_SDP
- }
-
- template(present) MessageBody mw_MBody_XML(
- template(present) XmlBody p_xmlBody := ?
- ) := {
- xmlBody := p_xmlBody
- }
-
- template(present) MessageBody mw_mBody_SMS(
- template(present) SimpleMsgSummary p_SMS := ?
- ) := {
- simpleMsgSummary := p_SMS
- }
-
- template(present) MessageBody mw_MBody_MIMESdpXml(
- template(present) SDP_Message p_sdp := ?,
- template(present) XmlBody p_xmlBody := ?
- ) := {
- mimeMessageBody := {
- boundary := ?,
- mimeEncapsulatedList := {
- {
- content_type := ?,
- content_disposition := *,
- mime_encapsulated_part := {sdpMessageBody := p_sdp}
- },
- {
- content_type := ?,
- content_disposition := *,
- mime_encapsulated_part := {xmlBody := p_xmlBody}
- }
- }
- }
- }
-
- template(present) MessageBody mw_MBody_MIME_Ims3gpp(
- template charstring p_disposition,
- template(present) Ims_3gpp p_ims3gpp := ?
- ) := {
- mimeMessageBody := {
- boundary := ?,
- mimeEncapsulatedList := {
- *,
- {
- content_type := c_ims3gppApplication,
- content_disposition := p_disposition,
- mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}}
- },
- *
- }
- }
- }
-
- template(present) MessageBody mw_MBody_MIME_Ims3gppCW(
- template charstring p_disposition,
- template(present) Ims_3gpp p_ims3gpp := ?
- ) := {
- mimeMessageBody := {
- boundary := ?,
- mimeEncapsulatedList := {
- *,
- {
- content_type := c_ims3gppCwApplication,
- content_disposition := p_disposition,
- mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}}
- },
- *
- }
- }
- }
-
- }
- /*
- *
- * @desc group TemplatePreparationFunctions contain functions which are used for templates
- */
- group TemplatePreparationFunctions {
-
- group MessageBody_Calculation {
-
- /**
- * @desc Calculation of Message Body length
- * @param p_mb_par contain message body part
- * @return message body length
- */
- function f_MessageBodyLength(
- template(value) MessageBody p_mb_par
- ) return integer {
-
- var integer v_result := 0;
- if (PX_MB_LENGTH_FROM_ENCVAL) {
- // by default it is set to true
- // in case the codec encodes the variant selector, this
- // needs to be changed to ischosen...
- v_result := lengthof(encvalue(p_mb_par)) / 8; // length
- // in
- // bytes,
- // let get
- // length
- // of
- // encoded
- // value
- }
- else {
-
- // assume SDP_Message ONLY in the message body
- if (ischosen(p_mb_par.sdpMessageBody)) {
- v_result := f_SDPlength(valueof(p_mb_par.sdpMessageBody));
- }
-
- // assume XML_Body ONLY in the message body
- if (ischosen(p_mb_par.xmlBody)) {
- v_result := f_XMLBody_Length(valueof(p_mb_par.xmlBody), PX_USE_FX_FOR_XML_LENGTH);
- }
-
- // assume simpleMsgSummary_Body ONLY in the message body
- if (ischosen(p_mb_par.simpleMsgSummary)) {
- v_result := f_simpleMsgSummaryBody_Length(valueof(p_mb_par.simpleMsgSummary));
- }
-
- // assume MIME_Message in the message body
- if (ischosen(p_mb_par.mimeMessageBody)) {
- v_result := f_MIMElength(valueof(p_mb_par.mimeMessageBody));
- }
-
- // assume sipfrag in the message body
- if (ischosen(p_mb_par.sipfrag)) {
- v_result := f_TextPlainLength(p_mb_par); // same
- // function
- // due to
- // same
- // type
- // with
- // textplain
- }
-
- // assume textplain in the message body
- if (ischosen(p_mb_par.textplain)) {
- v_result := f_TextPlainLength(p_mb_par);
- }
- }
-
- return v_result;
- }
-
-
- group SDP_Len_calculation {
- /**
- * @desc Calculation of SDP length
- * @param p_mb contain sdp message
- * @return sdp_lenght
- */
- function f_SDPlength(
- SDP_Message p_mb
- ) return integer {
- var integer i, j, k, v_len_con0, v_len_con1, v_len_con2, v_len_attr;
- var integer v_result := 2;
- //* due to empty line beginning of message body
- var charstring v_auxstring;
-
- v_result := 2 + c_CRlen + lengthof(int2str(p_mb.protocol_version)); //* "v="
- v_auxstring := p_mb.origin.user_name & " " & p_mb.origin.session_id & " " & p_mb.origin.session_version & " " & p_mb.origin.net_type & " " & p_mb.origin.addr_type & " " & p_mb.origin.addr;
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "o="
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.session_name); //* "s="
- if (isvalue(p_mb.information)) {
- v_auxstring := valueof(p_mb.information);
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring);
- } //* "i= "
- if (isvalue(p_mb.uri)) {
- v_auxstring := valueof(p_mb.uri);
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring);
- } //* "u="
- if (isvalue(p_mb.emails)) {
- for (i := 0; i < lengthof(p_mb.emails); i := i + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.emails[i].addr_or_phone); //* "e="
- if (isvalue(p_mb.emails[i].disp_name)) {
- v_auxstring := valueof(p_mb.emails[i].disp_name);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- }
-
- if (isvalue(p_mb.phone_numbers)) {
- for (i := 0; i < lengthof(p_mb.phone_numbers); i := i + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.phone_numbers[i].addr_or_phone); //* "p=
- //* "
- if (isvalue(p_mb.phone_numbers[i].disp_name)) {
- v_auxstring := valueof(p_mb.phone_numbers[i].disp_name);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- }
-
- if (isvalue(p_mb.connection)) {
- v_len_con0 := f_SDPlength_connection(valueof(p_mb.connection));
- v_result := v_result + v_len_con0;
- } //* "c="
- if (isvalue(p_mb.bandwidth)) {
- for (i := 0; i < lengthof(p_mb.bandwidth); i := i + 1) {
- //* "b= "
- v_auxstring := p_mb.bandwidth[i].modifier & " ";
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring) + lengthof(int2str(p_mb.bandwidth[i].bandwidth));
- }
- }
-
- for (i := 0; i < lengthof(p_mb.times); i := i + 1) {
- v_auxstring := p_mb.times[i].time_field.start_time & " " & p_mb.times[i].time_field.stop_time;
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "t="
- if (isvalue(p_mb.times[i].time_repeat)) {
- for (j := 0; j < lengthof(p_mb.times[i].time_repeat); j := j + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(int2str(p_mb.times[i].time_repeat[j].repeat_interval.time)); //* "r="
- if (isvalue(p_mb.times[i].time_repeat[j].repeat_interval.unit)) {
- v_auxstring := valueof(p_mb.times[i].time_repeat[j].repeat_interval.unit);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
-
- v_result := v_result + 1 + lengthof(int2str(p_mb.times[i].time_repeat[j].active.time));
- if (isvalue(p_mb.times[i].time_repeat[j].active.unit)) {
- v_auxstring := valueof(p_mb.times[i].time_repeat[j].active.unit);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
-
- for (k := 0; k < lengthof(p_mb.times[i].time_repeat[j].offsets); k := k + 1) {
- v_result := v_result + 1 + lengthof(int2str(p_mb.times[i].time_repeat[j].offsets[k].time));
- if (isvalue(p_mb.times[i].time_repeat[j].offsets[k].unit)) {
- v_auxstring := valueof(p_mb.times[i].time_repeat[j].offsets[k].unit);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- }
- }
- }
-
- if (isvalue(p_mb.timezone_adjustments)) {
- log("*** " & __SCOPE__ & ": INFO: timezone adjustments have not been considered in SDP length calculation yet ***");
- } //* "z="
- if (isvalue(p_mb.key)) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.key.method); //* "k=
- //* "
- if (isvalue(p_mb.key.key)) {
- v_auxstring := valueof(p_mb.key.key);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- if (isvalue(p_mb.attributes)) {
- for (i := 0; i < lengthof(p_mb.attributes); i := i + 1) {
-
-
- //* "a= "
- v_len_con1 := f_SDPlength_attribute(p_mb.attributes[i]);
- v_result := v_result + v_len_con1;
- }
- } //* "a="
- if (isvalue(p_mb.media_list)) {
- for (i := 0; i < lengthof(p_mb.media_list); i := i + 1) {
- //* "m= "
- //* for each media_field
- //* log("p_mb.media_list[i ] ",p_mb.media_list[i
- //* ] );
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.media_list[i].media_field.media) + 1 + lengthof(int2str(p_mb.media_list[i].media_field.ports.port_number));
-
-
- if (isvalue(p_mb.media_list[i].media_field.ports.num_of_ports)) {
- v_result := v_result + 1 + lengthof(int2str(valueof(p_mb.media_list[i].media_field.ports.num_of_ports)));
- }
- v_result := v_result + 1 + lengthof(p_mb.media_list[i].media_field.transport);
- for (j := 0; j < lengthof(p_mb.media_list[i].media_field.fmts); j := j + 1) {
- v_result := v_result + 1 + lengthof(p_mb.media_list[i].media_field.fmts[j]);
- }
-
- if (isvalue(p_mb.media_list[i].information)) {
- v_auxstring := valueof(p_mb.media_list[i].information);
- v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "i= "
- }
- if (isvalue(p_mb.media_list[i].connections)) {
- for (j := 0; j < lengthof(p_mb.media_list[i].connections); j := j + 1) {
- v_len_con2 := f_SDPlength_connection(p_mb.media_list[i].connections[j]);
- v_result := v_result + v_len_con2;
- } //* end for
- }
- if (isvalue(p_mb.media_list[i].bandwidth)) {
- //* "b= "
- for (j := 0; j < lengthof(p_mb.media_list[i].bandwidth); j := j + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.media_list[i].bandwidth[j].modifier) + 1 + lengthof(int2str(p_mb.media_list[i].bandwidth[j].bandwidth));
- } //* end for
- }
- if (isvalue(p_mb.media_list[i].key)) {
- //* "k= "
- v_result := v_result + 1 + lengthof(p_mb.media_list[i].key.method);
- if (isvalue(p_mb.media_list[i].key.key)) {
- v_auxstring := valueof(p_mb.media_list[i].key.key);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- if (isvalue(p_mb.media_list[i].attributes)) {
- for (j := 0; j < lengthof(p_mb.media_list[i].attributes); j := j + 1) {
-
- //* "a= "
- v_len_attr := f_SDPlength_attribute(p_mb.media_list[i].attributes[j]);
- v_result := v_result + v_len_attr;
- } //* end for j
- }
- } //* end for i
- } //* end if media_list
- return v_result;
- }
- //* end function f_SDPlength
- function f_SDPlength_connection(
- SDP_connection p_element
- ) return integer {
- //* "c="
- var integer v_result := 0;
- v_result := v_result + 2 + c_CRlen + lengthof(p_element.net_type & " " & p_element.addr_type & " " & p_element.conn_addr.addr);
- if (isvalue(p_element.conn_addr.ttl) and p_element.conn_addr.ttl > 0) {
- v_result := v_result + 1 + lengthof(int2str(valueof(p_element.conn_addr.ttl)));
- }
- if (isvalue(p_element.conn_addr.num_of_addr) and p_element.conn_addr.num_of_addr > 0) {
- v_result := v_result + 1 + lengthof(int2str(valueof(p_element.conn_addr.num_of_addr)));
- }
- return v_result;
- } //* f_SDPlength_connection
-
- function f_SDPlength_attribute(
- SDP_attribute p_element
- ) return integer {
- //* "a="
- var integer v_result := 0;
- if (ischosen(p_element.cat)) {
- v_result := v_result + 2 + c_CRlen + lengthof("cat:" & p_element.cat.attr_value);
- }
- if (ischosen(p_element.keywds)) {
- v_result := v_result + 2 + c_CRlen + lengthof("keywds:" & p_element.keywds.attr_value);
- }
- if (ischosen(p_element.tool)) {
- v_result := v_result + 2 + c_CRlen + lengthof("tool:" & p_element.tool.attr_value);
- }
- if (ischosen(p_element.ptime)) {
- v_result := v_result + 2 + c_CRlen + lengthof("ptime:" & p_element.ptime.attr_value);
- }
- if (ischosen(p_element.recvonly)) {
- v_result := v_result + c_CRlen + lengthof("recvonly");
- }
- if (ischosen(p_element.sendrecv)) {
- v_result := v_result + c_CRlen + lengthof("sendrecv");
- }
- if (ischosen(p_element.sendonly)) {
- v_result := v_result + c_CRlen + lengthof("sendonly");
- }
- if (ischosen(p_element.inactive)) {
- v_result := v_result + c_CRlen + lengthof("inactive");
- }
- if (ischosen(p_element.orient)) {
- v_result := v_result + 2 + c_CRlen + lengthof("orient:" & p_element.orient.attr_value);
- }
- if (ischosen(p_element.sdp_type)) {
- v_result := v_result + 2 + c_CRlen + lengthof("type:" & p_element.sdp_type.attr_value);
- }
- if (ischosen(p_element.charset)) {
- v_result := v_result + 2 + c_CRlen + lengthof("charset" & p_element.charset.attr_value);
- }
- if (ischosen(p_element.sdplang)) {
- v_result := v_result + 2 + c_CRlen + lengthof("sdplang:" & p_element.sdplang.attr_value);
- }
- if (ischosen(p_element.lang)) {
- v_result := v_result + 2 + c_CRlen + lengthof("lang:" & p_element.lang.attr_value);
- }
- if (ischosen(p_element.framerate)) {
- v_result := v_result + 2 + c_CRlen + lengthof("framerate:" & p_element.framerate.attr_value);
- }
- if (ischosen(p_element.quality)) {
- v_result := v_result + 2 + c_CRlen + lengthof("quality:" & p_element.quality.attr_value);
- }
- if (ischosen(p_element.fmtp)) {
- v_result := v_result + 2 + c_CRlen + lengthof("fmtp:" & p_element.fmtp.format & " " & f_fmtpparams_to_charstring(p_element.fmtp.params));
- }
- if (ischosen(p_element.curr)) {
- v_result := v_result + 2 + c_CRlen + lengthof("curr:" & p_element.curr.preconditionType & " " & p_element.curr.statusType & " " & p_element.curr.direction);
- }
- if (ischosen(p_element.des)) {
- v_result := v_result + 2 + c_CRlen + lengthof("des:" & p_element.des.preconditionType & " " & p_element.des.strength & " " & p_element.des.statusType & " " & p_element.des.direction);
- }
- if (ischosen(p_element.conf)) {
- v_result := v_result + 2 + c_CRlen + lengthof("conf:" & p_element.conf.preconditionType & " " & p_element.conf.statusType & " " & p_element.conf.direction);
- }
- if (ischosen(p_element.rtpmap)) {
- v_result := v_result + 2 + c_CRlen + lengthof("rtpmap:" & f_rtpmap_to_charstring(p_element.rtpmap));
- }
- if (ischosen(p_element.rtcp)) {
- v_result := v_result + 2 + c_CRlen + lengthof("rtcp:" & f_rtcp_to_charstring(p_element.rtcp));
- }
- if (ischosen(p_element.unknown)) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_element.unknown.name);
- if (isvalue(p_element.unknown.attr_value)) {
- v_result := v_result + lengthof(":" & p_element.unknown.attr_value);
- }
- }
- //* log("axr: length attribute=", v_result);
- return v_result;
- } //* f_SDPlength_attribute
-
- function f_fmtpparams_to_charstring(
- SDP_attribute_fmtp_format_specific_params p_params
- ) return charstring {
- var charstring v_result := "";
- if(ischosen(p_params.unstructured)){
- v_result := p_params.unstructured;
- }
- else
- {
- for(var integer v_idx := 0; v_idx < lengthof(p_params.paramList); v_idx := v_idx + 1) {
- if(v_idx != 0)
- {
- v_result := v_result & "; "
- }
- v_result := v_result & p_params.paramList[v_idx].id;
- if(ispresent(p_params.paramList[v_idx].paramValue)){
- if(ischosen(p_params.paramList[v_idx].paramValue.tokenOrHost))
- {
- v_result := v_result & "=" & p_params.paramList[v_idx].paramValue.tokenOrHost;
- }
- else
- {
- v_result := v_result & "=""" & p_params.paramList[v_idx].paramValue.quotedString & """";
- }
- }
- }
- }
- return v_result;
- }
-
- function f_rtpmap_to_charstring(
- SDP_attribute_rtpmap p_rtpmap
- ) return charstring {
- var charstring v_result := "";
- v_result := p_rtpmap.payload_type & " " & p_rtpmap.codec.encoding & "/" & p_rtpmap.codec.clockrate;
- if(ispresent(p_rtpmap.codec.parameters))
- {
- v_result := v_result & "/" & p_rtpmap.codec.parameters;
- }
- return v_result;
- }
-
- function f_rtcp_to_charstring(
- SDP_attribute_rtcp p_rtcp
- ) return charstring {
- var charstring v_result := int2str(p_rtcp.portnumber);
- if(ispresent(p_rtcp.connection))
- {
- v_result := v_result & " " & p_rtcp.connection.net_type & " " & p_rtcp.connection.addr_type & " " & p_rtcp.connection.conn_addr.addr;
- if(ispresent(p_rtcp.connection.conn_addr.ttl))
- {
- v_result := v_result & "/" & int2str(p_rtcp.connection.conn_addr.ttl);
- if(ispresent(p_rtcp.connection.conn_addr.num_of_addr))
- {
- v_result := v_result & "/" & int2str(p_rtcp.connection.conn_addr.num_of_addr);
- }
- }
- }
- return v_result;
- }
-
- } //* group SDPlen_calculation
-
- group XML_Len_calculation {
-
- /**
- * @desc Declaration of external functions to calculate length of message bodies switching of internal or external functions are made by boolean module parameter/PIXIT USE_FX_FOR_XML_LENGTH declared at top of this module
- */
- external function fx_calculateXMLBodyLen(
- XmlBody p_mb
- ) return integer;
-
- /**
- * @desc Calculation of XML body length
- * @param p_mb contain XML body
- * @return xml_length
- */
- function f_XMLBody_Length(
- XmlBody p_mb,
- boolean p_ext_func
- ) return integer {
- var integer v_result := 0;
-
- if (p_ext_func) {
- v_result := fx_calculateXMLBodyLen(p_mb);
- }
- else {
- // assume ConferenceInfo ONLY in the XML message
- // body
- if (ischosen(p_mb.conference)) {
- v_result := f_XMLBody_ConferenceInfo_Length(p_mb.conference);
- }
-
- // assume CUG ONLY in the XML message body
- if (ischosen(p_mb.cug)) {
- v_result := f_XMLBody_Cug_Length(p_mb.cug);
- }
-
- // assume MCID ONLY in the XML message body
- if (ischosen(p_mb.mcid)) {
- v_result := f_XMLBody_Mcid_Length(p_mb.mcid);
- }
-
- // assume CW ONLY in the XML message body
- if (ischosen(p_mb.cw)) {
- v_result := f_XMLBody_Cw_Length(p_mb.cw);
- }
-
- // assume CDIV ONLY in the XML message body
- if (ischosen(p_mb.cdivn)) {
- v_result := f_XMLBody_Cdivn_Length(p_mb.cdivn);
- }
-
- // assume PSTNTransit ONLY in the XML message body
- if (ischosen(p_mb.pstnTransit)) {
- v_result := f_XMLBody_PSTNTransit_Length(p_mb.pstnTransit);
- }
-
- // assume Simservs ONLY in the XML message body
- if (ischosen(p_mb.simservs)) {
- v_result := f_XMLBody_Simservs_Length(p_mb.simservs);
- }
-
- // assume ResourceLists ONLY in the XML message body
- if (ischosen(p_mb.resourceLists)) {
- v_result := f_XMLBody_ResourceList_Length(p_mb.resourceLists);
- }
-
- // assume Ims3GPP ONLY in the XML message body
- if (ischosen(p_mb.ims3gpp)) {
- v_result := f_XMLBody_Ims3GPP_Length(p_mb.ims3gpp);
- }
- /**
- * Add aditional checks regarding to new variants, also implement appropriate function for calculation
- */
- }
- return v_result;
- } //* f_XMLBodyLength
-
- group XMLBodies_calculation {
-
- /**
- * @desc Calculation of XML ConferenceInfo element length
- * @param p_mb contain XML ConfInfo body
- * @return xml_length
- */
- function f_XMLBody_ConferenceInfo_Length(
- template(value) Conference_type p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_ConferenceInfo_Length
-
- /**
- * @desc Calculation of XML CUG element length
- * @param p_mb contain XML CUG body
- * @return xml_length
- */
- function f_XMLBody_Cug_Length(
- template(value) Cug p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_Cug_Length
-
- /**
- * @desc Calculation of XML MCID element length
- * @param p_mb contain XML MCID body
- * @return xml_length
- */
- function f_XMLBody_Mcid_Length(
- template(value) Mcid p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
-
- return v_result;
- } //* f_XMLBody_Mcid_Length
-
- /**
- * @desc Calculation of XML CW element length
- * @param p_mb contain XML CW body
- * @return xml_length
- */
- function f_XMLBody_Cw_Length(
- template(value) Ims_cw p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
-
- return v_result;
- } //* f_XMLBody_Cw_Length
-
- /**
- * @desc Calculation of XML CDIVN element length
- * @param p_mb contain XML CDIVN body
- * @return xml_length
- */
- function f_XMLBody_Cdivn_Length(
- template(value) Comm_div_info_type p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
-
- return v_result;
- } //* f_XMLBody_Cdivn_Length
-
- /**
- * @desc Calculation of XML PSTNTransit element length
- * @param p_mb contain XML PSTNTransit body
- * @return xml_length
- */
- function f_XMLBody_PSTNTransit_Length(
- template(value) PSTN_transit p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_PSTNTransit_Length
-
- /**
- * @desc Calculation of XML Simservs element length
- * @param p_mb contain XML Simservs body
- * @return xml_length
- */
- function f_XMLBody_Simservs_Length(
- template(value) Simservs p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_Simservs_Length
-
- /**
- * @desc Calculation of XML ResourceList length
- * @param p_mb contain XML ResourceList body
- * @return xml_length
- */
- function f_XMLBody_ResourceList_Length(
- template(value) Resource_lists p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_ResourceList_Length
-
- /**
- * @desc Calculation of XML Ims3GPP length
- * @param p_mb contain XML Ims3GPP body
- * @return xml_length
- */
- function f_XMLBody_Ims3GPP_Length(
- template(value) TIMS3GPP p_mb
- ) return integer {
- var integer v_result := lengthof(encvalue(p_mb)) / 8;
- return v_result;
- } //* f_XMLBody_Ims3GPP_Length
-
-
- } //* XMLBodies_calculation
-
-
- } //* group XMLlen_calculation
-
- group simpleMsgSummaryBody_Length {
-
- function f_simpleMsgSummaryBody_Length(
- SimpleMsgSummary p_mb
- ) return integer {
- var integer i;
- var integer v_result := 2;
-
-
- //* due to empty line beginning of message body
- var charstring v_auxstring;
-
- v_result := 2 + lengthof(p_mb.msg_status_line.msg_type) + 2 + lengthof(p_mb.msg_status_line.msg_status) + c_CRlen; //* "Message-Waiting:
- //* yes"
- if (isvalue(p_mb.msg_account))
- //* "Message-Account"
- {
- v_result := v_result + 2 + lengthof(p_mb.msg_account.msg_type_account) + 2 + lengthof(p_mb.msg_account.account_URI) + c_CRlen;
- }
- if (isvalue(p_mb.msg_summary_line_list)) {
- for (i := 0; i < lengthof(p_mb.msg_summary_line_list); i := i + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.msg_summary_line_list[i].msg_context_class) + 2 + lengthof(p_mb.msg_summary_line_list[i].msgs);
- if (isvalue(p_mb.msg_summary_line_list[i].urgent_msgs)) {
- v_auxstring := valueof(p_mb.msg_summary_line_list[i].urgent_msgs);
- v_result := v_result + 1 + lengthof(v_auxstring);
- }
- }
- }
- if (isvalue(p_mb.opt_msg_headers)) {
- for (i := 0; i < lengthof(p_mb.opt_msg_headers); i := i + 1) {
- v_result := v_result + 2 + c_CRlen + lengthof(p_mb.opt_msg_headers[i]);
- }
- }
- return v_result;
- }
- }
-
- group MIME_Len_calculation {
- /**
- * @desc Calculation of MIME length
- * @param p_mb contain MIME message
- * @return xml_length
- */
- function f_MIMElength(
- MIME_Message p_mb
- ) return integer {
- var integer i;
- var integer v_result := 2;
- // 0d0a
- v_result := v_result + lengthof(p_mb.boundary) + 2 /*0d0a*/;
-
- for (i := 0; i < lengthof(p_mb.mimeEncapsulatedList); i := i + 1) {
-
- v_result := v_result + lengthof("Content-Type: ") + lengthof(p_mb.mimeEncapsulatedList[i].content_type) + 2 /*0d0a*/;
-
- if (isvalue(p_mb.mimeEncapsulatedList[i].content_disposition)) {
- v_result := v_result + lengthof("Content-Disposition: ") + lengthof(p_mb.mimeEncapsulatedList[i].content_disposition) + 2 /*0d0a*/;
- }
-
- // v_result := v_result +2/*0d0a*/; ??? to check
- // assume SDP_Message ONLY in the message body
- if (ischosen(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.sdpMessageBody)) {
- v_result := v_result + f_SDPlength(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.sdpMessageBody);
- }
-
- // assume XML_Body ONLY in the message body
- if (ischosen(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.xmlBody)) {
- v_result := v_result + f_XMLBody_Length(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.xmlBody, PX_USE_FX_FOR_XML_LENGTH);
- }
- // //assume XML_Message ONLY in the message body
- // if (ischosen(p_mb.mimeEncapsulatedList[i ]
- // .mime_encapsulated_part.xmlMessage))
- // {
- // v_result := v_result +
- // f_XMLlength(p_mb.mimeEncapsulatedList[i ]
- // .mime_encapsulated_part.xmlMessage,
- // USE_FX_FOR_XML_LENGTH );
- // };
- // v_result := v_result +2/*0d0a*/; ??? to check
- }
-
- // v_result := v_result +2/*0d0a*/; ??? to check
- return v_result;
- } //* f_MIMElength
-
-
- } //* group MIMElen_calculation
-
- group TextPlain_Len_calculation {
- /**
- * @desc Calculation of messagebody-textplain type length
- * @param p_mb contain textplain message
- * @return lenght
- */
- function f_TextPlainLength(
- template(value) MessageBody p_mb
- ) return integer {
- var integer v_result := 0;
-
- v_result := v_result + lengthof(p_mb.textplain);
-
- return v_result;
- } //* end function f_TextPlainLength
-
-
- } //* end group TextPlainLen_calculation
-
-
- } //* group MessageBody_Calculation
-
-
- group GiveHeaders {
- /**
- * @desc Return component variable of recordRoute header if vc_boo_recordRoute is true
- * @return component variable of recordRoute header
- */
- function f_recordroute(
- ) runs on SipComponent
- return template(omit) RecordRoute {
- var template(omit) RecordRoute v_recordRoute := omit;
- if (vc_boo_recordRoute) {
- return vc_recordRoute;
- }
- else {
- return (v_recordRoute);
- }
- }
-
- /**
- * @desc Return component variable of Route header if vc_boo_route is true
- * @return component variable of recordRoute header
- */
- function f_route(
- ) runs on SipComponent
- return template(omit) Route {
- var template(omit) Route v_route := omit;
- if (vc_boo_route) {
- return vc_route;
- }
- else {
- return (v_route);
- }
- }
-
-
- } //* end group GiveHeaders
-
- group others {
-
- /*
- *
- * @desc function combines two comma parameter lists
- * @param p_list1 first list
- * @param p_list2 second list
- * @return comma parameter list that contains parameters from both input lists
- * @verdict
- */
- function f_merge_CommaParam_List(
- template(value) CommaParam_List p_list1,
- template(value) CommaParam_List p_list2
- ) return template(value) CommaParam_List {
- var template(value) CommaParam_List p_result;
- var integer i, v_limit1 := lengthof(p_list1);
- for (i := 0; i < v_limit1; i := i + 1) {
- p_result[i] := p_list1[i];
- }
- for (i := 0; i < lengthof(p_list2); i := i + 1) {
- p_result[i + v_limit1] := p_list2[i];
- }
- return p_result;
- }
-
-
- } //* end group others
-
-
- } //* group TemplatePreparationFunctions
-} //* end module LibSip_Templates
/tags/v3.0.3/trunk/ttcn/LibSip_Templates.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_SMSFunctions.ttcn3
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_SMSFunctions.ttcn3 (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_SMSFunctions.ttcn3 (nonexistent)
@@ -1,48 +0,0 @@
-/**
- * @author STF 435, 471
- * @version $Id$
- * @desc This module provides the functions used by the test component
- * for SIP-SMS over IMS as specified in 3GPP 24-341 tests.
- * This module is part of LibSipV3.
- */
-module LibSip_SMSFunctions {
- import from LibSip_SMSTypesAndValues all;
-
- function f_IA5_2oct(
- charstring p_ASCII_String
- ) return octetstring {
- var integer i;
- var integer j;
- var integer v_Length := lengthof(p_ASCII_String);
- var integer v_Temp;
- var octetstring v_Noctets := ''O;
- var bitstring v_TempBitSrc := ''B;
- var bitstring v_TempBitDes := ''B;
-
- if ((v_Length <= 0) or (v_Length > 160) or (((v_Length * 7) mod 8) != 0)) {
- log("*** " & __SCOPE__ & "INFO: Invalid value of input string length ***");
- }
-
- for (i := 0; i < v_Length; i := i + 1) {
- v_Temp := char2int(p_ASCII_String[i]);
- v_TempBitSrc := int2bit(v_Temp, 8);
-
- for (j := 1; j <= 7; j := j + 1) {
-
- v_TempBitDes := v_TempBitSrc[8 - j] & v_TempBitDes;
-
- if (((7 * i + j) mod 8) == 0) {
-
- v_Noctets := v_Noctets & bit2oct(v_TempBitDes);
- v_TempBitDes := ''B;
- }
- }
- }
-
- return v_Noctets;
- } // f_IA5_2oct
-
- external function fx_GetSC_TimeStamp(
- integer p_TimeZone
- ) return TP_ServiceCentreTimeStamp_Type;
-} // End of module LibSip_SMSFunctions
\ No newline at end of file
Index: tags/v3.0.3/trunk/ttcn/LibSip_PIXITS.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_PIXITS.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_PIXITS.ttcn (nonexistent)
@@ -1,137 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id$
- * @desc This module provides module parameters used within the SIP
- * protocol for timers, SDP formats etc.
- * This module is part of LibSipV3.
- */
-module LibSip_PIXITS {
- // LibCommon
- import from LibCommon_BasicTypesAndValues all;
- import from LibCommon_DataStrings all;
-
- // ____________________________ PIXIT-S_______________________________
- group SIP_PIXITparameters {
- group SDPParameter {
-
- /**
- * @desc charstring for SDP user name
- */
- modulepar charstring PX_SIP_SDP_USER_NAME := "voicesession";
-
- /**
- * @desc charstring for SDP session identifier
- */
- modulepar charstring PX_SIP_SDP_SESSION_ID := "30000";
-
- /**
- * @desc charstring for SDP dynamic port
- */
- modulepar charstring PX_SIP_SDP_DYN := "0";
-
- /**
- * @desc charstring for SDP bandwidth modifier
- */
- modulepar charstring PX_SIP_SDP_B_MODIFIER := "AS";
-
- /**
- * @desc integer for SDP bandwidth value
- */
- modulepar integer PX_SIP_SDP_B_BANDWIDTH := 64;
-
- /**
- * @desc charstring for SDP media attribute encoding supported by the IUT
- */
- modulepar charstring PX_SIP_SDP_ENCODING := "PCMU";
-
- /**
- * @desc charstring for SDP media attribute encoding clockrate supported by the IUT
- */
- modulepar charstring PX_SIP_SDP_CLOCKRATE := "8000";
-
- } // group SDP Parameter
- group XMLCOnfiguration{
-
- /**
- * @desc boolean for MessageBody length calculation based on encvalue operation result
- */
- modulepar boolean PX_MB_LENGTH_FROM_ENCVAL := true;
-
- /**
- * @desc boolean for MessageBody length calculation to be performed by external function
- */
- modulepar boolean PX_USE_FX_FOR_XML_LENGTH := false;
- }
-
- group SupportedOptions {
-
- /**
- * @desc charstring for Used Transport in upper case "UDP"/"TCP"
- */
- modulepar charstring PX_SIP_TRANSPORT := "UDP";
-
-
- } // group SupportedOptions{
-
- group RegistrationParameters {
-
- /**
- * @desc boolean for the SIP user if it have to register itself before executing a test case
- */
- modulepar boolean PX_SIP_REGISTRATION := false;
-
- /**
- * @desc charstring for PX_AUTH_ALGORITHM security algorithm Possible values: MD5 or AKAv1-MD5
- */
- modulepar charstring PX_AUTH_ALGORITHM := "AKAv1-MD5";
-
-
- } // group Registration parameters
-
- group SwitchToEnableAuthentication {
- /**
- * @desc boolean for option controlling if authentication is enabled/disabled for REGISTER messages
- */
- modulepar boolean PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true;
-
- /**
- * @desc boolean for option controlling if authentication is enabled/disabled for INVITE messages
- */
- modulepar boolean PX_SIP_INVITE_AUTHENTICATION_ENABLED := false;
-
-
- } // group SwitchToEnableAuthentication
-
- group SIP_Timers {
- /**
- * @desc float for TWait default value for waiting an operator action
- */
- modulepar float PX_SIP_TWAIT := 30.0;
-
- /**
- * @desc float for TAck default value for waiting an acknowledgement
- */
- modulepar float PX_SIP_TACK := 8.0;
-
- /**
- * @desc float for TResp default value for waiting for a response from the IUT
- */
- modulepar float PX_SIP_TRESP := 15.0;
-
- /**
- * @desc float for TNoAct default value for waiting no message from the IUT Value given for PX_TNOACT should be less than value of SHORT_REGISTRATION constant (which is currently "3" (seconds))
- */
- modulepar float PX_SIP_TNOACT := 1.0;
-
- } // group SIP_Timers
-
- group MimePart {
- /**
- * @desc charstring for delimiter value used in mime multipart message to separate message body parts
- */
- modulepar charstring PX_SIP_MIME_BOUNDARY := "boundary1";
-
- } // group MimePart
-
- } // group SIP_PIXITparameters
-} // end module LibSip_PIXITS
/tags/v3.0.3/trunk/ttcn/LibSip_PIXITS.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/ttcn/LibSip_Interface.ttcn
===================================================================
--- tags/v3.0.3/trunk/ttcn/LibSip_Interface.ttcn (revision 648)
+++ tags/v3.0.3/trunk/ttcn/LibSip_Interface.ttcn (nonexistent)
@@ -1,208 +0,0 @@
-/**
- * @author STF 346, STF366, STF368, STF369, STF450, STF471
- * @version $Id$
- * @desc This module provides the types used by the test component
- * for SIP-IMS tests. Module become from STF306 and STF334-336
- * This module is part of LibSipV3.
- */
-module LibSip_Interface {
- // LibCommon
- import from LibCommon_Sync all;
- import from LibCommon_AbstractData all;
- import from LibCommon_BasicTypesAndValues all;
- import from LibCommon_DataStrings all;
- // LibSip
- import from LibSip_SIPTypesAndValues all;
- import from LibSip_SDPTypes all;
- import from LibSip_XMLTypes all;
-
- import from LibSip_PIXITS all;
-
- group AdressTypes {
- type record Address4SIP {
- // HostPort
- charstring host optional,
- // hostname, IPv4 or IPv6
- integer portField
- optional // represented as an integer
- } with {
- encode "LibSip V3";
- }
-
- type Address4SIP address;
-
-
- } // end group AdressTypes
-
- type port SipPort message {
- inout Request, REGISTER_Request, INVITE_Request, OPTIONS_Request, BYE_Request, CANCEL_Request, ACK_Request, PRACK_Request, NOTIFY_Request, SUBSCRIBE_Request, PUBLISH_Request, UPDATE_Request, REFER_Request, MESSAGE_Request, INFO_Request, Response, Raw;
- }
- with {
- extension "address";
- }
-
- signature s_SIP_conversation(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_ringing(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_announcementA(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_announcementB(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_announcement(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_voiceMessage(
- in charstring p_text,
- out boolean p_answer
- ) ;
- signature s_SIP_mediastopped(
- in charstring p_text,
- out boolean p_answer
- ) ;
- type port OperatorPort procedure {
- inout s_SIP_conversation;
- inout s_SIP_ringing;
- inout s_SIP_announcementA;
- inout s_SIP_announcementB;
- inout s_SIP_announcement;
- inout s_SIP_voiceMessage;
- inout s_SIP_mediastopped;
- }
-
- // Solution for building error problem. (Important for validation)
- // type component ImsComponent extends SipComponent need to be located in LibIms_Interface and not in LibSip_Interface module
- // With this solution TAU compiler error.
- // type component ImsComponent extends SipComponent
- // {
- // // general variables
- // var ImsInterfaceProfile vc_interfaceprofile
- // } // end ImsComponent
- type component SipComponent extends SelfSyncComp {
- // port
- port SipPort SIPP;
- // used for communication with the operator
- port OperatorPort opPort;
-
- // current address to send TCP/UDP messages
- var SipUserProfile vc_userprofile; // PIXIT userinformation
- var Address4SIP vc_sent_label; // removed because this value is predefined and used to open socket := {host := PX_SIP_SUT_IPADDR, portField := PX_SIP_SUT_PORT};
- // last incoming message
- var Response vc_response; // last incoming response message
- var boolean vc_boo_response := false; // to check if response received or not
- var Request vc_request; // last incoming request message
- var boolean vc_boo_request := false; // to check if request received or not
- var Request vc_requestFor407; // last INVITE request to be authorized if 407/401 received from Proxy
- var SipUrl vc_requestUri := c_empty_RequestUri;
- var SipUrl vc_requestUri2 := c_empty_RequestUri; // MRO
- var charstring vc_branch := "";
- var charstring vc_branch_ICSCF := "";
- var charstring vc_branch_SCSCF := "";
-
- // SIP message header fields (for building next message)
- var template(omit) CallId vc_callId := c_empty_CallId;
- var template(omit) CallId vc_callIdReg := c_empty_CallId;
- var template(omit) CallId vc_callIdSub := c_empty_CallId;
- var From vc_from := c_empty_From;
- var To vc_to := c_empty_To;
- var To vc_cancel_To := c_empty_To; // used for next CANCEL
- var Via vc_via := c_empty_Via;
- var Via vc_via_REG := c_empty_Via; // via used in last REGISTER
- var ContentType vc_contentType := c_empty_ContentType; // MRO
- var template(omit) RecordRoute vc_recordRoute; // value of RecordRoute header
- var boolean vc_boo_recordRoute := false; // boolean indicates valid recordRoute
- var template(omit) Route vc_route; // value of Route header
- var template(omit) Route vc_route_REG; // value of Route header from registration ServiceRoute header for initial Requests
- var
- UrnUriComponents
- vc_reqUrnUri := {
- namespaceId := "",
- namespaceSpecificString := ""
- };
- var boolean vc_boo_route := false; // boolean indicates valid Route
- var template(omit) Contact vc_contact; // value of Contact header
- var CSeq vc_cSeq := c_empty_cSeq; // value of CSeq header
- var template(value)
- RAck
- vc_rAck := {
- fieldName := RACK_E,
- responseNum := 1,
- seqNumber := 1,
- method := "INVITE"
- }; // value of RAck header
-
- // address to send request
- var HostPort vc_reqHostPort := {//STF471 removed PIXIT assignment, should be performed in specific ATS
- host := "127.0.0.1", // former PX_SIP_SUT_IPADDR value
- portField := 5060 //former PX_SIP_SUT_PORT value
- };
- var template(omit) Privacy vc_privacy;
- var HistoryInfo_List vc_historyInfoList := {}; // value of history list according to RFC4244
- var SipUrl vc_confURI; // conference URI according to TS124147 ch. 5.3.1.3.2
- var SDP_Message vc_sdp_remote; // incoming SDP offers
- var SDP_Message vc_sdp_local; // SDP values to be sent
- var XmlBody vc_xml_remote; // incoming XML value
- var template XmlBody vc_xml_local; // SDP values to be sent
- var template(omit) CSeq vc_iut_CSeq := c_empty_cSeq; // value of last CSeq header used by the IUT in request
- // To/From header-fields to be used if the callee will release the session
- var To vc_callee_To := c_empty_To;
- var From vc_callee_From := c_empty_From;
- // To/From header-fields to be used if the caller will release the session
- var To vc_caller_To := c_empty_To;
- var From vc_caller_From := c_empty_From;
- var Authorization vc_authorization;
-
- // variables for storing default references
- var default vc_default;
- var default vc_def_catchSyncStop;
-
- // general timers
- timer tc_T1 := 0.5;//STF471 default value, should be set in specific ATS, former PX_SIP_T1
- timer tc_Tf := 32.0;//STF471 default value, should be set in specific ATS, former PX_SIP_TF
- timer tc_wait := PX_SIP_TWAIT;
- timer tc_ack := PX_SIP_TACK;
- timer tc_resp := PX_SIP_TRESP;
- timer tc_noAct := PX_SIP_TNOACT; // time for SUT to get idle state
- // timer TRept;
- // timer TSync := 10.0; //STF471 default value, should be set in specific ATS, former PX_SIP_TSYNC
- timer tc_guard := 120.0; //STF471 default value, should be set in specific ATS, former PX_SIP_TGUARD
- timer tc_tDelay := 32.0;
-
- var float vc_tcRESP := PX_SIP_TRESP; // standard value for TRESP (may be modified in particular tests)
- // indicators set/used parameter status or state handling in default
- var boolean vc_sdp_remote_is_valid := false; // true if there is a value in v_SDP_remote
- var boolean vc_history_is_valid := false; // true if there is a HistoryList in response message
- var boolean vc_send_SDP := false; // send SDP in the next outgoing message
- var boolean vc_ignore_bye := false; // enable ignore of repeated bye in default
- var boolean vc_ignore_invite := false; // enable ignore invite in default
- var boolean vc_ignore_subscribe := false; // enable ignore subscribe in default
- var boolean vc_ignore181 := false; // enable ignore of 181 in default
- var boolean vc_ignore484 := false; // enable ignore of 484 in default
- var boolean vc_ignore4xx := false; // enable ignore of 4xx in default
- var boolean vc_ignore200OKinv := false; // enable ignore of 200OKinv in default
- var boolean vc_ignore_notify := false; // enable ignore of notify in default
- var boolean vc_supported_100rel := false; // true if the received invite contains 100rel
- var boolean vc_supported_precondition := false; // true if the received invite contains precondition
- var boolean vc_MESSAGEreceived := false; // true if MESSAGE received during altstep
- var boolean vc_first_recv := false; // true after receipt of first incomming SIP message
- var boolean vc_firstREGISTER_sent := false; // true after sent of first REGISTER message
- var boolean vc_DeregDone := false; // true after first DeREGISTRATION trail (avoid loop)
- var boolean vc_interface_isc := false; // true if isc interface is in use
- var boolean vc_white_space := false; // MRO
- var boolean vc_subscribed := false;
- // ETS address
- var address vc_ets_label; //This value should be initialized in specific ATS
-
- // // used for communication with the operator
- // port OperatorPort_SIP opPort;
- } // end SipComponent
-} // end module LibSip_Interface
/tags/v3.0.3/trunk/ttcn/LibSip_Interface.ttcn
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/xml.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/xml.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/xml.xsd (nonexistent)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
-
- <xs:attribute name="lang">
- <xs:simpleType>
- <xs:union memberTypes="xs:language">
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="" />
- </xs:restriction>
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:attribute name="space">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="default" />
- <xs:enumeration value="preserve" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:attribute name="base" type="xs:anyURI">
- </xs:attribute>
-
- <xs:attribute name="id" type="xs:ID">
- </xs:attribute>
-
- <xs:attributeGroup name="specialAttrs">
- <xs:attribute ref="xml:base" />
- <xs:attribute ref="xml:lang" />
- <xs:attribute ref="xml:space" />
- <xs:attribute ref="xml:id" />
- </xs:attributeGroup>
-</xs:schema>
Index: tags/v3.0.3/trunk/xsd/CDIVN.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/CDIVN.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/CDIVN.xsd (nonexistent)
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xs:schema targetNamespace="http://uri.etsi.org/ngn/params/xml/comm-div-info"
- xmlns:tns="http://uri.etsi.org/ngn/params/xml/comm-div-info"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/ngn/params/xml/comm-div-info"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
- <!-- This import brings in the XML language definition -->
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="xml.xsd" />
- <!-- Communication Diversion Information. This is the top-level XML element -->
- <xs:element name="comm-div-info" type="comm-div-info-type" />
- <!-- Communication Diversion Information Type. This is the top-level
- XML element -->
- <xs:complexType name="comm-div-info-type">
- <xs:sequence>
- <xs:element name="comm-div-subs-info" type="comm-div-subs-info-type"
- minOccurs="0" />
- <xs:element name="comm-div-ntfy-info" type="comm-div-ntfy-info-type"
- minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="entity" type="xs:anyURI" use="required" />
- </xs:complexType>
- <!--- Communication Diversion Subscription Type. Used at Subscription
- time to select Communication Diversions for notification, when to notify
- them and what to notify. -->
- <xs:complexType name="comm-div-subs-info-type">
- <xs:sequence>
- <xs:element name="comm-div-selection-criteria"
- type="comm-div-selection-criteria-type" minOccurs="0" />
- <xs:element name="comm-div-ntfy-trigger-criteria"
- type="comm-div-ntfy-trigger-criteria-type" minOccurs="0" />
- <xs:element name="comm-div-info-selection-criteria"
- type="comm-div-info-selection-criteria-type" minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!--- Communication Diversion Notification Information Type Used while
- notifying the User about the Communication Diversion -->
- <xs:complexType name="comm-div-ntfy-info-type">
- <xs:sequence>
- <xs:element name="originating-user-info" type="user-info-type"
- minOccurs="0" />
- <xs:element name="diverting-user-info" type="xs:anyURI"
- minOccurs="0" />
- <xs:element name="diverted-to-user-info" type="xs:anyURI"
- minOccurs="0" />
- <xs:element name="diversion-time-info" type="xs:dateTime"
- minOccurs="0" />
- <xs:element name="diversion-reason-info" type="diversion-reason-info-type"
- minOccurs="0" />
- <xs:element name="diversion-rule-info" type="diversion-rule-info-type"
- minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="previous-cdivn-state" type="cdivn-states-types"
- minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- COMMUNICATION DIVERSION SELECTION CRITERIA -->
- <xs:complexType name="comm-div-selection-criteria-type">
- <xs:sequence>
- <xs:element name="originating-user-selection-criteria"
- type="user-selection-criteria-type" minOccurs="0" />
- <xs:element name="diverting-user-selection-criteria"
- type="xs:anyURI" minOccurs="0" />
- <xs:element name="diverted-to-user-selection-criteria"
- type="xs:anyURI" minOccurs="0" />
- <xs:element name="diversion-time-selection-criteria"
- type="time-range-selection-criteria-type" minOccurs="0" />
- <xs:element name="diversion-reason-selection-criteria"
- type="diversion-reason-selection-criteria-type"
- minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- COMMUNICATION DIVERSION NOTIFICATION TRIGGER CRITERIA -->
- <xs:complexType name="comm-div-ntfy-trigger-criteria-type">
- <xs:sequence>
- <xs:element name="notification-time-selection-criteria"
- type="time-range-selection-criteria-type" minOccurs="0" />
- <xs:element name="presence-status-selection-criteria"
- type="presence-status-selection-criteria-type"
- minOccurs="0" />
- <xs:element name="notification-buffer-interval"
- minOccurs="0" default="86400">
- <xs:simpleType>
- <xs:restriction base="xs:integer">
- <xs:maxInclusive value="86400" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- COMMUNICATION DIVERSION INFORMATION SELECTION CRITERIA -->
- <xs:complexType name="comm-div-info-selection-criteria-type">
- <xs:sequence>
- <xs:element name="disable-originating-user-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:element name="disable-diverting-user-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:element name="disable-diverted-to-user-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:element name="disable-diversion-time-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:element name="disable-diversion-reason-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:element name="disable-diversion-rule-info"
- type="xs:boolean" default="false" minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
-
- <!-- User Info Type -->
- <xs:complexType name="user-info-type">
- <xs:sequence>
- <xs:element name="user-name" type="xs:string"
- minOccurs="0" maxOccurs="1" />
- <xs:element name="user-URI" type="xs:anyURI" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- CDIVN FSM STATES -->
- <xs:simpleType name="cdivn-states-types">
- <xs:list itemType="cdivn-states-type" />
- </xs:simpleType>
- <xs:simpleType name="cdivn-states-type">
- <xs:restriction base="xs:string">
- <xs:enumeration value="IDLE" />
- <xs:enumeration value="DIVERSION_NOTIFIED" />
- <xs:enumeration value="DIVERSION_NOT_NOTIFIED" />
- </xs:restriction>
- </xs:simpleType>
- <!-- DIVERSION REASON INFO -->
-
- <xs:simpleType name="diversion-reason-info-types">
- <xs:list itemType="diversion-reason-info-type" />
- </xs:simpleType>
- <xs:simpleType name="diversion-reason-info-type">
- <xs:restriction base="xs:integer">
- <xs:enumeration value="404" />
- <xs:enumeration value="486" />
- <xs:enumeration value="408" />
- <xs:enumeration value="302" />
- <xs:enumeration value="487" />
- <xs:enumeration value="480" />
- <xs:enumeration value="503" />
- </xs:restriction>
- </xs:simpleType>
- <!-- DIVERSION RULE INFO -->
- <xs:complexType name="diversion-rule-info-type">
- <xs:sequence>
- <xs:element name="diversion-rule" type="xs:string" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- ORIGINATING USER SELECTION CRITERIA -->
- <xs:complexType name="user-selection-criteria-type">
- <xs:sequence>
- <xs:element name="user-info" type="user-info-type"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- DIVERSION REASON SELECTION CRITERIA -->
- <xs:complexType name="diversion-reason-selection-criteria-type">
- <xs:sequence>
- <xs:element name="diversion-reason-info" type="diversion-reason-info-types" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- TIME RANGE SELECTION CRITERIA -->
- <xs:complexType name="time-range-selection-criteria-type">
- <xs:sequence>
- <xs:element name="time-range" type="time-range-type"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- TIME RANGE INFO -->
- <xs:complexType name="time-range-type">
- <xs:sequence>
- <xs:element name="start-time" type="xs:dateTime" />
- <xs:element name="end-time" type="xs:dateTime" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- PRESENCE STATUS SELECTION CRITERIA -->
- <xs:complexType name="presence-status-selection-criteria-type">
- <xs:sequence>
- <xs:element name="presence-status-info" type="presence-status-info-type"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <!-- PRESENCE STATUS INFo -->
- <xs:complexType name="presence-status-info-type">
- <xs:sequence>
- <xs:element name="presence-status" type="xs:string" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
-</xs:schema>
/tags/v3.0.3/trunk/xsd/CDIVN.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/cw.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/cw.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/cw.xsd (nonexistent)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="urn:3gpp:ns:cw:1.0" xmlns:cw10="urn:3gpp:ns:cw:1.0"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- attributeFormDefault="unqualified">
- <xs:complexType name="tEmptyType" />
- <xs:complexType name="tCWtype">
- <xs:sequence>
- <xs:element name="communication-waiting-indication"
- minOccurs="0" maxOccurs="1" type="cw10:tEmptyType" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <xs:element name="ims-cw" type="cw10:tCWtype" />
-</xs:schema>
\ No newline at end of file
Index: tags/v3.0.3/trunk/xsd/ACR_CB.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/ACR_CB.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/ACR_CB.xsd (nonexistent)
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:ss="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:cp="urn:ietf:params:xml:ns:common-policy" xmlns:ocp="urn:oma:xml:xdm:common-policy"
- targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
- <!-- import common policy definitions -->
- <xs:import namespace="urn:ietf:params:xml:ns:common-policy"
- schemaLocation="common-policy.xsd" />
- <!-- import OMA common policy extensions -->
- <xs:import namespace="urn:oma:xml:xdm:common-policy"
- schemaLocation="xdm_commonPolicy-v1_0.xsd" />
- <!-- incoming communication barring rule set based on the common policy
- rule set. -->
- <xs:element name="incoming-communication-barring"
- substitutionGroup="ss:absService">
- <xs:annotation>
- <xs:documentation>This is the incoming communication barring
- configuration document.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="ss:simservType">
- <xs:sequence>
- <!-- add service specific elements here -->
- <xs:element ref="cp:ruleset"
- minOccurs="0" />
- </xs:sequence>
- </xs:extension>
- <!-- service specific attributes can be defined here -->
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <!-- outgoing communication barring rule set based on the common policy
- rule set. -->
- <xs:element name="outgoing-communication-barring"
- substitutionGroup="ss:absService">
- <xs:annotation>
- <xs:documentation>This is the outgoing communication barring
- configuration
- document.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="ss:simservType">
- <xs:sequence>
- <!-- add service specific elements here -->
- <xs:element ref="cp:ruleset"
- minOccurs="0" />
- </xs:sequence>
- </xs:extension>
- <!-- service specific attributes can be defined here -->
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <!-- communication barring specific extensions to IETF common policy
- actions -->
- <xs:element name="allow" type="ss:allow-action-type" />
- <!-- communication barring specific type declarations -->
- <!-- <xs:simpleType name="allow-action-type" final="list restriction"> -->
- <xs:simpleType name="allow-action-type">
- <xs:restriction base="xs:boolean" />
- </xs:simpleType>
-</xs:schema>
\ No newline at end of file
/tags/v3.0.3/trunk/xsd/ACR_CB.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/simservs.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/simservs.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/simservs.xsd (nonexistent)
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- TS 27.173 / 183 023 -->
-<xs:schema targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:ss="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- attributeFormDefault="unqualified">
-
- <!-- The element "simservs" maps to the Common Parts of an NGN PSTN/ISDN
- Simulation services document -->
-
- <xs:element name="simservs">
- <xs:annotation>
- <xs:documentation>XML Schema for data manipulation of ETSI
- NGN PSTN/ISDN Simulation Services
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:group ref="ss:absServiceGroup" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element name="extensions" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:any namespace="##other"
- processContents="lax" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:anyAttribute namespace="##any"
- processContents="lax" />
- </xs:complexType>
- </xs:element>
-
- <xs:element name="absService" abstract="true" type="ss:simservType" />
-
- <xs:complexType name="simservType">
- <xs:attribute name="active" type="xs:boolean" use="optional"
- default="true" />
- <xs:anyAttribute namespace="##any"
- processContents="lax" />
- </xs:complexType>
-
- <!-- service specific IETF common policy condition elements -->
- <xs:element name="anonymous" type="ss:empty-element-type" />
- <xs:element name="presence-status" type="ss:presence-status-activity-type" />
- <xs:element name="media" type="ss:media-type1" />
- <xs:element name="communication-diverted" type="ss:empty-element-type" />
- <xs:element name="rule-deactivated" type="ss:empty-element-type" />
- <xs:element name="not-registered" type="ss:empty-element-type" />
- <xs:element name="busy" type="ss:empty-element-type" />
- <xs:element name="no-answer" type="ss:empty-element-type" />
- <xs:element name="not-reachable" type="ss:empty-element-type" />
- <xs:element name="roaming" type="ss:empty-element-type" />
-
- <!-- service specific type declarations -->
- <xs:simpleType name="media-type1">
- <xs:restriction base="xs:string" />
- </xs:simpleType>
- <xs:simpleType name="presence-status-activity-type">
- <xs:restriction base="xs:string" />
- </xs:simpleType>
- <xs:complexType name="empty-element-type" />
-
- <!-- ETSI substitutionGroup workaround, because TTCN-3 does not support
- mapping of substitutionGroup -->
- <xs:group name="absServiceGroup">
- <xs:choice>
- <!-- default -->
- <xs:element ref="ss:absService" />
- <!-- TIP-TRI -->
- <xs:element
- ref="ss:terminating-identity-presentation-restriction" />
- <xs:element ref="ss:terminating-identity-presentation" />
- <!-- OIP-OIR -->
- <xs:element
- ref="ss:originating--identity--presentation--restriction" />
- <xs:element ref="ss:originating--identity--presentation" />
- <!-- CDIV -->
- <xs:element ref="ss:communication-diversion" />
- <!-- ACR-CB -->
- <xs:element ref="ss:incoming-communication-barring" />
- <xs:element ref="ss:outgoing-communication-barring" />
- <!-- CUG -->
- <!-- <xs:element ref="cug"/> -->
- </xs:choice>
- </xs:group>
-
-</xs:schema>
\ No newline at end of file
/tags/v3.0.3/trunk/xsd/simservs.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/MCID.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/MCID.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/MCID.xsd (nonexistent)
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="http://uri.etsi.org/ngn/params/xml/simservs/mcid"
- targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/mcid"
- elementFormDefault="qualified">
- <xs:annotation>
- <xs:documentation>XML Schema Definition to the mcid
- request-response
- to the Malicious Communication
- Identification simulation service
- </xs:documentation>
- </xs:annotation>
- <!--Definition of simple types -->
- <xs:simpleType name="bitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <!--Definition of complex types -->
- <xs:complexType name="requestType">
- <xs:sequence>
- <xs:element name="McidRequestIndicator" type="bitType" />
- <xs:element name="HoldingIndicator" type="bitType" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="responseType">
- <xs:sequence>
- <xs:element name="McidResponseIndicator" type="bitType" />
- <xs:element name="HoldingProvidedIndicator" type="bitType" />
- </xs:sequence>
- </xs:complexType>
- <!--Definition of document structure -->
- <xs:element name="mcid">
- <xs:complexType>
- <xs:choice>
- <xs:element name="request" type="requestType" />
- <xs:element name="response" type="responseType" />
- </xs:choice>
- </xs:complexType>
- </xs:element>
-</xs:schema>
\ No newline at end of file
/tags/v3.0.3/trunk/xsd/MCID.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/SupplementaryServices.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/SupplementaryServices.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/SupplementaryServices.xsd (nonexistent)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:ss="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- attributeFormDefault="unqualified">
-
- <xs:include schemaLocation="simservs.xsd" />
- <xs:include schemaLocation="TIP-TIR.xsd" />
- <xs:include schemaLocation="OIP-OIR.xsd" />
- <xs:include schemaLocation="CDIV.xsd" />
- <xs:include schemaLocation="ACR_CB.xsd" />
- <xs:include schemaLocation="cug.xsd" />
-
-</xs:schema>
\ No newline at end of file
/tags/v3.0.3/trunk/xsd/SupplementaryServices.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/pidf_lo.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/pidf_lo.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/pidf_lo.xsd (nonexistent)
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="urn:ietf:params:xml:ns:pidf:geopriv10"
- xmlns:tns="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:gbp="urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- attributeFormDefault="unqualified">
-
- <xs:import namespace="urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy"
- schemaLocation="geopriv10basic.xsd" />
-
- <!-- This import brings in the XML language attribute xml:lang -->
-
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="xml.xsd" />
-
- <xs:element name="geopriv" type="tns:geopriv" />
-
- <xs:complexType name="geopriv">
- <xs:sequence>
- <xs:element name="location-info" type="tns:locInfoType"
- minOccurs="1" maxOccurs="1" />
- <xs:element name="usage-rules" type="gbp:locPolicyType"
- minOccurs="1" maxOccurs="1" />
- <xs:element name="method" type="tns:locMethod"
- minOccurs="0" maxOccurs="1" />
- <xs:element name="provided-by" type="tns:locProvidedBy"
- minOccurs="0" maxOccurs="1" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="locInfoType">
- <xs:sequence>
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="locMethod">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="xml:lang" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- <xs:complexType name="locProvidedBy">
- <xs:sequence>
- <xs:any namespace="##other" processContents="skip"
- minOccurs="1" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
-</xs:schema>
-
Index: tags/v3.0.3/trunk/xsd/cug.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/cug.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/cug.xsd (nonexistent)
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ss="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:annotation>
- <xs:documentation>XML Schema Definition for the closed user
- group
- parameter
- </xs:documentation>
- </xs:annotation>
- <!-- Because of some XSD to TTCN-3 mapping limitations, xcap.xsd=simservs.xsd
- with modifications -->
- <!--xs:include schemaLocation="xcap.xsd"/ -->
- <!--Definition of simple types -->
- <xs:simpleType name="twobitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="networkIdentityType">
- <xs:restriction base="xs:hexBinary">
- <xs:length value="1" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="sixteenbitType">
- <xs:restriction base="xs:hexBinary">
- <xs:length value="2" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="cugIndexType">
- <xs:restriction base="xs:integer">
- <xs:minInclusive value="0" />
- <xs:maxInclusive value="32767" />
- </xs:restriction>
- </xs:simpleType>
- <!--Definition of complex types -->
- <xs:complexType name="cugRequestType">
- <xs:sequence>
- <xs:element name="outgoingAccessRequest" type="xs:boolean" />
- <xs:element name="cugIndex" type="cugIndexType"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- <!--Definition of document structure -->
- <xs:element name="cug" substitutionGroup="ss:absService">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="ss:simservType">
- <xs:sequence>
- <xs:element name="cugCallOperation"
- type="cugRequestType" minOccurs="0" />
- <xs:element name="networkIndicator"
- type="networkIdentityType" minOccurs="0" />
- <xs:element name="cugInterlockBinaryCode"
- type="sixteenbitType" minOccurs="0" />
- <xs:element name="cugCommunicationIndicator"
- type="twobitType" minOccurs="0" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
-</xs:schema>
/tags/v3.0.3/trunk/xsd/cug.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/geopriv10basic.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/geopriv10basic.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/geopriv10basic.xsd (nonexistent)
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy"
- xmlns:tns="urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- attributeFormDefault="unqualified">
-
- <!-- This import brings in the XML language attribute xml:lang -->
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="xml.xsd" />
-
- <xs:complexType name="locPolicyType">
- <xs:sequence>
- <xs:element name="retransmission-allowed" type="xs:boolean"
- minOccurs="0" maxOccurs="1" />
- <xs:element name="retention-expiry" type="xs:dateTime"
- minOccurs="0" maxOccurs="1" />
- <xs:element name="external-ruleset" type="xs:anyURI"
- minOccurs="0" maxOccurs="1" />
- <xs:element name="note-well" type="tns:notewell"
- minOccurs="0" maxOccurs="1" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="notewell">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="xml:lang" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
-</xs:schema>
-
Index: tags/v3.0.3/trunk/xsd/OIP-OIR.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/OIP-OIR.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/OIP-OIR.xsd (nonexistent)
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:ss="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/xcap"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:element name="originating--identity--presentation--restriction"
- substitutionGroup="ss:absService">
- <xs:annotation>
- <xs:documentation>Originating Identity presentation
- Restriction
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="ss:simservType">
- <xs:sequence>
- <xs:element name="default--behaviour"
- default="presentation--restricted"
- minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration
- value="presentation--restricted" />
- <xs:enumeration
- value="presentation--not--restricted" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="originating--identity--presentation"
- type="ss:simservType" substitutionGroup="ss:absService">
- <xs:annotation>
- <xs:documentation>Originating Identity Presentation
- </xs:documentation>
- </xs:annotation>
- </xs:element>
-</xs:schema>
\ No newline at end of file
/tags/v3.0.3/trunk/xsd/OIP-OIR.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/Ims3gpp.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/Ims3gpp.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/Ims3gpp.xsd (nonexistent)
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified" attributeFormDefault="unqualified"
- version="1">
- <xs:complexType name="tIMS3GPP">
- <xs:sequence>
- <xs:choice>
- <xs:element name="alternative-service" type="tAlternativeService" />
- <xs:element name="service-info" type="xs:string" />
- </xs:choice>
- <xs:any namespace="##any" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="version" type="xs:decimal" use="required" />
- <xs:anyAttribute />
- </xs:complexType>
- <xs:complexType name="tAlternativeService">
- <xs:sequence>
- <xs:element name="type" type="tType" />
- <xs:element name="reason" type="xs:string" />
- <xs:any namespace="##any" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute />
- </xs:complexType>
- <xs:complexType name="tType">
- <xs:sequence>
- <xs:any namespace="##any" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute />
- </xs:complexType>
- <xs:complexType name="tAction">
- <xs:sequence>
- <xs:any namespace="##any" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:anyAttribute />
- </xs:complexType>
-
- <!-- root element -->
- <xs:element name="ims-3gpp" type="tIMS3GPP" />
-
- <!-- emergency element for //ims-3gpp//alternative-service//type -->
- <xs:element name="emergency">
- <xs:complexType />
- </xs:element>
-
- <!-- restoration element for //ims-3gpp//alternative-service//type -->
- <xs:element name="restoration">
- <xs:complexType />
- </xs:element>
-
- <!-- action element for //ims-3gpp//alternative-service -->
- <xs:element name="action" type="tAction" />
-
- <!-- emergency-registration element for //ims-3gpp//alternative-service//action -->
- <xs:element name="emergency-registration">
- <xs:complexType />
- </xs:element>
-
- <!-- initial-registration element for //ims-3gpp//alternative-service//action -->
- <xs:element name="initial-registration">
- <xs:complexType />
- </xs:element>
-</xs:schema>
/tags/v3.0.3/trunk/xsd/Ims3gpp.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/pidf.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/pidf.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/pidf.xsd (nonexistent)
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="urn:ietf:params:xml:ns:pidf"
- xmlns:tns="urn:ietf:params:xml:ns:pidf" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
- <!-- RFC 3863 -->
-
-
- <!-- This import brings in the XML language attribute xml:lang -->
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="xml.xsd" />
-
- <xs:element name="presence" type="tns:presence" />
-
- <xs:complexType name="presence">
- <xs:sequence>
- <xs:element name="tuple" type="tns:tuple"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="note" type="tns:note"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="entity" type="xs:anyURI" use="required" />
- </xs:complexType>
-
- <xs:complexType name="tuple">
- <xs:sequence>
- <xs:element name="status" type="tns:status" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="contact" type="tns:contact"
- minOccurs="0" />
- <xs:element name="note" type="tns:note"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="timestamp" type="xs:dateTime"
- minOccurs="0" />
- </xs:sequence>
- <xs:attribute name="id" type="xs:ID" use="required" />
- </xs:complexType>
-
- <xs:complexType name="status">
- <xs:sequence>
- <xs:element name="basic" type="tns:basic"
- minOccurs="0" />
- <xs:any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- <xs:simpleType name="basic">
- <xs:restriction base="xs:string">
- <xs:enumeration value="open" />
- <xs:enumeration value="closed" />
- </xs:restriction>
- </xs:simpleType>
-
- <xs:complexType name="contact">
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="priority" type="tns:qvalue" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- <xs:complexType name="note">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="xml:lang" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- <xs:simpleType name="qvalue">
- <xs:restriction base="xs:decimal">
- <xs:pattern value="0(.[0-9]{0,3})?" />
- <xs:pattern value="1(.0{0,3})?" />
- </xs:restriction>
- </xs:simpleType>
-
- <!-- Global Attributes -->
- <xs:attribute name="mustUnderstand" type="xs:boolean"
- default="0">
- <xs:annotation>
- <xs:documentation>
- This attribute may be used on any element within an optional
- PIDF extension to indicate that the corresponding element must
- be understood by the PIDF processor if the enclosing optional
- element is to be handled.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
-</xs:schema>
-
Index: tags/v3.0.3/trunk/xsd/xdm_commonPolicy-v1_0.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/xdm_commonPolicy-v1_0.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/xdm_commonPolicy-v1_0.xsd (nonexistent)
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- XDM - Common Policy version - 1.0 date - 27 Jun 2008 FILE INFORMATION
- OMA Permanent Document File: OMA-SUP-XSD_xdm_commonPolicy-V1_0_2-20080627-A
- Type: Text - Schema Description Public Reachable Information Path: http://www.openmobilealliance.org/tech/profiles
- Name: xdm_commonPolicy-v1_0.xsd NORMATIVE INFORMATION Information about this
- file can be found in the specification OMA-TS-XDM_Core-V1_1 available at
- http://www.openmobilealliance.org/ Send comments to [email protected]
- LEGAL DISCLAIMER Use of this document is subject to all of the terms and
- conditions of the Use Agreement located at http://www.openmobilealliance.org/UseAgreement.html
- You may use this document or any part of the document for internal or educational
- purposes only, provided you do not modify, edit or take out of context the
- information in this document in any manner. Information contained in this
- document may be used, at your sole risk, for any purposes. You may not use
- this document in any other manner without the prior written permission of
- the Open Mobile Alliance. The Open Mobile Alliance authorizes you to copy
- this document, provided that you retain all copyright and other proprietary
- notices contained in the original materials on any copies of the materials
- and that you comply strictly with these terms. This copyright permission
- does not constitute an endorsement of the products or services. The Open
- Mobile Alliance assumes no responsibility for errors or omissions in this
- document. Each Open Mobile Alliance member has agreed to use reasonable endeavors
- to inform the Open Mobile Alliance in a timely manner of Essential IPR as
- it becomes aware that the Essential IPR is related to the prepared or published
- specification. However, the members do not have an obligation to conduct
- IPR searches. The declared Essential IPR is publicly available to members
- and non-members of the Open Mobile Alliance and may be found on the "OMA
- IPR Declarations" list at http://www.openmobilealliance.org/ipr.html. The
- Open Mobile Alliance has not conducted an independent IPR review of this
- document and the information contained herein, and makes no representations
- or warranties regarding third party IPR, including without limitation patents,
- copyrights or trade secret rights. This document may contain inventions for
- which you must obtain licenses from third parties before making, using or
- selling the inventions. Defined terms above are set forth in the schedule
- to the Open Mobile Alliance Application Form. NO REPRESENTATIONS OR WARRANTIES
- (WHETHER EXPRESS OR IMPLIED) ARE MADE BY THE OPEN MOBILE ALLIANCE OR ANY
- OPEN MOBILE ALLIANCE MEMBER OR ITS AFFILIATES REGARDING ANY OF THE IPR'S
- REPRESENTED ON THE "OMA IPR DECLARATIONS" LIST, INCLUDING, BUT NOT LIMITED
- TO THE ACCURACY, COMPLETENESS, VALIDITY OR RELEVANCE OF THE INFORMATION OR
- WHETHER OR NOT SUCH RIGHTS ARE ESSENTIAL OR NON-ESSENTIAL. THE OPEN MOBILE
- ALLIANCE IS NOT LIABLE FOR AND HEREBY DISCLAIMS ANY DIRECT, INDIRECT, PUNITIVE,
- SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR EXEMPLARY DAMAGES ARISING OUT OF OR
- IN CONNECTION WITH THE USE OF DOCUMENTS AND THE INFORMATION CONTAINED IN
- THE DOCUMENTS. Copyright 2008 Open Mobile Alliance Ltd. All Rights Reserved.
- Used with the permission of the Open Mobile Alliance Ltd. under the terms
- set forth above. -->
-
-<xs:schema targetNamespace="urn:oma:xml:xdm:common-policy"
- xmlns="urn:oma:xml:xdm:common-policy" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified" attributeFormDefault="unqualified">
-
- <!-- OMA specific "conditions" child elements -->
- <xs:element name="other-identity" type="emptyType" />
-
- <xs:element name="external-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="entry" type="anchorType"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="anonymous-request" type="emptyType" />
-
- <xs:complexType name="anchorType">
- <xs:attribute name="anc" type="xs:anyURI" />
- <xs:anyAttribute processContents="lax" />
- </xs:complexType>
-
- <xs:complexType name="emptyType" />
-
-</xs:schema>
/tags/v3.0.3/trunk/xsd/xdm_commonPolicy-v1_0.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/ResourceList.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/ResourceList.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/ResourceList.xsd (nonexistent)
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<xs:schema xmlns="urn:ietf:params:xml:ns:resource-lists"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified"
- elementFormDefault="qualified" targetNamespace="urn:ietf:params:xml:ns:resource-lists">
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
- schemaLocation="xml.xsd" />
- <xs:complexType name="listType">
- <xs:sequence>
- <xs:element minOccurs="0" name="display-name"
- type="display-nameType" />
- <xs:sequence maxOccurs="unbounded" minOccurs="0">
- <xs:choice>
- <xs:element name="list">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="listType" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="external" type="externalType" />
- <xs:element name="entry" type="entryType" />
- <xs:element name="entry-ref" type="entry-refType" />
- </xs:choice>
- </xs:sequence>
- <xs:any maxOccurs="unbounded" minOccurs="0"
- namespace="##other" processContents="lax" />
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="optional" />
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <xs:complexType name="entryType">
- <xs:sequence>
- <xs:element minOccurs="0" name="display-name">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="display-nameType" />
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:any maxOccurs="unbounded" minOccurs="0"
- namespace="##other" processContents="lax" />
- </xs:sequence>
- <xs:attribute name="uri" type="xs:anyURI" use="required" />
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <xs:complexType name="entry-refType">
- <xs:sequence>
- <xs:element minOccurs="0" name="display-name"
- type="display-nameType" />
- <xs:any maxOccurs="unbounded" minOccurs="0"
- namespace="##other" processContents="lax" />
- </xs:sequence>
- <xs:attribute name="ref" type="xs:anyURI" use="required" />
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <xs:complexType name="externalType">
- <xs:sequence>
- <xs:element minOccurs="0" name="display-name"
- type="display-nameType" />
- <xs:any maxOccurs="unbounded" minOccurs="0"
- namespace="##other" processContents="lax" />
- </xs:sequence>
- <xs:attribute name="anchor" type="xs:anyURI" />
- <xs:anyAttribute namespace="##other"
- processContents="lax" />
- </xs:complexType>
- <xs:element name="resource-lists">
- <xs:complexType>
- <xs:sequence maxOccurs="unbounded" minOccurs="0">
- <xs:element name="list" type="listType" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="display-nameType">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="xml:lang" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-</xs:schema>
/tags/v3.0.3/trunk/xsd/ResourceList.xsd
Property changes:
Deleted: svn:keywords
## -1 +0,0 ##
-LastChangedDate
\ No newline at end of property
Index: tags/v3.0.3/trunk/xsd/PSTN.xsd
===================================================================
--- tags/v3.0.3/trunk/xsd/PSTN.xsd (revision 648)
+++ tags/v3.0.3/trunk/xsd/PSTN.xsd (nonexistent)
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="http://uri.etsi.org/ngn/params/xml/simservs/pstn" xmlns:ns1="http://uri.etsi.org/ngn/params/xml/simservs/pstn"
- targetNamespace="http://uri.etsi.org/ngn/params/xml/simservs/pstn"
- elementFormDefault="qualified">
- <xs:annotation>
- <xs:documentation>XML Schema definition for mappingof some PSTN
- into
- SIP MIME Bodies
- </xs:documentation>
- </xs:annotation>
- <!--Definition of simple types -->
- <xs:simpleType name="OneBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="TwoBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="ThreeBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="FourBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1][0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="FiveBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1][0-1][0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="SixBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1][0-1][0-1][0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="SevenBitType">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-1][0-1][0-1][0-1][0-1][0-1][0-1]" />
- </xs:restriction>
- </xs:simpleType>
- <!--Definition of complex types -->
- <!--Definition of BearerCapability Octets -->
- <xs:complexType name="BCOctet3Type">
- <xs:sequence>
- <xs:element name="CodingStandard" type="TwoBitType" />
- <xs:element name="InformationTransferCabability"
- type="FiveBitType" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="BCOctet4Type">
- <xs:sequence>
- <xs:element name="TransferMode" type="TwoBitType" />
- <xs:element name="InformationTransferRate" type="FiveBitType" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="BCOctet4-1Type">
- <xs:sequence>
- <xs:element name="RateMultiplier" type="SevenBitType" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="BCOctet5Type">
- <xs:sequence>
- <xs:element name="Layer1Identification" type="TwoBitType" />
- <xs:element name="UserInfoLayer1Protocol