Compare Revisions

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

Ignore whitespace Rev 540 → Rev 541

/tags/v1.8.0/xsd/gen_ttcn/NoTargetNamespace.ttcn
0,0 → 1,50
module NoTargetNamespace {
import from XSDAUX language "TTCN-3:2013" all;
 
type record Initial_registration {
}
 
type record Emergency {
}
 
type TAction Action;
 
type record Emergency_registration {
}
 
type record TType {
XSDAUX.AnyAttributes attr optional,
record of XSDAUX.AnyType elem_list
}
 
type TIMS3GPP Ims_3gpp;
 
type record TAction {
XSDAUX.AnyAttributes attr optional,
record of XSDAUX.AnyType elem_list
}
 
type record TAlternativeService {
XSDAUX.AnyAttributes attr optional,
TType type_,
XSDAUX.string reason,
record of XSDAUX.AnyType elem_list
}
 
type record Restoration {
}
 
type record TIMS3GPP {
XSDAUX.decimal version,
XSDAUX.AnyAttributes attr optional,
union {
TAlternativeService alternative_service,
XSDAUX.string service_info
} choice,
record of XSDAUX.AnyType elem_list
}
 
}
with {
encode "Ims3gpp";
}
/tags/v1.8.0/xsd/gen_ttcn/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn
0,0 → 1,118
module http_uri_etsi_org_ngn_params_xml_comm_div_info {
import from XSDAUX language "TTCN-3:2013" all;
 
type record of Diversion_reason_info_type Diversion_reason_info_types;
 
type record Comm_div_ntfy_info_type {
XSDAUX.AnyAttributes attr optional,
User_info_type originating_user_info optional,
XSDAUX.anyURI diverting_user_info optional,
XSDAUX.anyURI diverted_to_user_info optional,
XSDAUX.dateTime diversion_time_info optional,
Diversion_reason_info_type diversion_reason_info optional,
Diversion_rule_info_type diversion_rule_info optional,
record of XSDAUX.AnyType elem_list
}
 
type enumerated Diversion_reason_info_type {
int302(302),
int404(404),
int408(408),
int480(480),
int486(486),
int487(487),
int503(503)
}
 
type record User_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
record of User_info_type user_info_list optional
}
 
type record Presence_status_info_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string presence_status
}
 
type record Comm_div_subs_info_type {
XSDAUX.AnyAttributes attr optional,
Comm_div_selection_criteria_type comm_div_selection_criteria optional,
Comm_div_ntfy_trigger_criteria_type comm_div_ntfy_trigger_criteria optional,
Comm_div_info_selection_criteria_type comm_div_info_selection_criteria optional,
record of XSDAUX.AnyType elem_list
}
 
type record Diversion_rule_info_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string diversion_rule
}
 
type record User_info_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string user_name optional,
XSDAUX.anyURI user_URI
}
 
type record Time_range_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
record of Time_range_type time_range_list optional
}
 
type Comm_div_info_type Comm_div_info;
 
type record Comm_div_ntfy_trigger_criteria_type {
XSDAUX.AnyAttributes attr optional,
Time_range_selection_criteria_type notification_time_selection_criteria optional,
Presence_status_selection_criteria_type presence_status_selection_criteria optional,
XSDAUX.integerXSD notification_buffer_interval (-infinity .. 86400) optional,
record of XSDAUX.AnyType elem_list
}
 
type record Comm_div_info_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.Boolean disable_originating_user_info optional,
XSDAUX.Boolean disable_diverting_user_info optional,
XSDAUX.Boolean disable_diverted_to_user_info optional,
XSDAUX.Boolean disable_diversion_time_info optional,
XSDAUX.Boolean disable_diversion_reason_info optional,
XSDAUX.Boolean disable_diversion_rule_info optional,
record of XSDAUX.AnyType elem_list
}
 
type record Time_range_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.dateTime start_time,
XSDAUX.dateTime end_time
}
 
type record Presence_status_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
record of Presence_status_info_type presence_status_info_list optional
}
 
type record Diversion_reason_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
Diversion_reason_info_types diversion_reason_info
}
 
type record Comm_div_info_type {
XSDAUX.anyURI entity,
Comm_div_subs_info_type comm_div_subs_info optional,
Comm_div_ntfy_info_type comm_div_ntfy_info optional,
record of XSDAUX.AnyType elem_list
}
 
type record Comm_div_selection_criteria_type {
XSDAUX.AnyAttributes attr optional,
User_selection_criteria_type originating_user_selection_criteria optional,
XSDAUX.anyURI diverting_user_selection_criteria optional,
XSDAUX.anyURI diverted_to_user_selection_criteria optional,
Time_range_selection_criteria_type diversion_time_selection_criteria optional,
Diversion_reason_selection_criteria_type diversion_reason_selection_criteria optional,
record of XSDAUX.AnyType elem_list
}
 
}
with {
encode "CDIVN";
}
/tags/v1.8.0/xsd/gen_ttcn/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn
0,0 → 1,26
module http_uri_etsi_org_ngn_params_xml_simservs_mcid {
import from XSDAUX language "TTCN-3:2013" all;
 
type record ResponseType {
BitType mcidResponseIndicator,
BitType holdingProvidedIndicator
}
 
type XSDAUX.string BitType (pattern "[0-1]");
 
type record Mcid {
union {
RequestType request,
ResponseType response
} choice
}
 
type record RequestType {
BitType mcidRequestIndicator,
BitType holdingIndicator
}
 
}
with {
encode "MCID";
}
/tags/v1.8.0/xsd/gen_ttcn/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn
0,0 → 1,290
module http_uri_etsi_org_ngn_params_xml_simservs_pstn {
import from XSDAUX language "TTCN-3:2013" all;
 
type record PSTN_transit {
record length (1 .. 2) of BearerCapabilityType bearerInfomationElement_list,
record length (0 .. 2) of HighLayerCompatibilityType highLayerCompatibility_list optional,
LowLayerCompatibilityType lowLayerCompatibility optional,
record of ProgressIndicatorType progressIndicator_list optional,
record of DisplayType display_list optional
}
 
type XSDAUX.string SevenBitType (pattern "[0-1][0-1][0-1][0-1][0-1][0-1][0-1]");
 
type record LLOctet5aType {
OneBitType synchronousAsynchronous,
OneBitType negotiation,
FiveBitType userRate
}
 
type record LLOctet7aTR9577Type {
FourBitType additionalLayer3Info
}
 
type record LLOctet4Type {
TwoBitType transferMode,
FiveBitType informationTransferRate
}
 
type record LLOctet6aUserSpecificType {
SevenBitType userSpecificLayer2Information
}
 
type record LLOctet3aType {
OneBitType negotiationIndicator
}
 
type record BCOctet5Type {
TwoBitType layer1Identification,
FiveBitType userInfoLayer1Protocol
}
 
type record BCOctet4Type {
TwoBitType transferMode,
FiveBitType informationTransferRate
}
 
type record BCOctet7Type {
TwoBitType layer3Identification,
FiveBitType userInfoLayer3Protocol
}
 
type record BCOctet5bV120Type {
OneBitType rateAdaptionHeader,
OneBitType multipleFrameEstablishmentSupport,
OneBitType modeOfOperation,
OneBitType logicalLinkIdentifier,
OneBitType assignor,
OneBitType inbandOutbandNegotiation
}
 
type record LLOctet7bTR9577Type {
FourBitType additionalLayer3Info
}
 
type XSDAUX.string ThreeBitType (pattern "[0-1][0-1][0-1]");
 
type record LLOctet6aHDLCType {
TwoBitType mode
}
 
type record DisplayType {
DispOctet3Type dispOctet3
}
 
type record LowLayerCompatibilityType {
LLOctet3Type lLOctet3,
LLOctet3aType lLOctet3a optional,
LLOctet4Type lLOctet4,
LLOctet4_1Type lLOctet4_1 optional,
LLOctet5Type lLOctet5 optional,
LLOctet5aType lLOctet5a optional,
LLOctet5bV110Type lLOctet5bV110 optional,
LLOctet5bV120Type lLOctet5bV120 optional,
LLOctet5cType lLOctet5c optional,
LLOctet5dType lLOctet5d optional,
LLOctet6Type lLOctet6 optional,
LLOctet6aHDLCType lLOctet6aHDLC optional,
LLOctet6aUserSpecificType lLOctet6aUserSpecific optional,
LLOctet6bType lLOctet6b optional,
LLOctet7Type lLOctet7,
LLOctet7aUserSpecificType lLOctet7aUserSpecific optional,
LLOctet7aX25Type lLOctet7aX25 optional,
LLOctet7bX25Type lLOctet7bX25 optional,
LLOctet7cType lLOctet7c optional,
LLOctet7aTR9577Type lLOctet7aTR9577 optional,
LLOctet7bTR9577Type lLOctet7bTR9577 optional
}
 
type record HLOctet3Type {
TwoBitType codingStandard,
ThreeBitType interpretation,
TwoBitType presentationMethod
}
 
type record BCOctet5dType {
OneBitType duplexMode,
SixBitType modemType
}
 
type record BCOctet3Type {
TwoBitType codingStandard,
FiveBitType informationTransferCabability
}
 
type record LLOctet5bV120Type {
OneBitType rateAdaptionHeader,
OneBitType multipleFrameEstablishmentSupport,
OneBitType modeOfOperation,
OneBitType logicalLinkIdentifier,
OneBitType assignor,
OneBitType inbandOutbandNegotiation
}
 
type record LLOctet4_1Type {
SevenBitType rateMultiplier
}
 
type record LLOctet5dType {
OneBitType duplexMode,
SixBitType modemType
}
 
type XSDAUX.string FourBitType (pattern "[0-1][0-1][0-1][0-1]");
 
type record BCOctet5bV110Type {
TwoBitType intermediateRate,
OneBitType nIConTX,
OneBitType nIConRX,
OneBitType flowControlOnTX,
OneBitType flowControlOnRX
}
 
type record LLOctet3Type {
TwoBitType codingStandard,
FiveBitType informationTransferCapability
}
 
type record LLOctet7cType {
SevenBitType packetWindowSize
}
 
type record BCOctet5cType {
TwoBitType numberOfStopBits,
TwoBitType numberOfDataBits,
ThreeBitType parity
}
 
type record LLOctet6Type {
TwoBitType layer2Identification,
FiveBitType userInfoLayer2Protocol
}
 
type record LLOctet7aX25Type {
TwoBitType mode
}
 
type record LLOctet7bX25Type {
FourBitType defaultPacketSize
}
 
type record HLOctet4aMaintenanceType {
SevenBitType highLayerCharacteristics
}
 
type record DispOctet3Type {
SevenBitType displayInformation
}
 
type record LLOctet6bType {
SevenBitType windowSize
}
 
type record BCOctet7bType {
FourBitType additionalLayer3Info
}
 
type record LLOctet5cType {
TwoBitType numberOfStopBits,
TwoBitType numberOfDataBits,
ThreeBitType parity
}
 
type record ProgressIndicatorType {
ProgressOctet3Type progressOctet3,
ProgressOctet4Type progressOctet4
}
 
type XSDAUX.string OneBitType (pattern "[0-1]");
 
type record LLOctet5Type {
TwoBitType layer1Identification,
FiveBitType userInfoLayer1Protocol
}
 
type record ProgressOctet3Type {
TwoBitType codingStandard,
FourBitType location
}
 
type XSDAUX.string SixBitType (pattern "[0-1][0-1][0-1][0-1][0-1][0-1]");
 
type record LLOctet7Type {
TwoBitType layer3Identification,
FiveBitType userInfoLayer3Protocol
}
 
type record LLOctet5bV110Type {
TwoBitType intermediateRate,
OneBitType nIConTX,
OneBitType nIConRX,
OneBitType flowControlOnTX,
OneBitType flowControlOnRX
}
 
type record BCOctet6Type {
TwoBitType layer2Identification,
FiveBitType userInfoLayer2Protocol
}
 
type record HLOctet4Type {
SevenBitType highLayerCharacteristics
}
 
type record BCOctet5aType {
OneBitType synchronousAsynchronous,
OneBitType negotiation,
FiveBitType userRate
}
 
type XSDAUX.string FiveBitType (pattern "[0-1][0-1][0-1][0-1][0-1]");
 
type XSDAUX.string TwoBitType (pattern "[0-1][0-1]");
 
type record HighLayerCompatibilityType {
HLOctet3Type hLOctet3,
HLOctet4Type hLOctet4,
HLOctet4aMaintenanceType hLOctet4aMaintenance optional,
HLOctet4aAudioType hLOctet4Audio optional
}
 
type record BearerCapabilityType {
BCOctet3Type bCoctet3,
BCOctet4Type bCoctet4,
BCOctet4_1Type bCoctet4_1 optional,
BCOctet5Type bCoctet5 optional,
BCOctet5aType bCoctet5a optional,
BCOctet5bV110Type bCoctet5bV110 optional,
BCOctet5bV120Type bCoctet5bV120 optional,
BCOctet5cType bCoctet5c optional,
BCOctet5dType bCoctet5d optional,
BCOctet6Type bCoctet6 optional,
BCOctet7Type bCoctet7 optional,
BCOctet7aType bCoctet7a optional,
BCOctet7bType bCoctet7b optional
}
 
type record HLOctet4aAudioType {
SevenBitType videoTelephonyCharacteristics
}
 
type record BCOctet7aType {
FourBitType additionalLayer3Info
}
 
type record ProgressOctet4Type {
SevenBitType progressDescription
}
 
type record BCOctet4_1Type {
SevenBitType rateMultiplier
}
 
type record LLOctet7aUserSpecificType {
SevenBitType optionalLayer3Information
}
 
}
with {
encode "PSTN";
}
/tags/v1.8.0/xsd/gen_ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn
0,0 → 1,181
module http_uri_etsi_org_ngn_params_xml_simservs_xcap {
import from XSDAUX language "TTCN-3:2013" all;
 
import from urn_ietf_params_xml_ns_common_policy language "XSD" all
with {
extension "File:common-policy.xsd";
}
 
type Empty_element_type Roaming;
 
type XSDAUX.string TwobitType (pattern "[0-1][0-1]");
 
/**
* @desc
* This is the communication diversion configuration
document.
*/
type record Communication_diversion {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
}
 
type Empty_element_type Rule_deactivated;
 
type record SimservType {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional
}
 
type XSDAUX.hexBinary SixteenbitType;
 
type XSDAUX.string Presence_status_activity_type;
 
type SimservType AbsService;
 
type Empty_element_type Anonymous;
 
type Empty_element_type Busy;
 
type Allow_action_type Allow;
 
type enumerated Reveal_URIoptions_type {
false_,
not_reveal_GRUU,
true_
}
 
/**
* @desc
* XML Schema for data manipulation of ETSI
NGN PSTN/ISDN Simulation Services
*/
type record Simservs {
XSDAUX.AnyAttributes attr optional,
record of union {
SimservType absService,
Terminating_identity_presentation_restriction terminating_identity_presentation_restriction,
SimservType terminating_identity_presentation,
Originating_identity_presentation_restriction originating_identity_presentation_restriction,
SimservType originating_identity_presentation,
Communication_diversion communication_diversion,
Incoming_communication_barring incoming_communication_barring,
Outgoing_communication_barring outgoing_communication_barring
} absServiceGroup_list,
record {
record of XSDAUX.AnyType elem_list
} extensions optional
}
 
type SimservType Originating_identity_presentation;
 
/**
* @desc
* This is the outgoing communication barring configuration
document.
*/
type record Outgoing_communication_barring {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
}
 
type Media_type1 Media;
 
/**
* @desc
* Terminating Identity presentation Restriction
 
*/
type record Terminating_identity_presentation_restriction {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
enumerated {
presentation_not_restricted,
presentation_restricted
} default_behaviour optional
}
 
type record Empty_element_type {
}
 
type Empty_element_type Not_reachable;
 
type Empty_element_type Communication_diverted;
 
type XSDAUX.integerXSD CugIndexType (0 .. 32767);
 
type XSDAUX.hexBinary NetworkIdentityType;
 
type record CugRequestType {
XSDAUX.Boolean outgoingAccessRequest,
CugIndexType cugIndex
}
 
type XSDAUX.string Media_type1;
 
/**
* @desc
* Originating Identity presentation Restriction
 
*/
type record Originating_identity_presentation_restriction {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
enumerated {
presentation_not_restricted,
presentation_restricted
} default_behaviour optional
}
 
type XSDAUX.positiveInteger NoReplyTimer (5 .. 180);
 
/**
* @desc
* This is the incoming communication barring configuration
document.
*/
type record Incoming_communication_barring {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
}
 
type XSDAUX.Boolean Allow_action_type;
 
type Presence_status_activity_type Presence_status;
 
type record Cug {
XSDAUX.Boolean active optional,
XSDAUX.AnyAttributes attr optional,
CugRequestType cugCallOperation optional,
NetworkIdentityType networkIndicator optional,
SixteenbitType cugInterlockBinaryCode optional,
TwobitType cugCommunicationIndicator optional
}
 
type Empty_element_type No_answer;
 
type SimservType Terminating_identity_presentation;
 
type Forward_to_type Forward_to;
 
type Empty_element_type Not_registered;
 
type record Forward_to_type {
XSDAUX.anyURI target,
XSDAUX.Boolean notify_caller optional,
Reveal_URIoptions_type reveal_identity_to_caller optional,
Reveal_URIoptions_type reveal_served_user_identity_to_caller optional,
XSDAUX.Boolean notify_served_user optional,
XSDAUX.Boolean notify_served_user_on_outbound_call optional,
Reveal_URIoptions_type reveal_identity_to_target optional,
NoReplyTimer noReplyTimer optional
}
 
}
with {
encode "SupplementaryServices";
}
/tags/v1.8.0/xsd/gen_ttcn/http_www_w3_org_XML_1998_namespace.ttcn
0,0 → 1,30
module http_www_w3_org_XML_1998_namespace {
import from XSDAUX language "TTCN-3:2013" all;
 
type union Lang {
XSDAUX.languageXSD alt_0,
enumerated {
x
} alt_1
}
 
type XSDAUX.anyURI Base;
 
type XSDAUX.ID Id;
 
type record SpecialAttrs {
Base base optional,
Id id optional,
Lang lang optional,
Space space optional
}
 
type enumerated Space {
default_,
preserve
}
 
}
with {
encode "xml";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_3gpp_ns_cw_1_0.ttcn
0,0 → 1,18
module urn_3gpp_ns_cw_1_0 {
import from XSDAUX language "TTCN-3:2013" all;
 
type TCWtype Ims_cw;
 
type record TCWtype {
XSDAUX.AnyAttributes attr optional,
TEmptyType communication_waiting_indication optional,
record of XSDAUX.AnyType elem_list
}
 
type record TEmptyType {
}
 
}
with {
encode "cw";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_common_policy.ttcn
0,0 → 1,68
module urn_ietf_params_xml_ns_common_policy {
import from XSDAUX language "TTCN-3:2013" all;
 
type record SphereType {
XSDAUX.string value_
}
 
type record ExtensibleType {
record of XSDAUX.AnyType elem_list
}
 
type record Ruleset {
record of RuleType rule_list optional
}
 
type record RuleType {
XSDAUX.ID id,
ConditionsType conditions optional,
ExtensibleType actions optional,
ExtensibleType transformations optional
}
 
type record ConditionsType {
record length (1 .. infinity) of union {
record length (0 .. 1) of IdentityType identity_list,
record length (1 .. 1) of SphereType sphere_list,
record length (1 .. 1) of ValidityType validity_list,
record of XSDAUX.AnyType elem_list
} choice_list
}
 
type record ManyType {
XSDAUX.string domain optional,
record of union {
ExceptType except_,
XSDAUX.AnyType elem_list
} choice_list
}
 
type record ValidityType {
record length (1 .. infinity) of record {
XSDAUX.dateTime from_,
XSDAUX.dateTime until
} sequence_list
}
 
type record IdentityType {
record length (1 .. infinity) of union {
OneType one,
ManyType many,
XSDAUX.AnyType elem
} choice_list
}
 
type record OneType {
XSDAUX.anyURI id,
XSDAUX.AnyType elem optional
}
 
type record ExceptType {
XSDAUX.string domain optional,
XSDAUX.anyURI id optional
}
 
}
with {
encode "common_policy";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_conference_info.ttcn
0,0 → 1,205
module urn_ietf_params_xml_ns_conference_info {
import from XSDAUX language "TTCN-3:2013" all;
 
type enumerated Endpoint_status_type {
alerting,
connected,
dialing_in,
dialing_out,
disconnected,
disconnecting,
muted_via_focus,
on_hold,
pending
}
 
type record Users_type {
State_type state optional,
XSDAUX.AnyAttributes attr optional,
record of User_type user_list optional,
record of XSDAUX.AnyType elem_list
}
 
type record of XSDAUX.string Keywords_type;
 
type enumerated State_type {
deleted,
full,
partial
}
 
type record Conference_media_type {
XSDAUX.AnyAttributes attr optional,
record length (1 .. infinity) of Conference_medium_type entry_list
}
 
type record Endpoint_type {
XSDAUX.string entity optional,
State_type state optional,
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
Execution_type referred optional,
Endpoint_status_type status optional,
Joining_type joining_method optional,
Execution_type joining_info optional,
Disconnection_type disconnection_method optional,
Execution_type disconnection_info optional,
record of Media_type media_list optional,
Call_type call_info optional,
record of XSDAUX.AnyType elem_list
}
 
type record Sip_dialog_id_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
XSDAUX.string call_id,
XSDAUX.string from_tag,
XSDAUX.string to_tag,
record of XSDAUX.AnyType elem_list
}
 
type Conference_type Conference_info;
 
type record Conference_description_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
XSDAUX.string subject optional,
XSDAUX.string free_text optional,
Keywords_type keywords optional,
Uris_type conf_uris optional,
Uris_type service_uris optional,
XSDAUX.unsignedInt maximum_user_count optional,
Conference_media_type available_media optional,
record of XSDAUX.AnyType elem_list
}
 
type record Conference_state_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.unsignedInt user_count optional,
XSDAUX.Boolean active optional,
XSDAUX.Boolean locked optional,
record of XSDAUX.AnyType elem_list
}
 
type record Conference_type {
XSDAUX.anyURI entity,
State_type state optional,
XSDAUX.unsignedInt version optional,
XSDAUX.AnyAttributes attr optional,
Conference_description_type conference_description optional,
Host_type host_info optional,
Conference_state_type conference_state optional,
Users_type users optional,
Uris_type sidebars_by_ref optional,
Sidebars_by_val_type sidebars_by_val optional,
record of XSDAUX.AnyType elem_list
}
 
type record Uri_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.anyURI uri,
XSDAUX.string display_text optional,
XSDAUX.string purpose optional,
Execution_type modified optional,
record of XSDAUX.AnyType elem_list
}
 
type record Host_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
XSDAUX.anyURI web_page optional,
Uris_type uris optional,
record of XSDAUX.AnyType elem_list
}
 
type record of XSDAUX.languageXSD User_languages_type;
 
type record Uris_type {
State_type state optional,
XSDAUX.AnyAttributes attr optional,
record length (1 .. infinity) of Uri_type entry_list
}
 
type record Execution_type {
XSDAUX.AnyAttributes attr optional,
XSDAUX.dateTime when optional,
XSDAUX.string reason optional,
XSDAUX.anyURI by optional
}
 
type enumerated Media_status_type {
inactive,
recvonly,
sendonly,
sendrecv
}
 
type record User_type {
XSDAUX.anyURI entity optional,
State_type state optional,
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
Uris_type associated_aors optional,
User_roles_type roles optional,
User_languages_type languages optional,
XSDAUX.anyURI cascaded_focus optional,
record of Endpoint_type endpoint_list optional,
record of XSDAUX.AnyType elem_list
}
 
type record Media_type {
XSDAUX.string id,
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
XSDAUX.string type_ optional,
XSDAUX.string label_ optional,
XSDAUX.string src_id optional,
Media_status_type status optional,
record of XSDAUX.AnyType elem_list
}
 
type record Call_type {
XSDAUX.AnyAttributes attr optional,
union {
Sip_dialog_id_type sip,
record of XSDAUX.AnyType elem_list
} choice
}
 
type record Conference_medium_type {
XSDAUX.string label_,
XSDAUX.AnyAttributes attr optional,
XSDAUX.string display_text optional,
XSDAUX.string type_,
Media_status_type status optional,
record of XSDAUX.AnyType elem_list
}
 
type record Sidebars_by_val_type {
State_type state optional,
XSDAUX.AnyAttributes attr optional,
record of Conference_type entry_list optional
}
 
type enumerated Disconnection_type {
booted,
busy,
departed,
failed
}
 
type enumerated Joining_type {
dialed_in,
dialed_out,
focus_owner
}
 
type record User_roles_type {
XSDAUX.AnyAttributes attr optional,
record length (1 .. infinity) of XSDAUX.string entry_list
}
 
}
with {
encode "CONF";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_pidf.ttcn
0,0 → 1,53
module urn_ietf_params_xml_ns_pidf {
import from XSDAUX language "TTCN-3:2013" all;
 
import from http_www_w3_org_XML_1998_namespace language "XSD" all
with {
extension "File:xml.xsd";
}
 
type record Tuple {
XSDAUX.ID id,
Status status,
record of XSDAUX.AnyType elem_list,
Contact contact optional,
record of Note note_list optional,
XSDAUX.dateTime timestamp optional
}
 
type record Status {
Basic basic optional,
record of XSDAUX.AnyType elem_list
}
 
type enumerated Basic {
closed,
open
}
 
type XSDAUX.Boolean MustUnderstand;
 
type record Presence_1 {
XSDAUX.anyURI entity,
record of Tuple tuple_list optional,
record of Note note_list optional,
record of XSDAUX.AnyType elem_list
}
 
type record Contact {
Qvalue priority optional,
XSDAUX.anyURI base
}
 
type record Note {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
XSDAUX.string base
}
 
type Presence_1 Presence;
 
type XSDAUX.decimal Qvalue;
}
with {
encode "pidf";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn
0,0 → 1,40
module urn_ietf_params_xml_ns_pidf_geopriv10 {
import from XSDAUX language "TTCN-3:2013" all;
 
import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all
with {
extension "File:geopriv10basic.xsd";
}
 
import from http_www_w3_org_XML_1998_namespace language "XSD" all
with {
extension "File:xml.xsd";
}
 
type record Geopriv_1 {
LocInfoType location_info,
urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.LocPolicyType usage_rules,
LocMethod method optional,
LocProvidedBy provided_by optional,
record of XSDAUX.AnyType elem_list
}
 
type record LocInfoType {
record of XSDAUX.AnyType elem_list
}
 
type record LocProvidedBy {
record length (1 .. infinity) of XSDAUX.AnyType elem_list
}
 
type Geopriv_1 Geopriv;
 
type record LocMethod {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
XSDAUX.string base
}
 
}
with {
encode "pidf_lo";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn
0,0 → 1,25
module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy {
import from XSDAUX language "TTCN-3:2013" all;
 
import from http_www_w3_org_XML_1998_namespace language "XSD" all
with {
extension "File:xml.xsd";
}
 
type record LocPolicyType {
XSDAUX.Boolean retransmission_allowed optional,
XSDAUX.dateTime retention_expiry optional,
XSDAUX.anyURI external_ruleset optional,
Notewell note_well optional,
record of XSDAUX.AnyType elem_list
}
 
type record Notewell {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
XSDAUX.string base
}
 
}
with {
encode "geopriv10basic";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_reginfo.ttcn
0,0 → 1,69
module urn_ietf_params_xml_ns_reginfo {
import from XSDAUX language "TTCN-3:2013" all;
 
import from http_www_w3_org_XML_1998_namespace language "XSD" all
with {
extension "File:xml.xsd";
}
 
type record Reginfo {
enumerated {
full,
partial
} state,
XSDAUX.nonNegativeInteger version,
record of Registration registration_list optional,
record of XSDAUX.AnyType elem_list
}
 
type record Registration {
XSDAUX.anyURI aor,
XSDAUX.string id,
enumerated {
active,
init,
terminated
} state,
record of Contact contact_list optional,
record of XSDAUX.AnyType elem_list
}
 
type record Contact {
XSDAUX.string callid optional,
XSDAUX.unsignedLong cseq optional,
XSDAUX.unsignedLong duration_registered optional,
enumerated {
created,
deactivated,
expired,
probation,
refreshed,
registered,
rejected,
shortened,
unregistered
} event,
XSDAUX.unsignedLong expires optional,
XSDAUX.string id,
XSDAUX.string q optional,
XSDAUX.unsignedLong retry_after optional,
enumerated {
active,
terminated
} state,
XSDAUX.anyURI uri,
record {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
XSDAUX.string base
} display_name optional,
record of record {
XSDAUX.string name,
XSDAUX.string base
} unknown_param_list optional,
record of XSDAUX.AnyType elem_list
}
 
}
with {
encode "regInfo";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_ietf_params_xml_ns_resource_lists.ttcn
0,0 → 1,75
module urn_ietf_params_xml_ns_resource_lists {
import from XSDAUX language "TTCN-3:2013" all;
 
import from http_www_w3_org_XML_1998_namespace language "XSD" all
with {
extension "File:xml.xsd";
}
 
type record Entry_refType {
XSDAUX.anyURI ref,
XSDAUX.AnyAttributes attr optional,
Display_nameType display_name optional,
record of XSDAUX.AnyType elem_list
}
 
type record EntryType {
XSDAUX.anyURI uri,
XSDAUX.AnyAttributes attr optional,
record {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
Display_nameType base
} display_name optional,
record of XSDAUX.AnyType elem_list
}
 
type record ListType {
XSDAUX.string name optional,
XSDAUX.AnyAttributes attr optional,
Display_nameType display_name optional,
record of record {
union {
record {
XSDAUX.string name optional,
XSDAUX.AnyAttributes attr optional,
Display_nameType display_name optional,
record of record {
union {
ListType.sequence_list[0].choice.list list,
ExternalType external_,
EntryType entry,
Entry_refType entry_ref
} choice
} sequence_list,
record of XSDAUX.AnyType elem_list
} list,
ExternalType external_,
EntryType entry,
Entry_refType entry_ref
} choice
} sequence_list,
record of XSDAUX.AnyType elem_list
}
 
type record ExternalType {
XSDAUX.anyURI anchor optional,
XSDAUX.AnyAttributes attr optional,
Display_nameType display_name optional,
record of XSDAUX.AnyType elem_list
}
 
type record Resource_lists {
record of record {
ListType list
} sequence_list
}
 
type record Display_nameType {
http_www_w3_org_XML_1998_namespace.Lang lang optional,
XSDAUX.string base
}
 
}
with {
encode "ResourceList";
}
/tags/v1.8.0/xsd/gen_ttcn/urn_oma_xml_xdm_common_policy.ttcn
0,0 → 1,23
module urn_oma_xml_xdm_common_policy {
import from XSDAUX language "TTCN-3:2013" all;
 
type record External_list {
record of AnchorType entry_list optional
}
 
type EmptyType Anonymous_request;
 
type EmptyType Other_identity;
 
type record EmptyType {
}
 
type record AnchorType {
XSDAUX.anyURI anc optional,
XSDAUX.AnyAttributes attr optional
}
 
}
with {
encode "xdm_commonPolicy_v1_0";
}
/tags/v1.8.0/xsd/CDIVN.xsd
0,0 → 1,249
 
<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: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>
 
<!--
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>
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/CONF.xsd
===================================================================
--- v1.8.0/xsd/CONF.xsd (nonexistent)
+++ v1.8.0/xsd/CONF.xsd (revision 541)
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <xs:schema
+ targetNamespace="urn:ietf:params:xml:ns:conference-info"
+ xmlns:tns="urn:ietf:params:xml:ns:conference-info"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:ietf:params:xml:ns:conference-info"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <!--
+ This imports the xml:language definition
+ -->
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd"/>
+ <!--
+ CONFERENCE ELEMENT
+ -->
+ <xs:element name="conference-info" type="conference-type"/>
+ <!--
+ CONFERENCE TYPE
+ -->
+ <xs:complexType name="conference-type">
+ <xs:sequence>
+ <xs:element name="conference-description"
+ type="conference-description-type" minOccurs="0"/>
+ <xs:element name="host-info"
+ type="host-type" minOccurs="0"/>
+ <xs:element name="conference-state"
+ type="conference-state-type" minOccurs="0"/>
+ <xs:element name="users"
+ type="users-type" minOccurs="0"/>
+ <xs:element name="sidebars-by-ref"
+ type="uris-type" minOccurs="0"/>
+ <xs:element name="sidebars-by-val"
+ type="sidebars-by-val-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:attribute name="state"
+ type="state-type" use="optional" default="full"/>
+ <xs:attribute name="version"
+ type="xs:unsignedInt" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ STATE TYPE
+ -->
+ <xs:simpleType name="state-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="full"/>
+ <xs:enumeration value="partial"/>
+ <xs:enumeration value="deleted"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ CONFERENCE DESCRIPTION TYPE
+ -->
+ <xs:complexType name="conference-description-type">
+ <xs:sequence>
+ <xs:element name="display-text"
+ type="xs:string" minOccurs="0"/>
+ <xs:element name="subject"
+ type="xs:string" minOccurs="0"/>
+ <xs:element name="free-text"
+ type="xs:string" minOccurs="0"/>
+ <xs:element name="keywords"
+ type="keywords-type" minOccurs="0"/>
+ <xs:element name="conf-uris"
+ type="uris-type" minOccurs="0"/>
+ <xs:element name="service-uris"
+ type="uris-type" minOccurs="0"/>
+ <xs:element name="maximum-user-count"
+ type="xs:unsignedInt" minOccurs="0"/>
+ <xs:element name="available-media"
+ type="conference-media-type" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ HOST TYPE
+ -->
+ <xs:complexType name="host-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="web-page" type="xs:anyURI"
+ minOccurs="0"/>
+ <xs:element name="uris" type="uris-type"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ CONFERENCE STATE TYPE
+ -->
+ <xs:complexType name="conference-state-type">
+ <xs:sequence>
+ <xs:element name="user-count" type="xs:unsignedInt"
+ minOccurs="0"/>
+ <xs:element name="active" type="xs:boolean"
+ minOccurs="0"/>
+ <xs:element name="locked" type="xs:boolean"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ CONFERENCE MEDIA TYPE
+ -->
+ <xs:complexType name="conference-media-type">
+ <xs:sequence>
+ <xs:element name="entry" type="conference-medium-type"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ CONFERENCE MEDIUM TYPE
+ -->
+ <xs:complexType name="conference-medium-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="status" type="media-status-type"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="label" type="xs:string"
+ use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ URIs TYPE
+ -->
+ <xs:complexType name="uris-type">
+ <xs:sequence>
+ <xs:element name="entry" type="uri-type"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="state" type="state-type"
+ use="optional" default="full"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ URI TYPE
+ -->
+ <xs:complexType name="uri-type">
+ <xs:sequence>
+ <xs:element name="uri" type="xs:anyURI"/>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="purpose" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="modified" type="execution-type"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ KEYWORDS TYPE
+ -->
+ <xs:simpleType name="keywords-type">
+ <xs:list itemType="xs:string"/>
+ </xs:simpleType>
+ <!--
+ USERS TYPE
+ -->
+ <xs:complexType name="users-type">
+ <xs:sequence>
+ <xs:element name="user" type="user-type"
+ minOccurs="0" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="state" type="state-type"
+ use="optional" default="full"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ USER TYPE
+ -->
+ <xs:complexType name="user-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="associated-aors" type="uris-type"
+ minOccurs="0"/>
+ <xs:element name="roles" type="user-roles-type"
+ minOccurs="0"/>
+ <xs:element name="languages" type="user-languages-type"
+ minOccurs="0"/>
+ <xs:element name="cascaded-focus" type="xs:anyURI"
+ minOccurs="0"/>
+ <xs:element name="endpoint" type="endpoint-type"
+ minOccurs="0" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="entity" type="xs:anyURI"/>
+ <xs:attribute name="state" type="state-type"
+ use="optional" default="full"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ USER ROLES TYPE
+ -->
+ <xs:complexType name="user-roles-type">
+ <xs:sequence>
+ <xs:element name="entry" type="xs:string"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ USER LANGUAGES TYPE
+ -->
+ <xs:simpleType name="user-languages-type">
+ <xs:list itemType="xs:language"/>
+ </xs:simpleType>
+ <!--
+ ENDPOINT TYPE
+ -->
+ <xs:complexType name="endpoint-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="referred" type="execution-type"
+ minOccurs="0"/>
+ <xs:element name="status" type="endpoint-status-type"
+ minOccurs="0"/>
+ <xs:element name="joining-method" type="joining-type"
+ minOccurs="0"/>
+ <xs:element name="joining-info"
+ type="execution-type"
+ minOccurs="0"/>
+ <xs:element name="disconnection-method"
+ type="disconnection-type"
+ minOccurs="0"/>
+ <xs:element name="disconnection-info"
+ type="execution-type"
+ minOccurs="0"/>
+ <xs:element name="media" type="media-type"
+ minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="call-info" type="call-type"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="entity" type="xs:string"/>
+ <xs:attribute name="state" type="state-type"
+ use="optional" default="full"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ ENDPOINT STATUS TYPE
+ -->
+ <xs:simpleType name="endpoint-status-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="pending"/>
+ <xs:enumeration value="dialing-out"/>
+ <xs:enumeration value="dialing-in"/>
+ <xs:enumeration value="alerting"/>
+ <xs:enumeration value="on-hold"/>
+ <xs:enumeration value="connected"/>
+ <xs:enumeration value="muted-via-focus"/>
+ <xs:enumeration value="disconnecting"/>
+ <xs:enumeration value="disconnected"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ JOINING TYPE
+ -->
+ <xs:simpleType name="joining-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="dialed-in"/>
+ <xs:enumeration value="dialed-out"/>
+ <xs:enumeration value="focus-owner"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ DISCONNECTION TYPE
+ -->
+ <xs:simpleType name="disconnection-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="departed"/>
+ <xs:enumeration value="booted"/>
+ <xs:enumeration value="failed"/>
+ <xs:enumeration value="busy"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ EXECUTION TYPE
+ -->
+ <xs:complexType name="execution-type">
+ <xs:sequence>
+ <xs:element name="when" type="xs:dateTime"
+ minOccurs="0"/>
+ <xs:element name="reason" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="by" type="xs:anyURI"
+ minOccurs="0"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ CALL TYPE
+ -->
+ <xs:complexType name="call-type">
+ <xs:choice>
+ <xs:element name="sip" type="sip-dialog-id-type"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ SIP DIALOG ID TYPE
+ -->
+ <xs:complexType name="sip-dialog-id-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="call-id" type="xs:string"/>
+ <xs:element name="from-tag" type="xs:string"/>
+ <xs:element name="to-tag" type="xs:string"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ MEDIA TYPE
+ -->
+ <xs:complexType name="media-type">
+ <xs:sequence>
+ <xs:element name="display-text" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="type" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="label" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="src-id" type="xs:string"
+ minOccurs="0"/>
+ <xs:element name="status" type="media-status-type"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:string"
+ use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <!--
+ MEDIA STATUS TYPE
+ -->
+ <xs:simpleType name="media-status-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="recvonly"/>
+ <xs:enumeration value="sendonly"/>
+ <xs:enumeration value="sendrecv"/>
+ <xs:enumeration value="inactive"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ SIDEBARS BY VAL TYPE
+ -->
+ <xs:complexType name="sidebars-by-val-type">
+ <xs:sequence>
+ <xs:element name="entry" type="conference-type"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="state" type="state-type"
+ use="optional" default="full"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:schema>
/v1.8.0/xsd/CONF.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/ResourceList.xsd
===================================================================
--- v1.8.0/xsd/ResourceList.xsd (nonexistent)
+++ v1.8.0/xsd/ResourceList.xsd (revision 541)
@@ -0,0 +1,70 @@
+<?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>
/v1.8.0/xsd/ResourceList.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/geopriv10basic.xsd
===================================================================
--- v1.8.0/xsd/geopriv10basic.xsd (nonexistent)
+++ v1.8.0/xsd/geopriv10basic.xsd (revision 541)
@@ -0,0 +1,35 @@
+<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: v1.8.0/xsd/pidf.xsd
===================================================================
--- v1.8.0/xsd/pidf.xsd (nonexistent)
+++ v1.8.0/xsd/pidf.xsd (revision 541)
@@ -0,0 +1,92 @@
+
+ <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: v1.8.0/xsd/pidf_lo.xsd
===================================================================
--- v1.8.0/xsd/pidf_lo.xsd (nonexistent)
+++ v1.8.0/xsd/pidf_lo.xsd (revision 541)
@@ -0,0 +1,57 @@
+ <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: v1.8.0/xsd/regInfo.xsd
===================================================================
--- v1.8.0/xsd/regInfo.xsd (nonexistent)
+++ v1.8.0/xsd/regInfo.xsd (revision 541)
@@ -0,0 +1,111 @@
+
+<xs:schema targetNamespace="urn:ietf:params:xml:ns:reginfo"
+xmlns:tns="urn:ietf:params:xml:ns:reginfo"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified" attributeFormDefault="unqualified">
+<!--
+ RFC 3680 clause 5.4
+-->
+
+ <!-- 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="reginfo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:registration" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="version" type="xs:nonNegativeInteger"
+use="required"/>
+ <xs:attribute name="state" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="full"/>
+ <xs:enumeration value="partial"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="registration">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:contact" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="aor" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="state" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="init"/>
+ <xs:enumeration value="active"/>
+ <xs:enumeration value="terminated"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contact">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="uri" type="xs:anyURI"/>
+ <xs:element name="display-name" minOccurs="0">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="unknown-param" minOccurs="0"
+maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="state" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="active"/>
+ <xs:enumeration value="terminated"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="event" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="created"/>
+ <xs:enumeration value="refreshed"/>
+ <xs:enumeration value="shortened"/>
+ <xs:enumeration value="expired"/>
+ <xs:enumeration value="deactivated"/>
+ <xs:enumeration value="probation"/>
+ <xs:enumeration value="unregistered"/>
+ <xs:enumeration value="rejected"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="duration-registered" type="xs:unsignedLong"/>
+ <xs:attribute name="expires" type="xs:unsignedLong"/>
+ <xs:attribute name="retry-after" type="xs:unsignedLong"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="q" type="xs:string"/>
+ <xs:attribute name="callid" type="xs:string"/>
+ <xs:attribute name="cseq" type="xs:unsignedLong"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
Index: v1.8.0/xsd/NoTargetNamespace.ttcn3view
===================================================================
--- v1.8.0/xsd/NoTargetNamespace.ttcn3view (nonexistent)
+++ v1.8.0/xsd/NoTargetNamespace.ttcn3view (revision 541)
@@ -0,0 +1,62 @@
+module NoTargetNamespace {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record Initial_registration {
+ }
+
+ type record Emergency {
+ }
+
+ type TAction Action;
+
+ type record Emergency_registration {
+ }
+
+ type record TType {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of anytype elem_list optional
+ }
+
+ type TIMS3GPP Ims_3gpp;
+
+ type record TAction {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of anytype elem_list optional
+ }
+
+ type record TAlternativeService {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ TType type_,
+ XSDAUX.string reason,
+ record of anytype elem_list optional
+ }
+
+ type record Restoration {
+ }
+
+ type record TIMS3GPP {
+ XSDAUX.decimal version,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ union {
+ TAlternativeService alternative_service,
+ XSDAUX.string service_info
+ } choice,
+ record of anytype elem_list optional
+ }
+
+}
+with {
+ encode "Ims3gpp";
+}
Index: v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn3view
===================================================================
--- v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn3view (nonexistent)
+++ v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn3view (revision 541)
@@ -0,0 +1,157 @@
+module http_uri_etsi_org_ngn_params_xml_comm_div_info {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record of Diversion_reason_info_type Diversion_reason_info_types;
+
+ type record Comm_div_ntfy_info_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ User_info_type originating_user_info optional,
+ XSDAUX.anyURI diverting_user_info optional,
+ XSDAUX.anyURI diverted_to_user_info optional,
+ XSDAUX.dateTime diversion_time_info optional,
+ Diversion_reason_info_type diversion_reason_info optional,
+ Diversion_rule_info_type diversion_rule_info optional,
+ record of anytype elem_list optional
+ }
+
+ type record User_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of User_info_type user_info_list optional
+ }
+
+ type record Presence_status_info_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string presence_status
+ }
+
+ type enumerated Diversion_reason_info_type {
+ int302(302),
+ int404(404),
+ int408(408),
+ int480(480),
+ int486(486),
+ int487(487),
+ int503(503)
+ }
+
+ type record Comm_div_subs_info_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Comm_div_selection_criteria_type comm_div_selection_criteria optional,
+ Comm_div_ntfy_trigger_criteria_type comm_div_ntfy_trigger_criteria optional,
+ Comm_div_info_selection_criteria_type comm_div_info_selection_criteria optional,
+ record of anytype elem_list optional
+ }
+
+ type record Diversion_rule_info_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string diversion_rule
+ }
+
+ type record User_info_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string user_name optional,
+ XSDAUX.anyURI user_URI
+ }
+
+ type record Time_range_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of Time_range_type time_range_list optional
+ }
+
+ type Comm_div_info_type Comm_div_info;
+
+ type record Comm_div_ntfy_trigger_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Time_range_selection_criteria_type notification_time_selection_criteria optional,
+ Presence_status_selection_criteria_type presence_status_selection_criteria optional,
+ XSDAUX.integerXSD notification_buffer_interval optional,
+ record of anytype elem_list optional
+ }
+
+ type record Comm_div_info_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.booleanXSD disable_originating_user_info optional,
+ XSDAUX.booleanXSD disable_diverting_user_info optional,
+ XSDAUX.booleanXSD disable_diverted_to_user_info optional,
+ XSDAUX.booleanXSD disable_diversion_time_info optional,
+ XSDAUX.booleanXSD disable_diversion_reason_info optional,
+ XSDAUX.booleanXSD disable_diversion_rule_info optional,
+ record of anytype elem_list optional
+ }
+
+ type record Time_range_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.dateTime start_time,
+ XSDAUX.dateTime end_time
+ }
+
+ type record Presence_status_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of Presence_status_info_type presence_status_info_list optional
+ }
+
+ type record Diversion_reason_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Diversion_reason_info_types diversion_reason_info
+ }
+
+ type record Comm_div_info_type {
+ XSDAUX.anyURI entity,
+ Comm_div_subs_info_type comm_div_subs_info optional,
+ Comm_div_ntfy_info_type comm_div_ntfy_info optional,
+ record of anytype elem_list optional
+ }
+
+ type record Comm_div_selection_criteria_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ User_selection_criteria_type originating_user_selection_criteria optional,
+ XSDAUX.anyURI diverting_user_selection_criteria optional,
+ XSDAUX.anyURI diverted_to_user_selection_criteria optional,
+ Time_range_selection_criteria_type diversion_time_selection_criteria optional,
+ Diversion_reason_selection_criteria_type diversion_reason_selection_criteria optional,
+ record of anytype elem_list optional
+ }
+
+}
+with {
+ encode "CDIVN";
+}
Index: v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn3view
===================================================================
--- v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn3view (nonexistent)
+++ v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn3view (revision 541)
@@ -0,0 +1,26 @@
+module http_uri_etsi_org_ngn_params_xml_simservs_mcid {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record ResponseType {
+ BitType mcidResponseIndicator,
+ BitType holdingProvidedIndicator
+ }
+
+ type XSDAUX.string BitType;
+
+ type record Mcid {
+ union {
+ RequestType request,
+ ResponseType response
+ } choice
+ }
+
+ type record RequestType {
+ BitType mcidRequestIndicator,
+ BitType holdingIndicator
+ }
+
+}
+with {
+ encode "MCID";
+}
Index: v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn3view
===================================================================
--- v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn3view (nonexistent)
+++ v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn3view (revision 541)
@@ -0,0 +1,290 @@
+module http_uri_etsi_org_ngn_params_xml_simservs_pstn {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record PSTN_transit {
+ record length (1 .. 2) of BearerCapabilityType bearerInfomationElement_list,
+ record length (0 .. 2) of HighLayerCompatibilityType highLayerCompatibility_list optional,
+ LowLayerCompatibilityType lowLayerCompatibility optional,
+ record of ProgressIndicatorType progressIndicator_list optional,
+ record of DisplayType display__list optional
+ }
+
+ type XSDAUX.string SevenBitType;
+
+ type record LLOctet5aType {
+ OneBitType synchronousAsynchronous,
+ OneBitType negotiation,
+ FiveBitType userRate
+ }
+
+ type record LLOctet7aTR9577Type {
+ FourBitType additionalLayer3Info
+ }
+
+ type record LLOctet4Type {
+ TwoBitType transferMode,
+ FiveBitType informationTransferRate
+ }
+
+ type record LLOctet6aUserSpecificType {
+ SevenBitType userSpecificLayer2Information
+ }
+
+ type record LLOctet3aType {
+ OneBitType negotiationIndicator
+ }
+
+ type record BCOctet5Type {
+ TwoBitType layer1Identification,
+ FiveBitType userInfoLayer1Protocol
+ }
+
+ type record BCOctet4Type {
+ TwoBitType transferMode,
+ FiveBitType informationTransferRate
+ }
+
+ type record BCOctet7Type {
+ TwoBitType layer3Identification,
+ FiveBitType userInfoLayer3Protocol
+ }
+
+ type record BCOctet5bV120Type {
+ OneBitType rateAdaptionHeader,
+ OneBitType multipleFrameEstablishmentSupport,
+ OneBitType modeOfOperation,
+ OneBitType logicalLinkIdentifier,
+ OneBitType assignor,
+ OneBitType inbandOutbandNegotiation
+ }
+
+ type XSDAUX.string ThreeBitType;
+
+ type record LLOctet6aHDLCType {
+ TwoBitType mode
+ }
+
+ type record LLOctet7bTR9577Type {
+ FourBitType additionalLayer3Info
+ }
+
+ type record DisplayType {
+ DispOctet3Type dispOctet3
+ }
+
+ type record HLOctet3Type {
+ TwoBitType codingStandard,
+ ThreeBitType interpretation,
+ TwoBitType presentationMethod
+ }
+
+ type record LowLayerCompatibilityType {
+ LLOctet3Type lLOctet3,
+ LLOctet3aType lLOctet3a optional,
+ LLOctet4Type lLOctet4,
+ LLOctet4_1Type lLOctet4_1 optional,
+ LLOctet5Type lLOctet5 optional,
+ LLOctet5aType lLOctet5a optional,
+ LLOctet5bV110Type lLOctet5bV110 optional,
+ LLOctet5bV120Type lLOctet5bV120 optional,
+ LLOctet5cType lLOctet5c optional,
+ LLOctet5dType lLOctet5d optional,
+ LLOctet6Type lLOctet6 optional,
+ LLOctet6aHDLCType lLOctet6aHDLC optional,
+ LLOctet6aUserSpecificType lLOctet6aUserSpecific optional,
+ LLOctet6bType lLOctet6b optional,
+ LLOctet7Type lLOctet7,
+ LLOctet7aUserSpecificType lLOctet7aUserSpecific optional,
+ LLOctet7aX25Type lLOctet7aX25 optional,
+ LLOctet7bX25Type lLOctet7bX25 optional,
+ LLOctet7cType lLOctet7c optional,
+ LLOctet7aTR9577Type lLOctet7aTR9577 optional,
+ LLOctet7bTR9577Type lLOctet7bTR9577 optional
+ }
+
+ type record BCOctet5dType {
+ OneBitType duplexMode,
+ SixBitType modemType
+ }
+
+ type record BCOctet3Type {
+ TwoBitType codingStandard,
+ FiveBitType informationTransferCabability
+ }
+
+ type record LLOctet5bV120Type {
+ OneBitType rateAdaptionHeader,
+ OneBitType multipleFrameEstablishmentSupport,
+ OneBitType modeOfOperation,
+ OneBitType logicalLinkIdentifier,
+ OneBitType assignor,
+ OneBitType inbandOutbandNegotiation
+ }
+
+ type record LLOctet4_1Type {
+ SevenBitType rateMultiplier
+ }
+
+ type record LLOctet5dType {
+ OneBitType duplexMode,
+ SixBitType modemType
+ }
+
+ type XSDAUX.string FourBitType;
+
+ type record BCOctet5bV110Type {
+ TwoBitType intermediateRate,
+ OneBitType nIConTX,
+ OneBitType nIConRX,
+ OneBitType flowControlOnTX,
+ OneBitType flowControlOnRX
+ }
+
+ type record LLOctet3Type {
+ TwoBitType codingStandard,
+ FiveBitType informationTransferCapability
+ }
+
+ type record LLOctet7cType {
+ SevenBitType packetWindowSize
+ }
+
+ type record BCOctet5cType {
+ TwoBitType numberOfStopBits,
+ TwoBitType numberOfDataBits,
+ ThreeBitType parity
+ }
+
+ type record LLOctet6Type {
+ TwoBitType layer2Identification,
+ FiveBitType userInfoLayer2Protocol
+ }
+
+ type record LLOctet7aX25Type {
+ TwoBitType mode
+ }
+
+ type record LLOctet7bX25Type {
+ FourBitType defaultPacketSize
+ }
+
+ type record HLOctet4aMaintenanceType {
+ SevenBitType highLayerCharacteristics
+ }
+
+ type record DispOctet3Type {
+ SevenBitType displayInformation
+ }
+
+ type record LLOctet6bType {
+ SevenBitType windowSize
+ }
+
+ type record BCOctet7bType {
+ FourBitType additionalLayer3Info
+ }
+
+ type record LLOctet5cType {
+ TwoBitType numberOfStopBits,
+ TwoBitType numberOfDataBits,
+ ThreeBitType parity
+ }
+
+ type record ProgressIndicatorType {
+ ProgressOctet3Type progressOctet3,
+ ProgressOctet4Type progressOctet4
+ }
+
+ type XSDAUX.string OneBitType;
+
+ type record LLOctet5Type {
+ TwoBitType layer1Identification,
+ FiveBitType userInfoLayer1Protocol
+ }
+
+ type record ProgressOctet3Type {
+ TwoBitType codingStandard,
+ FourBitType location
+ }
+
+ type XSDAUX.string SixBitType;
+
+ type record LLOctet7Type {
+ TwoBitType layer3Identification,
+ FiveBitType userInfoLayer3Protocol
+ }
+
+ type record LLOctet5bV110Type {
+ TwoBitType intermediateRate,
+ OneBitType nIConTX,
+ OneBitType nIConRX,
+ OneBitType flowControlOnTX,
+ OneBitType flowControlOnRX
+ }
+
+ type record BCOctet6Type {
+ TwoBitType layer2Identification,
+ FiveBitType userInfoLayer2Protocol
+ }
+
+ type record HLOctet4Type {
+ SevenBitType highLayerCharacteristics
+ }
+
+ type record BCOctet5aType {
+ OneBitType synchronousAsynchronous,
+ OneBitType negotiation,
+ FiveBitType userRate
+ }
+
+ type XSDAUX.string FiveBitType;
+
+ type XSDAUX.string TwoBitType;
+
+ type record HighLayerCompatibilityType {
+ HLOctet3Type hLOctet3,
+ HLOctet4Type hLOctet4,
+ HLOctet4aMaintenanceType hLOctet4aMaintenance optional,
+ HLOctet4aAudioType hLOctet4Audio optional
+ }
+
+ type record BearerCapabilityType {
+ BCOctet3Type bCoctet3,
+ BCOctet4Type bCoctet4,
+ BCOctet4_1Type bCoctet4_1 optional,
+ BCOctet5Type bCoctet5 optional,
+ BCOctet5aType bCoctet5a optional,
+ BCOctet5bV110Type bCoctet5bV110 optional,
+ BCOctet5bV120Type bCoctet5bV120 optional,
+ BCOctet5cType bCoctet5c optional,
+ BCOctet5dType bCoctet5d optional,
+ BCOctet6Type bCoctet6 optional,
+ BCOctet7Type bCoctet7 optional,
+ BCOctet7aType bCoctet7a optional,
+ BCOctet7bType bCoctet7b optional
+ }
+
+ type record HLOctet4aAudioType {
+ SevenBitType videoTelephonyCharacteristics
+ }
+
+ type record BCOctet7aType {
+ FourBitType additionalLayer3Info
+ }
+
+ type record ProgressOctet4Type {
+ SevenBitType progressDescription
+ }
+
+ type record BCOctet4_1Type {
+ SevenBitType rateMultiplier
+ }
+
+ type record LLOctet7aUserSpecificType {
+ SevenBitType optionalLayer3Information
+ }
+
+}
+with {
+ encode "PSTN";
+}
Index: v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn3view
===================================================================
--- v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn3view (nonexistent)
+++ v1.8.0/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn3view (revision 541)
@@ -0,0 +1,202 @@
+module http_uri_etsi_org_ngn_params_xml_simservs_xcap {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from urn_ietf_params_xml_ns_common_policy language "XSD" all;
+
+ type Empty_element_type Roaming;
+
+ type XSDAUX.string TwobitType;
+
+ /**
+ * @desc
+ * This is the communication diversion configuration
+document.
+ */
+ type record Communication_diversion {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
+ }
+
+ type Empty_element_type Rule_deactivated;
+
+ type record SimservType {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional
+ }
+
+ type XSDAUX.hexBinary SixteenbitType;
+
+ type XSDAUX.string Presence_status_activity_type;
+
+ type SimservType AbsService;
+
+ type Empty_element_type Anonymous;
+
+ type Empty_element_type Busy;
+
+ type Allow_action_type Allow;
+
+ type enumerated Reveal_URIoptions_type {
+ false_,
+ not_reveal_GRUU,
+ true_
+ }
+
+ /**
+ * @desc
+ * XML Schema for data manipulation of ETSI
+ NGN PSTN/ISDN Simulation Services
+
+ */
+ type record Simservs {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of union {
+ SimservType absService,
+ Terminating_identity_presentation_restriction terminating_identity_presentation_restriction,
+ SimservType terminating_identity_presentation,
+ Originating_identity_presentation_restriction originating_identity_presentation_restriction,
+ SimservType originating_identity_presentation,
+ Communication_diversion communication_diversion,
+ Incoming_communication_barring incoming_communication_barring,
+ Outgoing_communication_barring outgoing_communication_barring
+ } choice optional,
+ record {
+ record of anytype elem_list optional
+ } extensions optional
+ }
+
+ type SimservType Originating_identity_presentation;
+
+ /**
+ * @desc
+ * This is the outgoing communication barring configuration
+document.
+ */
+ type record Outgoing_communication_barring {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
+ }
+
+ type Media_type1 Media;
+
+ /**
+ * @desc
+ * Terminating Identity presentation Restriction
+
+ */
+ type record Terminating_identity_presentation_restriction {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ enumerated {
+ presentation_not_restricted,
+ presentation_restricted
+ } default_behaviour optional
+ }
+
+ type record Empty_element_type {
+ }
+
+ type Empty_element_type Not_reachable;
+
+ type Empty_element_type Communication_diverted;
+
+ type XSDAUX.integerXSD CugIndexType;
+
+ type XSDAUX.hexBinary NetworkIdentityType;
+
+ type record CugRequestType {
+ XSDAUX.booleanXSD outgoingAccessRequest,
+ CugIndexType cugIndex
+ }
+
+ type XSDAUX.string Media_type1;
+
+ /**
+ * @desc
+ * Originating Identity presentation Restriction
+
+ */
+ type record Originating_identity_presentation_restriction {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ enumerated {
+ presentation_not_restricted,
+ presentation_restricted
+ } default_behaviour optional
+ }
+
+ type XSDAUX.positiveInteger NoReplyTimer;
+
+ /**
+ * @desc
+ * This is the incoming communication barring configuration
+document.
+ */
+ type record Incoming_communication_barring {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ urn_ietf_params_xml_ns_common_policy.Ruleset ruleset optional
+ }
+
+ type XSDAUX.booleanXSD Allow_action_type;
+
+ type Presence_status_activity_type Presence_status;
+
+ type record Cug {
+ XSDAUX.booleanXSD active optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ CugRequestType cugCallOperation optional,
+ NetworkIdentityType networkIndicator optional,
+ SixteenbitType cugInterlockBinaryCode optional,
+ TwobitType cugCommunicationIndicator optional
+ }
+
+ type Empty_element_type No_answer;
+
+ type SimservType Terminating_identity_presentation;
+
+ type Forward_to_type Forward_to;
+
+ type Empty_element_type Not_registered;
+
+ type record Forward_to_type {
+ XSDAUX.anyURI target,
+ XSDAUX.booleanXSD notify_caller optional,
+ Reveal_URIoptions_type reveal_identity_to_caller optional,
+ Reveal_URIoptions_type reveal_served_user_identity_to_caller optional,
+ XSDAUX.booleanXSD notify_served_user optional,
+ XSDAUX.booleanXSD notify_served_user_on_outbound_call optional,
+ Reveal_URIoptions_type reveal_identity_to_target optional,
+ NoReplyTimer noReplyTimer optional
+ }
+
+}
+with {
+ encode "SupplementaryServices";
+}
Index: v1.8.0/xsd/http_www_w3_org_XML_1998_namespace.ttcn3view
===================================================================
--- v1.8.0/xsd/http_www_w3_org_XML_1998_namespace.ttcn3view (nonexistent)
+++ v1.8.0/xsd/http_www_w3_org_XML_1998_namespace.ttcn3view (revision 541)
@@ -0,0 +1,30 @@
+module http_www_w3_org_XML_1998_namespace {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type union Lang {
+ XSDAUX.languageXSD alt_0,
+ enumerated {
+ x
+ } alt_1
+ }
+
+ type XSDAUX.anyURI Base;
+
+ type XSDAUX.ID Id;
+
+ type record SpecialAttrs {
+ Base base optional,
+ Lang lang optional,
+ Space space optional,
+ Id id optional
+ }
+
+ type enumerated Space {
+ default_,
+ preserve
+ }
+
+}
+with {
+ encode "xml";
+}
Index: v1.8.0/xsd/urn_3gpp_ns_cw_1_0.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_3gpp_ns_cw_1_0.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_3gpp_ns_cw_1_0.ttcn3view (revision 541)
@@ -0,0 +1,19 @@
+module urn_3gpp_ns_cw_1_0 {
+ type TCWtype Ims_cw;
+
+ type record TCWtype {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ TEmptyType communication_waiting_indication optional,
+ record of anytype elem_list optional
+ }
+
+ type record TEmptyType {
+ }
+
+}
+with {
+ encode "cw";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_common_policy.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_common_policy.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_common_policy.ttcn3view (revision 541)
@@ -0,0 +1,68 @@
+module urn_ietf_params_xml_ns_common_policy {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record SphereType {
+ XSDAUX.string value_
+ }
+
+ type record ExtensibleType {
+ record of anytype elem_list optional
+ }
+
+ type record Ruleset {
+ record of RuleType rule_list optional
+ }
+
+ type record RuleType {
+ XSDAUX.ID id,
+ ConditionsType conditions optional,
+ ExtensibleType actions optional,
+ ExtensibleType transformations optional
+ }
+
+ type record ConditionsType {
+ record length (1 .. infinity) of union {
+ IdentityType identity,
+ SphereType sphere,
+ ValidityType validity,
+ record of anytype elem_list
+ } content optional
+ }
+
+ type record ManyType {
+ XSDAUX.string domain optional,
+ record of union {
+ ExceptType except_,
+ anytype elem
+ } content optional
+ }
+
+ type record ValidityType {
+ record length (1 .. infinity) of record {
+ XSDAUX.dateTime from_,
+ XSDAUX.dateTime until
+ } content
+ }
+
+ type record IdentityType {
+ record length (1 .. infinity) of union {
+ OneType one,
+ ManyType many,
+ anytype elem
+ } content
+ }
+
+ type record OneType {
+ XSDAUX.anyURI id,
+ anytype elem optional
+ }
+
+ type record ExceptType {
+ XSDAUX.string domain optional,
+ XSDAUX.anyURI id optional
+ }
+
+}
+with {
+ encode "common_policy";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_conference_info.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_conference_info.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_conference_info.ttcn3view (revision 541)
@@ -0,0 +1,256 @@
+module urn_ietf_params_xml_ns_conference_info {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type enumerated Endpoint_status_type {
+ alerting,
+ connected,
+ dialing_in,
+ dialing_out,
+ disconnected,
+ disconnecting,
+ muted_via_focus,
+ on_hold,
+ pending
+ }
+
+ type record Users_type {
+ State_type state optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of User_type user_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record of XSDAUX.string Keywords_type;
+
+ type enumerated State_type {
+ deleted,
+ full,
+ partial
+ }
+
+ type record Conference_media_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record length (1 .. infinity) of Conference_medium_type entry_list
+ }
+
+ type record Endpoint_type {
+ XSDAUX.string entity optional,
+ State_type state optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ Execution_type referred optional,
+ Endpoint_status_type status optional,
+ Joining_type joining_method optional,
+ Execution_type joining_info optional,
+ Disconnection_type disconnection_method optional,
+ Execution_type disconnection_info optional,
+ record of Media_type media_list optional,
+ Call_type call_info optional,
+ record of anytype elem_list optional
+ }
+
+ type record Sip_dialog_id_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ XSDAUX.string call_id,
+ XSDAUX.string from_tag,
+ XSDAUX.string to_tag,
+ record of anytype elem_list optional
+ }
+
+ type record Conference_description_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ XSDAUX.string subject optional,
+ XSDAUX.string free_text optional,
+ Keywords_type keywords optional,
+ Uris_type conf_uris optional,
+ Uris_type service_uris optional,
+ XSDAUX.unsignedInt maximum_user_count optional,
+ Conference_media_type available_media optional,
+ record of anytype elem_list optional
+ }
+
+ type Conference_type Conference_info;
+
+ type record Conference_state_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.unsignedInt user_count optional,
+ XSDAUX.booleanXSD active optional,
+ XSDAUX.booleanXSD locked optional,
+ record of anytype elem_list optional
+ }
+
+ type record Conference_type {
+ XSDAUX.anyURI entity,
+ State_type state optional,
+ XSDAUX.unsignedInt version optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Conference_description_type conference_description optional,
+ Host_type host_info optional,
+ Conference_state_type conference_state optional,
+ Users_type users optional,
+ Uris_type sidebars_by_ref optional,
+ Sidebars_by_val_type sidebars_by_val optional,
+ record of anytype elem_list optional
+ }
+
+ type record Uri_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.anyURI uri,
+ XSDAUX.string display_text optional,
+ XSDAUX.string purpose optional,
+ Execution_type modified optional,
+ record of anytype elem_list optional
+ }
+
+ type record Host_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ XSDAUX.anyURI web_page optional,
+ Uris_type uris optional,
+ record of anytype elem_list optional
+ }
+
+ type record of XSDAUX.languageXSD User_languages_type;
+
+ type record Uris_type {
+ State_type state optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record length (1 .. infinity) of Uri_type entry_list
+ }
+
+ type record Execution_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.dateTime when optional,
+ XSDAUX.string reason optional,
+ XSDAUX.anyURI by optional
+ }
+
+ type enumerated Media_status_type {
+ inactive,
+ recvonly,
+ sendonly,
+ sendrecv
+ }
+
+ type record User_type {
+ XSDAUX.anyURI entity optional,
+ State_type state optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ Uris_type associated_aors optional,
+ User_roles_type roles optional,
+ User_languages_type languages optional,
+ XSDAUX.anyURI cascaded_focus optional,
+ record of Endpoint_type endpoint_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record Media_type {
+ XSDAUX.string id,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ XSDAUX.string type_ optional,
+ XSDAUX.string label_ optional,
+ XSDAUX.string src_id optional,
+ Media_status_type status optional,
+ record of anytype elem_list optional
+ }
+
+ type record Call_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ union {
+ Sip_dialog_id_type sip,
+ record of anytype elem_list
+ } choice optional
+ }
+
+ type record Conference_medium_type {
+ XSDAUX.string label_,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ XSDAUX.string display_text optional,
+ XSDAUX.string type_,
+ Media_status_type status optional,
+ record of anytype elem_list optional
+ }
+
+ type record Sidebars_by_val_type {
+ State_type state optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record of Conference_type entry_list optional
+ }
+
+ type enumerated Disconnection_type {
+ booted,
+ busy,
+ departed,
+ failed
+ }
+
+ type enumerated Joining_type {
+ dialed_in,
+ dialed_out,
+ focus_owner
+ }
+
+ type record User_roles_type {
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record length (1 .. infinity) of XSDAUX.string entry_list
+ }
+
+}
+with {
+ encode "CONF";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_pidf.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_pidf.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_pidf.ttcn3view (revision 541)
@@ -0,0 +1,50 @@
+module urn_ietf_params_xml_ns_pidf {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from http_www_w3_org_XML_1998_namespace language "XSD" all;
+
+ type record Tuple {
+ XSDAUX.ID id,
+ Status status,
+ record of anytype elem_list optional,
+ Contact contact optional,
+ record of Note note_list optional,
+ XSDAUX.dateTime timestamp optional
+ }
+
+ type record Status {
+ Basic basic optional,
+ record of anytype elem_list optional
+ }
+
+ type enumerated Basic {
+ closed,
+ open
+ }
+
+ type XSDAUX.booleanXSD MustUnderstand;
+
+ type record Presence_1 {
+ XSDAUX.anyURI entity,
+ record of Tuple tuple_list optional,
+ record of Note note_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record Contact {
+ Qvalue priority optional,
+ XSDAUX.anyURI content
+ }
+
+ type record Note {
+ http_www_w3_org_XML_1998_namespace.Lang lang optional,
+ XSDAUX.string content
+ }
+
+ type Presence_1 Presence;
+
+ type XSDAUX.decimal Qvalue;
+}
+with {
+ encode "pidf";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn3view (revision 541)
@@ -0,0 +1,34 @@
+module urn_ietf_params_xml_ns_pidf_geopriv10 {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all;
+
+ import from http_www_w3_org_XML_1998_namespace language "XSD" all;
+
+ type record Geopriv_1 {
+ LocInfoType location_info,
+ urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.LocPolicyType usage_rules,
+ LocMethod method optional,
+ LocProvidedBy provided_by optional,
+ record of anytype elem_list optional
+ }
+
+ type record LocInfoType {
+ record of anytype elem_list optional
+ }
+
+ type record LocProvidedBy {
+ record length (1 .. infinity) of anytype elem_list
+ }
+
+ type Geopriv_1 Geopriv;
+
+ type record LocMethod {
+ http_www_w3_org_XML_1998_namespace.Lang lang optional,
+ XSDAUX.string content
+ }
+
+}
+with {
+ encode "pidf_lo";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn3view (revision 541)
@@ -0,0 +1,22 @@
+module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from http_www_w3_org_XML_1998_namespace language "XSD" all;
+
+ type record LocPolicyType {
+ XSDAUX.booleanXSD retransmission_allowed optional,
+ XSDAUX.dateTime retention_expiry optional,
+ XSDAUX.anyURI external_ruleset optional,
+ Notewell note_well optional,
+ record of anytype elem_list optional
+ }
+
+ type record Notewell {
+ http_www_w3_org_XML_1998_namespace.Lang lang optional,
+ XSDAUX.string content
+ }
+
+}
+with {
+ encode "geopriv10basic";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_reginfo.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_reginfo.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_reginfo.ttcn3view (revision 541)
@@ -0,0 +1,66 @@
+module urn_ietf_params_xml_ns_reginfo {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from http_www_w3_org_XML_1998_namespace language "XSD" all;
+
+ type record Reginfo {
+ XSDAUX.nonNegativeInteger version,
+ enumerated {
+ full,
+ partial
+ } state,
+ record of Registration registration_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record Registration {
+ XSDAUX.anyURI aor,
+ XSDAUX.string id,
+ enumerated {
+ active,
+ init,
+ terminated
+ } state,
+ record of Contact contact_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record Contact {
+ enumerated {
+ active,
+ terminated
+ } state,
+ enumerated {
+ created,
+ deactivated,
+ expired,
+ probation,
+ refreshed,
+ registered,
+ rejected,
+ shortened,
+ unregistered
+ } event,
+ XSDAUX.unsignedLong duration_registered optional,
+ XSDAUX.unsignedLong expires optional,
+ XSDAUX.unsignedLong retry_after optional,
+ XSDAUX.string id,
+ XSDAUX.string q optional,
+ XSDAUX.string callid optional,
+ XSDAUX.unsignedLong cseq optional,
+ XSDAUX.anyURI uri,
+ record {
+ http_www_w3_org_XML_1998_namespace.Lang lang optional,
+ XSDAUX.string content
+ } display_name optional,
+ record of record {
+ XSDAUX.string name,
+ XSDAUX.string content
+ } unknown_param_list optional,
+ record of anytype elem_list optional
+ }
+
+}
+with {
+ encode "regInfo";
+}
Index: v1.8.0/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn3view (revision 541)
@@ -0,0 +1,86 @@
+module urn_ietf_params_xml_ns_resource_lists {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ import from http_www_w3_org_XML_1998_namespace language "XSD" all;
+
+ type record Entry_refType {
+ XSDAUX.anyURI ref,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Display_nameType display_name optional,
+ record of anytype elem_list optional
+ }
+
+ type record EntryType {
+ XSDAUX.anyURI uri,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ record {
+ Display_nameType content
+ } display_name optional,
+ record of anytype elem_list optional
+ }
+
+ type record ListType {
+ XSDAUX.string name optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Display_nameType display_name optional,
+ record of record {
+ union {
+ record {
+ XSDAUX.string name optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Display_nameType display_name optional,
+ record of record {
+ union {
+ ListType.sequence_list[0].choice.list list,
+ ExternalType external_,
+ EntryType entry,
+ Entry_refType entry_ref
+ } choice
+ } sequence_list optional,
+ record of anytype elem_list optional
+ } list,
+ ExternalType external_,
+ EntryType entry,
+ Entry_refType entry_ref
+ } choice
+ } sequence_list optional,
+ record of anytype elem_list optional
+ }
+
+ type record ExternalType {
+ XSDAUX.anyURI anchor optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional,
+ Display_nameType display_name optional,
+ record of anytype elem_list optional
+ }
+
+ type record Resource_lists {
+ record of record {
+ ListType list
+ } sequence_list optional
+ }
+
+ type record Display_nameType {
+ http_www_w3_org_XML_1998_namespace.Lang lang optional,
+ XSDAUX.string content
+ }
+
+}
+with {
+ encode "ResourceList";
+}
Index: v1.8.0/xsd/urn_oma_xml_xdm_common_policy.ttcn3view
===================================================================
--- v1.8.0/xsd/urn_oma_xml_xdm_common_policy.ttcn3view (nonexistent)
+++ v1.8.0/xsd/urn_oma_xml_xdm_common_policy.ttcn3view (revision 541)
@@ -0,0 +1,26 @@
+module urn_oma_xml_xdm_common_policy {
+ import from XSDAUX language "TTCN-3:2010" all;
+
+ type record External_list {
+ record of AnchorType entry_list optional
+ }
+
+ type EmptyType Anonymous_request;
+
+ type EmptyType Other_identity;
+
+ type record EmptyType {
+ }
+
+ type record AnchorType {
+ XSDAUX.anyURI anc optional,
+ record of record {
+ charstring name,
+ anytype value_
+ } anyAttributes optional
+ }
+
+}
+with {
+ encode "xdm_commonPolicy_v1_0";
+}
Index: v1.8.0/xsd/CDIV.xsd
===================================================================
--- v1.8.0/xsd/CDIV.xsd (nonexistent)
+++ v1.8.0/xsd/CDIV.xsd (revision 541)
@@ -0,0 +1,67 @@
+
+<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"/>
+<!-- communication diversion specific extensions to IETF common policy conditions. The
+cp:conditionsType is expanded with the elements: ss:not-registered, ss:busy, ss:no-answer, ss:notreachable,
+ss:media as optional elements -->
+<!-- communication diversion rule set based on the common policy rule set.-->
+<xs:element name="communication-diversion" substitutionGroup="ss:absService">
+<xs:annotation>
+<xs:documentation>This is the communication diversion 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 diversion specific extensions to IETF common policy actions-->
+<xs:element name="forward-to" type="ss:forward-to-type"/> <xs:simpleType name="reveal-URIoptions-type">
+<xs:restriction base="xs:string">
+<xs:enumeration value="false"/>
+<xs:enumeration value="not-reveal-GRUU"/>
+<xs:enumeration value="true"/>
+</xs:restriction>
+</xs:simpleType>
+<!-- communication diversion specific type declarations -->
+<xs:complexType name="forward-to-type">
+<xs:sequence>
+<xs:element name="target" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
+<xs:element name="notify-caller" type="xs:boolean" default="true" minOccurs="0"/>
+<xs:element name="reveal-identity-to-caller" type="ss:reveal-URIoptions-type"
+default="true" minOccurs="0"/>
+<xs:element name="reveal-served-user-identity-to-caller" type="ss:reveal-URIoptions-type"
+default="true" minOccurs="0"/>
+<xs:element name="notify-served-user" type="xs:boolean" default="false" minOccurs="0"/>
+<xs:element name="notify-served-user-on-outbound-call" type="xs:boolean" default="false"
+minOccurs="0"/>
+<xs:element name="reveal-identity-to-target" type="ss:reveal-URIoptions-type"
+default="true" minOccurs="0"/>
+<xs:element ref="ss:NoReplyTimer" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+<xs:element name="NoReplyTimer">
+<xs:simpleType>
+<xs:restriction base="xs:positiveInteger">
+<xs:minInclusive value="5"/>
+<xs:maxInclusive value="180"/>
+</xs:restriction>
+</xs:simpleType>
+</xs:element>
+</xs:schema>
\ No newline at end of file
/v1.8.0/xsd/CDIV.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/cug.xsd
===================================================================
--- v1.8.0/xsd/cug.xsd (nonexistent)
+++ v1.8.0/xsd/cug.xsd (revision 541)
@@ -0,0 +1,54 @@
+<?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="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>
+ <!--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"/>
+ </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>
\ No newline at end of file
/v1.8.0/xsd/cug.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/simservs.xsd
===================================================================
--- v1.8.0/xsd/simservs.xsd (nonexistent)
+++ v1.8.0/xsd/simservs.xsd (revision 541)
@@ -0,0 +1,83 @@
+
+<!-- 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
/v1.8.0/xsd/simservs.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/cw.xsd
===================================================================
--- v1.8.0/xsd/cw.xsd (nonexistent)
+++ v1.8.0/xsd/cw.xsd (revision 541)
@@ -0,0 +1,16 @@
+<?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: v1.8.0/xsd/xml.xsd
===================================================================
--- v1.8.0/xsd/xml.xsd (nonexistent)
+++ v1.8.0/xsd/xml.xsd (revision 541)
@@ -0,0 +1,38 @@
+<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: v1.8.0/xsd/Ims3gpp.xsd
===================================================================
--- v1.8.0/xsd/Ims3gpp.xsd (nonexistent)
+++ v1.8.0/xsd/Ims3gpp.xsd (revision 541)
@@ -0,0 +1,60 @@
+<?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>
/v1.8.0/xsd/Ims3gpp.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/ACR_CB.xsd
===================================================================
--- v1.8.0/xsd/ACR_CB.xsd (nonexistent)
+++ v1.8.0/xsd/ACR_CB.xsd (revision 541)
@@ -0,0 +1,54 @@
+
+<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
/v1.8.0/xsd/ACR_CB.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/MCID.xsd
===================================================================
--- v1.8.0/xsd/MCID.xsd (nonexistent)
+++ v1.8.0/xsd/MCID.xsd (revision 541)
@@ -0,0 +1,37 @@
+
+<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
/v1.8.0/xsd/MCID.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/OIP-OIR.xsd
===================================================================
--- v1.8.0/xsd/OIP-OIR.xsd (nonexistent)
+++ v1.8.0/xsd/OIP-OIR.xsd (revision 541)
@@ -0,0 +1,37 @@
+
+<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
/v1.8.0/xsd/OIP-OIR.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/PSTN.xsd
===================================================================
--- v1.8.0/xsd/PSTN.xsd (nonexistent)
+++ v1.8.0/xsd/PSTN.xsd (revision 541)
@@ -0,0 +1,367 @@
+<?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 mapping of 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" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet5aType">
+ <xs:sequence>
+ <xs:element name="SynchronousAsynchronous" type="OneBitType"/>
+ <xs:element name="Negotiation" type="OneBitType"/>
+ <xs:element name="UserRate" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet5bV110Type">
+ <xs:sequence>
+ <xs:element name="IntermediateRate" type="TwoBitType"/>
+ <xs:element name="NIConTX" type="OneBitType"/>
+ <xs:element name="NIConRX" type="OneBitType"/>
+ <xs:element name="FlowControlOnTX" type="OneBitType"/>
+ <xs:element name="FlowControlOnRX" type="OneBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet5bV120Type">
+ <xs:sequence>
+ <xs:element name="RateAdaptionHeader" type="OneBitType"/>
+ <xs:element name="MultipleFrameEstablishmentSupport" type="OneBitType"/>
+ <xs:element name="ModeOfOperation" type="OneBitType"/>
+ <xs:element name="LogicalLinkIdentifier" type="OneBitType"/>
+ <xs:element name="Assignor" type="OneBitType"/>
+ <xs:element name="InbandOutbandNegotiation" type="OneBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet5cType">
+ <xs:sequence>
+ <xs:element name="NumberOfStopBits" type="TwoBitType"/>
+ <xs:element name="NumberOfDataBits" type="TwoBitType"/>
+ <xs:element name="Parity" type="ThreeBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet5dType">
+ <xs:sequence>
+ <xs:element name="DuplexMode" type="OneBitType"/>
+ <xs:element name="ModemType" type="SixBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet6Type">
+ <xs:sequence>
+ <xs:element name="Layer2Identification" type="TwoBitType"/>
+ <xs:element name="UserInfoLayer2Protocol" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet7Type">
+ <xs:sequence>
+ <xs:element name="Layer3Identification" type="TwoBitType"/>
+ <xs:element name="UserInfoLayer3Protocol" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet7aType">
+ <xs:sequence>
+ <xs:element name="AdditionalLayer3Info" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BCOctet7bType">
+ <xs:sequence>
+ <xs:element name="AdditionalLayer3Info" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!--Definition of High Layer Compatibility Octets-->
+ <xs:complexType name="HLOctet3Type">
+ <xs:sequence>
+ <xs:element name="CodingStandard" type="TwoBitType"/>
+ <xs:element name="Interpretation" type="ThreeBitType"/>
+ <xs:element name="PresentationMethod" type="TwoBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HLOctet4Type">
+ <xs:sequence>
+ <xs:element name="HighLayerCharacteristics" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HLOctet4aMaintenanceType">
+ <xs:sequence>
+ <xs:element name="HighLayerCharacteristics" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HLOctet4aAudioType">
+ <xs:sequence>
+ <xs:element name="VideoTelephonyCharacteristics" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!--Definition of Low Layer Compatibility Octets-->
+ <xs:complexType name="LLOctet3Type">
+ <xs:sequence>
+ <xs:element name="CodingStandard" type="TwoBitType"/>
+ <xs:element name="InformationTransferCapability" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet3aType">
+ <xs:sequence>
+ <xs:element name="NegotiationIndicator" type="OneBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet4Type">
+ <xs:sequence>
+ <xs:element name="TransferMode" type="TwoBitType"/>
+ <xs:element name="InformationTransferRate" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet4-1Type">
+ <xs:sequence>
+ <xs:element name="RateMultiplier" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5Type">
+ <xs:sequence>
+ <xs:element name="Layer1Identification" type="TwoBitType"/>
+ <xs:element name="UserInfoLayer1Protocol" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5aType">
+ <xs:sequence>
+ <xs:element name="SynchronousAsynchronous" type="OneBitType"/>
+ <xs:element name="Negotiation" type="OneBitType"/>
+ <xs:element name="UserRate" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5bV110Type">
+ <xs:sequence>
+ <xs:element name="IntermediateRate" type="TwoBitType"/>
+ <xs:element name="NIConTX" type="OneBitType"/>
+ <xs:element name="NIConRX" type="OneBitType"/>
+ <xs:element name="FlowControlOnTX" type="OneBitType"/>
+ <xs:element name="FlowControlOnRX" type="OneBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5bV120Type">
+ <xs:sequence>
+ <xs:element name="RateAdaptionHeader" type="OneBitType"/>
+ <xs:element name="MultipleFrameEstablishmentSupport" type="OneBitType"/>
+ <xs:element name="ModeOfOperation" type="OneBitType"/>
+ <xs:element name="LogicalLinkIdentifier" type="OneBitType"/>
+ <xs:element name="Assignor" type="OneBitType"/>
+ <xs:element name="InbandOutbandNegotiation" type="OneBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5cType">
+ <xs:sequence>
+ <xs:element name="NumberOfStopBits" type="TwoBitType"/>
+ <xs:element name="NumberOfDataBits" type="TwoBitType"/>
+ <xs:element name="Parity" type="ThreeBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet5dType">
+ <xs:sequence>
+ <xs:element name="DuplexMode" type="OneBitType"/>
+ <xs:element name="ModemType" type="SixBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet6Type">
+ <xs:sequence>
+ <xs:element name="Layer2Identification" type="TwoBitType"/>
+ <xs:element name="UserInfoLayer2Protocol" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet6aHDLCType">
+ <xs:sequence>
+ <xs:element name="Mode" type="TwoBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet6aUserSpecificType">
+ <xs:sequence>
+ <xs:element name="UserSpecificLayer2Information" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet6bType">
+ <xs:sequence>
+ <xs:element name="WindowSize" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7Type">
+ <xs:sequence>
+ <xs:element name="Layer3Identification" type="TwoBitType"/>
+ <xs:element name="UserInfoLayer3Protocol" type="FiveBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7aUserSpecificType">
+ <xs:sequence>
+ <xs:element name="OptionalLayer3Information" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7aX25Type">
+ <xs:sequence>
+ <xs:element name="Mode" type="TwoBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7bX25Type">
+ <xs:sequence>
+ <xs:element name="DefaultPacketSize" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7cType">
+ <xs:sequence>
+ <xs:element name="PacketWindowSize" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7aTR9577Type">
+ <xs:sequence>
+ <xs:element name="AdditionalLayer3Info" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LLOctet7bTR9577Type">
+ <xs:sequence>
+ <xs:element name="AdditionalLayer3Info" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DispOctet3Type">
+ <xs:sequence>
+ <xs:element name="DisplayInformation" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!--Definition of the information elements-->
+ <xs:complexType name="BearerCapabilityType">
+ <xs:sequence>
+ <xs:element name="BCoctet3" type="BCOctet3Type"/>
+ <xs:element name="BCoctet4" type="BCOctet4Type"/>
+ <xs:element name="BCoctet4-1" type="BCOctet4-1Type" minOccurs="0"/>
+ <xs:element name="BCoctet5" type="BCOctet5Type" minOccurs="0"/>
+ <xs:element name="BCoctet5a" type="BCOctet5aType" minOccurs="0"/>
+ <xs:element name="BCoctet5bV110" type="BCOctet5bV110Type" minOccurs="0"/>
+ <xs:element name="BCoctet5bV120" type="BCOctet5bV120Type" minOccurs="0"/>
+ <xs:element name="BCoctet5c" type="BCOctet5cType" minOccurs="0"/>
+ <xs:element name="BCoctet5d" type="BCOctet5dType" minOccurs="0"/>
+ <xs:element name="BCoctet6" type="BCOctet6Type" minOccurs="0"/>
+ <xs:element name="BCoctet7" type="BCOctet7Type" minOccurs="0"/>
+ <xs:element name="BCoctet7a" type="BCOctet7aType" minOccurs="0"/>
+ <xs:element name="BCoctet7b" type="BCOctet7bType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HighLayerCompatibilityType">
+ <xs:sequence>
+ <xs:element name="HLOctet3" type="HLOctet3Type"/>
+ <xs:element name="HLOctet4" type="HLOctet4Type"/>
+ <xs:element name="HLOctet4aMaintenance" type="HLOctet4aMaintenanceType" minOccurs="0"/>
+ <xs:element name="HLOctet4Audio" type="HLOctet4aAudioType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="LowLayerCompatibilityType">
+ <xs:sequence>
+ <xs:element name="LLOctet3" type="LLOctet3Type"/>
+ <xs:element name="LLOctet3a" type="LLOctet3aType" minOccurs="0"/>
+ <xs:element name="LLOctet4" type="LLOctet4Type"/>
+ <xs:element name="LLOctet4-1" type="LLOctet4-1Type" minOccurs="0"/>
+ <xs:element name="LLOctet5" type="LLOctet5Type" minOccurs="0"/>
+ <xs:element name="LLOctet5a" type="LLOctet5aType" minOccurs="0"/>
+ <xs:element name="LLOctet5bV110" type="LLOctet5bV110Type" minOccurs="0"/>
+ <xs:element name="LLOctet5bV120" type="LLOctet5bV120Type" minOccurs="0"/>
+ <xs:element name="LLOctet5c" type="LLOctet5cType" minOccurs="0"/>
+ <xs:element name="LLOctet5d" type="LLOctet5dType" minOccurs="0"/>
+ <xs:element name="LLOctet6" type="LLOctet6Type" minOccurs="0"/>
+ <xs:element name="LLOctet6aHDLC" type="LLOctet6aHDLCType" minOccurs="0"/>
+ <xs:element name="LLOctet6aUserSpecific" type="LLOctet6aUserSpecificType" minOccurs="0"/>
+ <xs:element name="LLOctet6b" type="LLOctet6bType" minOccurs="0"/>
+ <xs:element name="LLOctet7" type="LLOctet7Type"/>
+ <xs:element name="LLOctet7aUserSpecific" type="LLOctet7aUserSpecificType" minOccurs="0"/>
+ <xs:element name="LLOctet7aX25" type="LLOctet7aX25Type" minOccurs="0"/>
+ <xs:element name="LLOctet7bX25" type="LLOctet7bX25Type" minOccurs="0"/>
+ <xs:element name="LLOctet7c" type="LLOctet7cType" minOccurs="0"/>
+ <xs:element name="LLOctet7aTR9577" type="LLOctet7aTR9577Type" minOccurs="0"/>
+ <xs:element name="LLOctet7bTR9577" type="LLOctet7bTR9577Type" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DisplayType">
+ <xs:sequence>
+ <xs:element name="DispOctet3" type="DispOctet3Type"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!--Definition of progress indicator-->
+ <xs:complexType name="ProgressOctet3Type">
+ <xs:sequence>
+ <xs:element name="CodingStandard" type="TwoBitType"/>
+ <xs:element name="Location" type="FourBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ProgressOctet4Type">
+ <xs:sequence>
+ <xs:element name="ProgressDescription" type="SevenBitType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ProgressIndicatorType">
+ <xs:sequence>
+ <xs:element name="ProgressOctet3" type="ProgressOctet3Type"/>
+ <xs:element name="ProgressOctet4" type="ProgressOctet4Type"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!--Definition of document structure-->
+ <xs:element name="PSTN-transit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="BearerInfomationElement" type="BearerCapabilityType" maxOccurs="2"/>
+ <xs:element name="HighLayerCompatibility" type="HighLayerCompatibilityType" minOccurs="0" maxOccurs="2"/>
+ <xs:element name="LowLayerCompatibility" type="LowLayerCompatibilityType" minOccurs="0"/>
+ <xs:element name="ProgressIndicator" type="ProgressIndicatorType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Display" type="DisplayType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
/v1.8.0/xsd/PSTN.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/SupplementaryServices.xsd
===================================================================
--- v1.8.0/xsd/SupplementaryServices.xsd (nonexistent)
+++ v1.8.0/xsd/SupplementaryServices.xsd (revision 541)
@@ -0,0 +1,15 @@
+
+<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
/v1.8.0/xsd/SupplementaryServices.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/TIP-TIR.xsd
===================================================================
--- v1.8.0/xsd/TIP-TIR.xsd (nonexistent)
+++ v1.8.0/xsd/TIP-TIR.xsd (revision 541)
@@ -0,0 +1,37 @@
+
+<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="terminating-identity-presentation-restriction"
+substitutionGroup="ss:absService">
+<xs:annotation>
+<xs:documentation>Terminating 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="terminating-identity-presentation" type="ss:simservType"
+substitutionGroup="ss:absService">
+<xs:annotation>
+<xs:documentation>Terminating Identity Presentation
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+</xs:schema>
\ No newline at end of file
/v1.8.0/xsd/TIP-TIR.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/common-policy.xsd
===================================================================
--- v1.8.0/xsd/common-policy.xsd (nonexistent)
+++ v1.8.0/xsd/common-policy.xsd (revision 541)
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<xs:schema targetNamespace="urn:ietf:params:xml:ns:common-policy"
+ xmlns:cp="urn:ietf:params:xml:ns:common-policy"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- /ruleset -->
+ <xs:element name="ruleset">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:element name="rule" type="cp:ruleType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- /ruleset/rule -->
+ <xs:complexType name="ruleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:element name="conditions"
+ type="cp:conditionsType" minOccurs="0"/>
+ <xs:element name="actions"
+ type="cp:extensibleType" minOccurs="0"/>
+ <xs:element name="transformations"
+ type="cp:extensibleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID" use="required"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //rule/conditions -->
+ <xs:complexType name="conditionsType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="identity"
+ type="cp:identityType" minOccurs="0"/>
+ <xs:element name="sphere"
+ type="cp:sphereType" minOccurs="0"/>
+ <xs:element name="validity"
+ type="cp:validityType" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //conditions/identity -->
+ <xs:complexType name="identityType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="one" type="cp:oneType"/>
+ <xs:element name="many" type="cp:manyType"/>
+ <xs:any namespace="##other" processContents="lax"/>
+ </xs:choice>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //identity/one -->
+ <xs:complexType name="oneType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:any namespace="##other"
+ minOccurs="0" processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="id"
+ type="xs:anyURI" use="required"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //identity/many -->
+ <xs:complexType name="manyType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="except" type="cp:exceptType"/>
+ <xs:any namespace="##other"
+ minOccurs="0" processContents="lax"/>
+ </xs:choice>
+ <xs:attribute name="domain"
+ use="optional" type="xs:string"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //many/except -->
+<xs:complexType name="exceptType">
+ <xs:attribute name="domain" type="xs:string" use="optional"/>
+ <xs:attribute name="id" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <!-- //conditions/sphere -->
+ <xs:complexType name="sphereType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:attribute name="value"
+ type="xs:string" use="required"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //conditions/validity -->
+ <xs:complexType name="validityType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="from" type="xs:dateTime"/>
+ <xs:element name="until" type="xs:dateTime"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- //rule/actions or //rule/transformations -->
+ <xs:complexType name="extensibleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
/v1.8.0/xsd/common-policy.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/xsd/xdm_commonPolicy-v1_0.xsd
===================================================================
--- v1.8.0/xsd/xdm_commonPolicy-v1_0.xsd (nonexistent)
+++ v1.8.0/xsd/xdm_commonPolicy-v1_0.xsd (revision 541)
@@ -0,0 +1,107 @@
+<?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>
/v1.8.0/xsd/xdm_commonPolicy-v1_0.xsd
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+LastChangedDate
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_SMSFunctions.ttcn3
===================================================================
--- v1.8.0/ttcn/LibSip_SMSFunctions.ttcn3 (nonexistent)
+++ v1.8.0/ttcn/LibSip_SMSFunctions.ttcn3 (revision 541)
@@ -0,0 +1,51 @@
+/*
+ * @author STF 435
+ * @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.
+ */
+module LibSip_SMSFunctions {
+ import from LibSip_SMSTypesAndValues all;
+
+ function f_IA5_2oct(charstring p_ASCII_String)
+ return octetstring
+ {
+ var integer i;
+ var integer k;
+ 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("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(k:=1; k<=7; k:=k+1)
+ {
+
+ v_TempBitDes := v_TempBitSrc[8-k] & v_TempBitDes;
+
+ if(((7*i+k) 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: v1.8.0/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn (revision 541)
@@ -0,0 +1,58 @@
+/**
+ * @author STF 406
+ * @version $Id: LibSip_SimpleMsgSummaryTypes.ttcn 488 2010-11-08 10:17:19Z pintar $
+ * @desc This module provides the SMS type system for SIP tests.
+ */
+module LibSip_SimpleMsgSummaryTypes { // RFC 3842
+
+ group SMSConstants{
+
+ // IMS ETSI name MWI application
+ const charstring c_imsEtsiMwiApplication := "application/simple-message-summary";
+
+ // msg_status line := "Message-Waiting"
+ const charstring c_messageWaiting := "Message-Waiting";
+
+ // msg_status line := "Message-Account"
+ const charstring c_messageAccount := "Message-Account";
+
+ // msg_summary line := "Voice-Message"
+ const charstring c_voiceMessage := "Voice-Message";
+
+ }
+
+ group SMSTypes{
+ //TODO add (SMS sms) into type union MessageBody{ in module LibSIPTypesAndValues
+
+ type record SimpleMsgSummary { //Simple_message_summary
+ Msg_status_line msg_status_line,
+ Msg_account msg_account optional,
+ Msg_summary_line_list msg_summary_line_list optional,
+ Opt_msg_headers opt_msg_headers optional
+ }
+
+ type record Msg_status_line {
+ charstring msg_type,
+ charstring msg_status
+ }
+
+ type record Msg_account {
+ charstring msg_type_account,
+ charstring account_URI
+ }
+
+ type set of Msg_summary_line Msg_summary_line_list;
+
+ type record Msg_summary_line {
+ charstring msg_context_class,
+ charstring msgs,
+ charstring urgent_msgs optional
+ }
+
+ type set of charstring Opt_msg_headers;
+
+ //type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes
+ }
+
+
+} /* end module LibSip_XMLTypes */
\ No newline at end of file
Index: v1.8.0/ttcn/LibSip_SMSTemplates.ttcn3
===================================================================
--- v1.8.0/ttcn/LibSip_SMSTemplates.ttcn3 (nonexistent)
+++ v1.8.0/ttcn/LibSip_SMSTemplates.ttcn3 (revision 541)
@@ -0,0 +1,394 @@
+/*
+ * @author STF 435
+ * @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.
+ */
+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 cr_TypeOfNumberingPlanAny :=
+ {
+ extBit := ?,
+ typeOfNumber := ?,
+ numberingPlanId := ?
+ };
+
+ template (value) TypeOfNumberingPlan cs_TypeOfNumberingPlan :=
+ {
+ extBit := '1'B,
+ typeOfNumber := '001'B, // international number
+ numberingPlanId := '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163)
+ };
+
+ template (present) TypeOfNumberingPlan cr_TypeOfNumberingPlan :=
+ {
+ extBit := ?,
+ typeOfNumber := ?,
+ numberingPlanId := ?
+ };
+
+ /* End Non-SMS Type Constraints */
+
+ template (omit) RP_OriginatorAddress_dl cs_RP_OriginatorAddress_dl :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := '06'O, // 6 semi-octets
+ typeOfNumberingPlan := cs_TypeOfNumberingPlan,
+ digits := '001122'O
+ };
+
+ template (omit) RP_OriginatorAddress_ul cr_RP_OriginatorAddress_ul :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := '00'O
+ };
+
+ template RP_DestinationAddress_ul cr_RP_DestinationAddress_ul :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := ?,
+ typeOfNumberingPlan := cr_TypeOfNumberingPlan,
+ digits := ?
+ };
+ template (omit) RP_DestinationAddress_dl cs_RP_DestinationAddress_dl :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := '00'O
+ };
+
+ template (omit) RP_UserData cs_RP_UserData_DELIVER (octetstring p_Digits) :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := int2oct ((153 + lengthof (p_Digits)), 1),
+ tP_PDU := {SMS_DELIVER := cs_SMS_DELIVER (p_Digits)}
+ };
+
+ template (omit) RP_UserData cs_RP_UserData_SUBMIT_REPORT :=
+ {
+ spare := '0'B,
+ iei := tsc_IEI_RP_UserData,
+ iel := '0A'O, // the TPDU data length is 10 octets
+ tP_PDU := {SMS_SUBMIT_REPORT := cs_SMS_SUBMIT_REPORT}
+ };
+ template (omit) RP_UserData cs_RP_UserData_STATUS_REPORT
+ (TP_MessageReference_Type p_MessageRef,
+ TP_Address_Type p_RecipientAddress,
+ TP_ServiceCentreTimeStamp_Type p_SCTP
+ ) :=
+ {
+ spare := '0'B,
+ iei := tsc_IEI_RP_UserData,
+ iel := '0A'O, // the TPDU data length is 10 octets
+ tP_PDU := {SMS_STATUS_REPORT := cs_SMS_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)}
+ };
+
+ /*
+ template RP_UserData cr_RP_UserData (TP_PDU_Type p_TP_PDU) :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := ?,
+ tP_PDU := p_TP_PDU
+ };
+ */
+ template RP_UserData cr_RP_UserData_SUBMIT :=
+ {
+ spare := omit,
+ iei := omit,
+ iel := ?,
+ tP_PDU := {SMS_SUBMIT := cr_SMS_SUBMIT_VPF_REF}
+ };
+
+ template RP_UserData cr_RP_UserData_DELIVER_REPORT :=
+ {
+ spare := '0'B,
+ iei := tsc_IEI_RP_UserData,
+ iel := ?,
+ tP_PDU := {SMS_DELIVER_REPORT := cr_SMS_DELIVER_REPORT}
+ };
+
+ /* End SM-RP Type Constraints */
+
+ /* SM-RP PDU Constraints */
+
+ template (value) RP_DATA_dl_Type cs_RP_DATA_dl_DELIVER (octetstring p_Digits) :=
+ {
+ spare5 := '00000'B,
+ rP_MessageTypeIndicator := tsc_MT_RP_DATA_dl,
+ rP_MessageReference := '00'O,
+ rP_OriginatorAddress := cs_RP_OriginatorAddress_dl,
+ rP_DestinationAddress := cs_RP_DestinationAddress_dl,
+ rP_UserData := cs_RP_UserData_DELIVER(p_Digits)
+ };
+
+ template (value) RP_DATA_dl_Type cs_RP_DATA_dl_STATUS_REPORT (
+ TP_MessageReference_Type p_MessageRef,
+ TP_Address_Type p_RecipientAddress,
+ TP_ServiceCentreTimeStamp_Type p_SCTP
+ ) :=
+ {
+ spare5 := '00000'B,
+ rP_MessageTypeIndicator := tsc_MT_RP_DATA_dl,
+ rP_MessageReference := '00'O,
+ rP_OriginatorAddress := cs_RP_OriginatorAddress_dl,
+ rP_DestinationAddress := cs_RP_DestinationAddress_dl,
+ rP_UserData := cs_RP_UserData_STATUS_REPORT (p_MessageRef, p_RecipientAddress, p_SCTP)
+ };
+
+
+ template (present) RP_DATA_ul_Type cr_RP_DATA_ul_SUBMIT :=
+ {
+ spare5 := '00000'B,
+ rP_MessageTypeIndicator := tsc_MT_RP_DATA_ul,
+ rP_MessageReference := ?,
+ rP_OriginatorAddress := cr_RP_OriginatorAddress_ul,
+ rP_DestinationAddress := cr_RP_DestinationAddress_ul,
+ rP_UserData := cr_RP_UserData_SUBMIT
+ };
+
+ template (value) RP_ACK_Type cs_RP_ACK_SUBMIT_REPORT (Oct1 p_msgReference := '00'O):=
+ {
+ spare5 := '00000'B,
+ rP_MessageTypeIndicator := tsc_MT_RP_ACK_dl,
+ rP_MessageReference := p_msgReference,
+ rP_UserData := cs_RP_UserData_SUBMIT_REPORT
+ };
+
+ template (present) RP_ACK_Type cr_RP_ACK_DELIVER_REPORT :=
+ {
+ spare5 := '00000'B,
+ rP_MessageTypeIndicator := tsc_MT_RP_ACK_ul,
+ rP_MessageReference := ?,
+ rP_UserData := cr_RP_UserData_DELIVER_REPORT
+ };
+
+ /* End SM-RP PDU Constraints */
+
+ /* SM-TP Type Constraints */
+ template (value) TP_ProtocolIdentifier_Type cr_TP_ProtocolIdentifier :=
+ {
+ pidType := '01'B,
+ interworking := '0'B,
+ pidValue := '00000'B
+ };
+
+ template (value) TP_ProtocolIdentifier_Type cs_TP_ProtocolIdentifier :=
+ {
+ pidType := '01'B,
+ interworking := '0'B,
+ pidValue := '00000'B
+ };
+
+ template (value) TP_DataCodingScheme_Type cs_TP_DataCodingScheme :=
+ {
+ codingGroup := '0000'B,
+ codeValue := '0000'B
+ };
+
+ template TP_Address_Type cr_TP_AddressAny :=
+ {
+ iel := ?,
+ typeOfNumberingPlan := cr_TypeOfNumberingPlanAny,
+ digits := *
+ };
+
+ template (value) TP_Address_Type cs_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 := cs_TypeOfNumberingPlan,
+ digits := p_Digits
+ };
+
+ template (value) TP_ParameterIndicator_Type cs_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 cs_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 := tsc_MT_SMS_DELIVER,
+ tP_OriginatingAddress := cs_TP_Address (p_Digits),
+ tP_ProtocolIdentifier := cs_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := cs_TP_DataCodingScheme,
+ tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := f_IA5_2oct(tsc_Fox)
+ };
+
+ template SMS_DELIVER_REPORT_Type cr_SMS_DELIVER_REPORT :=
+ {
+ spare1 := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ spare4 := '0000'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_DELIVER_REPORT,
+ tP_FailureCause := omit,
+ tP_ParameterIndicator := ?,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := *,
+ tP_UserDataLength := *,
+ tP_UserData := *
+ };
+
+ template SMS_SUBMIT_Type cr_SMS_SUBMIT :=
+ {
+ tP_ReplyPath := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ tP_StatusReportRequest := '1'B,
+ tP_ValidityPeriodFormat := '??'B,
+ tP_RejectDuplicates := '0'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT,
+ tP_MessageReference := ?,
+ tP_DestinationAddress := cr_TP_AddressAny,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := ?,
+ tP_ValidityPeriod := *,
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := ? // any data will do: 140 octets
+ };
+
+ template SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_NP :=
+ {
+ tP_ReplyPath := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ tP_StatusReportRequest := '1'B,
+ tP_ValidityPeriodFormat := '00'B,
+ tP_RejectDuplicates := '0'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT,
+ tP_MessageReference := ?,
+ tP_DestinationAddress := cr_TP_AddressAny,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := ?,
+ tP_ValidityPeriod := omit,
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := ? // any data will do: 140 octets
+ };
+
+ template SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_REF :=
+ {
+ tP_ReplyPath := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ tP_StatusReportRequest := '1'B,
+ tP_ValidityPeriodFormat := '10'B,
+ tP_RejectDuplicates := '0'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT,
+ tP_MessageReference := ?,
+ tP_DestinationAddress := cr_TP_AddressAny,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := ?,
+ tP_ValidityPeriod := ?,
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := ? // any data will do: 140 octets
+ };
+
+ template SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_ENH :=
+ {
+ tP_ReplyPath := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ tP_StatusReportRequest := '1'B,
+ tP_ValidityPeriodFormat := '01'B,
+ tP_RejectDuplicates := '0'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT,
+ tP_MessageReference := ?,
+ tP_DestinationAddress := cr_TP_AddressAny,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := ?,
+ tP_ValidityPeriod := ?,
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := ? // any data will do: 140 octets
+ };
+
+ template SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_ABS :=
+ {
+ tP_ReplyPath := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ tP_StatusReportRequest := '1'B,
+ tP_ValidityPeriodFormat := '11'B,
+ tP_RejectDuplicates := '0'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT,
+ tP_MessageReference := ?,
+ tP_DestinationAddress := cr_TP_AddressAny,
+ tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := ?,
+ tP_ValidityPeriod := ?,
+ tP_UserDataLength := int2oct(160,1),
+ tP_UserData := ? // any data will do: 140 octets
+ };
+
+ template (value) SMS_SUBMIT_REPORT_Type cs_SMS_SUBMIT_REPORT :=
+ {
+ spare1 := '0'B,
+ tP_UserDataHeaderIndicator := '0'B,
+ spare4 := '0000'B,
+ tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT_REPORT,
+ tP_FailureCause := omit,
+ tP_ParameterIndicator := cs_TP_ParameterIndicator,
+ tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed
+ tP_ProtocolIdentifier := cs_TP_ProtocolIdentifier,
+ tP_DataCodingScheme_Type := omit,
+ tP_UserDataLength := omit,
+ tP_UserData := omit
+ };
+
+ template (value) SMS_STATUS_REPORT_Type cs_SMS_STATUS_REPORT (
+ TP_MessageReference_Type p_MessageRef,
+ TP_Address_Type p_RA,
+ 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 := tsc_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 := cs_TP_ParameterIndicator,
+ tP_ProtocolIdentifier := cs_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: v1.8.0/ttcn/LibSip_SMSTypesAndValues.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_SMSTypesAndValues.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_SMSTypesAndValues.ttcn (revision 541)
@@ -0,0 +1,327 @@
+/******************************************************************************/
+// $Date: 2009-11-25 18:40:50 +0100 (Mi, 25 Nov 2009) $
+// $Author: STF160 $
+// $Rev: 2184 $
+/******************************************************************************/
+/*
+ * 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.
+ */
+
+
+module LibSip_SMSTypesAndValues {
+ import from LibCommon_DataStrings all;
+
+ group SMS_Declarations {
+
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_ul := '000'B; /* RP_DATA_ul */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_dl := '001'B; /* RP_DATA_dl */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_ul := '010'B; /* RP_ACK_ul */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_dl := '011'B; /* RP_ACK_dl */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_ul := '100'B; /* RP_ERROR_ul */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_dl := '101'B; /* RP_ERROR_dl */
+ const RP_MessageTypeIndicator_Type tsc_MT_RP_SMMA := '110'B; /* RP_SMMA */
+
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER := '00'B; /* SMS DELIVER */
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER_REPORT := '00'B; /* SMS DELIVER REPORT */
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_STATUS_REPORT := '10'B; /* SMS STATUS REPORT */
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_COMMAND := '10'B; /* SMS COMMAND */
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */
+ const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT_REPORT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */
+
+ const Bit7 tsc_IEI_RP_UserData := '1000001'B; /* 24.011 cl. 8.2.5.3 */
+
+ const charstring tsc_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: v1.8.0/ttcn/LibSip_Templates.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_Templates.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_Templates.ttcn (revision 541)
@@ -0,0 +1,3655 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @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
+ * @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 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 ModuleParameters {
+
+ modulepar boolean MB_LENGTH_FROM_ENCVAL:=false; //* to get length of message body from ecoded value
+ modulepar boolean USE_FX_FOR_XML_LENGTH:=false; //* To use external functions for calculation of XML message/body length
+
+ }//* group ModuleParameters
+
+ group SubFields
+ {
+
+ template Addr_Union m_AddrUnion_NameAddr(template NameAddr p_nameAddr) :=
+ {
+ nameAddr := p_nameAddr
+ }
+
+ template Addr_Union m_AddrUnion_DisplayAndSipUrl(template charstring p_displayName, template SipUrl p_addrSpec) :=
+ {
+ nameAddr := m_CallingAddr(p_displayName, p_addrSpec)
+ }
+
+ template NameAddr m_CallingAddr(template charstring p_displayName, template SipUrl p_addrSpec) :=
+ {
+ displayName := p_displayName,
+ addrSpec := p_addrSpec
+ }
+
+ template CommaParam_List mw_digestResponse(template GenericParam p_genericParam) :=
+ superset(p_genericParam); //* c_Integrity_protected_yes
+
+ template SemicolonParam_List m_cpc :=
+ {{"cpc",PX_SIP_ISUP_CPC_VALUE}};
+
+ template SemicolonParam_List m_ReasonParams
+ (template charstring p_cause, template charstring p_text) :=
+ {m_Cause(p_cause),m_Text(p_text)};
+
+ template ReasonValue m_ReasonValue
+ (template charstring p_cause, template charstring p_text) :=
+ {
+ token := "Q.850",
+ reasonParams := m_ReasonParams(p_cause,p_text)
+ };
+
+ template ReasonValue m_ReasonValueSIP
+ (template charstring p_cause, template charstring p_text) :=
+ {
+ token := "SIP",
+ reasonParams := m_ReasonParams(p_cause,p_text)
+ };
+
+ template RouteBody mw_routeBody (template SipUrl p_sipurl):=
+ {
+ nameAddr :=
+ {
+ displayName := *,
+ addrSpec := p_sipurl
+ },
+ rrParam := *
+ }
+
+ template SentProtocol m_SentProtocol (charstring p_protocol) :=
+ {protocolName := c_sipName,
+ protocolVersion:= c_sipVersion,
+ transport:= p_protocol};
+
+ template SipUrl m_SipUrl_currDomain(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := p_userprofile.publUsername,//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := p_userprofile.homeDomain, //* hostname, IPv4 or IPv6 as a charstring
+ portField := omit //* p_userprofile.currPort //* optional integer
+ },
+ urlParameters := omit,
+ headers := omit
+ }
+
+ template SipUrl m_SipUrl_contactIpaddr(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := p_userprofile.publUsername,//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := p_userprofile.contactIpaddr, //* hostname, IPv4 or IPv6 as a charstring
+ portField := p_userprofile.contactPort //* optional integer
+ },
+ urlParameters := omit,
+ headers := omit
+ }
+
+ template SipUrl m_SipUrl_contactIpaddrAndCpc(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := p_userprofile.publUsername & "; cpc=" & PX_SIP_ISUP_CPC_VALUE,//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := p_userprofile.contactIpaddr, //* hostname, IPv4 or IPv6 as a charstring
+ portField := p_userprofile.contactPort //* optional integer
+ },
+ urlParameters := omit,
+ headers := omit
+ }
+
+ template SipUrl m_SipUrl_currIpaddr(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := p_userprofile.publUsername,//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring
+ portField := p_userprofile.currPort //* optional integer
+ },
+ urlParameters := omit,
+ headers := omit
+ }
+
+ template SipUrl m_SipUrl_Anonymous := //* SIP-URL with a calles party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := "Anonymous",//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := "Anonymous.invalid", //* hostname, IPv4 or IPv6 as a charstring
+ portField := omit //* optional integer
+ },
+ urlParameters := omit,
+ headers := omit
+ };
+
+ template SipUrl m_TelUrl_publUser(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side
+ {
+ scheme := c_telScheme, //* contains "tel"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := p_userprofile.publUsername,//* 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 SipUrl mw_TelUrl :=
+ {
+ scheme := c_telScheme,
+ userInfo := *,
+ hostPort := ?,
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_SipUrl :=
+ {
+ scheme := c_sipScheme,
+ userInfo := *,
+ hostPort := ?,
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_TelSip_unavailableInvalidUri :=
+ {
+ scheme := (c_telScheme,c_sipScheme),
+ userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
+ hostPort := {host:="anonymous.invalid", portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ };
+
+
+ template SipUrl mw_TelSip_unavailableUri (charstring p_host):=
+ {
+ scheme := (c_telScheme,c_sipScheme),
+ userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
+ hostPort := {host:=p_host, portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ };
+
+ template SipUrl mw_SipUrl_Number(charstring p_number) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
+ hostPort := ?,
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_TelSipUrl_Number(template charstring p_number) := //* SIP-URL with a calling party number
+ {
+ scheme := (c_telScheme,c_sipScheme), //* contains "sip" or "tel"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*}, //* nat or int format
+ hostPort := ?,
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_SipUrl_Host(template charstring p_host) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= *,
+ hostPort := {host:=p_host, portField:=*},
+ urlParameters := *,
+ headers := *
+ };
+
+
+ template SipUrl mw_SipUrl_NumberHost(charstring p_number, charstring p_host) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
+ hostPort := {host:=p_host, portField:=*},
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_SipUrl_NumberHostParam(charstring p_number, charstring p_host, template SemicolonParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
+ hostPort := {host:=p_host, portField:=*},
+ urlParameters := p_urlParameters,
+ headers := *
+ };
+
+ template SipUrl m_SipUrl_NumberHostHeader(charstring p_number, charstring p_host, template AmpersandParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=omit},
+ hostPort := {host:=p_host, portField:=omit},
+ urlParameters := omit,
+ headers := p_urlParameters
+ };
+
+ template SipUrl mw_SipUrl_NumberHostHeader(charstring p_number, charstring p_host, template AmpersandParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
+ hostPort := {host:=p_host, portField:=*},
+ urlParameters := *,
+ headers := p_urlParameters
+ };
+
+ template SipUrl m_SipUrl_NumberHostParam(charstring p_number, charstring p_host, template SemicolonParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=omit},
+ hostPort := {host:=p_host, portField:=c_defaultSipPort},
+ urlParameters := p_urlParameters,
+ headers := omit
+ };
+
+ template SipUrl m_SipUrl_NumberHostParam_woPort(charstring p_number, charstring p_host, template SemicolonParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= {userOrTelephoneSubscriber:=p_number, password:=omit},
+ hostPort := {host:=p_host, portField:=omit},
+ urlParameters := p_urlParameters,
+ headers := omit
+ };
+
+ template SipUrl mw_SipUrl_Anonymous := //* SIP-URL with a calles party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo := //* optional
+ {
+ userOrTelephoneSubscriber := pattern "[a,A][n,N][o,O][n,N][y,Y][m,M][o,O][u,U][s,s]",//* charstring
+ password := omit //* optional charstring
+ },
+ hostPort :=
+ {
+ host := pattern "[a,A]nonymous.invalid", //* hostname, IPv4 or IPv6 as a charstring
+ portField := * //* optional integer
+ },
+ urlParameters := *,
+ headers := *
+ };
+
+ template SipUrl mw_SipUrl_urlParam(template SemicolonParam_List p_urlParameters) := //* SIP-URL with a calling party number
+ {
+ scheme := c_sipScheme, //* contains "sip"
+ userInfo:= *,
+ hostPort := *,
+ urlParameters := p_urlParameters,
+ headers := *
+ };
+
+ template ContactAddress mw_ContactAddress :=
+ {
+ addressField := ?,
+ contactParams := *
+ };
+
+ template HostPort mw_hostPort(template charstring p_host, template integer p_portField) :=
+ {
+ host := p_host,
+ portField := p_portField
+ };
+
+ template StatusLine mw_statusLine1xx := {sipVersion := c_sipNameVersion, statusCode := (100..199), reasonPhrase := ?};
+ template StatusLine mw_statusLine4xx := {sipVersion := c_sipNameVersion, statusCode := (400..499), reasonPhrase := ?};
+ template StatusLine mw_statusLine5xx := {sipVersion := c_sipNameVersion, statusCode := (500..599), reasonPhrase := ?};
+ template StatusLine mw_statusLineFinal := {sipVersion := c_sipNameVersion, statusCode := (200..699), reasonPhrase := ?};
+
+ template NameAddr mw_NameAddr_DispName_User_Host(template charstring p_dn, template charstring p_user, template charstring p_host) :=
+ {
+ displayName := p_dn,
+ addrSpec :=
+ {
+ scheme := c_sipScheme, //* contains "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 Addr_Union mw_AddrUnion_Nameaddr(template charstring p_dn, template charstring p_user, template charstring p_host):=
+ {
+ nameAddr:=mw_NameAddr_DispName_User_Host(p_dn,p_user,p_host)
+ }
+
+ template SipUrl mw_SipUrl_User_Host(template charstring p_user, template charstring p_host) :=
+ {
+ scheme := c_sipScheme, //* contains "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 Addr_Union mw_AddrUnion_SipUrl(template charstring p_user, template charstring p_host):=
+ {
+ addrSpecUnion:=mw_SipUrl_User_Host(p_user,p_host)
+ }
+
+
+ } //* end group Subfields
+
+
+
+
+
+ group HeaderFieldTemplates {
+ template LibSip_SIPTypesAndValues.Allow m_Allow (template Method_List p_methods) := {
+ fieldName := ALLOW_E,
+ methods := p_methods
+ }
+
+ template LibSip_SIPTypesAndValues.Allow mw_Allow (charstring p_method) := {
+ fieldName := ALLOW_E,
+ methods := superset(p_method)
+ }
+
+ template GenericParam m_Cause (template charstring p_cause):=
+ {id:="cause", paramValue:=p_cause}
+
+ template GenericParam mw_Cause (template charstring p_cause):=
+ // {id:=?, paramValue:= p_cause}
+ {id:=?, paramValue:= pattern "*{p_cause}*"} // TODO - Expression does not work for all TTCN tools
+
+ template Authorization m_Authorization (template Credentials p_Credentials):=
+ {
+ fieldName := AUTHORIZATION_E,
+ body := {p_Credentials}
+ }
+
+ template Authorization m_Authorization_digest (template CommaParam_List p_CommaParam_List):=
+ {
+ fieldName := AUTHORIZATION_E,
+ body := {{digestResponse := p_CommaParam_List}}
+ }
+
+ template Authorization m_add_Authorization_digest (in Authorization p_auth, template CommaParam_List p_CommaParam_List):=
+ {
+ fieldName := AUTHORIZATION_E,
+ body := {{digestResponse := f_merge_CommaParam_List(p_auth.body[0].digestResponse,valueof(p_CommaParam_List))}}
+ }
+
+ template Authorization m_Authorization_other :=
+ {
+ fieldName := AUTHORIZATION_E,
+ body := {{otherResponse := ?}}
+ }
+
+ template Contact m_Contact(template SipUrl p_sipUrl) :=
+ {
+ fieldName := CONTACT_E,
+ contactBody :=
+ {
+ contactAddresses :=
+ {
+ {
+ addressField := { addrSpecUnion := p_sipUrl},
+ contactParams := omit
+ }
+ }
+ } //* end contactBody
+ }//* end m_Contact
+
+ template Contact m_Contact_profile(in SipUserProfile p_userprofile) :=
+ {
+ fieldName := CONTACT_E,
+ contactBody :=
+ {
+ contactAddresses :=
+ {
+ {
+ addressField := { addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
+ contactParams := omit
+ }
+ }
+ } //* end contactBody
+ }//* end m_Contact
+
+
+ template Contact m_Contact_profile_expires(in SipUserProfile p_userprofile, in charstring p_expires) :=
+ {
+ fieldName := CONTACT_E,
+ contactBody :=
+ {
+ contactAddresses :=
+ {
+ {
+ addressField := { addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
+ contactParams := {{"expires",p_expires}}
+ }
+ }
+ } //* end contactBody
+ }//* end m_Contact
+
+ template From m_From(template NameAddr p_nameAddr, charstring p_tag_str) :=
+ {
+ fieldName := FROM_E,
+ addressField :=
+ {nameAddr := p_nameAddr},//* end addressField
+ fromParams := {{id := c_tagId, paramValue := p_tag_str}}
+ };
+
+ template From m_From_Anonymous(charstring p_tag_str) :=
+ {
+ fieldName := FROM_E,
+ addressField :=
+ {nameAddr := {
+ displayName := "Anonymous", //* optional charstring
+ addrSpec := m_SipUrl_Anonymous //* SipUrl
+ }},//* end addressField
+ fromParams := {{id := c_tagId, paramValue := p_tag_str}}
+ };
+
+ template From m_From_SipUrl(template SipUrl p_sipUrl) :=
+ {
+ fieldName := FROM_E,
+ addressField :=
+ {nameAddr := {
+ displayName := omit, //* optional charstring
+ addrSpec := p_sipUrl //* SipUrl
+ }},//* end addressField
+ fromParams := omit
+ };
+
+ template Event m_Event_refer :=
+ {
+ fieldName := EVENT_E,
+ eventType := "refer",
+ eventParams := omit
+ };
+
+ template Event m_Event_conference :=
+ {
+ fieldName := EVENT_E,
+ eventType := "conference",
+ eventParams := omit
+ };
+
+ template Event m_Event_presence :=
+ {
+ fieldName := EVENT_E,
+ eventType := "presence",
+ eventParams := omit
+ };
+
+ template Event m_Event_reg :=
+ {
+ fieldName := EVENT_E,
+ eventType := "reg",
+ eventParams := omit
+ };
+
+ template Event m_Event_cdiv :=
+ {
+ fieldName := EVENT_E,
+ eventType := "comm-div-info",
+ eventParams := omit
+ };
+
+ template Event m_Event_mcid :=
+ {
+ fieldName := EVENT_E,
+ eventType := "comm-div-info",
+ eventParams := omit
+ };
+
+ template Expires m_Expires_600000 :=
+ {
+ fieldName := EXPIRES_E,
+ deltaSec := "600000"
+ };
+
+ template Expires m_Expires (charstring p_deltaSec):=
+ {
+ fieldName := EXPIRES_E,
+ deltaSec := p_deltaSec
+ };
+
+
+ template PAssertedID m_PAssertedID(template Addr_Union p_pAssertedIDValue) :=
+ {
+ fieldName := P_ASSERTED_ID_E,
+ pAssertedIDValueList := {p_pAssertedIDValue}
+ };
+
+ template HistoryInfo mw_HistoryInfo(template HistoryInfo_List p_HistoryInfo_List) :=
+ {
+ fieldName := HISTORY_INFO_E,
+ historyInfoList := p_HistoryInfo_List
+ };
+
+ template HistoryInfoEntry mw_HistoryInfoEntry(template SipUrl p_Url, template StringList p_index, template SemicolonParam_List p_paramlist) :=
+ {
+ nameAddr := {displayName:=*, addrSpec:= p_Url},
+ hiIndex := p_index,
+ hiExtention := p_paramlist
+ }
+
+ template HistoryInfo m_HistoryInfo(template HistoryInfo_List p_HistoryInfo_List) :=
+ {
+ fieldName := HISTORY_INFO_E,
+ historyInfoList := p_HistoryInfo_List
+ };
+
+ template HistoryInfoEntry m_HistoryInfoEntry(template SipUrl p_Url, template StringList p_index, template SemicolonParam_List p_paramlist) :=
+ {
+ nameAddr := {displayName:=omit, addrSpec:= p_Url},
+ hiIndex := p_index,
+ hiExtention := p_paramlist
+ }
+
+ template PAssertedID m_PAssertedID_2x(template Addr_Union p_pAssertedIDValue1, template Addr_Union p_pAssertedIDValue2) :=
+ {
+ fieldName := P_ASSERTED_ID_E,
+ pAssertedIDValueList := {p_pAssertedIDValue1, p_pAssertedIDValue2}
+ };
+
+ template PAssertedID mw_PAssertedID(template PAssertedIDValue p_pAssertedIDValue) :=
+ {
+ fieldName := P_ASSERTED_ID_E,
+ pAssertedIDValueList := {p_pAssertedIDValue}
+ };
+
+ template PAssertedIDValue mw_PAssertedIDValue(template SipUrl p_SipUrl) :=
+ {
+ nameAddr :={displayName := *, addrSpec:=p_SipUrl}
+ };
+
+ template PPreferredID m_PPreferredID(template Addr_Union p_pPreferredIDValue) :=
+ {
+ fieldName := P_PREFERRED_ID_E,
+ pPreferredIDValueList := {p_pPreferredIDValue}
+ };
+
+ template Privacy m_Privacy(PrivacyValue p_privacy) :=
+ {
+ fieldName := PRIVACY_E,
+ privValueList := {p_privacy}
+ };
+
+ template 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 Reason m_Reason(integer p_cause) :=
+ {
+ fieldName := REASON_E,
+ reasonValues := {m_ReasonValue(int2str(p_cause),"dummy")}
+ };
+
+ template Reason m_Reason21 :=
+ {
+ fieldName := REASON_E,
+ reasonValues := {m_ReasonValue(int2str(21),"call reject")}
+ };
+
+ template RecordRoute m_recordRoute_currIpAddr (in SipUserProfile p_userprofile):=
+ {
+ fieldName := RECORD_ROUTE_E,
+ routeBody := {{nameAddr := {displayName := omit,
+ addrSpec := {scheme := c_sipScheme, //* contains "sip"
+ userInfo := omit,
+ hostPort := {host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
+ urlParameters := omit,
+ headers := omit}
+ },
+ rrParam := omit}
+ }};
+
+ template ReferredBy m_ReferredBy_SipUrl(template SipUrl p_sipUrl) :=
+ {
+ fieldName := REFERRED_BY_E,
+ nameAddr :={displayName := omit, addrSpec:=p_sipUrl},
+ referredbyIdParams := omit
+ }
+
+ template ReferTo m_ReferTo_SipUrl(template SipUrl p_sipUrl, charstring p_method) :=
+ {
+ fieldName := REFER_TO_E,
+ nameAddr :={displayName := omit, addrSpec:=p_sipUrl},
+ referToParams := {{id:="method",paramValue :=p_method}}
+ }
+
+ template ReferSub m_ReferSub(in boolean p_value) :=
+ {
+ fieldName := REFER_SUB_E,
+ referSubValue :=p_value,
+ referSubParams := omit
+ }
+
+ template Replaces m_Replaces(
+ charstring p_callId,
+ charstring p_toTag,
+ charstring p_fromTag
+ ) := {
+ fieldName := REPLACES_E,
+ replacesParams := {
+ {id := p_callId, paramValue := omit},
+ {id := "to-tag", paramValue := p_toTag},
+ {id := "from-tag", paramValue := p_fromTag}
+ }
+ }
+
+ template Require m_Require_replaces :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {c_replaces}
+ };
+
+
+ template Require m_Require_empty :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {""}
+ };
+
+ template Require m_Require_100rel :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {c_tag100rel}
+ };
+
+ template Require m_Require_prec :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := {c_tagPrecond}
+ }
+
+ template SubscriptionState m_SubscriptionState_active :=
+ {
+ fieldName := SUBSCRIPTION_STATE_E,
+ subState := "active",
+ substateParams := {{id:="expires",paramValue:="60000"}}
+ }
+
+ template Supported m_Supported_fromChange :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:={c_tagFromChange}
+ }
+
+ template Supported m_Supported_prec :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:={c_tagPrecond}
+ }
+
+ template Supported m_Supported_100rel :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:={c_tag100rel}
+ }
+
+ template Supported m_Supported_100rel_prec :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:={c_tag100rel, c_tagPrecond}
+ }
+
+ template GenericParam m_Text (template charstring p_text):=
+ {id:="text", paramValue:=p_text}
+
+ template GenericParam m_UserPhone :=
+ {
+ id := "user",
+ paramValue := "phone"
+ }
+
+ template GenericParam m_UserToUserEncodingHex :=
+ {
+ id := "encoding",
+ paramValue := "hex"
+ }
+
+ template UserToUser m_UserToUserData(template charstring p_U2UData):=
+ {
+ fieldName := USER_TO_USER_E,
+ uuiData := p_U2UData,
+ uuiParam := m_UserToUserEncodingHex
+ }
+
+ template To m_To(template SipUrl p_sipUrl) :=
+ {
+ fieldName := TO_E,
+ addressField :=
+ {nameAddr := {
+ displayName := "ETSI Tester", //* optional charstring
+ addrSpec := p_sipUrl //* SipUrl
+ }},//* end addressField
+ toParams := omit
+ };
+
+ template To m_To_SipUrl(SipUrl p_sipUrl) :=
+ {
+ fieldName := TO_E,
+ addressField :=
+ {nameAddr := {
+ displayName := omit, //* optional charstring
+ addrSpec := p_sipUrl //* SipUrl
+ }},//* end addressField
+ toParams := omit
+ };
+
+ template To mw_To_NameAddr_SipUrl(template charstring p_dn, template 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 To mw_To(template SipUrl p_sipUrl) := {
+ fieldName := TO_E,
+ addressField := { nameAddr := {displayName := *, addrSpec := p_sipUrl}},
+ toParams:= *
+ }
+
+ template From mw_From(template SipUrl p_sipUrl) := {
+ fieldName := FROM_E,
+ addressField := { nameAddr := {displayName := *, addrSpec := p_sipUrl}},
+ fromParams:= *
+ }
+
+ template From mw_From_NameAddr_SipUrl(template charstring p_dn, template 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 ViaBody m_ViaBody_currIpaddr(charstring branch_val,in SipUserProfile p_userprofile) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}}
+ }
+
+ template ViaBody mw_ViaBody_interface(template HostPort p_hostport) :=
+ {
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
+ sentBy:={host:=p_hostport.host, portField:= p_hostport.portField},
+ viaParams:=*
+ }
+
+ template Via mw_Via(template ViaBody p_viabody) :=
+ {
+ fieldName := VIA_E,
+ viaBody:= ? //* superset(p_viabody)
+ }
+
+ template CallId mw_CallId_any :=
+ {
+ fieldName := CALL_ID_E,
+ callid := ?
+ }
+
+ template Privacy mw_Privacy_id :=
+ {
+ fieldName := PRIVACY_E,
+ privValueList := {*,"id",*}
+ };
+
+
+ template Privacy mw_Privacy(template charstring p_value) :=
+ {
+ fieldName := PRIVACY_E,
+ privValueList := {*,p_value,*}
+ };
+
+
+ template Privacy mw_Privacy_user :=
+ {
+ fieldName := PRIVACY_E,
+ privValueList := {*,"user",*}
+ };
+
+ template Reason mw_Reason(template charstring p_cause) :=
+ {
+ fieldName := REASON_E,
+ reasonValues := {m_ReasonValue(p_cause,?)}
+ };
+
+ template Reason mw_ReasonSIP(template charstring p_cause) :=
+ {
+ fieldName := REASON_E,
+ reasonValues := {m_ReasonValueSIP(p_cause,?)}
+ };
+
+ template Require mw_Require_not_100rel :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := superset(complement(c_tag100rel))
+ };
+
+ template Require mw_require_100rel :=
+ {
+ fieldName := REQUIRE_E,
+ optionsTags := superset(c_tag100rel)
+ };
+
+ template RecordRoute mw_recordroute (template RouteBody p_routeBody):=
+ {
+ fieldName := RECORD_ROUTE_E,
+ routeBody := ? //* superset(p_routeBody)
+ };
+
+ template Route mw_route (template RouteBody_List p_routeBody):=
+ {
+ fieldName := ROUTE_E,
+ routeBody := p_routeBody
+ };
+
+ template StatusLine mw_statusLine(template integer p_statusCode) :=
+ {
+ sipVersion:=c_sipNameVersion,
+ statusCode:=p_statusCode,
+ reasonPhrase:=?
+ };
+
+ template Supported mw_Supported_100rel_prec :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:= superset(c_tag100rel, c_tagPrecond)
+ }
+
+ template Supported mw_Supported_100rel :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:= superset(c_tag100rel)
+ }
+
+ template Supported mw_Supported_fromChange :=
+ {
+ fieldName:=SUPPORTED_E,
+ optionsTags:= superset(c_tagFromChange)
+ }
+
+ template UserToUser mw_UserToUserData(template charstring p_U2UData):=
+ {
+ fieldName := USER_TO_USER_E,
+ uuiData := p_U2UData,
+ uuiParam := ?
+ }
+
+ template Contact mw_Contact_conference :=
+ {
+ fieldName := CONTACT_E,
+ contactBody :=
+ {
+ contactAddresses :=
+ {
+ {
+ addressField := {
+ nameAddr := {
+ displayName := *,
+ addrSpec := {
+ scheme := ?,
+ userInfo := *,
+ hostPort := *,
+ urlParameters := {{"isfocus",*},*},
+ headers := *
+ }
+ }
+ },
+ contactParams := *
+ }
+ }
+ }
+ }
+
+ template AlertInfo m_AlertInfo(charstring p_urn) := {
+ fieldName := ALERT_INFO_E,
+ alertInfoBody := {{p_urn, omit}}
+ }
+
+ template AlertInfo mw_AlertInfo(template charstring p_urn) := {
+ fieldName := ALERT_INFO_E,
+ alertInfoBody := superset({p_urn, omit})
+ }
+ } //* end of group HeaderFieldTemplates
+
+
+group MessageTemplates {
+group dummy_templates {
+ group dummy_parameter_send {
+
+ template RequestLine m_requestLine_dummy(Method p_method) :=
+ {
+ method := p_method,
+ requestUri := c_unavailableUri,
+ sipVersion := c_sipNameVersion
+ }
+
+ template 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,
+ fromField := c_empty_From,
+ geolocation := 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
+ 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 RequestLine mw_requestLine_dummy(Method p_method) :=
+ {
+ method := p_method,
+ requestUri := ?,
+ sipVersion := c_sipNameVersion
+ }
+
+ template 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 := *,
+ fromField := ?,
+ geolocation := *,
+ 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
+ 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 ACK_Request m_ACK_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(ACK_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template BYE_Request m_BYE_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(BYE_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template CANCEL_Request m_CANCEL_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(CANCEL_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template INFO_Request m_INFO_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(INFO_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template INVITE_Request m_INVITE_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(INVITE_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template MESSAGE_Request m_MESSAGE_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(MESSAGE_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template NOTIFY_Request m_NOTIFY_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(NOTIFY_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template OPTIONS_Request m_OPTIONS_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(OPTIONS_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template PRACK_Request m_PRACK_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(PRACK_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template PUBLISH_Request m_PUBLISH_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(PUBLISH_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template REGISTER_Request m_REGISTER_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(REGISTER_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template REFER_Request m_REFER_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(REFER_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template SUBSCRIBE_Request m_SUBSCRIBE_Dummy :=
+ {
+ requestLine := m_requestLine_dummy(SUBSCRIBE_E),
+ msgHeader := m_msgHeader_dummy,
+ messageBody := omit,
+ payload := omit
+ }
+
+ template 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 ACK_Request mw_ACK_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(ACK_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template BYE_Request mw_BYE_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(BYE_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template CANCEL_Request mw_CANCEL_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(CANCEL_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template INFO_Request mw_INFO_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(INFO_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template INVITE_Request mw_INVITE_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(INVITE_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(MESSAGE_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template OPTIONS_Request mw_OPTIONS_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(OPTIONS_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template NOTIFY_Request mw_NOTIFY_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(NOTIFY_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template PRACK_Request mw_PRACK_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(PRACK_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template PUBLISH_Request mw_PUBLISH_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(PUBLISH_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template REFER_Request mw_REFER_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(REFER_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template REGISTER_Request mw_REGISTER_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(REGISTER_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Dummy :=
+ {
+ requestLine := mw_requestLine_dummy(SUBSCRIBE_E),
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+
+ template 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 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 Response mw_Response_Dummy :=
+ {
+ statusLine := ?,
+ msgHeader := mw_msgHeader_dummy,
+ messageBody := *,
+ payload := *
+ }
+ } //* group dummy_response_templates_receive
+}
+
+group base_templates{
+
+ group request_send {
+
+
+ template ACK_Request m_ACK_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_ACK_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "ACK"},
+ fromField := p_from,
+ toField := p_to,
+ via := p_via
+ }
+ }
+
+ template BYE_Request m_BYE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ 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 CANCEL_Request m_CANCEL_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ 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 INFO_Request m_INFO_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ 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 INVITE_Request m_INVITE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, 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 MESSAGE_Request m_MESSAGE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 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 NOTIFY_Request m_NOTIFY_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_NOTIFY_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "NOTIFY"},
+ fromField := p_from,
+ toField := p_to,
+ via := p_via
+ }
+ }
+
+ template OPTIONS_Request m_OPTIONS_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via) modifies m_OPTIONS_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "OPTIONS"},
+ fromField := p_from,
+ toField := p_to,
+ via := p_via
+ }
+ }
+
+ template PRACK_Request m_PRACK_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, RAck p_RAck)
+ modifies m_PRACK_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
+ fromField := p_from,
+ rAck := p_RAck,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := omit
+ }
+
+
+ template PUBLISH_Request m_PUBLISH_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb)
+ modifies m_PUBLISH_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/},
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
+ event := p_event,
+ fromField := p_from,
+ toField := p_to,
+ via := p_via
+ },
+ messageBody := p_mb
+ }
+
+ template REFER_Request m_REFER_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, Contact p_contact,
+ From p_from, template To p_to, Via p_via, template ReferTo p_referTo, template ReferredBy p_referredBy)
+ modifies m_REFER_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contact := p_contact,
+ cSeq := {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 REFER_Request m_REFER_Request_replaces (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ Contact p_contact,
+ From p_from,
+ template To p_to,
+ Via p_via,
+ template ReferTo p_referTo,
+ template ReferredBy p_referredBy,
+ template Replaces p_replaces,
+ template Require p_require
+ ) modifies m_REFER_Request_Base := {
+ msgHeader :=
+ {
+ replaces := p_replaces,
+ require := p_require
+ }
+ }
+
+ template REGISTER_Request m_REGISTER_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization) 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 SUBSCRIBE_Request m_SUBSCRIBE_Request_Base (SipUrl p_requestUri, CallId p_callId,
+ CSeq p_cSeq, From p_from, To p_to, Via p_via) modifies m_SUBSCRIBE_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
+ fromField := p_from,
+ toField := p_to,
+ via := p_via
+ }
+ }
+
+ template UPDATE_Request m_UPDATE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_UPDATE_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_requestUri
+ },
+ msgHeader :=
+ {
+ callId := p_callId,
+ contact := p_contact,
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ cSeq := {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 ACK_Request mw_ACK_Request_Base (template CallId p_callId) modifies mw_ACK_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template BYE_Request mw_BYE_Request_Base(template CallId p_callId) modifies mw_BYE_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template CANCEL_Request mw_CANCEL_Request_Base (template CallId p_callId) modifies mw_CANCEL_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template INFO_Request mw_INFO_Request_Base(template CallId p_callId) modifies mw_INFO_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request_Base modifies mw_INVITE_Dummy :=
+ {
+ requestLine :=
+ {
+ method := INVITE_E
+ }
+ }
+
+ template MESSAGE_Request mw_MESSAGE_Request_Base modifies mw_MESSAGE_Dummy :=
+ {
+ msgHeader :=
+ {
+ contact := *
+ }
+ }
+
+ template NOTIFY_Request mw_NOTIFY_Request_Base (template CallId p_callId) modifies mw_NOTIFY_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template OPTIONS_Request mw_OPTIONS_Request_Base (template CallId p_callId) modifies mw_OPTIONS_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template PRACK_Request mw_PRACK_Request_Base(template CallId p_callId) modifies mw_PRACK_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template PUBLISH_Request mw_PUBLISH_Request_Base(template CallId p_callId) modifies mw_PUBLISH_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template REFER_Request mw_REFER_Request_Base (template CallId p_callId) modifies mw_REFER_Dummy :=
+ {
+ msgHeader :=
+ {
+ callId := p_callId
+ }
+ }
+
+ template REFER_Request
+ mw_REFER_Request(template CallId p_callId, SipUrl p_requestUri,
+ SipUrl p_referredBy)
+ modifies mw_REFER_Request_Base := {
+ requestLine := {requestUri := p_requestUri},
+ msgHeader := {
+ callId := p_callId,
+ referredBy := {
+ fieldName := REFERRED_BY_E,
+ nameAddr := {displayName := *, addrSpec := p_referredBy},
+ referredbyIdParams := *
+ }
+ }
+ }
+
+ template INVITE_Request mw_INVITE_Request(template Require p_require,
+ SipUrl p_referredBy) modifies mw_INVITE_Request_Base := {
+ msgHeader := {
+ require := p_require,
+ referredBy := {
+ fieldName := REFERRED_BY_E,
+ nameAddr := {displayName := *, addrSpec := p_referredBy},
+ referredbyIdParams := *
+ }
+ }
+ }
+
+ template REGISTER_Request mw_REGISTER_Request_Base modifies mw_REGISTER_Dummy :=
+ {
+ requestLine :=
+ {
+ method := REGISTER_E
+ }
+ }
+
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Request_Base modifies mw_SUBSCRIBE_Dummy :=
+ {
+ requestLine :=
+ {
+ method := SUBSCRIBE_E
+ }
+ }
+
+ template 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 Response m_Response_Base (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, 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 Response mw_Response_Base (template 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 := ?
+ }
+ }
+ } //* end group message_receive
+
+} //* end group full_templates
+
+group modified_templates {
+
+group request_send {
+
+ template ACK_Request m_ACK_Request_route (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route)
+ modifies m_ACK_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ route := p_route
+ }
+ }
+
+ template ACK_Request m_ACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via,template MessageBody p_mb )
+ modifies m_ACK_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
+ },
+ messageBody := p_mb
+ }
+
+ template BYE_Request m_BYE_Request_cause
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, integer p_cause)
+ modifies m_BYE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ reason := m_Reason(p_cause) //* PIXIT value
+ }
+ }
+
+ template INVITE_Request m_INVITE_Request_sdp
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template MessageBody p_mb)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
+ },
+ messageBody := p_mb
+ }
+
+ template INVITE_Request m_INVITE_Request_ResourceList
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
+ Via p_via, Contact p_contact, template MessageBody p_mb)
+ modifies m_INVITE_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {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 REGISTER_Request m_REGISTER_Request_expires
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, Contact p_contact,
+ template Authorization p_authorization, charstring p_expires)
+ modifies m_REGISTER_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ authorization := p_authorization,
+ expires := {
+ fieldName := EXPIRES_E,
+ deltaSec := p_expires }
+ }
+ }
+
+ template NOTIFY_Request m_NOTIFY_Request_contact (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact
+ ) modifies m_NOTIFY_Request_Base
+ :=
+ {
+ msgHeader :=
+ {
+ contact := p_contact,
+ event := m_Event_reg,
+ subscriptionState := m_SubscriptionState_active
+ }
+ }
+
+ template NOTIFY_Request m_NOTIFY_Request_sipfrag (
+ SipUrl p_requestUri,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ charstring p_state,
+ charstring p_sipfrag
+ ) modifies m_NOTIFY_Request_Base := {
+ requestLine :=
+ {
+ method := NOTIFY_E,
+ requestUri :=
+ {
+ hostPort:= p_requestUri.hostPort
+ }
+ },
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= lengthof(p_sipfrag)},
+ contentType := {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
+ }
+ }
+
+} //* end group request_send
+
+
+group request_receive {
+
+ template BYE_Request mw_BYE_Request_Reason(template CallId p_callId, template charstring p_cause) modifies mw_BYE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ reason := mw_Reason(p_cause)
+ }
+ }
+
+ template BYE_Request mw_BYE_Request_ReasonSIP(template CallId p_callId, template charstring p_cause) modifies mw_BYE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ reason := mw_ReasonSIP(p_cause)
+ }
+ }
+
+ template BYE_Request mw_BYE_Request_headerfieldlist
+ (
+ template CallId p_callId,
+ template SipUrl p_requestUri,
+ template To p_to,
+ template 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 BYE_Request mw_BYE_Request_UserToUser(template CallId p_callId) modifies mw_BYE_Request_Base :=
+ {
+ msgHeader :=
+ {
+ userToUser := ?
+ }
+ }
+
+
+ template INVITE_Request mw_INVITE_Request_RequestURI (template SipUrl p_sipUrl) modifies mw_INVITE_Dummy :=
+ {
+ requestLine :=
+ {
+ requestUri := p_sipUrl,
+ sipVersion := c_sipNameVersion
+ }
+ }
+
+ template INFO_Request mw_INFO_Request_MB (template CallId p_callId, template MessageBody p_mb) modifies mw_INFO_Request_Base :=
+ {
+ messageBody := p_mb
+ }
+
+ template INVITE_Request mw_INVITE_Request_expires modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {expires := ?}
+ }
+
+ template INVITE_Request mw_INVITE_Request_callid(CallId p_callid) modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := {callId := p_callid}
+ }
+
+ template INVITE_Request mw_INVITE_Request_MB (template CallId p_callId, template MessageBody p_mb) modifies mw_INVITE_Request_Base :=
+ {
+ msgHeader := {callId := p_callId},
+ messageBody := p_mb
+ }
+
+ template INVITE_Request mw_INVITE_Request_noPaccessNetworkInfo (template CallId p_callId)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := omit}
+ }
+ template INVITE_Request mw_INVITE_Request_PaccessNetworkInfo (template CallId p_callId)
+ modifies mw_INVITE_Request_Base
+ :=
+ {
+ msgHeader := { pAccessNetworkInfo := ?}
+ }
+
+ template INVITE_Request mw_INVITE_MSRP_Session(
+ in template 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://*" // FIXME Shall parse msrp and msrps for secured msrp
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ template 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 UPDATE_Request mw_UPDATE_Request_SDP(template CallId p_callId, template MessageBody p_mb) modifies mw_UPDATE_Dummy :=
+ {
+ messageBody := p_mb
+ }
+
+ template 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 Response m_Response_AlertInfo (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact,
+ template AlertInfo p_alertInfo
+ ) modifies m_Response_Base:= {
+ msgHeader := {
+ alertInfo := p_alertInfo,
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_Contact (
+ StatusLine p_statusLine,
+ CallId p_callId,
+ CSeq p_cSeq,
+ From p_from,
+ To p_to,
+ Via p_via,
+ Contact p_contact
+ ) modifies m_Response_Base:= {
+ msgHeader := {
+ contact := p_contact
+ }
+ }
+
+ template Response m_Response_ext (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute) modifies m_Response_Base:=
+ {
+ msgHeader :={
+ route := p_route, //f_route(),
+ recordRoute := p_recordroute //f_recordroute()
+ }
+ }
+
+ template Response m_Response_mbody (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb) modifies m_Response_ext:=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}
+ },
+ messageBody := p_mb
+ }
+
+ template Response m_Response_PAsserted_Privacy (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_ext:=
+ {
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy
+ }
+ }
+
+ template Response mw_Response_PAsserted_Privacy_Supported (template 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 := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy,
+ supported := p_supported
+ }
+ }
+
+ template Response m_Response_PAsserted_Privacy_mbody (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template PAssertedID p_pAssertedID, template Privacy p_privacy, MessageBody p_mb) modifies m_Response_ext:=
+ {
+ msgHeader :=
+ {
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication},
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy
+ },
+ messageBody := p_mb
+ }
+
+} //* end group response_send
+
+
+group response_receive {
+
+ template Response mw_Response_Expires (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template DeltaSec p_deltaSec) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
+ }
+ }
+
+ template Response mw_Response_PAsserted_Privacy (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ pAssertedID := p_pAssertedID,
+ privacy := p_privacy
+ }
+ }
+
+ template Response mw_Response_Reason (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template charstring p_cause) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ reason := mw_Reason(p_cause)
+ }
+ }
+
+ template Response mw_Response_RecordRoute (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template RecordRoute p_recordRoute) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ recordRoute := p_recordRoute
+ }
+ }
+
+ template Response mw_Response_Via (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template Via p_via) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ via := p_via
+ }
+ }
+
+ template Response mw_Response_Contact (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template Contact p_contact) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ contact := p_contact
+ }
+ }
+
+ template Response mw_Response_AlertInfo (
+ template StatusLine p_statusLine,
+ template CallId p_callId,
+ template CSeq p_cSeq,
+ template AlertInfo p_alertInfo
+ ) modifies mw_Response_Base:= {
+ statusLine := {
+ sipVersion := c_sipNameVersion,
+ statusCode := p_statusLine.statusCode,
+ reasonPhrase := ?
+ },
+ msgHeader :=
+ {
+ alertInfo := p_alertInfo
+ }
+ }
+
+ template Response mw_Response_HistoryInfo (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template HistoryInfo p_historyInfo) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ historyInfo:=p_historyInfo
+ }
+ }
+
+ template Response mw_Response_messageBody (
+ template StatusLine p_statusLine,
+ template CallId p_callId,
+ template CSeq p_cSeq,
+ template Require p_require,
+ template MessageBody p_mb
+ ) modifies mw_Response_Base:= {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ require := p_require
+ },
+ messageBody := p_mb
+ }
+
+ template Response mw_Response_Require (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template Require p_require) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ require := p_require
+ }
+ }
+
+ template Response mw_Response_Require_ifpresent (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template Require p_require) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ require := p_require ifpresent
+ }
+ }
+
+ template Response mw_Response_Supported (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq, template Supported p_supported) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ supported := p_supported
+ }
+ }
+
+ template Response mw_Response_UserToUser (template StatusLine p_statusLine, template CallId p_callId,
+ template CSeq p_cSeq) modifies mw_Response_Base:=
+ {
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
+ msgHeader :=
+ {
+ userToUser := ?
+ }
+ }
+} //* end group response_receive
+
+
+} //* end group modified_templates
+
+} //* end group MessageTemplates
+
+group SDP_Templates {
+
+ group SDP_Messages {
+
+ group base_templates {
+
+ template SDP_Message m_SDP(SDP_media_desc p_media, in SipUserProfile p_userprofile) := {
+ protocol_version := 0, //* v=0
+ origin := {
+ user_name := "voicesession",
+ session_id := "30000",
+ session_version := "0",
+ net_type := c_in,
+ addr_type := c_ip4,
+ addr := p_userprofile.contactIpaddr },
+ //* 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 := {
+ 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
+ bandwidth := omit,
+ times := { { time_field := { "0", "0" }, time_repeat:=omit
+ }
+ }, //* t=0 0
+ timezone_adjustments := omit,
+ key := omit,
+ attributes := omit,
+ media_list := {p_media}
+ };
+
+ template SDP_Message m_SDP_mediaList(SDP_media_desc_list p_media_list, in SipUserProfile p_userprofile)
+ := {
+ protocol_version := 0, //* v=0
+ origin := {
+ user_name := "voicesession",
+ session_id := "30000",
+ session_version := "0",
+ net_type := c_in,
+ addr_type := c_ip4,
+ addr := p_userprofile.contactIpaddr },
+ //* 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 := {
+ 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
+ bandwidth := omit,
+ times := { { time_field := { "0", "0" }, time_repeat:=omit
+ }
+ }, //* t=0 0
+ timezone_adjustments := omit,
+ key := omit,
+ attributes := omit,
+ media_list := p_media_list
+ };
+
+ template SDP_Message m_SDP_media_attr_preconditions(SDP_media_desc p_media, in SipUserProfile p_userprofile, 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 SDP_Message m_SDP_attribute(SDP_media_desc p_media, in SipUserProfile p_userprofile, SDP_attribute loc_attribute)
+ modifies m_SDP
+ := {
+ attributes := {loc_attribute}
+ };
+
+ template 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 SDP_Message m_SDP_bandwidth(SDP_media_desc p_media, in SipUserProfile p_userprofile)
+ modifies m_SDP
+ := {
+ bandwidth := {{PX_SIP_SDP_b_modifier, PX_SIP_SDP_b_bandwidth}}
+ };
+
+ template SDP_Message m_SDP_unacceptable(SDP_media_desc p_media, in 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 SDP_Message m_SDP_encrypted(SDP_media_desc p_media, in 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}}
+ };
+ }//* end group modified_templates
+
+ } //* end group SDP_Messages
+
+ group SDP_Fields {
+
+ template SDP_media_desc m_media(template SDP_media_field p_mf) := {
+ media_field := p_mf,
+ information := omit,
+ connections := omit,
+ bandwidth := omit,
+ key := omit,
+ attributes := omit
+ };
+//TODO - delete old
+// template SDP_media_desc m_mediaFieldBandwdthAttributes(template SDP_media_field p_mf, template SDP_bandwidth p_bw, template SDP_attribute_list p_attributes) := {
+// media_field := p_mf,
+// information := omit,
+// connections := omit,
+// bandwidth := {p_bw},
+// key := omit,
+// attributes := p_attributes
+// };
+
+ template SDP_media_desc m_mediaFieldBandwdthAttributes(template SDP_media_field p_mf, template SDP_bandwidth_list p_bw_l, template SDP_attribute_list p_attributes) := {
+ media_field := p_mf,
+ information := omit,
+ connections := omit,
+ bandwidth := p_bw_l,
+ key := omit,
+ attributes := p_attributes
+ };
+
+ template SDP_media_desc m_media_dynPT(charstring p_PT, charstring p_encod) := {
+ media_field := {
+ media := c_audio,//* "audio",
+ ports := { port_number := 8500, num_of_ports:=omit },
+ transport := c_rtpAvp,//* "RTP/AVP",
+ fmts := { p_PT }
+ }, //* m=audio 8500 RTP/AVP 8
+ information := omit,
+ connections := omit,
+ bandwidth := omit,
+ key := omit,
+ attributes := { { rtpmap := { attr_value := p_PT & " " & p_encod }
+ }
+ } //* a=rtpmap:8 PCMA/8000
+ };
+
+ template SDP_media_desc m_media_unsupported := {
+ media_field := {
+ media := "video",
+ ports := { port_number := 11500, num_of_ports:=omit },
+ transport := "RTP/AVP",
+ fmts := { "99" }
+ }, //* m=audio 8500 RTP/AVP 0
+ information := omit,
+ connections := omit,
+ bandwidth := omit,
+ key := omit,
+ attributes := { {
+ rtpmap := { attr_value := "99 X-Experimental/180000"}
+ }}
+ };
+
+ template SDP_bandwidth m_bandwidth(template charstring loc_m, template integer loc_b) := {
+ modifier:=loc_m,
+ bandwidth:=loc_b
+ };
+
+ template SDP_bandwidth m_bandwidth_as_64:=
+ {
+ modifier:="AS",
+ bandwidth:=64
+ }
+
+ template SDP_bandwidth mw_bandwidth_rs:=
+ {
+ modifier:="RS",
+ bandwidth:=?
+ }
+
+ template SDP_bandwidth mw_bandwidth_rr:=
+ {
+ modifier:="RR",
+ bandwidth:=?
+ }
+
+ template SDP_media_field m_media_field(charstring p_media, integer p_portNum, charstring p_transport, charstring p_fmts) :=
+ {
+ media := p_media,
+ ports := { port_number := p_portNum, num_of_ports:=omit },
+ transport := p_transport,
+ fmts := { p_fmts }
+ }
+
+ template SDP_media_field mw_media_PCMU :=
+ {
+ media := c_audio,
+ ports := { port_number := ?, num_of_ports:=* },
+ transport := c_rtpAvp,
+ fmts := { "0" }
+ }
+
+ template SDP_media_field mw_media_PCMA :=
+ {
+ media := c_audio,
+ ports := { port_number := 8500, num_of_ports:=omit },
+ transport := c_rtpAvp,
+ fmts := { "8" }
+ }
+
+ template SDP_media_field mw_media_PCMA_U_DPT :=
+ {
+ media := c_audio,
+ ports := { port_number := ?, num_of_ports:=* },
+ transport := c_rtpAvp,
+ fmts := { * }
+ }
+
+ template SDP_media_field mw_media_T38 :=
+ {
+ media := c_image,
+ ports := { port_number := ?, num_of_ports:=* },
+ transport := pattern "*ptl", //* udptl,tcptl
+ fmts := { "t38" }
+ }
+
+ template SDP_media_field mw_media_G722 :=
+ {
+ media := c_audio,
+ ports := { port_number := ?, num_of_ports:=* },
+ transport := "RTP/AVP",
+ fmts := { "9" }
+ }
+
+ template SDP_media_field mw_media_AMR_DPT :=
+ {
+ media := c_audio,
+ ports := { port_number := ?, num_of_ports:=* },
+ transport := c_rtpAvp,
+ fmts := { * }
+ }
+
+ template SDP_media_field mw_media_MSRP :=
+ {
+ media := c_msrp,
+ ports := { port_number := ?, num_of_ports:=omit },
+ transport := c_msrpTcp,
+ fmts := { * }
+ }
+
+
+ template SDP_attribute m_attribute_sendonly := {sendonly:={}};
+ template SDP_attribute mw_attribute_sendonly := {sendonly:={}};//MRO
+ template SDP_attribute m_attribute_recvonly := {recvonly:={}};
+ template SDP_attribute mw_attribute_recvonly := {recvonly:={}};//MRO
+ template SDP_attribute m_attribute_sendrecv := {sendrecv:={}};
+ template SDP_attribute mw_attribute_sendrecv := {sendrecv:={}};//MRO
+ template SDP_attribute m_attribute_inactive := {inactive:={}};
+ template SDP_attribute mw_attribute_inactive := {inactive:={}};//MRO
+ template 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 SDP_attribute m_attribute_AMR_DPT := { rtpmap := { attr_value := /*pattern "**/PX_SIP_SDP_dyn & " AMR" }};
+ template SDP_attribute m_attribute_CLEARMODE_DPT := {rtpmap := { attr_value := /*pattern "**/PX_SIP_SDP_dyn & " CLEARMODE/8000" }};
+ template SDP_attribute m_attribute_G722 := { rtpmap := { attr_value := "9 G722/8000" }};
+ template SDP_attribute m_attribute_PCMU := { rtpmap := { attr_value := "0 PCMU/8000" }};
+ template SDP_attribute m_attribute_PCMU_DPT := { rtpmap := { attr_value := /*pattern "**/PX_SIP_SDP_dyn & " PCMU/8000" }};
+ template SDP_attribute m_attribute_PCMA := { rtpmap := { attr_value := "8 PCMA/8000" }};
+ template SDP_attribute m_attribute_PCMA_DPT := { rtpmap := { attr_value := /*pattern "**/PX_SIP_SDP_dyn & " PCMA/8000" }};
+ template SDP_attribute m_attribute_T38 := { unknown := { name:=?, attr_value := pattern "*t38*" }};
+
+ template SDP_attribute m_attribute_curr (charstring p_preconditionType, charstring p_statusType, charstring p_direction):=
+ {
+ curr:={preconditionType := p_preconditionType,
+ statusType := p_statusType,
+ direction := p_direction}
+ };
+
+ template SDP_attribute mw_attribute_curr :=
+ {
+ curr := ?
+ };
+
+ template SDP_attribute m_attribute_des (charstring p_preconditionType, charstring p_strength, charstring p_statusType, charstring p_direction):=
+ {
+ des:={preconditionType := p_preconditionType,
+ strength := p_strength,
+ statusType := p_statusType,
+ direction := p_direction}
+ };
+
+ template SDP_attribute mw_attribute_des :=
+ {
+ des := ?
+ };
+
+ template SDP_attribute m_attribute_conf (charstring p_preconditionType, charstring p_statusType, 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 SimpleMsgSummary m_SMS(template Msg_summary_line_list p_summaryLineList, template 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 SimpleMsgSummary mw_SMS :=
+ {
+ msg_status_line := ?,
+ msg_account := *,
+ msg_summary_line_list := *,
+ opt_msg_headers := *
+ }
+
+ template SimpleMsgSummary mw_SMS_yes :=
+ {
+ msg_status_line := mw_msgStatusLine_yes,
+ msg_account := *,
+ msg_summary_line_list := *,
+ opt_msg_headers := *
+ }
+
+ template SimpleMsgSummary mw_SMS_yesUri :=
+ {
+ msg_status_line := mw_msgStatusLine_yes,
+ msg_account := mw_msgAccount,
+ msg_summary_line_list := *,
+ opt_msg_headers := *
+ }
+
+ template SimpleMsgSummary mw_SMS_yesVoice :=
+ {
+ msg_status_line := mw_msgStatusLine_yes,
+ msg_account := *,
+ msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)},
+ opt_msg_headers := *
+ }
+
+ template SimpleMsgSummary mw_SMS_yesUriVoice :=
+ {
+ msg_status_line := mw_msgStatusLine_yes,
+ msg_account := mw_msgAccount,
+ msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)},
+ opt_msg_headers := *
+ }
+
+ template Msg_status_line m_msgStatusLine_yes:=
+ {
+ msg_type := c_messageWaiting,
+ msg_status := "yes"
+ }
+
+ template Msg_status_line mw_msgStatusLine_yes:=
+ {
+ msg_type := c_messageWaiting,
+ msg_status := "yes"
+ }
+
+ template Msg_account m_msgAccount(template 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 Msg_account mw_msgAccount :=
+ {
+ msg_type_account := c_messageAccount,
+ account_URI := ?
+ }
+
+ template Msg_summary_line m_msgSummaryLine(template charstring p_msgContexClass,template charstring p_msgs,template charstring p_urgent_msgs) :=
+ {
+ msg_context_class := p_msgContexClass,
+ msgs := p_msgs,
+ urgent_msgs := p_urgent_msgs
+ }
+
+ template Msg_summary_line mw_msgSummaryLine(template charstring p_msgContexClass) :=
+ {
+ msg_context_class := p_msgContexClass,
+ msgs := ?,
+ urgent_msgs :=*
+ }
+
+} //end group Templates_SMS
+
+group MessageBodies {
+
+ template MessageBody m_MBody_SDP(template SDP_Message p_SDP):=
+ {
+ sdpMessageBody := p_SDP
+ };
+
+ template MessageBody m_MBody_XML(template XmlBody p_xmlBody):=
+ {
+ xmlBody := p_xmlBody
+ };
+
+ template MessageBody m_mBody_SMS(template SimpleMsgSummary p_SMS):=
+ {
+ simpleMsgSummary := p_SMS
+ };
+
+ template MessageBody m_MBody_longPlainText:=
+ {
+ textplain := c_longMessageContent_1300Bytes
+ };
+
+ template MessageBody m_mBody_plainText(charstring p_plaitext):=
+ {
+ textplain := p_plaitext
+ };
+
+ template MessageBody m_MBody_sipfrag(charstring p_sipfrag) := {
+ sipfrag := p_sipfrag
+ }
+
+ template MessageBody m_MBody_MIMESdpXml(template SDP_Message p_sdp, template XmlBody p_xmlBody):=
+ {
+ mimeMessageBody := {boundary:="--boundary1", //"PX_SIP_MIME_Boundary",
+ mimeEncapsulatedList:= {
+ {content_type:="application/sdp",//"PX_SIP_SDP_ContentType",
+ content_disposition:=omit,
+ mime_encapsulated_part:={sdpMessageBody := p_sdp}},
+ {content_type:="application/vnd.3gpp.cw+xml",//"PX_SIP_ISUP_ContentType",
+ content_disposition:=omit,
+ mime_encapsulated_part:={xmlBody := p_xmlBody}}
+ }
+ }
+ }
+
+ template MessageBody mw_MBody_SDP(template SDP_Message p_SDP):=
+ {
+ sdpMessageBody := p_SDP
+ };
+
+ template MessageBody mw_MBody_XML(template XmlBody p_xmlBody):=
+ {
+ xmlBody := p_xmlBody
+ };
+
+ template MessageBody mw_mBody_SMS(template SimpleMsgSummary p_SMS):=
+ {
+ simpleMsgSummary := p_SMS
+ };
+
+ template MessageBody mw_MBody_MIMESdpXml(template SDP_Message p_sdp, template 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 MessageBody mw_MBody_MIME_Ims3gpp(
+ template charstring p_disposition,
+ template Ims_3gpp p_ims3gpp
+ ):= {
+ mimeMessageBody := {boundary:=?,
+ mimeEncapsulatedList:= {
+ *,
+ {
+ content_type:= c_ims3gppAplication,
+ content_disposition:= p_disposition,
+ mime_encapsulated_part :={
+ xmlBody := {
+ ims3gpp := p_ims3gpp
+ }
+ }
+ },
+ *
+ }
+ }
+ }
+
+ template MessageBody mw_MBody_MIME_Ims3gppCW(
+ template charstring p_disposition,
+ template 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(MessageBody p_mb_par) return integer {
+
+ var integer v_result:=0;
+ if (MB_LENGTH_FROM_ENCVAL){ //by default it is set to true
+
+ v_result:= lengthof(encvalue(p_mb_par))/8; // length in bypes, 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(p_mb_par.sdpMessageBody);
+ };
+
+ // assume XML_Body ONLY in the message body
+ if (ischosen(p_mb_par.xmlBody))
+ {
+ v_result := f_XMLBody_Length(p_mb_par.xmlBody, USE_FX_FOR_XML_LENGTH );
+ };
+
+ // assume simpleMsgSummary_Body ONLY in the message body
+ if (ischosen(p_mb_par.simpleMsgSummary))
+ {
+ v_result := f_simpleMsgSummaryBody_Length(p_mb_par.simpleMsgSummary );
+ };
+
+ // assume MIME_Message in the message body
+ if (ischosen(p_mb_par.mimeMessageBody))
+ {
+ v_result := f_MIMElength(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 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 (ispresent(p_mb.information))
+ {v_auxstring:=p_mb.information; v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring);}; //* "i= "
+ if (ispresent(p_mb.uri))
+ {v_auxstring:=p_mb.uri; v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring);}; //* "u="
+
+ if (ispresent(p_mb.emails)) {
+ for (var integer i:=0; i<sizeof(p_mb.emails); i:=i+1)
+ {v_result := v_result + 2 + c_CRlen + lengthof(p_mb.emails[i].addr_or_phone); //* "e="
+ if (ispresent(p_mb.emails[i].disp_name))
+ {v_auxstring:=p_mb.emails[i].disp_name; v_result := v_result + 1 + lengthof(v_auxstring);};
+ };
+ };
+
+ if (ispresent(p_mb.phone_numbers)) {
+ for (var integer i:=0; i<sizeof(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 (ispresent(p_mb.phone_numbers[i].disp_name))
+ {v_auxstring:=p_mb.phone_numbers[i].disp_name; v_result := v_result + 1 + lengthof(v_auxstring);};
+ };
+ };
+
+ if (ispresent(p_mb.connection))
+ {
+ var integer v_len_con0 := f_SDPlength_connection(p_mb.connection);
+ v_result := v_result + v_len_con0;
+ }; //* "c="
+
+ if (ispresent(p_mb.bandwidth))
+ {
+ for (var integer i:=0; i<sizeof(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 (var integer i:=0; i<sizeof(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 (ispresent(p_mb.times[i].time_repeat))
+ {
+ for (var integer j:=0; j<sizeof(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 (ispresent(p_mb.times[i].time_repeat[j].repeat_interval.unit))
+ {
+ v_auxstring:=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 (ispresent(p_mb.times[i].time_repeat[j].active.unit))
+ {
+ v_auxstring:=p_mb.times[i].time_repeat[j].active.unit;
+ v_result := v_result + 1 + lengthof(v_auxstring);
+ };
+
+ for (var integer k:=0; k<sizeof(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 (ispresent(p_mb.times[i].time_repeat[j].offsets[k].unit))
+ {
+ v_auxstring:=p_mb.times[i].time_repeat[j].offsets[k].unit;
+ v_result := v_result + 1 + lengthof(v_auxstring);
+ };
+ }
+ }
+ };
+ };
+
+ if (ispresent(p_mb.timezone_adjustments))
+ {log("timezone adjustments have not been considered in SDP length calculation yet");
+ }; //* "z="
+
+ if (ispresent(p_mb.key)) {
+ v_result := v_result + 2 + c_CRlen + lengthof(p_mb.key.method); //* "k= "
+ if (ispresent(p_mb.key.key))
+ {v_auxstring:=p_mb.key.key; v_result := v_result + 1 + lengthof(v_auxstring);};
+ };
+ if (ispresent(p_mb.attributes)) {
+ for (var integer i:=0; i<sizeof(p_mb.attributes); i:=i+1){ //* "a= "
+ var integer v_len_con1 := f_SDPlength_attribute(p_mb.attributes[i]);
+ v_result := v_result + v_len_con1;
+ };
+ }; //* "a="
+
+ if (ispresent(p_mb.media_list))
+ {
+ for (var integer i:=0; i<sizeof(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 (ispresent(p_mb.media_list[i].media_field.ports.num_of_ports))
+ {v_result := v_result + 1 + lengthof(int2str(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 (var integer j:=0; j<sizeof(p_mb.media_list[i].media_field.fmts); j:=j+1){
+ v_result := v_result + 1 + lengthof(valueof(p_mb.media_list[i].media_field.fmts[j]));
+ }
+
+ if (ispresent(p_mb.media_list[i].information)) {
+ v_auxstring:=p_mb.media_list[i].information;
+ v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "i= "
+ };
+ if (ispresent(p_mb.media_list[i].connections)) {
+ for (var integer j:=0; j<sizeof(p_mb.media_list[i].connections); j:=j+1){
+ var integer v_len_con2 := f_SDPlength_connection(p_mb.media_list[i].connections[j]);
+ v_result := v_result + v_len_con2;
+ }; //* end for
+ };
+ if (ispresent(p_mb.media_list[i].bandwidth)) { //* "b= "
+ for (var integer j:=0; j<sizeof(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 (ispresent(p_mb.media_list[i].key)) { //* "k= "
+ v_result := v_result + 1 + lengthof(p_mb.media_list[i].key.method);
+ if (ispresent(p_mb.media_list[i].key.key)) {
+ v_auxstring := p_mb.media_list[i].key.key;
+ v_result := v_result + 1 + lengthof(v_auxstring);
+ };
+ };
+ if (ispresent(p_mb.media_list[i].attributes)) {
+ for (var integer j:=0; j<sizeof(p_mb.media_list[i].attributes); j:=j+1){ //* "a= "
+ var integer 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;
+ var charstring v_auxstring;
+ v_result := v_result + 2 + c_CRlen + lengthof(p_element.net_type & " " &
+ p_element.addr_type & " " &
+ p_element.conn_addr.addr);
+ if (ispresent(p_element.conn_addr.ttl) and p_element.conn_addr.ttl>0)
+ {v_result := v_result + 1 + lengthof(int2str(p_element.conn_addr.ttl));};
+ if (ispresent(p_element.conn_addr.num_of_addr) and p_element.conn_addr.num_of_addr>0)
+ {v_result := v_result + 1 + lengthof(int2str(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;
+ var charstring v_auxstring;
+ 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.attr_value)};
+ 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.des.statusType & " " & p_element.des.direction)};
+ if (ischosen(p_element.rtpmap)) {v_result := v_result + 2 + c_CRlen + lengthof("rtpmap:" & p_element.rtpmap.attr_value)};
+ if (ischosen(p_element.rtcp)) {v_result := v_result + 2 + c_CRlen + lengthof("rtcp:" & p_element.rtcp.attr_value)};
+ if (ischosen(p_element.unknown))
+ {v_result := v_result + 2 + c_CRlen + lengthof(p_element.unknown.name);
+ if (ispresent(p_element.unknown.attr_value))
+ {var charstring aux := 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
+
+ } //* 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(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(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(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(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(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(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(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(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(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 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 (ispresent(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 (ispresent(p_mb.msg_summary_line_list)) {
+ for (var integer i:=0; i<sizeof(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 (ispresent(p_mb.msg_summary_line_list[i].urgent_msgs))
+ {v_auxstring:=p_mb.msg_summary_line_list[i].urgent_msgs; v_result := v_result + 1 + lengthof(v_auxstring);};
+ };
+ };
+ if (ispresent(p_mb.opt_msg_headers)) {
+ for (var integer i:=0; i<sizeof(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 v_result:=2; //0d0a
+
+ v_result := v_result + lengthof(p_mb.boundary) + 2/*0d0a*/;
+
+ for (var integer i:=0; i<sizeof(p_mb.mimeEncapsulatedList); i:=i+1){
+
+ v_result := v_result + lengthof("Content-Type: ")+ lengthof(p_mb.mimeEncapsulatedList[i].content_type) + 2/*0d0a*/ ;
+
+ if (ispresent(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, 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(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 RecordRoute
+ {
+ template RecordRoute v_recordRoute := omit;
+ if (vc_boo_recordRoute)
+ {return vc_recordRoute}
+ else {return(v_recordRoute)} //* TODO: RecordRoute is not OPTIONAL!!! Check IT!
+ }
+
+ /**
+ *
+ * @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 Route
+ {
+ template Route v_route := omit;
+ if (vc_boo_route)
+ {return vc_route} //* TODO: Route header need to be in reverse order than RecordRoute, question of return value - RecordRoute
+ else {return(v_route)} //* TODO: Route is not OPTIONAL!!! Check IT!
+ }
+
+ } //* 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(CommaParam_List p_list1, CommaParam_List p_list2) return template CommaParam_List
+ { var template CommaParam_List p_result;
+ var integer limit1 := sizeof(p_list1);
+ for (var integer i:=0; i<limit1; i:=i+1) {
+ p_result[i] := p_list1[i]
+ };
+ for (var integer i:=0; i<sizeof(p_list2); i:=i+1) {
+ p_result[i+limit1] := p_list2[i]
+ };
+ return p_result
+ }
+
+} //* end group others
+
+} //* group TemplatePreparationFunctions
+
+} //* end module LibSip_Templates
/v1.8.0/ttcn/LibSip_Templates.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_SIPTypesAndValues.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_SIPTypesAndValues.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_SIPTypesAndValues.ttcn (revision 541)
@@ -0,0 +1,1870 @@
+/**
+ * @author STF 346, STF366, STF368, STF369
+ * @version $Id$
+ * @desc This module defines message, header, structured and simple SIP
+ * 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
+ * @remark Adding of new message and header types is ok;
+ * Adding of new optional header fields in @see MessageHeader type
+ * is ok but should be done at same time as dummy template updates;
+ * Existing message or header types shall not be changed or removed -
+ * change requests shall be made to http://t-ort.etsi.org
+ */
+
+module LibSip_SIPTypesAndValues
+{
+ import from LibSip_SDPTypes all;
+ import from LibSip_XMLTypes all;
+ import from LibSip_SimpleMsgSummaryTypes all;
+
+group Constants
+{
+group SimpleConstants
+ {
+ // SIP name protocol plus version
+ const charstring c_sipNameVersion := "SIP/2.0";
+
+ // SIP name protocol
+ const charstring c_sipName := "SIP";
+
+ // SIP version
+ const charstring c_sipVersion := "2.0";
+
+ // SIP scheme
+ const charstring c_sipScheme := "sip";
+
+ // TEL scheme
+ const charstring c_telScheme := "tel";
+
+ // TAG_ID
+ const charstring c_tagId := "tag";
+
+ // BRANCH_ID
+ const charstring c_branchId := "branch";
+
+ // BRANCH_COOKIE
+ const charstring c_branchCookie := "z9hG4bK";
+
+ // EXPIRES_ID
+ const charstring c_expiresId := "expires";
+
+ // MADDR_ID
+ const charstring c_maddrId := "maddr";
+
+ // METHOD_ID
+ const charstring c_methodId := "method";
+
+ // RECEIVED_ID
+ const charstring c_receivedId := "received";
+
+ // TTL_ID
+ const charstring c_ttlId := "ttl";
+
+ // USER_ID
+ const charstring c_userId := "user";
+
+ // SDP name application
+ const charstring c_sdpAplication := "application/sdp";
+
+ // XML name application
+ const charstring c_xmlAplication := "application/xml";
+
+ // XML name application
+ const charstring c_xmlreginfoAplication := "application/reginfo+xml";
+
+ // MIME name application
+ const charstring c_mimeMultipart := "multipart/mixed";
+
+ // IMS 3GPP name application
+ const charstring c_ims3gppAplication := "application/3gpp-ims+xml";
+
+ // IMS 3GPP name CW application
+ const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml";
+
+ // IMS ETSI name MCID application
+ const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml";
+
+ // IMS ETSI name CUG application
+ const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml";
+
+ // IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG)
+ const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml";
+
+ // OCTET-STREAM name application
+ const charstring c_octetAplication := "application/octet-stream";
+
+ // PLAIN-TEXT name application
+ const charstring c_plainText := "text/plain";
+
+ //text content of 1300 bytes for messages with message body
+ const charstring c_longMessageContent_1300Bytes :=//"Hello!";
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
+ oct2char('0D'O) & oct2char('0A'O); // CRLF
+
+
+ // Default SIP port number : 5060
+ const integer c_defaultSipPort := 5060;
+
+ // Default SIP protocol : UDP
+ const charstring c_defaultSipProt := "UDP";
+
+ // Fixed IP multicast address
+ const charstring c_mcastSipIpaddr := "224.0.1.75";
+
+ // Short delta-second used in expires parameter to acknowledge a registration
+ const charstring c_shortRegistration := "3600";
+
+ // ([RFC3891]Sec 6.1)
+ const charstring c_earlyFlag := "early-only";
+
+ // option tag replaces ([RFC3261])
+ const charstring c_replaces := "replaces";
+
+ // option tag 100rel (reliable provisional response [RFC3262])
+ const charstring c_tag100rel := "100rel";
+
+ // option tag from-change ([RFC4916])
+ const charstring c_tagFromChange := "from-change";
+
+ // option tag precondition (ch.11 [RFC3312])
+ const charstring c_tagPrecond := "precondition";
+
+ // due to problem with TAU compiler because hardcoded return statement constant is created
+ const HostPort c_hostport_dummy := {host:="", portField:=c_defaultSipPort};
+
+ // CLIP/CLIR information
+ const PrivacyValue c_privacy_none := "none";
+ const PrivacyValue c_privacy_id := "id";
+ const PrivacyValue c_privacy_header := "header";
+ const PrivacyValue c_privacy_user := "user";
+ const PrivacyValue c_privacy_critical := "critical";
+ const PrivacyValue c_privacy_session := "session";
+
+ // @ (at) sign
+ const charstring c_AT := "@";
+ //MRO
+ const charstring c_SP := oct2char('20'O);
+ const charstring c_SLASH := oct2char('2F'O);
+ const charstring c_LT := oct2char('3C'O);
+ const charstring c_GT := oct2char('3E'O);
+
+ // * (wildchard) sign
+ const charstring c_WILDCARD := "*";
+
+ const integer c_CRlen := 2; // length of new line (0d0a)
+
+ const GenericParam c_Integrity_protected_yes := {"integrity-protected","yes"}
+ const GenericParam c_Integrity_protected_no := {"integrity-protected","no"}
+ const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected","ip-assoc-pending"}
+
+
+} //end group SimpleConstants
+
+group AuthorizationConstants {
+
+ const charstring c_ik := "";
+ const charstring c_ck := "";
+ const charstring c_algorithm := "MD5";
+ const charstring c_nonce := "";
+ const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b";
+
+} //end group AuthorizationConstants
+
+group PChargingVectorConstants {
+
+ const charstring c_icid := "icid-value";
+ const charstring c_icid_value := "123abc";
+ const charstring c_icid_generated_at := "icid-generated-at";
+ const charstring c_orig_ioi := "orig-ioi";
+ const charstring c_term_ioi := "term-ioi";
+
+} //end group PChargingVectorConstants
+
+group HeaderFieldConstants {
+
+ const CallId c_empty_CallId :=
+ {
+ fieldName := CALL_ID_E,
+ callid := ""
+ };
+
+ const ContentType c_empty_ContentType :=
+ {
+ fieldName := CONTENT_TYPE_E,
+ mediaType := ""
+ };
+
+ const CSeq c_empty_cSeq := {
+ fieldName := CSEQ_E,
+ seqNumber:=0,
+ method:="EMPTY" };
+
+ const From c_empty_From := {
+ fieldName := FROM_E,
+ addressField := {nameAddr :=
+ {displayName := omit,
+ addrSpec := {
+ scheme := c_sipScheme,
+ userInfo := omit ,
+ hostPort := {host:="127.0.0.1", portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ }
+ }
+ },
+ fromParams := omit
+ };
+
+ const MaxForwards c_maxForwards70 := {fieldName:=MAX_FORWARDS_E, forwards:=70}
+
+ const SipUrl c_empty_RequestUri :=
+ {
+ scheme := c_sipScheme,
+ userInfo := omit ,
+ hostPort := {host:="127.0.0.1", portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ };
+
+ const SipUrl c_unavailableUri :=
+ {
+ scheme := c_sipScheme,
+ userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
+ hostPort := {host:="anonymous.invalid", portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ };
+
+ const To c_empty_To :=
+ { // value of To header
+ fieldName := TO_E,
+ addressField :=
+ {
+ nameAddr :=
+ {
+ displayName := omit,
+ addrSpec :=
+ {
+ scheme := c_sipScheme,
+ userInfo := omit ,
+ hostPort := {host:="127.0.0.1", portField:=c_defaultSipPort},
+ urlParameters := omit,
+ headers := omit
+ }
+ }
+ },
+ toParams := omit
+ };
+
+ const Via c_empty_Via := {
+ fieldName := VIA_E,
+ viaBody :={
+ {sentProtocol := {
+ protocolName := c_sipName,
+ protocolVersion := c_sipVersion,
+ transport := c_defaultSipProt
+ },
+ sentBy := {host:="127.0.0.1", portField:=c_defaultSipPort},
+ viaParams:= omit
+ }
+ }};
+
+
+}
+
+
+group UserProfileConstants
+{
+ // number of user profile from 1-10 for SIP profile
+ const integer c_userProfile_SIP1_home := 1;
+ const integer c_userProfile_SIP2_home := 2;
+
+} //end group UserProfileConstants
+
+group StatusLines
+ {
+ const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"};
+ const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"};
+ const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"};
+ const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"};
+ const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"};
+
+ const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"};
+ const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"};
+
+ const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"};
+ const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"};
+ const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"};
+ const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"};
+ const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"};
+
+ const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"};
+ const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"};
+ const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"};
+ const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"};
+ const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"};
+ const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"};
+ const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"};
+ const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy authentication required"};
+ const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"};
+ const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"};
+ const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity too long"};
+ const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-uri too long"};
+ const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media type"};
+ const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI scheme"};
+ const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"};
+ const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension required"};
+ const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"};
+ const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"};
+ const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"};
+ const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"};
+ const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction doesnot exist"};
+ const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"};
+ const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too many hops"};
+ const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"};
+ const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"};
+ const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"};
+ const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"};
+ const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not acceptable here"};
+ const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"};
+ const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal error"};
+ const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"};
+ const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"};
+ const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"};
+ const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server timeout"};
+ const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version not supported"};
+ const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message too long"};
+ const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition failure"};
+ const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"};
+ const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"};
+ const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does not exist anywhere"};
+ const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not acceptable"};
+
+} //end StatusLines
+
+group SIPSyncPointNames {
+ const charstring c_Ringing := "Ringing";
+ const charstring c_uPlane := "uPlane";
+ const charstring c_sync1 := "sync1";
+ const charstring c_sync2 := "sync2";
+ const charstring c_sync3 := "sync3";
+ const charstring c_sync4 := "sync4";
+ const charstring c_uPlaneStop := "uPlaneStop";
+ const charstring c_annoucA := "announcementA";
+ const charstring c_annoucB := "announcementB";
+ const charstring c_annouc := "announcement";
+ const charstring c_voicem := "voiceMessage";
+ }
+
+} //end group Constants
+
+group Types {
+group SubTypes{// Subtypes
+
+ group TokenTypes // TokensTypes
+ {
+ // [20]
+ type enumerated FieldName
+ {
+ ACCEPT_E,
+ ACCEPT_ENCODING_E,
+ ACCEPT_LANGUAGE_E,
+ ALERT_INFO_E,
+ ALLOW_E,
+ AUTHENTICATION_INFO_E,
+ AUTHORIZATION_E,
+ CALL_ID_E,
+ CALL_INFO_E,
+ CONTACT_E,
+ CONTENT_DISPOSITION_E,
+ CONTENT_ENCODING_E,
+ CONTENT_LANGUAGE_E,
+ CONTENT_LENGTH_E,
+ CONTENT_TYPE_E,
+ CSEQ_E,
+ DATE_E,
+ ERROR_INFO_E,
+ EXPIRES_E,
+ FROM_E,
+ IN_REPLY_TO_E,
+ MAX_FORWARDS_E,
+ MIME_VERSION_E,
+ MIN_EXPIRES_E,
+ ORGANIZATION_E,
+ PRIORITY_E,
+ PROXY_AUTHENTICATE_E,
+ PROXY_AUTHORIZATION_E,
+ PROXY_REQUIRE_E,
+ RECORD_ROUTE_E,
+ REPLY_TO_E,
+ REQUIRE_E,
+ RETRY_AFTER_E,
+ ROUTE_E,
+ SERVER_E,
+ SUBJECT_E,
+ SUPPORTED_E,
+ TIMESTAMP_E,
+ TO_E,
+ UNSUPPORTED_E,
+ USER_AGENT_E,
+ VIA_E,
+ WARNING_E,
+ WWW_AUTHENTICATE_E,
+
+ // [3262/7.1]
+ RACK_E,
+ RSEQ_E,
+
+ // [3265/7.2]
+ ALLOW_EVENTS_E,
+ EVENT_E,
+ SUBSCRIPTION_STATE_E,
+
+ // [3313]
+ P_MEDIA_AUTHORIZATION_E,
+
+ // [3323]
+ PRIVACY_E,
+
+ // [3325]
+ P_ASSERTED_ID_E,
+ P_PREFERRED_ID_E,
+ P_PREFERRED_SERVICE_E,
+
+ // [3326]
+ REASON_E,
+
+ // [3515] - REFER method
+ REFER_TO_E,
+
+ // [4488] - REFER method
+ REFER_SUB_E,
+
+ // [3891]
+ REPLACES_E,
+
+ // [3892] - REFER method
+ REFERRED_BY_E,
+
+ // [4244]
+ HISTORY_INFO_E,
+
+ // [3313]
+ P_MEDIA_AUTH_E,
+
+ // [3327]
+ PATH_E,
+
+ // [3329]
+ SECURITY_CLIENT_E,
+ SECURITY_SERVER_E,
+ SECURITY_VERIFY_E,
+
+ // [3455]
+ P_ACCESS_NETWORK_INFO_E,
+ P_ASSOCIATED_URI_E,
+ P_CALLED_PARTY_E,
+ P_CHARGING_FUNCTION_ADDRESSES_E,
+ P_CHARGING_VECTOR_E,
+ P_VISITED_NETWORK_E,
+
+ // [3608]
+ SERVICE_ROUTE_E,
+
+ // [3841]
+ ACCEPT_CONTACT_E,
+ REQUEST_DISPOSITION_E,
+
+ // [4028]
+ MIN_SE_E,
+ SESSION_EXPIRES_E,
+
+ P_ASSERTED_SERVICE_E,
+
+ //[5009]
+ P_EARLY_MEDIA_E,
+
+ //http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07
+ //Transporting User to User Call Control Information in SIP for ISDN Interworking
+ USER_TO_USER_E,
+
+ GEOLOCATION_E // draft-ietf-sipcore-location-conveyance-04
+ }
+
+ // [7.1]
+ type enumerated Method {
+ ACK_E,
+ BYE_E,
+ CANCEL_E,
+ INVITE_E,
+ OPTIONS_E,
+ REGISTER_E,
+ PRACK_E, // Note: this element is not defined in [5]
+ SUBSCRIBE_E, NOTIFY_E, // [3265]
+ PUBLISH_E, // [3903/12]
+ REFER_E, // [3515]
+ UPDATE_E, // [3311]
+ MESSAGE_E, // [3428]
+ INFO_E, // [2976]
+ UNKNOWN_METHOD_E
+ }
+
+ // [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 record GenericParam
+ {
+ charstring id,
+ charstring paramValue optional
+ }
+
+ // [?]
+ type set of GenericParam SemicolonParam_List;
+
+ // [?]
+ type set of GenericParam AmpersandParam_List;
+
+ // [?]
+ type set of GenericParam CommaParam_List;
+
+ // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43]
+ type record HostPort
+ {
+ charstring host optional, // hostname, IPv4 or IPv6
+ integer portField optional // represented as an integer
+ }
+
+ // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
+/**
+ *
+ * @desc identifier for user or telephone subscriber
+ * @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber
+ * @member password related password information
+ *
+ */
+ type record UserInfo
+ {
+ charstring userOrTelephoneSubscriber,
+ charstring password optional
+ }
+
+ // [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
+
+
+/**
+ *
+ * @desc Uniform Resource Identifier (URI)
+ * @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip
+ * @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords
+ * @member hostPort Hostname or IP address information and port identifier of the target
+ * @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone
+ * @member headers Additional information added after the parameters, e.g. priority=urgent
+ */
+ type record SipUrl
+ {
+ charstring scheme, // e.g "sip" or "tel"
+ UserInfo userInfo optional,
+ HostPort hostPort optional,
+ SemicolonParam_List urlParameters optional,
+ AmpersandParam_List headers optional
+ }
+
+ // [20.1, RFC2616 14.1]
+ type record AcceptBody
+ {
+ charstring mediaRange,
+ SemicolonParam_List acceptParam optional
+ }
+
+ // [20.1, RFC2616 14.1]
+ type set of AcceptBody AcceptBody_List;
+
+ // [20.4]
+ type record AlertInfoBody
+ {
+ charstring url, // any URI
+ SemicolonParam_List genericParams optional
+ }
+
+ // [20.4]
+ type set of AlertInfoBody AlertInfoBody_List;
+
+ // [20.8]
+ type charstring CallidString; // token ["@" token]
+
+ // [20.8]
+ type set of CallidString CallidString_List;
+
+ // [20.9]
+ type record CallInfoBody
+ {
+ charstring url, // any URI
+ SemicolonParam_List infoParams optional
+ }
+
+ // [20.9]
+ type set of CallInfoBody CallInfoBody_List;
+
+ // [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2]
+ type union Challenge
+ {
+ CommaParam_List digestCln,
+ OtherAuth otherChallenge
+ }
+
+ // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
+ type record NameAddr
+ {
+ charstring displayName optional,
+ SipUrl addrSpec
+ }
+
+ // [20.10, 20.20, 20.31, 20.39]
+ type union Addr_Union
+ {
+ NameAddr nameAddr,
+ SipUrl addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field
+ }
+
+ // [20.10]
+ type record ContactAddress
+ {
+ Addr_Union addressField,
+ SemicolonParam_List contactParams optional
+ }
+
+ // [20.10]
+ type set of ContactAddress ContactAddress_List; // 1 or more elements
+
+ // [20.10]
+ type union ContactBody
+ {
+ charstring wildcard,
+ ContactAddress_List contactAddresses
+ }
+
+ // [20.2, 20.12; RFC2616 14.3, 14.11]
+ type charstring ContentCoding;
+
+ // [20.2, 20.12; RFC2616 14.3, 14.11]
+ type set of ContentCoding ContentCoding_List;
+
+ // [20.7, 20.28; RFC2616 14.35 RFC2617 1.2]
+ type union Credentials
+ {
+ CommaParam_List digestResponse,
+ OtherAuth otherResponse
+ }
+
+ // allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28
+ type record of Credentials CredentialsList;
+
+ // [20.19, 20.23, 20.33]
+ type charstring DeltaSec; // an external operation can handle this field
+
+ // [20.18]
+ type record ErrorInfoBody
+ {
+ charstring uri, // any URI
+ SemicolonParam_List genericParams optional
+ }
+
+ // [20.18]
+ type set of ErrorInfoBody ErrorInfoBody_List;
+
+ // [20.3 RFC2616 14.4]
+ type record LanguageBody
+ {
+ charstring languageRange,
+ SemicolonParam_List acceptParam optional
+ }
+
+ // [20.3 RFC2616 14.4]
+ type set of LanguageBody LanguageBody_List;
+
+ // [20.13; RFC2616 14.12]
+ type charstring LanguageTag;
+
+ // [20.13; RFC2616 14.12]
+ type set of LanguageTag LanguageTag_List;
+
+ // [20.5]
+ type set of charstring Method_List;
+
+
+ // [20.29, 20.32, 20.37, 20.40]
+ type charstring OptionTag;
+
+ // [20.29, 20.32, 20.37, 20.40]
+ type set of OptionTag OptionTag_List;
+
+
+ // [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2]
+ type record OtherAuth
+ {
+ charstring authScheme,
+ CommaParam_List authParams
+ }
+
+ type record Payload
+ {
+ integer payloadlength,
+ charstring payloadvalue
+ }
+
+ // [20.30,20.34]
+ type record RouteBody
+ {
+ NameAddr nameAddr,
+ SemicolonParam_List rrParam optional
+ }
+
+ // [20.30,20.34]
+ type record of RouteBody RouteBody_List;
+
+ // [20.42]
+ type record SentProtocol
+ {
+ charstring protocolName,
+ charstring protocolVersion,
+ charstring transport
+ }
+
+ // [20.35, 20.41; RFC2616 14.43]
+ type charstring ServerVal;
+
+ // [20.35, 20.41; RFC2616 14.43]
+ type set of ServerVal ServerVal_List;
+
+ // [20.38]
+ type record TimeValue
+ {
+ integer majorDigit, // represented as an integer
+ integer minorDigit optional // represented as an integer
+ }
+
+ // [20.42]
+ type record ViaBody
+ {
+ SentProtocol sentProtocol,
+ HostPort sentBy,
+ SemicolonParam_List viaParams optional
+ }
+
+ // [20.42]
+ type record of ViaBody ViaBody_List;
+
+ // [20.43]
+ type union WarnAgent
+ {
+ HostPort hostPort,
+ charstring pseudonym
+ }
+
+ // [20.43]
+ type record WarningValue
+ {
+ integer warnCode, // represented as an integer
+ WarnAgent warnAgent,
+ charstring warnText
+ }
+
+ // [20.43]
+ type set of WarningValue WarningValue_List;
+
+ type Addr_Union PAssertedIDValue;
+
+ type record of PAssertedIDValue PAssertedIDValue_List;
+
+ type charstring PAssertedServiceValue;
+
+ type Addr_Union PPreferredIDValue;
+
+ type record of PPreferredIDValue PPreferredIDValue_List;
+
+ type charstring PrivacyValue;
+
+ type record of PrivacyValue PrivacyValue_List;
+
+
+ } // end group TokensType
+
+
+ group HeaderFieldTypes // Header Fields
+ {
+ group CommonHeaderFieldTypes
+ {
+ // [20.1, RFC2616 14.1]
+ type record Accept
+ {
+ FieldName fieldName (ACCEPT_E),
+ AcceptBody_List acceptArgs optional
+ }
+
+ // [20.2, RFC2616 14.3]
+ type record AcceptEncoding
+ {
+ FieldName fieldName (ACCEPT_ENCODING_E),
+ ContentCoding_List contentCoding optional
+ }
+
+ // [20.3, RFC2616 14.4]
+ type record AcceptLanguage
+ {
+ FieldName fieldName (ACCEPT_LANGUAGE_E),
+ LanguageBody_List languageBody optional
+ }
+
+ // [20.4]
+ type record AlertInfo
+ {
+ FieldName fieldName (ALERT_INFO_E),
+ AlertInfoBody_List alertInfoBody optional
+ }
+
+ // [20.5]
+ type record Allow
+ {
+ FieldName fieldName (ALLOW_E),
+ Method_List methods optional
+ }
+
+ // [20.6]
+ type record AuthenticationInfo
+ {
+ FieldName fieldName (AUTHENTICATION_INFO_E),
+ CommaParam_List ainfo
+ }
+
+ // [20.7 RFC2617 3.2.2]
+ type record Authorization
+ {
+ FieldName fieldName (AUTHORIZATION_E),
+ CredentialsList body // changed from Credentials to allow multiple Authorization headers
+ }
+
+ // [20.8]
+ type record CallId
+ {
+ FieldName fieldName (CALL_ID_E),
+ CallidString callid
+ }
+
+ // [20.9]
+ type record CallInfo
+ {
+ FieldName fieldName (CALL_INFO_E),
+ CallInfoBody_List callInfoBody optional
+ }
+
+ // [20.10]
+ type record Contact
+ {
+ FieldName fieldName (CONTACT_E),
+ ContactBody contactBody
+ }
+
+ // [20.11]
+ type record ContentDisposition
+ {
+ FieldName fieldName (CONTENT_DISPOSITION_E),
+ charstring dispositionType,
+ SemicolonParam_List dispositionParams optional
+ }
+
+ // [20.12 RFC2616 14.11]
+ type record ContentEncoding
+ {
+ FieldName fieldName (CONTENT_ENCODING_E),
+ ContentCoding_List contentCoding
+ }
+
+ // [20.13 RFC2616 14.12]
+ type record ContentLanguage
+ {
+ FieldName fieldName (CONTENT_LANGUAGE_E),
+ LanguageTag_List languageTag
+ }
+
+ // [20.14]
+ type record ContentLength
+ {
+ FieldName fieldName (CONTENT_LENGTH_E),
+ integer len // this field is represented as an integer
+ }
+
+ // [20.15]
+ type record ContentType
+ {
+ FieldName fieldName (CONTENT_TYPE_E),
+ charstring mediaType
+ }
+
+ // [20.16]
+ type record CSeq
+ {
+ FieldName fieldName (CSEQ_E),
+ integer seqNumber, // this field is represented as an integer
+ charstring method
+ }
+
+ // [20.17]
+ type record Date
+ {
+ FieldName fieldName (DATE_E),
+ charstring sipDate
+ }
+
+ // [20.18]
+ type record ErrorInfo
+ {
+ FieldName fieldName (ERROR_INFO_E),
+ ErrorInfoBody_List errorInfo optional
+ }
+
+ // [20.19]
+ type record Expires
+ {
+ FieldName fieldName (EXPIRES_E),
+ DeltaSec deltaSec
+ }
+
+ // [20.20]
+ type record From
+ {
+ FieldName fieldName (FROM_E),
+ Addr_Union addressField,
+ SemicolonParam_List fromParams optional
+ }
+
+ // [20.21]
+ type record InReplyTo
+ {
+ FieldName fieldName (IN_REPLY_TO_E),
+ CallidString_List callids
+ }
+
+ // [20.22]
+ type record MaxForwards
+ {
+ FieldName fieldName (MAX_FORWARDS_E),
+ integer forwards // this field is represented as an integer
+ }
+
+ // [20.23]
+ type record MinExpires
+ {
+ FieldName fieldName (MIN_EXPIRES_E),
+ DeltaSec deltaSec
+ }
+
+ // [20.24 RFC2616 19.4.1]
+ type record MimeVersion
+ {
+ FieldName fieldName (MIME_VERSION_E),
+ integer majorNumber, // this field is represented as an integer
+ integer minorNumber // this field is represented as an integer
+ }
+
+ // [20.25]
+ type record Organization
+ {
+ FieldName fieldName (ORGANIZATION_E),
+ charstring organization
+ }
+
+ // [20.26]
+ type record Priority
+ {
+ FieldName fieldName (PRIORITY_E),
+ charstring priorityValue
+ }
+
+ // [20.27 RFC2616 14.33 RFC2617 1.2]
+ type record ProxyAuthenticate
+ {
+ FieldName fieldName (PROXY_AUTHENTICATE_E),
+ Challenge challenge
+ }
+
+ // [20.28 RFC2616 14.35 RFC2617 1.2]
+ type record ProxyAuthorization
+ {
+ FieldName fieldName (PROXY_AUTHORIZATION_E),
+ CredentialsList credentials // changed from Credentials to allow multiple Authorization headers
+ }
+
+ // [20.29]
+ type record ProxyRequire
+ {
+ FieldName fieldName (PROXY_REQUIRE_E),
+ OptionTag_List optionsTags
+ }
+
+ // [20.30]
+ type record RecordRoute
+ {
+ FieldName fieldName (RECORD_ROUTE_E),
+ RouteBody_List routeBody
+ }
+
+ // [20.31]
+ type record ReplyTo
+ {
+ FieldName fieldName (REPLY_TO_E),
+ Addr_Union addressField,
+ SemicolonParam_List replyToParams optional
+ }
+
+ // [20.32]
+ type record Require
+ {
+ FieldName fieldName (REQUIRE_E),
+ OptionTag_List optionsTags
+ }
+
+ // [20.33]
+ type record RetryAfter
+ {
+ FieldName fieldName (RETRY_AFTER_E),
+ DeltaSec deltaSec,
+ charstring comment optional,
+ SemicolonParam_List retryParams optional
+ }
+
+ // [20.34]
+ type record Route
+ {
+ FieldName fieldName (ROUTE_E),
+ RouteBody_List routeBody
+ }
+
+ // [20.35 RFC2616 14.38]
+ type record Server
+ {
+ FieldName fieldName (SERVER_E),
+ ServerVal_List serverBody
+ }
+
+ // [20.36]
+ type record Subject
+ {
+ FieldName fieldName (SUBJECT_E),
+ charstring summary
+ }
+
+ // [20.37]
+ type record Supported
+ {
+ FieldName fieldName (SUPPORTED_E),
+ OptionTag_List optionsTags optional
+ }
+
+ // [20.38]
+ type record Timestamp
+ {
+ FieldName fieldName (TIMESTAMP_E),
+ TimeValue timeValue optional,
+ TimeValue delay optional
+ }
+
+ // [20.39]
+ type record To
+ {
+ FieldName fieldName (TO_E),
+ Addr_Union addressField,
+ SemicolonParam_List toParams optional
+ }
+
+ // [20.40]
+ type record Unsupported
+ {
+ FieldName fieldName (UNSUPPORTED_E),
+ OptionTag_List optionsTags
+ }
+
+ // Undefined header field
+ type record UndefinedHeader
+ {
+ charstring headerName,
+ charstring headerValue
+ }
+
+ type set of UndefinedHeader UndefinedHeader_List;
+
+ // [20.41 RFC2616 14.43]
+ type record UserAgent
+ {
+ FieldName fieldName (USER_AGENT_E),
+ ServerVal_List userAgentBody
+ }
+
+ // [20.42]
+ type record Via
+ {
+ FieldName fieldName (VIA_E),
+ ViaBody_List viaBody
+ }
+
+ // [20.43]
+ type record Warning
+ {
+ FieldName fieldName (WARNING_E),
+ WarningValue_List warningValue
+ }
+
+ // [20.44 RFC2616 14.47 RFC2617 1.2]
+ type record WwwAuthenticate
+ {
+ FieldName fieldName (WWW_AUTHENTICATE_E),
+ Challenge challenge
+ }
+ }//end group CommonHeaderFieldTypes
+ group RFC3262HeaderFieldTypes
+ {
+ // [3262/7.1]
+ type record RSeq {
+ FieldName fieldName(RSEQ_E),
+ integer responseNum
+ }
+
+ // [3262/7.2]
+ type record RAck {
+ FieldName fieldName(RACK_E),
+ integer responseNum,
+ integer seqNumber,
+ charstring method
+ }
+ }//end group RFC3262HeaderFieldTypes
+
+ group RFC3265HeaderFieldTypes
+ {
+ // [3265/7.2]
+ type record AllowEvents {
+ FieldName fieldName(ALLOW_EVENTS_E),
+ EventType_List eventTypes
+ }
+
+ type set of EventType EventType_List;
+ type charstring EventType;
+
+ // [3265/7.2]
+ type record Event {
+ FieldName fieldName(EVENT_E),
+ EventType eventType,
+ SemicolonParam_List eventParams optional
+ }
+
+ // [3265/7.2]
+ type record SubscriptionState {
+ FieldName fieldName(SUBSCRIPTION_STATE_E),
+ SubState subState,
+ SemicolonParam_List substateParams optional
+ }
+
+ type charstring SubState;
+ }//end group RFC3265HeaderFieldTypes
+
+ group RFC3313HeaderFieldTypes
+ {
+ // [3313/5]
+ type record PMediaAuthorization {
+ FieldName fieldName(P_MEDIA_AUTHORIZATION_E),
+ PMediaAuthorization_List pMediaAuthorizations
+ }
+
+ type charstring PMediaAuthValue; //HEXDIG "0"-"9", "A"-"F"
+
+ type record of PMediaAuthValue PMediaAuthorization_List;
+
+ }//end group RFC3265HeaderFieldTypes
+
+ group RFC3323HeaderFieldTypes
+ {
+ // [3323]
+ type record Privacy {
+ FieldName fieldName(PRIVACY_E),
+ PrivacyValue_List privValueList
+ }
+ }//end group RFC3323HeaderFieldTypes
+
+ group RFC3325HeaderFieldTypes
+ {
+ // [3325]
+ type record PAssertedID {
+ FieldName fieldName(P_ASSERTED_ID_E),
+ PAssertedIDValue_List pAssertedIDValueList
+ }
+
+ // [3325]
+ type record PPreferredID {
+ FieldName fieldName(P_PREFERRED_ID_E),
+ PPreferredIDValue_List pPreferredIDValueList
+ }
+ // draft-drage-sipping-service-identification-01 (July 2007)
+ type record PPreferredService {
+ FieldName fieldName (P_PREFERRED_SERVICE_E),
+ charstring serviceId
+ }
+
+ }//end group RFC3325HeaderFieldTypes
+
+ group RFC3326HeaderFieldTypes
+ {
+ //[3326]
+ type record of ReasonValue ReasonValues;
+
+ type record ReasonValue {
+ charstring token,
+ SemicolonParam_List reasonParams optional
+ }
+
+ type record Reason {
+ FieldName fieldName(REASON_E),
+ ReasonValues reasonValues
+ }
+ }//end group RFC3326HeaderFieldTypes
+
+ group RFC3327HeaderFieldTypes
+ {
+ // [3327]
+ type record Path {
+ FieldName fieldName(PATH_E),
+ PathValues pathValues
+ }
+
+ type record of PathValue PathValues;
+
+ type record PathValue {
+ NameAddr nameAddr,
+ SemicolonParam_List rrParam optional
+ }
+ }//end group RFC3515HeaderFieldTypes
+
+ group RFC3329HeaderFieldTypes
+ {
+ // [RFC3329/2.2]
+ type record SecurityMechanism {
+ charstring mechName,
+ SemicolonParam_List mechParams optional
+ }
+
+ type set of SecurityMechanism SecurityMechanism_List;
+
+ type record SecurityClient {
+ FieldName fieldName(SECURITY_CLIENT_E),
+ SecurityMechanism_List securityMech
+ }
+
+ type record SecurityServer {
+ FieldName fieldName(SECURITY_SERVER_E),
+ SecurityMechanism_List securityMech
+ }
+
+ type record SecurityVerify {
+ FieldName fieldName(SECURITY_VERIFY_E),
+ SecurityMechanism_List securityMech
+ }
+ }//end group RFC3329HeaderFieldTypes
+
+ group RFC3455HeaderFieldTypes
+ {
+ type record of NameAddrParam NameAddrParam_List;
+
+ type record NameAddrParam {
+ NameAddr nameAddr,
+ SemicolonParam_List genericParams optional
+ }
+ //[3455/5.1]
+ type record PAssociatedURI {
+ FieldName fieldName(P_ASSOCIATED_URI_E),
+ NameAddrParam_List nameAddrList
+ }
+ //[3455/5.2]
+ type record PCalledPartyID {
+ FieldName fieldName(P_CALLED_PARTY_E),
+ NameAddrParam nameAddParams
+ }
+
+ type record of VnetworkSpec VnetworkSpec_List;
+
+ type record VnetworkSpec {
+ charstring vNetworkSpecToken,
+ SemicolonParam_List genericParams optional
+ }
+
+ //[3455/5.3]
+ type record PVisitedNetworkID {
+ FieldName fieldName(P_VISITED_NETWORK_E),
+ VnetworkSpec_List vNetWorkSpec
+ }
+
+ //[3455/5.4]
+ type record PAccessNetworkInfo {
+ FieldName fieldName(P_ACCESS_NETWORK_INFO_E),
+ charstring accessType,
+ SemicolonParam_List genericParams optional
+ }
+
+ //[3455/5.5]
+ type record PChargingFunctionAddresses {
+ FieldName fieldName(P_CHARGING_FUNCTION_ADDRESSES_E),
+ SemicolonParam_List chargeAddrParams optional
+ }
+
+ //[3455/5.6]
+ type record PChargingVector {
+ FieldName fieldName(P_CHARGING_VECTOR_E),
+ SemicolonParam_List chargeParams optional
+ }
+ }//end group RFC33455HeaderFieldTypes
+
+ group RFC3515HeaderFieldTypes
+ {
+ // [3515]
+ type record ReferTo {
+ FieldName fieldName(REFER_TO_E),
+ NameAddr nameAddr,
+ SemicolonParam_List referToParams optional
+ }
+ }//end group RFC3515HeaderFieldTypes
+
+ group RFC4488HeaderFieldTypes {
+
+ // [4488]
+ type record ReferSub {
+ FieldName fieldName(REFER_SUB_E),
+ boolean referSubValue,
+ SemicolonParam_List referSubParams optional
+ }
+
+ }//end group RFC4488HeaderFieldTypes
+
+ group RFC3608HeaderFieldTypes
+ {
+ // [3608]
+ type record ServiceRoute {
+ FieldName fieldName(SERVICE_ROUTE_E),
+ RouteBody_List routeBody
+ }
+ }//end group RFC33608HeaderFieldTypes
+
+
+ group RFC3841HeaderFieldTypes
+ {
+ // [3841]
+ type record AcceptContact {
+ FieldName fieldName(ACCEPT_CONTACT_E),
+ AcRcValue_List acValues
+ }
+
+ type set of AcRcValue AcRcValue_List;
+
+ type record AcRcValue {
+ charstring wildcard(c_WILDCARD),
+ SemicolonParam_List acRcParams optional
+ }
+ // [RFC 3841]
+ type charstring Directive;
+ type set of Directive Directive_List;
+ type record RequestDisposition {
+ FieldName fieldName (REQUEST_DISPOSITION_E),
+ Directive_List directives
+ }
+
+ }// end group RFC3841HeaderFieldTypes
+
+ group RFC3891HeaderFieldTypes
+ {
+ // [3891]
+ type record Replaces
+ {
+ FieldName fieldName (REPLACES_E),
+ SemicolonParam_List replacesParams
+ }
+ }// end group RFC3891HeaderFieldTypes
+
+ group RFC3892HeaderFieldTypes
+ {
+ // [3892]
+ type record ReferredBy {
+ FieldName fieldName(REFERRED_BY_E),
+ NameAddr nameAddr,
+ SemicolonParam_List referredbyIdParams optional
+ }
+ }//end group RFC3892HeaderFieldTypes
+
+ group RFC4028HeaderFieldTypes
+ {
+ // [4028]
+ type record MinSE {
+ FieldName fieldName(MIN_SE_E),
+ DeltaSec deltaSec,
+ SemicolonParam_List minSeParam optional
+ }
+ // [4028]
+ type record SessionExpires {
+ FieldName fieldName(SESSION_EXPIRES_E),
+ DeltaSec deltaSec,
+ SemicolonParam_List seParam optional
+ }
+ }//end group RFC4028HeaderFieldTypes
+
+ group RFC4244HeaderFieldTypes
+ {
+ // [4244]
+ type record HistoryInfo {
+ FieldName fieldName(HISTORY_INFO_E),
+ HistoryInfo_List historyInfoList
+ }
+
+ type record of HistoryInfoEntry HistoryInfo_List;
+
+ type record of charstring StringList;
+
+ type record HistoryInfoEntry {
+ NameAddr nameAddr,
+ StringList hiIndex optional,
+ SemicolonParam_List hiExtention optional
+ }
+ }//end group RFC4244HeaderFieldTypes
+
+ group RFC5009PEarlyMediaHeader
+ {
+ // [5009]
+ type record PEarlyMedia {
+ FieldName fieldName(P_EARLY_MEDIA_E),
+ EM_List em_param
+ }
+ type record of charstring EM_List;
+ }//end group RFC5009PEarlyMediaHeader
+
+ //http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07, expires 16.Aug.2009
+ //Transporting User to User Call Control Information in SIP for ISDN Interworking
+ //type definition of SIP header mechanism
+ group UserToUser_PreliminaryRFCDraft
+ {
+ type record UserToUser{
+ FieldName fieldName (USER_TO_USER_E),
+ charstring uuiData length(256), /*length limitation due to ISDN, max of allowed 128 hex digits are represented by 256 characters*/
+ GenericParam uuiParam
+ }
+
+ }//end group UserToUser_PreliminaryRFCDraft
+
+ type record PAssertedService {
+ FieldName fieldName(P_ASSERTED_SERVICE_E),
+ PAssertedServiceValue pAssertedServiceValue
+ }
+ type record Geolocation { // draft-ietf-sipcore-location-conveyance-04 clause 4.1
+ FieldName fieldName(GEOLOCATION_E),
+ SipUrl addrSpec,
+ charstring routingAllowed,
+ SemicolonParam_List geolocParam optional
+ }
+
+
+ } // end group HeaderFieldTypes
+
+ group MessageHeaderTypes
+ {
+
+ // Message-Header for all SIP requests and responses [20]
+ type set MessageHeader
+ {
+ Accept accept optional,
+ AcceptContact acceptContact optional,
+ AcceptEncoding acceptEncoding optional,
+ AcceptLanguage acceptLanguage optional,
+ AlertInfo alertInfo optional,
+ Allow allow optional,
+ AllowEvents allowEvents optional, // 3265/7.2
+ AuthenticationInfo authenticationInfo optional, // only in responses
+ Authorization authorization optional, // only in requests
+ CallId callId optional, // optional only in Invalid test cases mandatory otherwise
+ CallInfo callInfo optional,
+ Contact contact optional, // optional in response and all requests except INVITE where mandatory
+ ContentDisposition contentDisposition optional,
+ ContentEncoding contentEncoding optional,
+ ContentLanguage contentLanguage optional,
+ ContentLength contentLength optional, // optional in responses and all requests except ACK where mandatory
+ ContentType contentType optional,
+ CSeq cSeq optional, // optional only in Invalid test cases mandatory otherwise
+ Date date optional,
+ ErrorInfo errorInfo optional, // only in responses
+ Event event optional, // 3265/7.2
+ Expires expires optional,
+ From fromField,
+ Geolocation geolocation optional, // http://tools.ietf.org/html/draft-ietf-sipcore-location-conveyance-04
+ HistoryInfo historyInfo optional, // 4244
+ InReplyTo inReplyTo optional, // only in requests
+ MaxForwards maxForwards optional, // mandatory in requests not required in responses!
+ MimeVersion mimeVersion optional,
+ MinExpires minExpires optional, // only in responses
+ MinSE minSE optional, // 4028
+ Organization organization optional,
+ PAccessNetworkInfo pAccessNetworkInfo optional, // 3455
+ PAssertedID pAssertedID optional, // 3325
+ PAssertedService pAssertedService optional,
+ PAssociatedURI pAssociatedURI optional, // 3455
+ Path path optional, // 3327
+ PCalledPartyID pCalledPartyID optional, // 3455
+ PChargingFunctionAddresses pChargingFunctionAddresses optional, // 3455
+ PChargingVector pChargingVector optional, // 3455
+ PEarlyMedia pEarlyMedia optional, // 5009
+ PMediaAuthorization pMediaAuthorization optional, // 3313
+ PPreferredID pPreferredID optional, // 3325
+ PPreferredService pPreferredService optional, // draft-drage-sipping-service-identification-01 (July 2007)
+ Priority priority optional, // only in requests
+ Privacy privacy optional, // 3323
+ ProxyAuthenticate proxyAuthenticate optional, // only in responses
+ ProxyAuthorization proxyAuthorization optional, // only in requests
+ ProxyRequire proxyRequire optional, // only in requests
+ PVisitedNetworkID pVisitedNetworkID optional, // 3455
+ RAck rAck optional, // 3262/7.1
+ RSeq rSeq optional, // 3262/7.1
+ Reason reason optional, // 3326
+ RecordRoute recordRoute optional,
+ RequestDisposition requestDisposition optional, // 3841
+ ReferredBy referredBy optional, // 3892 - REFER method
+ ReferTo referTo optional, // 3515 - REFER method
+ ReferSub referSub optional, // 4488 - REFER method
+ Replaces replaces optional, // 3891
+ ReplyTo replyTo optional, // optional in responses and INVITE requests
+ Require require optional,
+ RetryAfter retryAfter optional, // only in responses
+ Route route optional, // only in requests
+ SecurityClient securityClient optional, // 3329
+ SecurityServer securityServer optional, // 3329
+ SecurityVerify securityVerify optional, // 3329
+ Server server optional, // only in responses
+ ServiceRoute serviceRoute optional, // 3608
+ SessionExpires sessionExpires optional, // 4028
+ Subject subject optional, // only in requests
+ SubscriptionState subscriptionState optional, // 3265/7.2
+ Supported supported optional,
+ Timestamp timestamp optional,
+ To toField,
+ Unsupported unsupported optional, // only in responses
+ UserToUser userToUser optional,
+ UserAgent userAgent optional,
+ Via via,
+ Warning warning optional, // only in responses
+ WwwAuthenticate wwwAuthenticate optional, // only in responses
+ UndefinedHeader_List undefinedHeader_List optional
+ }
+
+ } // end group MessageHeaderTypes
+
+ group StartLineTypes
+ {
+ // Request-Line [7.1]
+ type record RequestLine
+ {
+ Method method,
+ SipUrl requestUri,
+ charstring sipVersion
+ }
+
+ // Status-Line [7.2]
+ type record StatusLine
+ {
+ charstring sipVersion,
+ integer statusCode,
+ charstring reasonPhrase
+ }
+
+ } // end group StartLineTypes
+
+
+ group otherTypes{
+
+ type record SipUserProfile
+ {
+ /** @desc integer for the userprofile identifier
+ */
+ integer id,
+
+ /** @desc integer for Port number to exchange SIP messages
+ */
+ integer currPort,
+
+ /** @desc charstring for IP address to exchange SIP messages
+ */
+ charstring currIpaddr,
+
+ /** @desc integer for Port number to exchange SIP messages
+ */
+ integer contactPort,
+
+ /** @desc charstring for IP address to exchange SIP messages
+ */
+ charstring contactIpaddr,
+
+ /** @desc charstring for IP address used by the TS to exchange media streams
+ */
+ charstring bearerIpaddr,
+
+ /** @desc charstring for identity of the tester local domain
+ */
+ charstring homeDomain,
+
+ /** @desc charstring for identity of the tester local user
+ */
+ charstring publUsername,
+
+ /** @desc charstring for RFC 2617 3.2.1 qop options:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ charstring qop,
+
+ /** @desc charstring for RFC 2617 3.2.2 username for authentication
+ * The name of user in the specified realm
+ */
+ charstring privUsername,
+
+ /** @desc charstring for RFC 2617 3.2.2.2 passwd: A known shared secret, the password of user of the specified username
+ */
+ charstring passwd,
+
+ /** @desc charstring for registrar domain for authentication and request line
+ */
+ charstring registrarDomain
+
+ }
+
+
+ } // end group otherTypes
+
+ }// end group Subtypes
+
+
+
+ group MSGtypes{
+
+ group RequestTypes
+ {
+ // [7.1]
+
+ /**
+ *
+ * @desc generic type of a SIP request message
+ * @member statusLine contains a method name, a Request-URI, and the protocol version
+ * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards
+ * @member messageBody depends on the request method, includes e.g. SDP message.
+ * @member payload contains the whole message as it has been received in its text format
+ */
+ type record Request
+ {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ // Note: the introduction of the following specific types is to enable better means for logging
+ // on the other side the generic type is useful for functions dealing with multiple SIP message types
+
+ type record REGISTER_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ type record INVITE_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ type record OPTIONS_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ type record BYE_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ type record CANCEL_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ type record ACK_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ // [3262/7.1]
+ type record PRACK_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ // [3265/7.1]
+ type record NOTIFY_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ // [3265/7.1]
+ type record SUBSCRIBE_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ // [3903/11.1]
+ type record PUBLISH_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ // [3311/7]
+ type record UPDATE_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ //
+ type record REFER_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+ //
+ type record MESSAGE_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec" }
+
+ //
+ type record INFO_Request {
+ RequestLine requestLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+
+
+ } //with { encode "SIPCodec" }// end group RequestTypes
+
+ group ResponseTypes
+ {
+ // [7.2]
+
+ /**
+ *
+ * @desc generic type of a SIP response message
+ * @member statusLine consists of the protocol version followed by a numeric Status-Code and its associated textual phrase
+ * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards
+ * @member messageBody depends on the response method, includes e.g. SDP message.
+ * @member payload contains the whole message as it has been received in its text format
+ */
+ type record Response
+ {
+ StatusLine statusLine,
+ MessageHeader msgHeader,
+ MessageBody messageBody optional,
+ Payload payload optional
+ } with { encode "SIPCodec"}
+ } //with { encode "SIPCodec" }// end group ResponseTypes
+
+ // This MSG type is defined for sending synctactic variations, ans syntactically
+ // erroneous messages, and receving messages failed parsing.
+ group SyntacticTypes
+ {
+ type charstring Raw;
+ } // end group SyntacticTypes
+
+ // This type is defined for particular SIP message body types like SDP
+
+ group MessageBodyTypes
+ {
+ 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
+ };
+
+ } // end group MessageBodyTypes
+
+ group MIMETypes
+ {
+ group SubMIMETypes
+ {
+
+ type union MIME_Encapsulated_Parts {
+ SDP_Message sdpMessageBody,
+ XmlBody xmlBody // if there is XML body
+// XMLMessage xmlMessage // if there is XML message (with header and body)
+ }
+
+ type record MIME_Encapsulated_Part {
+ charstring content_type,
+ charstring content_disposition optional,
+ MIME_Encapsulated_Parts mime_encapsulated_part
+ }
+ }//end group SubMIMETypes
+
+ group MessageTypes {
+
+ type record MIME_Message {
+ charstring boundary, // len:
+ MimeEncapsulatedList mimeEncapsulatedList
+ } with { encode "MimeBodyCodec" }
+
+ type record of MIME_Encapsulated_Part MimeEncapsulatedList;
+
+ } // group MessageTypes
+ } // group MIMETypes
+
+ }// end group MSGTypes
+}// end group Types
+
+} // end module LibSip_TypesAndValues
/v1.8.0/ttcn/LibSip_SIPTypesAndValues.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_SDPTypes.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_SDPTypes.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_SDPTypes.ttcn (revision 541)
@@ -0,0 +1,318 @@
+/**
+ * @author STF 346, STF366, STF368, STF369
+ * @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
+ * @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 //MRO
+{
+ 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_msrp := "msrp";
+
+ // SDP_media_desc: transport
+ const charstring c_rtpAvp := "RTP/AVP";
+ 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_none := "none";
+ const charstring c_qos := "qos";
+ const charstring c_remote := "remote";
+ const charstring c_sendrecv := "sendrecv";
+ 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 record SDP_attribute_fmtp {
+ charstring attr_value
+ }
+
+ 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 {
+ charstring attr_value
+ }
+
+ type record SDP_attribute_rtcp {
+ charstring attr_value
+ }
+
+ type record SDP_attribute_msrp {
+ charstring attr_value
+ }
+
+ type record SDP_attribute_unknown {
+ charstring name,
+ charstring attr_value 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,
+
+ //* 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
/v1.8.0/ttcn/LibSip_SDPTypes.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_Interface.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_Interface.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_Interface.ttcn (revision 541)
@@ -0,0 +1,185 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @version $Id$
+ * @desc This module provides the types used by the test component
+ * for SIP-IMS tests. Module become from STF306 and STF334-336
+ */
+
+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 "SIPCodec" }
+
+ 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 text, out boolean answer);
+ signature s_SIP_ringing (in charstring text, out boolean answer);
+ signature s_SIP_announcementA (in charstring text, out boolean answer);
+ signature s_SIP_announcementB (in charstring text, out boolean answer);
+ signature s_SIP_announcement (in charstring text, out boolean answer);
+ signature s_SIP_voiceMessage (in charstring text, out boolean answer);
+ signature s_SIP_mediastopped (in charstring text, out boolean 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
+ {
+ //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 address 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 CallId vc_callId := c_empty_CallId;
+ var CallId vc_callIdReg := 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 RecordRoute vc_recordRoute; // value of RecordRoute header
+ var boolean vc_boo_recordRoute := false; // boolean indicates valid recordRoute
+ var template Route vc_route; // value of Route header
+ var template Route vc_route_REG; // value of Route header from registration ServiceRoute header for initial Requests
+ var boolean vc_boo_route := false; // boolean indicates valid Route
+
+ var Contact vc_contact; // value of Contact header
+ var CSeq vc_cSeq := c_empty_cSeq; // value of CSeq header
+ var RAck vc_rAck := { fieldName := RACK_E, responseNum := 1, seqNumber := 1, method := "INVITE"}; // value of RAck header
+ var HostPort vc_reqHostPort := {host:=PX_SIP_SUT_IPADDR, portField:=PX_SIP_SUT_PORT}; // address to send request
+ var 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 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 := PX_SIP_T1;
+ timer tc_Tf := 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 := PX_SIP_TSYNC;
+ timer tc_guard := PX_SIP_TGUARD;//MRO
+ 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_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 v_white_space := false;//MRO
+
+ // ETS address
+ var address v_ets_label := { host := PX_SIP_TS1_IPADDR, portField := PX_SIP_TS1_PORT};
+
+ // parts needed for Client/SelfSyncComp type compatibility
+ var StringStack v_stateStack := c_initStringStack;
+ port SyncPort syncSendPort;
+ port SyncPort syncPort;
+ timer tc_sync := PX_TSYNC_TIME_LIMIT;
+
+// // used for communication with the operator
+// port operatorPort_SIP opPort;
+
+ } // end SipComponent
+
+} // end module LibSip_Interface
/v1.8.0/ttcn/LibSip_Interface.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_PIXITS.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_PIXITS.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_PIXITS.ttcn (revision 541)
@@ -0,0 +1,338 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @version $Id$
+ * @desc This module provides the types used by the test component
+ * for SIP-IMS tests. Module become from STF306 and STF334-336
+ * NOTE: PIXITS in folowing groups can be ignored if this information
+ * is provided in other modules of the ATS that uses this SIP library
+ * - Ports_and_addresses_of_the_SUT
+ * - PortsAndAddressesOfTheTS1
+ * - PortsAndAddressesOfTheTS2
+ * - PortsAndAddressesOfTheTS3
+ * - ParametersForHTTP_Authentication
+ */
+
+module LibSip_PIXITS //MRO
+{
+ //LibCommon
+ import from LibCommon_BasicTypesAndValues all;
+ import from LibCommon_DataStrings all;
+
+// _____________________________ PIXIT-S_______________________________
+ group SIP_PIXITparameters{
+ group SDPParameter {
+
+ /** @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/8000";
+
+ /** @desc charstring for SDP media attribute encoding unavailable by the IUT
+ */
+ modulepar charstring PX_SIP_SDP_encoding_unavail := "GSM/8000"; // f_Sip_TC2105_IS___xx__U18
+
+ /** @desc charstring for SDP media attribute encoding unsupported by the IUT
+ */
+ modulepar charstring PX_SIP_SDP_encoding_unsup := "GSM/8000"; // f_Sip_TC2105_IS___xx__U18
+
+ /** @desc charstring for SDP media T.38 transport (used in TC2101_IS___AU__09)
+ */
+ modulepar charstring PX_SIP_SDP_transport := "udptl";
+ } //group SDP Parameter
+
+ group ISUPinterworkingParameters{
+ /** @desc charstring for Used CPC language
+ */
+ modulepar charstring PX_SIP_ISUP_LANGUAGE := "English";
+ /** @desc charstring for Used CPC language
+ */
+ modulepar charstring PX_SIP_ISUP_CPC_VALUE := "prison";
+ } // goup PSTNParameters
+
+ group SupportedOptions{
+
+ /** @desc boolean for True if 100rel mechanism is supported in SIP
+ */
+ modulepar boolean PX_SIP_100rel := false;
+
+ /** @desc boolean for True if precondition mechanism is supported in SIP
+ */
+ modulepar boolean PX_SIP_precondition := false;
+
+ /** @desc boolean for True if UDP Transport is used by the IUT to run campaign
+ */
+ modulepar boolean PX_SIP_UDP := true;
+
+ /** @desc charstring for Used Transport in upper case "UDP"/"TCP"
+ */
+ modulepar charstring PX_SIP_TRANSPORT := "UDP";
+ }// group SupportedOptions{
+
+ // PIXITS in group Ports_and_addresses_of_the_SUT can be ignored if this information is provided in other modules of the ATS that uses this SIP library
+ group Ports_and_addresses_of_the_SUT{
+
+ /** @desc integer for SUT port number to exchange SIP messages
+ */
+ modulepar integer PX_SIP_SUT_PORT := 5060;
+
+ /** @desc charstring for SUT IP address to exchange SIP messages
+ */
+ modulepar charstring PX_SIP_SUT_IPADDR := "172.27.16.115";
+
+ /** @desc charstring for SUT domain
+ */
+ modulepar charstring PX_SIP_SUT_HOME_DOMAIN := "172.27.16.115";
+
+ /** @desc charstring for unknown SUT domain
+ */
+ modulepar charstring PX_SIP_SUT_HOME_DOMAIN_UNKNOWN := "172.88.88.88";
+
+ }
+
+ // PIXITS in group PortsAndAddressesOfTheTS1 can be ignored if this information is provided in other modules of the ATS that uses this SIP library
+ group PortsAndAddressesOfTheTS1 {
+// Ports and addresses of the TS1 (tester), first access
+ /** @desc integer for port number used by the TS1 to exchange SIP messages
+ */
+ modulepar integer PX_SIP_TS1_PORT := 5060;
+
+ /** @desc charstring for IP address used by the TS1 to exchange SIP messages
+ */
+ modulepar charstring PX_SIP_TS1_IPADDR := "172.27.1.218";
+
+ /** @desc charstring for identity of the tester local domain
+ */
+ modulepar charstring PX_SIP_TS1_LOCAL_DOMAIN := "172.27.1.218";
+
+ /** @desc charstring for identity of the tester local user
+ */
+ modulepar charstring PX_SIP_TS1_LOCAL_USER := "2910";
+
+ /** @desc charstring for identity of the user with active call diversion service
+ */
+ modulepar charstring PX_SIP_TS1_LOCAL_USER_DIV := "2907";
+
+ /** @desc charstring for identity of the tester local user (format "+"cc+ndc+sn)
+ */
+ modulepar charstring PX_SIP_TS1_LOCAL_USER_FULL := "+ 33492941111";
+
+ /** @desc integer for port number used by the TS to exchange media streams
+ */
+ modulepar integer PX_SIP_TS1_BEARER_PORT := 52000;
+
+ /** @desc charstring for port number used by the TS to exchange media streams
+ */
+ modulepar integer PX_SIP_TS1_BEARER_PORT2 := 62000;
+
+ /** @desc charstring for IP address used by the TS to exchange media streams
+ */
+ modulepar charstring PX_SIP_TS1_BEARER_IPADDR := "172.27.1.218";
+ }// group PortsAndAddressesOfTheTS
+
+ // PIXITS in group PortsAndAddressesOfTheTS2 can be ignored if this information is provided in other modules of the ATS that uses this SIP library
+ group PortsAndAddressesOfTheTS2 {
+// Ports and addresses of the TS2 (tester), second access
+
+ /** @desc integer for port number used by the TS2 to exchange SIP messages
+ */
+ modulepar integer PX_SIP_TS2_PORT := 5060;
+
+ /** @desc charstring for IP address used by the TS2 to exchange SIP messages
+ */
+ modulepar charstring PX_SIP_TS2_IPADDR := "172.27.1.219";
+
+ /** @desc charstring for identity of the tester local domain
+ */
+ modulepar charstring PX_SIP_TS2_LOCAL_DOMAIN := "172.27.1.219";
+
+ /** @desc charstring for identity of the tester local user
+ */
+ modulepar charstring PX_SIP_TS2_LOCAL_USER := "2911";
+
+ /** @desc charstring for identity of the user with active call diversion service
+ */
+ modulepar charstring PX_SIP_TS2_LOCAL_USER_DIV := "2011";
+
+ /** @desc charstring for identity of the tester local user (format "+"cc+ndc+sn)
+ */
+ modulepar charstring PX_SIP_TS2_LOCAL_USER_FULL := "+ 33 4 92941111";
+
+ /** @desc integer for port number used by the TS to exchange media streams
+ */
+ modulepar integer PX_SIP_TS2_BEARER_PORT := 53000;
+
+ /** @desc integer for port number used by the TS to exchange media streams
+ */
+ modulepar integer PX_SIP_TS2_BEARER_PORT2 := 63000;
+
+ /** @desc charstring for IP address used by the TS to exchange media streams
+ */
+ modulepar charstring PX_SIP_TS2_BEARER_IPADDR := "172.27.1.218";
+
+ }//group PortsAndAddressesOfTheTS2
+
+ // PIXITS in group PortsAndAddressesOfTheTS3 can be ignored if this information is provided in other modules of the ATS that uses this SIP library
+ group PortsAndAddressesOfTheTS3 {
+// Ports and addresses of the TS3 (tester), second access
+ /** @desc integer for Port number used by the TS3 to exchange SIP messages
+ */
+ modulepar integer PX_SIP_TS3_PORT := 5060;
+
+ /** @desc charstring for IP address used by the TS3 to exchange SIP messages
+ */
+ modulepar charstring PX_SIP_TS3_IPADDR := "172.27.1.220";
+
+ /** @desc charstring for identity of the tester local domain
+ */
+ modulepar charstring PX_SIP_TS3_LOCAL_DOMAIN := "172.27.1.220";
+
+ /** @desc charstring for identity of the tester local user
+ */
+ modulepar charstring PX_SIP_TS3_LOCAL_USER := "2012";
+
+ } //group PortsAndAddressesOfTheTS3
+
+ 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 integer for the minimun SIP user registration expires-value
+ */
+ modulepar integer PX_SIP_REGISTRATION_exp_min := 3600;
+
+ /** @desc charstring for REGISTRAR domain
+ */
+ modulepar charstring PX_SIP_SUT_REGISTRAR_DOMAIN := "172.27.16.115";
+ }// group Registration parameters
+
+ group ReleaseCause{
+ /** @desc integer for Release cause to be used in BYE and in Failure messages
+ */
+ modulepar integer PX_SIP_BYE_CAUSE := 16;
+ }//group ReleaseCause
+
+ group RTPStreamControlAndCheck{
+ /** @desc boolean for True, if conversation check is implemented.
+ */
+ modulepar boolean PX_SIP_CheckConversation := false;
+
+ /** @desc boolean for True, if DTMF check is implemented.
+ */
+ modulepar boolean PX_SIP_CheckDTMF := false;
+
+ /** @desc boolean for True, if Announcement sending is implemented.
+ */
+ modulepar boolean PX_SIP_SendAnnouncement := false;
+
+ /** @desc boolean for True, if ringing check is implemented.
+ */
+ modulepar boolean PX_SIP_CheckRinging := false;
+ }//group RTPStreamControlAndCheck
+
+ 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
+
+ // PIXITS in group ParametersForHTTP_Authentication can be ignored if this information is provided in other modules of the ATS that uses this SIP library
+ group ParametersForHTTP_Authentication {
+
+ /** @desc charstring for RFC 2617 clause 3-2-1 qop options:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ modulepar charstring PX_SIP_SUT_UE1_QOP := "auth";
+
+ /** @desc charstring for RFC 2617 clause 3-2-2 username:
+ * The name of user in the specified realm
+ */
+ modulepar charstring PX_SIP_SUT_UE1_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username
+ */
+ modulepar charstring PX_SIP_SUT_UE1_PASSWD := "1234";
+
+ /** @desc charstring for RFC 2617 3-2-1 qop options:
+ * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The
+ * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
+ */
+ modulepar charstring PX_SIP_SUT_UE2_QOP := "auth";
+
+ /** @desc charstring for RFC 2617 clause 3-2-2 username:
+ * The name of user in the specified realm
+ */
+ modulepar charstring PX_SIP_SUT_UE2_USERNAME := "abcd";
+
+ /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username
+ */
+ modulepar charstring PX_SIP_SUT_UE2_PASSWD := "1234";
+
+ }//group ParametersForHTTP_Authentication
+
+ group SIP_Timers {
+ /** @desc float for T1 RTT estimate (500 ms)
+ */
+ modulepar float PX_SIP_T1 := 0.5;
+
+ /** @desc float for T2 Maximum retransmit interval for non-INVITE requests and INVITE response (4000 ms)
+ */
+ modulepar float PX_T2 := 4.0;
+
+ /** @desc float for T4 Maximum duration a message will remain in the network
+ */
+ modulepar float PX_T4 := 1.0;
+
+ /** @desc float for TDELAY default value for timeout on outgoing SIP request (ie 64*T1)
+ */
+ modulepar float PX_SIP_TF := 32.0;
+
+ /** @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;
+
+ /** @desc float for TSYNC default value to synchronise ptc
+ */
+ modulepar float PX_SIP_TSYNC := 10.0;
+
+ /** @desc float for TGUARD default value for an extra long timer to limit test execution
+ */
+ modulepar float PX_SIP_TGUARD := 120.0;
+
+ /** @desc float for TRespRetention minimum time that a Proxy will wait before sending a final response
+ */
+ modulepar float PX_TRespRetention := 1.0;
+ }//group SIP_Timers
+ } //group SIP_PIXITparameters
+} // end module LibSip_PIXITS
/v1.8.0/ttcn/LibSip_PIXITS.ttcn
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: v1.8.0/ttcn/LibSip_Steps.ttcn
===================================================================
--- v1.8.0/ttcn/LibSip_Steps.ttcn (nonexistent)
+++ v1.8.0/ttcn/LibSip_Steps.ttcn (revision 541)
@@ -0,0 +1,4352 @@
+/*
+ * @author STF 346, STF366, STF368, STF369
+ * @version $Id$
+ * @desc This module provides the types used by the test component
+ * for SIP-IMS tests.
+ */
+
+module LibSip_Steps //MRO
+{
+ //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;
+
+group externalfunctions {
+
+ //Return random charstring
+ external function fx_rndStr() return charstring;
+ // Return the equivalent string in lower case
+ external function fx_putInLowercase(charstring par_string) return charstring;
+
+ external function fx_getIpAddr(charstring host_name) return charstring;
+
+ // External function to generate a digest response.
+ // References:
+ // * 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 nonce,
+ charstring cnonce,
+ charstring user,
+ charstring realm,
+ charstring passwd,
+ charstring alg,
+ charstring nonceCount,
+ charstring method,
+ charstring qop,
+ charstring URI,
+ charstring 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 tag_value;
+ //tag_value is initialized with a random value with at least 32 bits of randomness
+ // 4294967296 is a 32 bits integer
+ tag_value := fx_rndStr()&fx_rndStr();
+ return(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
+ * @return Credentials field
+ */
+ function f_calculatecCredentials_empty(in SipUserProfile p_userprofile) return Credentials
+ {
+ var template Credentials v_result;
+
+ var charstring v_nonce := "";
+
+ // 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 charstring v_response := "";
+
+ // Construct credentials for an Authorization field of a request.
+ v_result :=
+ {
+ digestResponse :=
+ {
+ { id := "username", paramValue := v_username },
+ { id := "realm", paramValue := v_realm },
+ { id := "uri", paramValue := v_uri },
+ { id := "nonce=""""", paramValue := omit }, // already enclosed to " characters
+ { id := "response=""""", paramValue := omit } // already enclosed to " characters
+ }};
+
+ return valueof(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 template Credentials v_result;
+
+ var charstring v_nonce := "";
+
+ // Use a fixed client nonce.
+ var charstring v_cnonce := "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;
+
+ // Use a fixed nonce count.
+ const charstring c_nonceCount := "00000002";
+
+ var charstring v_qop := p_userprofile.qop;
+
+ var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
+
+ // MD5 hash of empty entity body.
+ const charstring c_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
+
+ var charstring v_response;
+ var charstring v_opaque;
+
+
+ // 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,
+ c_nonceCount,
+ p_method,
+ v_qop,
+ v_uri,
+ c_hEntity);
+
+ // Construct credentials for an Authorization field of a request.
+ v_result :=
+ {
+ digestResponse :=
+ {
+ { id := "username", paramValue := v_username },
+ { id := "realm", paramValue := v_realm },
+ { id := "nonce", paramValue := v_nonce },
+ { id := "uri", paramValue := v_uri },
+ { id := "response", paramValue := v_response },
+ { id := "algorithm=md5", paramValue := omit }, // algorithm is not enclosed to " characters
+ { id := "cnonce", paramValue := v_cnonce },
+ { id := "opaque", paramValue := v_opaque }, // already enclosed to " characters
+ { id := "qop="&v_qop, paramValue := omit },//qop
+ { id := "nc="&c_nonceCount, paramValue := omit }//nonceCount
+ }
+ };
+
+ return valueof(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 := "";
+
+ // Use a fixed client nonce.
+ var charstring v_cnonce := "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;
+
+ // Use a fixed nonce count.
+ const charstring c_nonceCount := "00000002";
+
+ var charstring v_qop := p_userprofile.qop;
+
+ var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
+
+ // MD5 hash of empty entity body.
+ const charstring c_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
+
+ var charstring v_response;
+ var charstring v_opaque;
+
+
+ // 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,
+ c_nonceCount,
+ p_method,
+ v_qop,
+ v_uri,
+ c_hEntity);
+
+ // Construct credentials for an Authorization field of a request.
+ v_result :=
+ {
+ digestResponse :=
+ {
+ { id := "username", paramValue := v_username },
+ { id := "realm", paramValue := v_realm },
+ { id := "nonce", paramValue := v_nonce },
+ { id := "uri", paramValue := v_uri },
+// { id := "response", paramValue := v_response }, // not included to cause an error
+ { id := "algorithm=md5", paramValue := omit }, // algorithm is not enclosed to " characters
+ { id := "cnonce", paramValue := v_cnonce },
+ { id := "opaque=""""", paramValue := omit }, // already enclosed to " characters
+ { id := "qop="&v_qop, paramValue := omit },//qop
+ { id := "nc="&c_nonceCount, paramValue := omit }//nonceCount
+ }
+ };
+
+ 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 := v_realm },
+ { id := "nonce", paramValue := "0edff6c521cc3f407f2d9e01cf6ed82b"},
+ { id := "algorithm", paramValue := c_algorithm }, // algorithm is not enclosed with " characters
+ { id := "ck", paramValue := "00112233445566778899aabbccddeeff" },
+ { id := "ik", paramValue := "ffeeddccbbaa99887766554433221100" }, // already enclosed to " characters
+ { id := "qop="""&v_qop&"""", paramValue := omit }//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 := "";
+
+ // Use a fixed client nonce.
+ var charstring v_cnonce := "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;
+
+ // Use a fixed nonce count.
+ const charstring c_nonceCount := "00000002";
+
+ var charstring v_qop := p_userprofile.qop;
+
+ var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain;
+
+ // MD5 hash of empty entity body.
+ const charstring c_hEntity := "d41d8cd98f00b204e9800998ecf8427e";
+
+ var charstring v_response;
+ var charstring v_opaque;
+
+
+ // 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,
+ c_nonceCount,
+ p_method,
+ v_qop,
+ v_uri,
+ c_hEntity);
+
+ // Construct credentials for an Authorization field of a request.
+ v_result :=
+ {
+ digestResponse :=
+ {
+ { id := "username", paramValue := "DifferentToPrivateUser"},
+ { id := "realm", paramValue := v_realm },
+ { id := "nonce", paramValue := v_nonce },
+ { id := "uri", paramValue := v_uri },
+ { id := "response", paramValue := v_response },
+ { id := "algorithm=md5", paramValue := omit }, // algorithm is not enclosed to " characters
+ { id := "cnonce", paramValue := v_cnonce },
+ { id := "opaque=""""", paramValue := omit }, // already enclosed to " characters
+ { id := "qop="&v_qop, paramValue := omit },//qop
+ { id := "nc="&c_nonceCount, paramValue := omit }//nonceCount
+ }
+ };
+
+ 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 := sizeof(p_challenge);
+ var charstring v_id := fx_putInLowercase(p_id);
+
+ for (var integer 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 := sizeof (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 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 := sizeof(p_challenge);
+ var charstring v_id := fx_putInLowercase(p_id);
+
+ for (var integer i := 0; i < v_len; i := i + 1)
+ {
+ if (fx_putInLowercase(p_challenge[i].id) == v_id)
+ {
+ v_result := p_challenge[i].paramValue;
+ }
+ }
+
+ if (v_result == "")
+ {
+ if(match(p_id,"algorithm"))
+ {
+ v_result := "MD5"
+ }
+ else if(match(p_id,"opaque"))
+ {
+ v_result := ""
+ }
+ else
+ {
+ var charstring v_tmpchar := "Cannot acquire value from credentials.";
+ log ("Cannot acquire value from credentials.");
+ setverdict(inconc);
+ stop;
+ }
+ }
+
+ return v_result;
+ }
+
+}//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, 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 charstring p_parameter_value,
+ inout ViaBody p_viaBody)
+
+ {
+ if (ispresent (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 charstring p_parameter_value,
+ inout To p_to)
+
+ {
+ if (ispresent (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)
+ {
+ if (ispresent(p_message.msgHeader.require))
+ {
+ var boolean v_precondition_found:=false;
+ for (var integer v_i:=0; v_i<sizeof(p_message.msgHeader.require.optionsTags); v_i:=v_i+1){
+ if (match(p_message.msgHeader.require.optionsTags[v_i],c_tagPrecond)) {
+ v_precondition_found:=true;
+ }
+ }
+ if (not(v_precondition_found)){
+ setverdict(fail);
+ log("FAIL: precondition not found in Require options list!");
+ }
+ }
+ else
+ {
+ setverdict(fail);
+ log("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 v_chargeParamsLen;
+
+ if (ispresent(p_message.msgHeader.pChargingVector)) {
+ for (var integer i:=0; i<sizeof(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 v_chargeParamsLen;
+
+ if (ispresent(p_message.msgHeader.pChargingVector)) {
+ for (var integer i:=0; i<sizeof(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.hostPort.host;
+
+ if (ispresent(v_SipUrl.hostPort.portField))
+ {
+ v_locAddr.portField := v_SipUrl.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 v_chargeParamsLen;
+
+ if (ispresent(p_message.msgHeader.historyInfo)) {
+ for (var integer i:=0; i<sizeof(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.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(inout CSeq p_cSeq_s) return charstring
+ {
+ var charstring v_tag_value;
+ 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 NameAddr
+ {
+ if (ispresent(p_Request.msgHeader.path)) {
+ if (sizeof(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;
+ var HostPort v_locAddr;
+ // 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
+
+ // TODO produce an error because of unkown host exception
+ //if (not f_equivalentHostAddr(valueof (v_viaBody.sentBy.host),
+ // valueof (p_source_address.host))) {
+ f_addParameterIfNotPresent(
+ c_receivedId,
+ valueof (p_source_address.host),
+ v_viaBody);
+ //}
+ if (ispresent(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 (ispresent(p_message.msgHeader.route)) {
+ if (sizeof(p_message.msgHeader.route.routeBody)>p_index) {
+ return(p_message.msgHeader.route.routeBody[p_index].nameAddr.addrSpec.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 (ispresent(p_message.msgHeader.recordRoute)) {
+ if (sizeof(p_message.msgHeader.recordRoute.routeBody)>p_index) {
+ return(p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.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 (ispresent(p_message.msgHeader.recordRoute)) {
+ if (sizeof(p_message.msgHeader.recordRoute.routeBody)>p_index) {
+ return(p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.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 (sizeof(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 (sizeof(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 := 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;
+
+ for (var integer v_i := 0; v_i < sizeof(p_response.msgHeader.via.viaBody); v_i := v_i + 1) {
+
+ v_viaParameter := p_response.msgHeader.via.viaBody[v_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.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
+ */
+ function f_setHeaders_REGISTER(inout CSeq p_cSeq_s) runs on SipComponent
+ {
+ var SemicolonParam_List v_params;
+
+ f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via
+
+ vc_requestUri:=
+ {
+ scheme := c_sipScheme,
+ userInfo := omit,
+ hostPort := {host:=vc_userprofile.registrarDomain, portField:=omit},
+ urlParameters := omit,
+ headers := omit
+ };
+
+ vc_reqHostPort := vc_requestUri.hostPort;
+
+ vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & 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 := {{id:=c_tagId, paramValue:=f_getRndTag()}}
+ vc_from := {fieldName := FROM_E,
+ addressField :=vc_to.addressField,
+ fromParams := v_params
+ };
+
+ if(not vc_firstREGISTER_sent)
+ {
+ v_params := {{id:=c_expiresId, paramValue:=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,
+ 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,
+ 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
+
+ vc_requestUri:=
+ {
+ scheme := c_sipScheme,
+ 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 := {{id:=c_tagId, paramValue:=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(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.hostPort;
+
+ }// end function f_setHeadersINVITE
+
+ /**
+ *
+ * @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(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.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(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.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.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.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.hostPort;
+
+ vc_callId := {
+ fieldName := CALL_ID_E,
+ callid := f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr
+ }
+
+ vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile)));
+ vc_cancel_To := vc_to;
+ v_params := {{id := c_tagId, paramValue := 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(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.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.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 (ispresent(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 (ispresent(p_Request.msgHeader.authorization)) {
+ vc_authorization := 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 (ispresent(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 (ispresent(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_setHeadersOnReceiptOfSUBSCRIBE
+
+ /**
+ *
+ * @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 {
+
+ 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 (ispresent(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 (ispresent(p_Request.msgHeader.privacy)) {
+ vc_privacy := p_Request.msgHeader.privacy;
+ };
+
+ if (ispresent(p_Request.messageBody)) {
+ //cleaning of attributes before assignment
+ if (ispresent(vc_sdp_remote.media_list))
+ {
+ var integer v_length := sizeof(vc_sdp_remote.media_list);
+ for (var integer i:=0; i<v_length; i:=i+1)
+ {
+ if (ispresent(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 (var integer j:=0; j<sizeof(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList); j:=j+1){
+ if (match(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type,c_sdpAplication))
+ {
+ 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_xmlAplication))
+ {
+ vc_xml_remote := p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.xmlBody;
+ };
+ }
+ }
+ };
+
+ if (ispresent(p_Request.msgHeader.supported.optionsTags)) {
+ for (var integer i := sizeof(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 := p_Request.msgHeader.cSeq;
+ 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(ispresent(p_Request.msgHeader.toField.toParams)))
+ {
+ vc_to.toParams := {{id := c_tagId, paramValue := f_getRndTag()}};
+ vc_caller_To := vc_to;
+ }
+ if (ispresent(p_Request.msgHeader.recordRoute))
+ {
+ 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(inout CSeq p_cSeq, Response p_response) runs on SipComponent
+ {
+ var integer v_i, v_j, v_nbroute;
+ var 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 (ispresent(p_response.msgHeader.contact))
+ {
+ v_contact := p_response.msgHeader.contact;
+ if (ischosen(v_contact.contactBody.contactAddresses))
+ {
+ vc_reqHostPort := f_getContactAddr(v_contact.contactBody.contactAddresses[0]);
+ vc_requestUri := f_getContactUri(v_contact.contactBody.contactAddresses[0]);
+ }
+ }
+ else
+ {
+ if (ischosen(vc_to.addressField.nameAddr))
+ {
+ vc_reqHostPort := vc_to.addressField.nameAddr.addrSpec.hostPort;
+ vc_requestUri := vc_to.addressField.nameAddr.addrSpec;
+ }
+ else
+ {
+ vc_reqHostPort := vc_to.addressField.addrSpecUnion.hostPort;
+ 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:= {field