LibIms_Templates.ttcn 106 KB
Newer Older
 *	@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 LibIms_Templates
{	
	//LibCommon
	import from LibCommon_DataStrings all;
	//LibSip
	import from LibSip_SIPTypesAndValues all;
	import from LibSip_SDPTypes all;
	import from LibSip_Templates all;
	import from LibSip_Steps all;
	import from LibSip_PIXITS all;
	import from LibSip_XMLTypes all;
rennoch's avatar
rennoch committed
	import from XSDAUX all;
	
	//LibIms
	import from LibIms_SIPTypesAndValues all;
	
	import from LibIms_PIXITS all;
	
    //LibXMLTypes
    import from ietf_params_xml_ns_resource_lists language "XSD" all
    with {
        extension "File:../xsd/ResourceList.xsd"
    }
	
    import from org_etsi_uri__ngn_params_xml_simservs_xcap language "XSD" all
    with {
        extension "File:../xsd/SupplementaryServices.xsd"
    }
	
    import from org_etsi_uri__ngn_params_xml_simservs_mcid language "XSD" all
    with {
        extension "File:../xsd/MCID.xsd"
    }
	
juvancic's avatar
juvancic committed
    import from Ims3gpp language "XSD" all
juvancic's avatar
juvancic committed
        extension "File:../xsd/Ims3gpp.xsd"
    }
    
    import from ietf_params_xml_ns_conference_info language "XSD" all
    with {
        extension "File:../xsd/CONF.xsd"
    }
    
    import from org_etsi_uri__ngn_params_xml_simservs_pstn language "XSD" all
    with {
        extension "File:../xsd/PSTN.xsd"
    }
    
    import from ietf_params_xml_ns_common_policy language "XSD" all
    with {
        extension "File:../xsd/common-policy.xsd"
    }
    
    import from org_etsi_uri__ngn_params_xml_comm_div_info language "XSD" all
    with {
        extension "File:../xsd/CDIVN.xsd"
    }
    
pintar's avatar
pintar committed
	import from X_3gpp_ns_cw_1_0 language "XSD" all
    with {
        extension "File:../xsd/cw.xsd"
    }   
	template charstring m_international_number_format := pattern  "\\+\d+";//pattern  "\+\d+";

	template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := 
		{
			displayName := *,
			addrSpec := {
				scheme := "sip:",
				userInfo := *,
				hostPort := {p_host, p_port},
				urlParameters := *,
				headers := *
			}
		}
		
	template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}};
	
group Subfields{


	template SipUrl m_SipUrl_currIpaddr_CSCF(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
	{
			scheme := c_sipScheme,  		//*  contains "sip"
			userInfo := omit,		//*  optional
			hostPort :=
			{
		host := p_userprofile.currIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
		portField := p_userprofile.currPort	//* optional integer
			},
			urlParameters := omit,
			headers := omit
	} 
	
	template SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm)	:=
	/*?;*/ 
	superset({"realm",p_realm},{"nonce",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) ;//Working with TTWorkbench// ERROR HERE! Superset operation must contain value list - no templates!
	template SemicolonParam_List m_semicolonParams_language (template charstring p_language):=
		{{"language",p_language}}
	
	template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):=
		{{"language",p_language}}
		
	template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):=
		{{"isub",p_address}}	
}

group HeaderFieldTemplates{
	
	template MinSE m_minSE(DeltaSec p_ds):=
	{
			fieldName := MIN_SE_E,
			deltaSec:=p_ds,
			minSeParam:=omit
	}
	
	template PathValue mw_pathvalue (template SipUrl p_sipUrl):=
	nameAddr := {displayName := *, 	 			// optional charstring
				 addrSpec := p_sipUrl		// SipUrl
				},
	}

	template Path m_path (SipUrl p_sipUrl):=
	{
		fieldName := PATH_E,
		pathValues := {
					{nameAddr := {
					displayName := omit, 	 			// optional charstring
					addrSpec := p_sipUrl		// SipUrl
				  	},
					rrParam := omit}
			}
	}
	template Path m_path_TS := {
		fieldName := PATH_E,
		pathValues := {
			{
				nameAddr := {
					displayName := omit,  //     optional charstring
					addrSpec := {
						scheme := c_sipScheme,
						userInfo := {
							userOrTelephoneSubscriber := "registrar",
							password := omit
						},
						hostPort := {
							PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT
						},
						urlParameters := omit,
						headers := omit
					}
				},
				rrParam := omit
			}
/*
 * @desc Path header field expectation with at least one path value
 * @param p_sipUrl value of the last element in the list of path values
 */	
	template Path mw_path (template SipUrl p_sipUrl):=
	{
		fieldName := PATH_E,
		pathValues := {mw_pathvalue(p_sipUrl)}		// any number of SipUrl may occur before p_sipUrl
	}
	
	template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a :=
	{
		fieldName := P_ACCESS_NETWORK_INFO_E,
		accessType := "IEEE-802.11a",
		genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}}
	};
		
	template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):=
	{
		fieldName := P_ASSERTED_SERVICE_E,
		pAssertedServiceValue := p_pAssertedServiceValue
	};
		
	template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue :=
	{
		fieldName := P_CHARGING_FUNCTION_ADDRESSES_E,
		chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1;"}, // value is fixed because it is deleted on proxy 
							 {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy
	};

	
	template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := p_chargeParams
	};
	
	template PChargingVector m_pChargingVector_icid_TS :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {{id:=c_icid,		paramValue :=c_icid_value}}
	template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {{id:=c_icid,			paramValue :=c_icid_value &";"},
						 {id:=c_icid_generated_at,	paramValue :="192.1.1.10;"},
						 {id:=c_orig_ioi,			paramValue := p_homeDomain}}
	template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {{id:=c_icid,			paramValue :=c_icid_value&";"},
							{id:=c_icid_generated_at,	paramValue :="192.1.1.10;"},
							{id:=c_term_ioi,			paramValue := p_homeDomain}}
	};
	
	template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := {
						 {id:=c_icid_generated_at,	paramValue :="192.1.1.10;"},
						 {id:=c_orig_ioi,			paramValue := p_homeDomain}}
	};
	
	template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) :=
	{
		fieldName := P_CHARGING_VECTOR_E,
		chargeParams := superset({id := p_id, paramValue := p_paramValue})
	};

	template PMediaAuthorization m_pMediaAuthorization_fixedValue :=
	{
		fieldName := P_MEDIA_AUTHORIZATION_E,
		pMediaAuthorizations := {"A"} // example
	};


	template PEarlyMedia m_pEarlyMedia_sup := 
		{fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}};
		
	
	template ProxyRequire m_proxyRequire_secAgree :=
	{
		fieldName := PROXY_REQUIRE_E,
		optionsTags := {"sec-agree"}
	};
	
    template PVisitedNetworkID m_pVisitedNetworkID_TS := 
    {
      fieldName := P_VISITED_NETWORK_E,
      vNetWorkSpec := {{vNetworkSpecToken := "Viseted ETSI 1",
         genericParams := omit}}
    }
	
	template PVisitedNetworkID mw_pVisitedNetworkID := 
	{
	  fieldName := P_VISITED_NETWORK_E,
	  vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID,
						genericParams := *}}
	}

	template RecordRoute m_recordRoute_notmatching:=
	{   
		fieldName := RECORD_ROUTE_E,
		routeBody :=
		{{
			nameAddr :=
			{
				displayName := omit,
				addrSpec :=
				{
					scheme := c_sipScheme,  			// contains "sip"
					userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
					hostPort :=
					{
						host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
						portField := omit
					},
					urlParameters := omit,
					headers := omit
				}
			},
			rrParam := omit
		} }
	};
	
	template Require m_require_secAgree :=
	{
		fieldName := REQUIRE_E,
		optionsTags := {"sec-agree"}
	};
	
	template Require mw_require_path :=
	{
		fieldName := REQUIRE_E,
		optionsTags := superset("path")
	};

	template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):=
	{   
		fieldName := ROUTE_E,
		routeBody := {{nameAddr := {displayName := omit, 
								   addrSpec := 	{scheme := c_sipScheme,  			// contains "sip"
												userInfo := omit,
												hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit},
												urlParameters := omit,
												headers := omit}
								   },
					  rrParam := omit}
	}};

    template Route m_route_notmatching:=
	{   
		fieldName := ROUTE_E,
		routeBody :=
		{{
			nameAddr :=
			{
				displayName := omit,
				addrSpec :=
				{
					scheme := c_sipScheme,  			// contains "sip"
					userInfo := {userOrTelephoneSubscriber := "unknown", password := omit},
					hostPort :=
					{
						host := "unknown.domain.name",	// hostname, IPv4 or IPv6 as a charstring
						portField := omit
					},
					urlParameters := omit,
					headers := omit
				}
			},
			rrParam := omit
		} }
	};

	template SessionExpires m_se(DeltaSec p_ds):=
	{
			fieldName := SESSION_EXPIRES_E,
			deltaSec:=p_ds,
			seParam:=omit
	}
	
	template SessionExpires mw_se:=
	{
			fieldName := SESSION_EXPIRES_E,
			deltaSec:=?,
			seParam:=omit
	}
	
	template Supported m_supported_timer:=
	{
			fieldName := SUPPORTED_E,
			optionsTags := {"timer"}
	}
	
	template Supported m_supported_histinfo:=
	{
			fieldName := SUPPORTED_E,
			optionsTags := {"histinfo"}
	}
	
poglitsch's avatar
poglitsch committed
	
	template Supported m_supported_fromChange:=
	{
			fieldName := SUPPORTED_E,
			optionsTags := {"from-change"}
	}
	
	template To m_To_targetRefreshRequest(template To p_To) :=
	{
	  fieldName := TO_E,
	  addressField :=
	  {nameAddr := {
		  displayName := p_To.addressField.nameAddr.displayName,
		  addrSpec :=	p_To.addressField.nameAddr.addrSpec
		}},//end addressField
	  toParams := {{id := c_tagId, paramValue := f_getRndTag()}}
	};
	
	template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) :=
	{
	  sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
	  sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort},
	  viaParams:={{id :=c_branchId,paramValue :=branch_val}}
	}
	
	template ViaBody m_ViaBody_virtual_XCSCF(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 Via m_via_notmatching:=
	{   
		fieldName := VIA_E,
		viaBody :=
		{{
			sentProtocol := valueof(m_SentProtocol("UDP")),
					  sentBy:={host:="unknown.domain.name", portField:= 10000},
					  viaParams:={{id :=c_branchId,paramValue :="abcd0000"}}
		} }
	};
	
	/*
	 * @desc WWW-Authenticate header field 
    	 * @param p_challenge value 
    	 */	
		template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):=
		{
			fieldName := WWW_AUTHENTICATE_E,
			challenge := p_challenge
		}

    	/*
    	 * @desc WWW-Authenticate header field 
    	 * @param p_challenge value 
    	 */	
		template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):=
		{
			fieldName := WWW_AUTHENTICATE_E,
			challenge := 
				{digestCln := p_semicolonParam_List // set of GenericParam
				}
		}
		
		
		
	/*
		* @desc AcceptContact header field 
		* @param p_acValues value 
		*/	
		template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
		{
			fieldName := ACCEPT_CONTACT_E,
			acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
   						}
		}

	/*
		* @desc Authenticate header field 
		* @param p_challenge value 
		*/	
		template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):=
		{
			fieldName := ACCEPT_CONTACT_E,
			acValues := 
				{{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam
				}
		template SubscriptionState mw_subscriptionState(template charstring p_state) := {
    		fieldName := SUBSCRIPTION_STATE_E,
    		subState := p_state,
    		substateParams := omit
		}
		
		//[3455/5.1]
		template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := {
			fieldName := P_ASSOCIATED_URI_E,
			nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}}
		}	  	
		
} // end group HeaderFieldTemplates

group MessageBodyTemplates {
	
group XMLTemplates {
	
//	template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) :=
//	{
//		icb := p_icb
//	};
pintar's avatar
pintar committed
	
//	template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) :=
//	{
//		ocb := p_ocb
//	};
pintar's avatar
pintar committed
	
	template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
        conference_type := p_confInfo
pintar's avatar
pintar committed
    template XmlBody m_XmlBody_CW(template Ims_cw p_cw) :=
    {
        cw := p_cw
    };
	
	template XmlBody m_XmlBody_CUG(template Cug p_cug) :=
	{
		cug := p_cug
	};
	
pintar's avatar
pintar committed
	template XmlBody m_XmlBody_MCID(template Mcid p_mcid) :=
	{
		mcid := p_mcid
	};
	
	template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
	{
		pstnTransit := p_pstn
	};
	
    template XmlBody m_XmlBody_simservs(template Simservs p_simservs) :=
    {
        simservs := p_simservs
    };
	
    template XmlBody
	m_XmlBody_ACR_ICB(template (value) Incoming_communication_barring p_icb) := {
		simservs := {
			anyAttributes := omit,
			choice := {{incoming_communication_barring := p_icb}},
            extensions := omit  
		}
	}
    template XmlBody m_XmlBody_ACR_OCB(template (value) Outgoing_communication_barring p_ocb) :=
    {
        simservs := {
            anyAttributes := omit,
            choice := {
                {
                    outgoing_communication_barring := p_ocb
                }   
            },
            extensions := omit  
        }
    };
	
	template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
rennoch's avatar
rennoch committed
	{
		cdivn := p_cdivn
	};
	
//	template XmlBody m_XmlBody_CDIVN(template Comm_div_info p_cdivn) :=
//	{
//		cdivn := p_cdivn
//	};
rennoch's avatar
rennoch committed
		
	template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) :=
poglitsch's avatar
poglitsch committed
        conference_type := p_confInfo
	};
	
	template XmlBody mw_XmlBody_CUG(template Cug p_cug) :=
pintar's avatar
pintar committed
	{
		cug := p_cug
	};
	
	template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) :=
	{
		mcid := p_mcid
	};
	
	template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) :=
	{
		pstnTransit := p_pstn
	};
	
	template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) :=
rennoch's avatar
rennoch committed
	{
		cdivn := p_cdivn
	};
    template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) :=
    {
        simservs := p_simservs
    };
	
poglitsch's avatar
poglitsch committed
	template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) :=
	{
		resourceLists := p_resourceLists
	};
rennoch's avatar
rennoch committed
		
}// end group XMLTemplates

pintar's avatar
pintar committed
group ACR_CBTemplates {
	
	template Incoming_communication_barring	m_ICB(RuleType p_ruleType) :=
	{
        active := omit,
        anyAttributes := omit, 
		ruleset := {
pintar's avatar
pintar committed
			rule:= {p_ruleType}
		}
	}
	
	template Outgoing_communication_barring	m_OCB(RuleType p_ruleType) :=
	{
        active := omit,
        anyAttributes := omit, 
		ruleset := {
pintar's avatar
pintar committed
			rule:= {p_ruleType}
		}
	}
	
	template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) :=
	{
		id := "rule66",
		conditions := p_condition,
		actions := {elem:={{boolean := false}}},
pintar's avatar
pintar committed
		transformations := omit
	}

	template ConditionsType m_conditionsType_identity(template charstring p_id, template charstring p_scheme) := {
		content := {{
pintar's avatar
pintar committed
			identity := {{
				content := {{
pintar's avatar
pintar committed
            		one := {
            			id := p_id,
            			//scheme := p_scheme,
            			//any_1 := omit
                        elem := {charstring := p_scheme}
	template Cug m_CUG (
		template CugRequestType p_crt,
		template NetworkIdentityType p_nit,
		template SixteenbitType p_cibc,
		template TwoBitType p_cci
	):= {
    	active := omit,
    	anyAttributes := omit,
		cugCallOperation := p_crt,
		networkIndicator := p_nit,
		cugInterlockBinaryCode := p_cibc,
		cugCommunicationIndicator :=p_cci
	template Cug mw_CUG (
		template CugRequestType p_crt,
		template NetworkIdentityType p_nit,
		template SixteenbitType p_cibc,
		template TwoBitType p_cci
	):= {
    	active := omit,
        anyAttributes := omit, 
    	cugCallOperation := p_crt,
    	networkIndicator := p_nit,
    	cugInterlockBinaryCode := p_cibc,
    	cugCommunicationIndicator := p_cci
juvancic's avatar
juvancic committed
	template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) :=
rennoch's avatar
rennoch committed
//		outgoingAccessRequest := p_outAccessRequest,
//		cugIndex := p_cugIndex
//TODO: workaround for ttwb118
		outgoingAccessRequest := {bool:=p_outAccessRequest},
juvancic's avatar
juvancic committed
		cugIndex := p_cugIndex
rennoch's avatar
rennoch committed
	template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) :=
	{
		outgoingAccessRequest := {bool:=p_outAccessRequest},
rennoch's avatar
rennoch committed
		cugIndex := p_cugIndex
	}
pintar's avatar
pintar committed
}//end group CUGTemplates

pintar's avatar
pintar committed
group CWTemplates {

	template Ims_cw m_CW(template TEmptyType p_cwi) := {
        anyAttributes := omit,
        communication_waiting_indication := p_cwi,
        elem := omit	    
	}
	
    template Cug m_CW2 (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
        anyAttributes := omit,
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator :=p_cci
    }
	
    template Cug mw_CW (
        template CugRequestType p_crt,
        template NetworkIdentityType p_nit,
        template SixteenbitType p_cibc,
        template TwoBitType p_cci
    ):= {
        active := omit,
        anyAttributes := omit, 
        cugCallOperation := p_crt,
        networkIndicator := p_nit,
        cugInterlockBinaryCode := p_cibc,
        cugCommunicationIndicator := p_cci
    }
	
}//end group CWTemplates

pintar's avatar
pintar committed
group MCIDTemplates {
	
 template Mcid m_mcid_request_mcidIndicatorTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
      			holdingIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
 template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
			   holdingIndicator := bit2str('1'B)}
pintar's avatar
pintar committed
 template Mcid m_mcid_response_mcidIndicatorTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
       			holdingProvidedIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_request_mcidIndicatorTrue :=
 {
  choice := {
   request := {mcidRequestIndicator := bit2str('1'B),
      			holdingIndicator := ?}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_response_mcidIndicatorTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
       			holdingProvidedIndicator := ?}
pintar's avatar
pintar committed
	
 template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
   				holdingProvidedIndicator := bit2str('0'B)}
pintar's avatar
pintar committed
  }
 }
	
 template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue :=
 {
  choice := {
   response := {mcidResponseIndicator := bit2str('1'B),
				holdingProvidedIndicator := bit2str('1'B)}
pintar's avatar
pintar committed
  }
 }
pintar's avatar
pintar committed

} //end group MCIDTemplates
    template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := omit,
            lowLayerCompatibility := omit,
            progressIndicator := omit,
            display_ := omit
    }
    template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct,
    										 template BearerCapabilityType p_bct2) :=
    {
            bearerInfomationElement := {p_bct, p_bct2},
            highLayerCompatibility := omit,
            lowLayerCompatibility := omit,
            progressIndicator := omit,
            display_ := omit
    }
    template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct, 
    										 	  template HighLayerCompatibilityType p_hlc) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := {p_hlc},
            lowLayerCompatibility := omit,
            progressIndicator := omit,
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct,
    											 template LowLayerCompatibilityType p_llc) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := omit,
            lowLayerCompatibility := p_llc,
            progressIndicator := omit,
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct,
    											 template ProgressIndicatorType p_pi1) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := omit,
            lowLayerCompatibility := omit,
            progressIndicator := {p_pi1},
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct,
                                                 template ProgressIndicatorType p_pi1,
    											 template ProgressIndicatorType p_pi2) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := omit,
            lowLayerCompatibility := omit,
            progressIndicator := {p_pi1, p_pi2},
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct,
                                                 template ProgressIndicatorType p_pi1,
    											 template ProgressIndicatorType p_pi2,
                                                 template ProgressIndicatorType p_pi3) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := omit,
            lowLayerCompatibility := omit,
            progressIndicator := {p_pi1, p_pi2, p_pi3},
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct,
                                                  template HighLayerCompatibilityType p_hlc1,
                                                  template HighLayerCompatibilityType p_hlc2) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := {p_hlc1, p_hlc2},
            lowLayerCompatibility := omit,
            progressIndicator := omit,
            display_ := omit
    }

    template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct,
    											 template HighLayerCompatibilityType p_hlc1,
                                                 template ProgressIndicatorType p_pi1) :=
    {
            bearerInfomationElement := {p_bct},
            highLayerCompatibility := {p_hlc1},
            lowLayerCompatibility := omit,
            progressIndicator := {p_pi1},
            display_ := omit
    }
	
	template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct,
											 template BearerCapabilityType p_bct2) :=
	{
			bearerInfomationElement := {p_bct, p_bct2},
			highLayerCompatibility := {*, *},
			lowLayerCompatibility := *,
			progressIndicator := {*},
			display_ := {*}
	template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= {
			bCoctet3 	:= {codingStandard := bit2str('00'B),						//Coding standard = CCITT standardized coding
                			informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
			bCoctet4 	:= {transferMode := bit2str('00'B),							//Coding standard = CCITT standardized coding
							informationTransferRate := bit2str('10000'B)},			//Information transfer rate = 64 kbit/s
			bCoctet4_1 	:= omit,
			bCoctet5  	:= omit,
			bCoctet5a  	:= omit,
			bCoctet5bV110  := omit,
			bCoctet5bV120  := omit,
			bCoctet5c 	:= omit,
			bCoctet5d 	:= omit,
			bCoctet6  	:= omit,
			bCoctet7  	:= omit,
			bCoctet7a  	:= omit,
			bCoctet7b  	:= omit 
	template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := {
        	progressOctet3 := {codingStandard := bit2str('00'B),
							   location := bit2str('0000'B)
			progressOctet4 := {progressDescription := bit2str(p_progDesc)}
	template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := {
			lLOctet3 := {codingStandard := bit2str('00'B),						 //Coding standard = CCITT standardized coding
						 informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability
			lLOctet3a := omit,
			lLOctet4 := {transferMode := bit2str('00'B),						//Coding standard = CCITT standardized coding
						 informationTransferRate := bit2str('10000'B)},			//Information transfer rate = 64 kbit/s
			lLOctet4_1 := omit,
			lLOctet5 := omit,
			lLOctet5a := omit,
			lLOctet5bV110 := omit,
			lLOctet5bV120 := omit,
			lLOctet5c := omit,
			lLOctet5d := omit,
			lLOctet6 := omit,
			lLOctet6aHDLC := omit,
			lLOctet6aUserSpecific := omit,
			lLOctet6b := omit,
			lLOctet7 := {layer3Identification := bit2str('10'B),		//TODO check valueand if parameter is mandatory
                		userInfoLayer3Protocol := bit2str('10000'B)},	//TODO check value and if parameter is mandatory
			lLOctet7aUserSpecific := omit,
			lLOctet7aX25 := omit,
			lLOctet7bX25 := omit,
			lLOctet7c := omit,
			lLOctet7aTR9577 := omit,
			lLOctet7bTR9577 := omit 
	}
	
	template HighLayerCompatibilityType m_HighLayerCompatibilityType 
		(Bit7 p_HLOctet4):= {
			hLOctet3 := {
				codingStandard :=bit2str('00'B),
				interpretation :=bit2str('100'B),
				presentationMethod := bit2str('01'B)
			hLOctet4 := {
				highLayerCharacteristics := bit2str(p_HLOctet4)
			hLOctet4aMaintenance := omit,
			hLOctet4Audio := omit
	}

	template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= {
			bCoctet3 	:= p_BCOctet3Type,
			bCoctet4 	:= p_BCOctet4Type,
			bCoctet4_1 	:= * ,
			bCoctet5  	:= * ,
			bCoctet5a  	:= * ,
			bCoctet5bV110  := * ,
			bCoctet5bV120  := * ,
			bCoctet5c 	:= * ,
			bCoctet5d 	:= * ,
			bCoctet6  	:= * ,
			bCoctet7  	:= * ,
			bCoctet7a  	:= * ,
			bCoctet7b  	:= * 
	template BearerCapabilityType mw_BearerCapabilityType_TrfCap  (Bit5 p_InfoTrfCap):= {
    		bCoctet3 	:= {codingStandard := bit2str('00'B),						//Coding standard = CCITT standardized coding
    						informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability
    		bCoctet4 	:= {transferMode := bit2str('00'B),							//Coding standard = CCITT standardized coding
    						informationTransferRate := bit2str('10000'B)},			//Information transfer rate = 64 kbit/s
			bCoctet4_1 	:= * ,
			bCoctet5  	:= * ,
			bCoctet5a  	:= * ,
			bCoctet5bV110  := * ,
			bCoctet5bV120  := * ,
			bCoctet5c 	:= * ,
			bCoctet5d 	:= * ,
			bCoctet6  	:= * ,
			bCoctet7  	:= * ,
			bCoctet7a  	:= * ,
			bCoctet7b  	:= * 
	}	

	template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := {
			progressOctet3 := p_ProgressOctet3Type,
			progressOctet4 := p_ProgressOctet4Type
	}
	
	template LowLayerCompatibilityType mw_LowLayerCompatibilityType 
		(template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := {
			lLOctet3 := p_LLOctet3,
			lLOctet3a := * ,
			lLOctet4 := p_LLOctet4,
			lLOctet4_1 := * ,
			lLOctet5 := * ,
			lLOctet5a := * ,
			lLOctet5bV110 := * ,
			lLOctet5bV120 := * ,
			lLOctet5c := * ,
			lLOctet5d := * ,
			lLOctet6 := * ,
			lLOctet6aHDLC := * ,
			lLOctet6aUserSpecific := * ,
			lLOctet6b := * ,
			lLOctet7 := p_LLOctet7,
			lLOctet7aUserSpecific := * ,
			lLOctet7aX25 := * ,
			lLOctet7bX25 := * ,
			lLOctet7c := * ,
			lLOctet7aTR9577 := * ,
			lLOctet7bTR9577 := * 
	}
	
	template HighLayerCompatibilityType mw_HighLayerCompatibilityType 
		(template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= {
			hLOctet3 := p_HLOctet3,
			hLOctet4 := p_HLOctet4,
			hLOctet4aMaintenance := *,
			hLOctet4Audio := *
rennoch's avatar
rennoch committed
} //end group PSTNTemplates		

group CDIVNTemplates {
	
	/* general CDIVN subscription */
	template Comm_div_info_type m_CDIVN_sub := {
		entity := "comm-div-info",
rennoch's avatar
rennoch committed
		comm_div_subs_info := {
			anyAttributes := omit,
			comm_div_selection_criteria := {
juvancic's avatar
juvancic committed
				anyAttributes := omit,
rennoch's avatar
rennoch committed
				originating_user_selection_criteria := omit,
				diverting_user_selection_criteria := omit,
				diverted_to_user_selection_criteria := omit,
				diversion_time_selection_criteria := omit,
				diversion_reason_selection_criteria := omit,
rennoch's avatar
rennoch committed
			},
			comm_div_ntfy_trigger_criteria := omit,
			comm_div_info_selection_criteria := omit,
rennoch's avatar
rennoch committed
		},
		comm_div_ntfy_info := omit,
rennoch's avatar
rennoch committed

} // end grouup CDIVNTemplates
poglitsch's avatar
poglitsch committed

group ResourceListsTemplates {
	

    template Resource_lists m_ResourceList_2Users(
        EntryType p_user1, 
        EntryType p_user2
    ) :=
    {
        sequence := {
            {
                list := {
                    name := omit,
                    anyAttributes := omit,
                    display_name := omit,
                    sequence_list := {
                        {
                            choice := {
                                entry := p_user1
                            }
                        },
                        {
                            choice := {
                                entry := p_user2
                            }
                        }
                    },
                    elem := omit
                }
            }
        }
    }
poglitsch's avatar
poglitsch committed
	template EntryType m_EntryUser(SipUrl p_user) := {
poglitsch's avatar
poglitsch committed
		uri :=
			p_user.userInfo.userOrTelephoneSubscriber & "@" &
			p_user.hostPort.host,
		anyAttributes := omit,
        display_name := omit,
        elem := omit
poglitsch's avatar
poglitsch committed
}// end grouup ResourceListsTemplates
poglitsch's avatar
poglitsch committed
group Ims3gppTemplates {
    
    //TODO:check commented and below templates when test will be validated
    template TIMS3GPP mw_Ims_3gpp_CW := {
        version := 1.0,
        anyAttributes := ?,
        choice := {
            alternative_service := {
                anyAttributes := *, 
                type_ := ?, 
                reason := ?, 
                elem := *
            }
        },
        elem := *
    }
//	template TIMS3GPP mw_Ims_3gpp_CW := {
//		version := 1.0,
//		anyAttributes := ?,
//		choice_1 := {
//			alternative_service := {
//				anyAttributes := ?,
//				type_ := ?,
//				reason := ?,
//				action_ := {
//					anyAttributes := ?,
//					emergency_registration := *,
//					call_waiting_indication := {},
//					any_1 := *
//				},
//				any_1 := *
//			}
//		},
//		any_1 := *
//	}
poglitsch's avatar
poglitsch committed
} // end group Ims3gpp

poglitsch's avatar
poglitsch committed
group CONFTemplates {
	template booleanXSD boolXSD_true:={bool:=true}
	template booleanXSD boolXSD_false:={bool:=false}
rennoch's avatar
rennoch committed
	
	template anyAttributes m_emptyAnyAttributes:={}
	
	template ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template Media_status_type p_status):= {
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text :=omit,
		type_ :=omit,
		label_ :=omit,
		src_id:=omit,
		status:= p_status,
	template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template ietf_params_xml_ns_conference_info.Media_type p_mediastatus):= {
		entity:=p_Uri,
		state:=full,
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text:=omit,
		referred:=omit,
		status:=p_epStatus,
juvancic's avatar
juvancic committed
		joining_method:=p_joinMethod,
		joining_info:=omit,
		disconnection_method:=omit,
		disconnection_info:=omit,
		media:={p_mediastatus},// optional, 
		call_info:=omit,
	}
	
	template User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := {
		entity:=p_Uri,
		state:=full,
juvancic's avatar
juvancic committed
		anyAttributes:=omit,//m_emptyAnyAttributes,
		display_text:=omit,
		associated_aors:=omit,
		roles:=omit,
		languages :=omit,
		cascaded_focus :=omit,
		endpoint:={p_endpoint},// optional,
rennoch's avatar
rennoch committed
	template Users_type m_users_1user_full(template User_type p_user):={
			state:=full,
juvancic's avatar
juvancic committed
		    anyAttributes := omit,//m_emptyAnyAttributes,
rennoch's avatar
rennoch committed
		    user:={p_user},
juvancic's avatar
juvancic committed
	template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={
			state:=full,
juvancic's avatar
juvancic committed
			anyAttributes := omit,//m_emptyAnyAttributes,
juvancic's avatar
juvancic committed
			user:={p_user1,p_user2},
	template Conference_state_type m_conference_state(template unsignedInt p_nUsers, template booleanXSD p_active, template booleanXSD p_locked) := {
juvancic's avatar
juvancic committed
    	anyAttributes:=omit,//m_emptyAnyAttributes,
    	user_count:=p_nUsers,
    	active:=p_active,
    	locked:=p_locked,
rennoch's avatar
rennoch committed
	}

    template Conference_type m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := {
        entity := p_cUri,
        state := full,
        version := 1,
        anyAttributes := omit,//m_emptyAnyAttributes,//*,// {{name:="",val:=""}},
        conference_description := omit,
        host_info := omit,
        conference_state := p_cState,
        users := p_users,
        sidebars_by_ref := omit,
        sidebars_by_val := omit,
        elem := omit
    }
rennoch's avatar
rennoch committed
	
 template Conference_type mw_conferenceInfo_active := {
poglitsch's avatar
poglitsch committed
	 entity := ?,
	 state := *,
	 version := *,
	 anyAttributes := ?,
	 conference_description := *,
	 host_info := *,
	 conference_state := ?,
	 users := {
		 state := ?,
		 anyAttributes := ?,
		 user := {
			 {
				 entity := *,
				 state := *,
				 anyAttributes := *,
				 display_text := *,
				 associated_aors := *,
				 roles := *,
				 languages := *,
				 cascaded_focus := *,
				 endpoint := {
					 {
						 entity := *,
						 state := *,
						 anyAttributes := ?,
						 display_text := *,
						 referred := *,
						 status := connected,
						 joining_method := dialed_in,
						 joining_info := *,
						 disconnection_method := *,
						 disconnection_info := *,
						 media := *,
						 call_info := *,
poglitsch's avatar
poglitsch committed
	 },
	 sidebars_by_ref := *,
	 sidebars_by_val := *,
rennoch's avatar
rennoch committed
	
} // end group MessageBodyTemplates
		
group MessageTemplates {

group modified_templates {

group request_send {
		
		
	template ACK_Request m_ACK_Request_IMS (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 BYE_Request m_BYE_Request_IMS
		( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		Via p_via, template Route p_route)
		modifies m_BYE_Request_Base
		:=
		{
		  msgHeader :=
		  {
			route := p_route 
		  }
		}
	
	template BYE_Request m_BYE_Request_Reason_IMS
		( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		Via p_via, template Route p_route, integer p_cause)
		modifies m_BYE_Request_Base
		:=
		{
			msgHeader :=
			{
				reason := mw_Reason(p_cause),
				route := p_route
			}
		}
	
	template BYE_Request m_BYE_Request_UserToUser_IMS
		( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		Via p_via, template Route p_route, template charstring p_U2UData)
		modifies m_BYE_Request_Base
		:=
		{
			msgHeader :=
			{
				route := p_route,
				userToUser := m_UserToUserData(p_U2UData)
			}
		}
	
	template BYE_Request m_BYE_Request_UE
		( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		Via p_via, template Route p_route)
		modifies m_BYE_Request_Base
		:=
		{
		  msgHeader :=
		  {
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation
			route := p_route 
		  }
		}
	
	template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
		Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
	{
		msgHeader :=
		{
			route := p_route
		}
	}
	
	template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
		Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base :=
	{
		msgHeader :=
		{
			reason := m_Reason(p_cause),
			route := p_route
		}
	}
	
	template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
		Via p_via, template Route p_route) modifies m_CANCEL_Request_Base :=
	{
		msgHeader :=
		{
			route := p_route
		}
	}
	
	/*
		* 
		* @desc INFO message
	template INFO_Request m_INFO_Request_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_INFO_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
	}			
pintar's avatar
pintar committed
	
	/*
	* 
	* @desc INFO message
	*
	*/	
pintar's avatar
pintar committed
	template INFO_Request m_INFO_Request_Mime_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_INFO_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart}
		},
		messageBody := p_mb
pintar's avatar
pintar committed
	}			
	
	template INFO_Request m_INFO_Request_Xml_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_INFO_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication}
		},
		messageBody := p_mb
pintar's avatar
pintar committed
	}	
	
	template INVITE_Request m_INVITE_Request_UE
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, 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},
		pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
		require := p_require,
		route := p_route,
		//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
		supported := p_supported
	  },
	  messageBody := p_mb
poglitsch's avatar
poglitsch committed
    template INVITE_Request m_INVITE_Request_noBody_UE
        (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
          Via p_via, Contact p_contact, template Require p_require,
        template Route p_route,  template Supported p_supported )
        modifies m_INVITE_Request_Base
        :=
        {
          msgHeader :=
          {
            pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
            require := p_require,
            route := p_route,
            //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
            supported := p_supported
          }
        }
	
poglitsch's avatar
poglitsch committed
		template INVITE_Request m_INVITE_Request_Allow_UE
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
juvancic's avatar
juvancic committed
	template Route p_route,  template Supported p_supported, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow)
poglitsch's avatar
poglitsch committed
	modifies m_INVITE_Request_UE
	:=
	{
	  msgHeader :=
	  {
	  	allow := p_allow
	  }
	}
poglitsch's avatar
poglitsch committed
	
    template INVITE_Request m_INVITE_Request_noBody_Allow_UE
        (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
          Via p_via, Contact p_contact, template Require p_require,
        template Route p_route,  template Supported p_supported, template LibSip_SIPTypesAndValues.Allow p_allow)
        modifies m_INVITE_Request_noBody_UE
        :=
        {
          msgHeader :=
          {
            allow := p_allow
          }
        }
poglitsch's avatar
poglitsch committed
		
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, 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},
		require := p_require,
		pChargingVector := p_pChargingVector,
		recordRoute := p_recordRoute,
		route := p_route,
		supported := p_supported
	  },
	  messageBody := p_mb
	}	
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_HistoryInfo_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
			template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
			template HistoryInfo p_historyInfo)
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			historyInfo := p_historyInfo
		}
	}
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_Mime_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart}
		}
pintar's avatar
pintar committed
	}
		
    /*
     * 
     * @desc INVITE message exchanged at Mw
     *
     */	
    template INVITE_Request m_INVITE_Request_IMS_noBody
    (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
      Via p_via, Contact p_contact, template Require p_require,
    template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector)
    modifies m_INVITE_Request_Base
    :=
    {
      msgHeader :=
      {
        require := p_require,
        pChargingVector := p_pChargingVector,
        recordRoute := p_recordRoute,
        route := p_route,
        supported := p_supported
      }
    }			
pintar's avatar
pintar committed
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
			template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb,
			template PAssertedID p_pAssertedID, template Privacy p_privacy )
	modifies m_INVITE_Request_IMS
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart},
			pAssertedID := p_pAssertedID,
			privacy := p_privacy
		}
	}
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb )
	modifies m_INVITE_Request_Base
	:=
	{
		msgHeader :=
		{
    		acceptContact := p_acceptContact,
    		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
    		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
    		require := p_require,
    		pAssertedID := p_pAssertedID,
    		pChargingVector := p_pChargingVector,
    		recordRoute := p_recordRoute,
    		route := p_route,
    		supported := p_supported
		},
		messageBody := p_mb
	}	
	
	/*
	* 
	* @desc INVITE message exchanged at Mw
	*
	*/	
	template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, 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},
    		require := p_require,
    		pAssertedID := p_pAssertedID,
    		pChargingVector := p_pChargingVector,
    		privacy := p_privacy,
    		recordRoute := p_recordRoute,
    		route := p_route,
    		supported := p_supported
		},
		messageBody := p_mb
	}	

	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_PAssertedService_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService)
	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},
		require := p_require,
		pChargingVector := p_pChargingVector,
		route := p_route,
		supported := p_supported,
		pAssertedService := p_pAssertedService
	  },
	  messageBody := p_mb
	}		
	
	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route, template RecordRoute p_recordRoute,  template Supported p_supported, template PChargingVector p_pChargingVector, 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},
		require := p_require,
		pChargingVector := p_pChargingVector,
		pEarlyMedia := m_pEarlyMedia_sup, 
		recordRoute := p_recordRoute,
		route := p_route,
		supported := p_supported
	  },
	  messageBody := p_mb
	}	

	template INVITE_Request m_INVITE_Request_PPreferred_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID )
		modifies m_INVITE_Request_UE
		:=
		{
		  msgHeader :=
		  {
			pPreferredID := p_pPreferredID
		  }
		}	

	template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
				Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy)
		modifies m_INVITE_Request_UE
		:=
		{
				msgHeader :=
				{
			pPreferredID := p_pPreferredID,
			privacy := p_privacy
				}
		}

	template INVITE_Request m_INVITE_Request_SessionExpires_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se)
		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},
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			require := p_require,
			route := p_route,
			//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
			supported := p_supported,
			sessionExpires := p_se
		  },
		  messageBody := p_mb
		}
	
	template INVITE_Request m_INVITE_Request_minSE_UE
		(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
		  Via p_via, Contact p_contact, template Require p_require,
		template Route p_route,  template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE)
		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},
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			require := p_require,
			route := p_route,
			//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
			supported := p_supported,
			minSE := p_minSE
		  },
		  messageBody := p_mb
		}
	
	/*
	 * 
	 * @desc INVITE message exchanged at Mw
	 *
	 */	
	template INVITE_Request m_INVITE_Request_minSE_IMS
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template Require p_require,
	template Route p_route,  template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE)
	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},
		require := p_require,
		pChargingVector := p_pChargingVector,
		route := p_route,
		supported := p_supported,
			minSE := p_minSE
	  },
	  messageBody := p_mb
rennoch's avatar
rennoch committed
	}
		
	template INVITE_Request m_INVITE_Request_User2UserData_IMS
    (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
    		Via p_via, Contact p_contact, template Require p_require,
    template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template charstring p_U2UData)
rennoch's avatar
rennoch committed
    modifies m_INVITE_Request_IMS
    :=
    {
    	msgHeader :=
    	{
    		userToUser := m_UserToUserData(valueof(p_U2UData))
    	}
    }
	
    template MESSAGE_Request m_MESSAGE_Request_MBody_UE
           (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
             Via p_via, template Require p_require,
           template Route p_route,  template Supported p_supported, template MessageBody p_messageBody)
           modifies m_MESSAGE_Request_Base
           :=
           {
             msgHeader :=
             {
                contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
                contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText},
                pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
                require := p_require,
                route := p_route,
                //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
                supported := p_supported
             },
             messageBody := p_messageBody
    }
	template MESSAGE_Request m_MESSAGE_Request_NoBody_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_PCharging_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
				pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN),
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported, 
			template PChargingVector p_pChargingVector)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
				pChargingVector := p_pChargingVector,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}

	template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pMediaAuthorization := m_pMediaAuthorization_fixedValue,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}

	template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported, template PPreferredID p_pPreferredID)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				pPreferredID := p_pPreferredID,
				require := p_require,
				route := p_route,
				supported := p_supported
			  },
			  messageBody := omit
			}
	
	template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE
			(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			  Via p_via, template Require p_require,
			template Route p_route,  template Supported p_supported)
			modifies m_MESSAGE_Request_Base
			:=
			{
			  msgHeader :=
			  {
				contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))},
				contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText},
				pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
				require := p_require,
				route := p_route,
				//securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation 
				supported := p_supported
			  },
			  messageBody := m_MBody_longPlainText
	}
rennoch's avatar
rennoch committed
	
	template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference
rennoch's avatar
rennoch committed
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
			Via p_via, template MessageBody p_mb )
	modifies m_NOTIFY_Request_Base
	:=
	{
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication},
			event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
			subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit},
			expires:={fieldName:=EXPIRES_E, deltaSec:="3600"}
rennoch's avatar
rennoch committed
		},
		messageBody := p_mb
	}
		template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb) 
		  modifies m_PRACK_Request_Base :=
		{
			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_sdpAplication},
				cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
				fromField := p_from,
				rAck := p_RAck,
				toField := p_to,
				via := p_via
			},
			messageBody := p_mb
		}
		
	template PUBLISH_Request m_PUBLISH_Request_UE (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,template Route p_route) 
			modifies m_PUBLISH_Request_Base :=
	{
		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,
			route := p_route,
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			toField := p_to,
			via := p_via
		},
		messageBody := p_mb
	}
	
	template PUBLISH_Request m_PUBLISH_Request_IMS (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,
			template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector) 
			modifies m_PUBLISH_Request_Base :=
	{
		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,
			route := p_route,
			recordRoute:= p_recordRoute,
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,
			pChargingVector := p_pChargingVector,
			toField := p_to,
			via := p_via
		},
		messageBody := p_mb
	}
	
juvancic's avatar
juvancic committed
	/*
		* 
		* @desc REFER message exchanged at Mw
		*
		*/	
	template REFER_Request m_REFER_Request_IMS(
		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 Require p_require,
		template Route p_route, 
		template RecordRoute p_recordRoute,  
		template Supported p_supported, 
		template PChargingVector p_pChargingVector, 
		template MessageBody p_mb 
	) modifies m_REFER_Request_Base := {
		msgHeader := {
    		contentLength	:= {
    			fieldName := CONTENT_LENGTH_E, 
    			len:= f_MessageBodyLength(valueof(p_mb))
    		},
    		contentType := {
    			fieldName := CONTENT_TYPE_E, 
    			mediaType :=  c_sdpAplication
    		},
            referredBy := p_referredBy,	
            referTo := p_referTo,
    		require := p_require,
    		pChargingVector := p_pChargingVector,
    		recordRoute := p_recordRoute,
    		route := p_route,
    		supported := p_supported
		},
		messageBody := p_mb
juvancic's avatar
juvancic committed
	}
		
	template REGISTER_Request m_REGISTER_Request_UE (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,
		template ProxyRequire p_proxyRequire, template Require p_require,
		template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported)
		modifies m_REGISTER_Request_Base :=
	{
		requestLine	:=
		{
			method := REGISTER_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			authorization := p_authorization,
			callId := p_callId,
			contact	:= p_contact,
			cSeq		:= p_cSeq,
			fromField	:= p_from,
			proxyRequire := p_proxyRequire,
			require := p_require,
			securityClient := p_securityClient,
			securityVerify := p_securityVerify,
			supported := p_supported,
			toField		:= p_to,
			via		:= p_via

		}
	}
	
		
	template REGISTER_Request m_REGISTER_Request_IMS (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_Request_Base :=
	{
		requestLine	:=
		{
			method := REGISTER_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			authorization := p_authorization,
			callId := p_callId,
			contact	:= p_contact,
			cSeq		:= p_cSeq,
			fromField	:= p_from,
			path := m_path_TS,
			pChargingVector := m_pChargingVector_icid_TS,
			pVisitedNetworkID := m_pVisitedNetworkID_TS,
			require := {fieldName := REQUIRE_E,optionsTags := {"path"}},
			toField		:= p_to,
			via		:= p_via

		}
	}
	template REGISTER_Request m_REGISTER_Request_expires_IMS (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, template DeltaSec p_deltaSec)
		modifies m_REGISTER_Request_IMS :=
	{
		msgHeader :=
		{
			expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
		}
	}
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Route p_route)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000,
			route   := p_route
rennoch's avatar
rennoch committed
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (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_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
			contact	:= p_contact,
        	contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
rennoch's avatar
rennoch committed
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000
		},
		messageBody := p_mb
	}
	
    template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE (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, Event p_event, charstring p_contentType)  modifies m_SUBSCRIBE_Request_mb_UE :=
        {
            requestLine	:=
            {
                method := SUBSCRIBE_E,
                requestUri := p_requestUri
            },
            msgHeader :=
            {
                contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  p_contentType},
                pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a,	
                contact	:= p_contact,
                cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
                event	:= p_event,
                expires	:= m_Expires_600000
            },
            messageBody := p_mb
        }	
rennoch's avatar
rennoch committed
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= m_Event_reg,
			expires	:= m_Expires_600000
		}
	}
	
	template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId, 
		CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event)  modifies m_SUBSCRIBE_Request_Base :=
	{
		requestLine	:=
		{
			method := SUBSCRIBE_E,
			requestUri := p_requestUri
		},
		msgHeader :=
		{	
			contact	:= p_contact,
			cSeq	:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
			event	:= p_event,
			expires	:= m_Expires_600000
		}
	}
	template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
rennoch's avatar
rennoch committed
	{
		msgHeader :=
		{	
			fromField := p_from
		}
	}
}//end group request_send
 
group request_receive {
	
	template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId)
		modifies mw_ACK_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := omit}
		}

	template ACK_Request mw_ACK_Request_PchargingVector	(template CallId p_callId, template PChargingVector p_pChargingVector)
		modifies mw_ACK_Request_Base
		:=
		{
		  msgHeader := {  pChargingVector := p_pChargingVector}
		}
		
	template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies  mw_BYE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := omit,
			          pChargingVector := omit}
	  }
		
	template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies  mw_BYE_Request_Base
	  :=
	  {
		msgHeader := {pChargingVector := p_pChargingVector,
					  via := p_via}
	  }
		  
	template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := omit}
	  }
	template INVITE_Request mw_INVITE_Request_PChargingFunction modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pChargingFunctionAddresses := ?}
	  }	 
	   
	template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {pAssertedID := p_pAssertedID,
					  pPreferredID := omit
					 }
	  }
	  
     template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base
       :=
       {
      msgHeader := {pAssertedID := p_pAssertedID,
					acceptContact := p_acceptContact
          }
       }
   
	template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {recordRoute := p_recordRoute,
					  via := p_via}
	  }

	template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {route := p_route}
	  }
	  
	template INVITE_Request mw_INVITE_Request_require (
		template Require p_require
	) modifies  mw_INVITE_Request_Base := {
		msgHeader := { require := p_require }
	}
	  
poglitsch's avatar
poglitsch committed
	template INVITE_Request mw_INVITE_Request_supported (
		template Supported p_supported
	) modifies  mw_INVITE_Request_Base := {
		msgHeader := { supported := p_supported }
	}
	  
	template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {sessionExpires := p_sessionExpires}
	  }
	  
	template INVITE_Request mw_INVITE_Request_User2UserData (template charstring p_U2UData) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {userToUser := mw_UserToUserData(p_U2UData)}
	}
	  
	template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		}
	  }
	template INVITE_Request mw_INVITE_Request_IMS_requestLine(template PChargingVector p_pChargingVector,
						  template RecordRoute p_recordRoute,
						  template Route p_route, template Via p_via, template SipUrl p_requestUri)
	modifies mw_INVITE_Request_Base := {
		requestLine	:=
		{
			requestUri := p_requestUri
		},
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		}
	}
	
	template INVITE_Request mw_INVITE_Request_IMS_PAsserted_noPPreferred(template PChargingVector p_pChargingVector,
								template RecordRoute p_recordRoute,
								template Route p_route, template Via p_via, template SipUrl p_requestUri, template PAssertedID p_pAssertedID)
	modifies mw_INVITE_Request_Base := {
		msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit}
	}
	 
	template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := ?
	}
	  
	template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)),
						mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug)))
	}
	  
pintar's avatar
pintar committed
    template INVITE_Request mw_INVITE_Request_IMS_noCug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via ) modifies  mw_INVITE_Request_Base
    :=
    {
        msgHeader := {
            pChargingVector := p_pChargingVector,
            recordRoute := p_recordRoute,
            route := p_route,
            via := p_via
        },
        messageBody := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))),
                        mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)) ))
    }
	  
	template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies  mw_INVITE_Request_Base
	:=
	{
		msgHeader := {
			pChargingVector := p_pChargingVector,
			recordRoute := p_recordRoute,
			route := p_route,
			via := p_via
		},
		messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)),
						mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit
	}

	/*
	 * @desc Await INVITE using topology hiding
	 */
	template INVITE_Request mw_INVITE_Request_TH modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {	pChargingFunctionAddresses := omit,
						pChargingVector := omit}
	  }

	/*
	 * 
	 * @desc Await INVITE without PAsserted and Privacy
	 */
	template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from)
	  modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {  fromField := p_from,
						pAssertedID := omit,
						pPreferredID := omit}
	  }


	/*
	 * 
	 * @desc Await INVITE with PAsserted and Privacy
	 */
	template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
			modifies  mw_INVITE_Request_Base
			:=
			{
		msgHeader := {
			fromField := p_from,
			pAssertedID := p_pAssertedID,
			privacy := p_privacy}
		}
			
     /*
      * 
      * @desc Await INVITE with PAsserted and Privacy
      */
     template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy)
       modifies  mw_INVITE_Request_Base
       :=
       {
      msgHeader := {
      	  fromField := p_from,
          pAssertedID := p_pAssertedID,
          privacy := p_privacy ifpresent}
       }
rennoch's avatar
rennoch committed

     /*
      * 
      * @desc Await INVITE with PAsserted and Privacy
      */
     template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo)
       modifies  mw_INVITE_Request_Base
       :=
       {
      msgHeader := {
          historyInfo := p_historyInfo}
       }
poglitsch's avatar
poglitsch committed
	template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE	
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingFunctionAddresses := omit,
				          pChargingVector := omit}
		}
	  
poglitsch's avatar
poglitsch committed
	template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS	
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingFunctionAddresses := omit,
						  pChargingVector := omit}
		}	
		  
	template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base
		:=
	  	{
		  msgHeader := {pAssertedID := p_pAssertedID,
			 		    pPreferredID := omit
					   }
	    }

	template NOTIFY_Request mw_NOTIFY_Request(
		template CallId p_callId, 
		template charstring p_state,
		template charstring p_contentType,
		template Event p_event,
		template MessageBody p_mb
	) modifies mw_NOTIFY_Request_Base := {
		msgHeader :=
		{
			subscriptionState := mw_subscriptionState(p_state),
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  p_contentType},
			event := p_event
		},
		messageBody := p_mb
	}
		template PRACK_Request mw_PRACK_Request_sdp(template CallId p_callId, template MessageBody p_mb) modifies mw_PRACK_Request_Base :=
		{
			msgHeader :=
			{
				callId := p_callId
			},
            messageBody := p_mb
		}
poglitsch's avatar
poglitsch committed
	template MESSAGE_Request mw_MESSAGE_Request_PchargingVector	(template charstring p_id, template charstring p_paramValue)
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pChargingVector := mw_pChargingVector(p_id,p_paramValue)}
		}
	  
poglitsch's avatar
poglitsch committed
	template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo	
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := omit}
		}

poglitsch's avatar
poglitsch committed
	template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization	
		modifies mw_MESSAGE_Request_Base
		:=
		{
		  msgHeader := {  pMediaAuthorization := omit}
		}
		
	template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base :=
	{
		msgHeader := {  pChargingVector := p_pChargingVector}
	}

	template REGISTER_Request mw_REGISTER_Request_IMS	(template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := ?,
		  				  path := p_Path,
						  pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue)
						  pVisitedNetworkID := p_pVisitedNetworkID,
						  require := mw_require_path,
					      securityClient := omit,
						  securityVerify := omit
						  }
		}
	  


	template REGISTER_Request mw_REGISTER_authorizedRequest_IMS	(template Authorization p_authorization)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := p_authorization
						  }
		}
		
	template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS	(template Authorization p_authorization)
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := p_authorization,
						  securityClient := omit
						  }
		}
	template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  securityVerify := omit,
						  securityClient := omit
						  }
		}
		
	template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS	
		modifies mw_REGISTER_Request_Base
		:=
		{
		  msgHeader := {  authorization := ?
	template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS (
		template From p_from, 
		template To p_to, 
		template PAssertedID p_pAssertedID, 
		template PChargingVector p_pChargingVector
	)  modifies mw_SUBSCRIBE_Request_Base := {
		requestLine	:=
		{
			method := SUBSCRIBE_E
		},
		msgHeader :=
		{	fromField := p_from,
			toField := p_to,
			event	:= m_Event_reg,
			pAccessNetworkInfo := *,
			pChargingVector := p_pChargingVector
		}
	}
rennoch's avatar
rennoch committed
	template UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base :=
}//end group request_receive
group response_send
{
	template Response m_Response_2xxonBYE_UE (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,
				maxForwards := omit
			}
		}

	template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) 
		modifies m_Response_Base:=
	{
		msgHeader :=
		{
			//contact		:= p_contact,
			maxForwards := omit//,
			//recordRoute := p_recordRoute
		}
	}	
	
	template Response m_Response_18XonINVITE (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 //mandatory field due to 24 229 rel 7.9
			//maxForwards := omit,
			//rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}
	
poglitsch's avatar
poglitsch committed
	template Response m_Response_18XonINVITE_AlertInfo (
		StatusLine p_statusLine, 
		CallId p_callId, 
		CSeq p_cSeq,
		From p_from, 
		To p_to, 
		Via p_via, 
		AlertInfo p_alertInfo
	) modifies m_Response_Base:= {
		msgHeader :=
		{
			alertInfo	:= p_alertInfo
		}
	}
	
	template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			require		:= p_require,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		},
		messageBody := p_mb
	}
	
	template Response m_Response_18XonINVITE_UE (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,
			maxForwards := omit,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}

	
     template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
        From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:=
     {
      msgHeader :=
      {
       contact		:= p_contact,
	   historyInfo	:= p_historyInfo,
       rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
      }
     }
 
	template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
			pChargingVector := p_pChargingVector

		}
	}

     template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
        From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:=
     {
      msgHeader :=
      {
		pEarlyMedia := p_pEarlyMedia
      }
     }


	template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			pPreferredID := p_pPreferredID,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}	


	template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			pAssertedID := p_pAssertedID,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}
rennoch's avatar
rennoch committed
	template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			pAssertedID := p_pAssertedID,
			privacy := p_privacy,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}
	
	template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			privacy := p_privacy,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}
rennoch's avatar
rennoch committed

	
	template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			supported := p_supported,
			privacy := p_privacy,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		}
	}
			
	template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
			recordRoute := p_recordRoute//for INVITE response
		}
	}
	
poglitsch's avatar
poglitsch committed
	template Response m_Response_18XonINVITE_Require (
		StatusLine p_statusLine, 
		CallId p_callId, 
		CSeq p_cSeq,
		From p_from, 
		To p_to, 
		Via p_via, 
		Contact p_contact,
		Require p_require
	) modifies m_Response_Base:= {
		msgHeader :=
		{
			require := p_require
		}
	}
	
	template Response m_Response_18XonINVITE_Require_ifpresent (
		StatusLine p_statusLine, 
		CallId p_callId, 
		CSeq p_cSeq,
		From p_from, 
		To p_to, 
		Via p_via, 
		Contact p_contact,
		Require p_require
	) modifies m_Response_Base:= {
		msgHeader :=
		{
			require := p_require
		}
	}	
	
	template Response m_Response_18XonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			userToUser := m_UserToUserData(valueof(p_U2UData))
		}
	template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication},
			maxForwards := omit,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		},
		messageBody := p_mb
	}	
	
	template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
		},
		messageBody := p_mb
poglitsch's avatar
poglitsch committed
	}
	
	template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow ) modifies m_Response_Base:=
poglitsch's avatar
poglitsch committed
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			require 	:= p_require,
			rSeq		:= {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7
            allow 		:= p_allow
poglitsch's avatar
poglitsch committed
		},
		messageBody := p_mb
	}		
	
	template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) 
		modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}
	
	template Response m_Response_2xxonINVITE_HistoryInfo (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template HistoryInfo p_historyInfo, template MessageBody p_mb) 
				modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			historyInfo := p_historyInfo,
			maxForwards := omit,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}
	
	template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) 
				modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_mimeMultipart},
			maxForwards := omit,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}
	
	template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) 
		  modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}

	template Response m_Response_2xxonINVITE_PchargingVector (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, MessageBody p_mb, template Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_mbody :=
			contact := p_contact,
			pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
			pChargingVector := p_pChargingVector

		}
	}
	
	template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			pPreferredID := p_pPreferredID,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}	

	
	template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			pAssertedID := p_pAssertedID,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}	

rennoch's avatar
rennoch committed
	template Response m_Response_2XXonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			pAssertedID := p_pAssertedID,
			privacy := p_privacy,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}	

	template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			supported := p_supported,
			privacy := p_privacy,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}	
		
	template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			privacy := p_privacy,
			recordRoute := p_recordRoute//for INVITE response
		},
		messageBody := p_mb
	}			
	
	template Response m_Response_2xxonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb, template charstring p_U2UData) 
		modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			recordRoute := p_recordRoute,//for INVITE response
			userToUser := m_UserToUserData(valueof(p_U2UData))
		},
		messageBody := p_mb
	}
	template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url, SipUrl p_passociated_uri) 
		  modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			serviceRoute := {fieldName:=SERVICE_ROUTE_E,
			routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}},
			pAssociatedURI := m_pAssociatedURI({displayName:=omit,addrSpec:=p_passociated_uri})		// PAssociatedURI RFC3455
			
		}
	}
	

	template Response m_Response_2xxonSUBSCRIBE_IMS (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_2xxonSUBSCRIBE_UE (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_onMESSAGE_IMS(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_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a
	  	}
	}

	template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
			pChargingVector := p_pChargingVector
	  	}
	}


	template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue,
			pChargingVector := p_pChargingVector
	  	}
	}
	
	template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pMediaAuthorization := m_pMediaAuthorization_fixedValue
	  	}
	}
	
	template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			pPreferredID := p_pPreferredID
		}
	}
	
	template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) 
	modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
			maxForwards := omit,
			recordRoute := p_recordRoute
		},
		messageBody := p_mb
	}

	
	template Response m_Response_3XXonINVITE (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,
			maxForwards := omit
		}
	}
		
	
	template Response m_Response_4XXonINVITE (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,
			maxForwards := omit
		}
	}
		
	template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			  From p_from, To p_to, Via p_via, template Contact p_contact ) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit
		}
	}
	
	template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit
		}
	}
	
	template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
				From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, integer p_cause) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			contact		:= p_contact,
			maxForwards := omit,
			reason := mw_Reason(p_cause)
		}
	}
			
	template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:=
	{
		msgHeader :=
		{
			wwwAuthenticate := p_wwwAuthenticate
		}
	}	
	
}//end group response_send

group response_receive
{

	template Response mw_Response_200onINVITE_noPChargingVector_UE(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 :=
		{
			pChargingVector := omit
	  }
	}
poglitsch's avatar
poglitsch committed
	
	template Response mw_Response_200onINVITE_SDP_UE(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 := ?},
		messageBody := {
			sdpMessageBody := ?
		}
	}

	template Response mw_Response_2xxonMESSAGE_noPCharging_UE(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 :=
		{
			pChargingFunctionAddresses := omit,
			pChargingVector := omit
	  }
	}

	template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(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 :=
		{
			pChargingFunctionAddresses := omit,
			pChargingVector := omit
	  }
	}


	template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(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 :=
		{
			pAccessNetworkInfo := omit
	  }
	}

	template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(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 :=
		{
			pMediaAuthorization := omit
	  }
	}

	template Response mw_Response_401onREGISTER_securityServer_UE(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 :=
		{
			securityServer := ?,
			wwwAuthenticate := ?
	  }
	}

	template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			wwwAuthenticate := p_wwwAuthenticate
	  }
	}

	template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}},
			path := ?,
			serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}},
			pChargingFunctionAddresses := ?,
			pChargingVector := ?,
			contact := p_contact
	  }
	}
	
	template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
		  pAssertedID := p_pAssertedID,
		  pPreferredID := p_pPreferredID
	  }
	}

rennoch's avatar
rennoch committed
	template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			pAssertedID := p_pAssertedID,
			privacy := p_privacy,
			historyInfo := p_historyInfo
		}
	}

	template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
		  pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue)
	  }
	}

} // end response_receive

}//end modified_templates

}//end Message_templates

} // end module LibIms_Templates