Commit 42866337 authored by pintar's avatar pintar
Browse files

Corrections due to Iskratel validation STF387 week48

parent 7fa46637
Loading
Loading
Loading
Loading
+20 −29
Original line number Diff line number Diff line
@@ -1561,8 +1561,8 @@ group TP301_Sending_INVITE {

		f_mwIAM_v(mw_IAM_HOC(mw_HopC_Def));
		
		/*function with default mwACM, mwANM, mREL and mwRLC messages*/	
		f_mwACM_mwANM_mREL_mwRLC();
		/*function with default mACM, mANM, mwREL and mRLC messages*/	
		f_mACM_mANM_mwREL_mRLC();
	
	}
	
@@ -1596,11 +1596,8 @@ group TP302_Receiving_SAM {

	function f_EncapsIsup_TC_302_001() runs on SipComponent {

		/*function with default mwIAM message*/	
		f_mwIAM();
	
		/*function with default mwREL and mRLC messages*/	
		f_mwREL_mRLC();
		/*function with default mwIAM, mACM, mANM, mwREL and mRLC messages*/	
		f_mwIAM_mACM_mANM_mwREL_mRLC();
	}
	
	function f_EncapsIsup_TC_302_002() runs on SipComponent {
@@ -1635,80 +1632,72 @@ group TP302_Receiving_SAM {
	
	function f_EncapsIsup_TC_302_007() runs on SipComponent {

		/*function with default mwIAM message*/	
		f_mwIAM();
		
		/*function with default mwREL and mRLC messages*/	
		f_mwREL_mRLC();
		f_EncapsIsup_TC_302_001();
	}
	
	function f_EncapsIsup_TC_302_008() runs on SipComponent {

		f_EncapsIsup_TC_302_007();
		f_EncapsIsup_TC_302_001();
		
	}
	
	function f_EncapsIsup_TC_302_009() runs on SipComponent {

		/*function with default mwIAM message*/	
		f_mwIAM();
		
		/*function with default mwREL and mRLC messages*/	
		f_mwREL_mRLC();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_010() runs on SipComponent {

		f_EncapsIsup_TC_302_009();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_011() runs on SipComponent {

		f_EncapsIsup_TC_302_009();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_012() runs on SipComponent {

		f_EncapsIsup_TC_302_009();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_013() runs on SipComponent {

		f_EncapsIsup_TC_302_007();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_014() runs on SipComponent {

		f_EncapsIsup_TC_302_007();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_015() runs on SipComponent {

		f_EncapsIsup_TC_302_009();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_016() runs on SipComponent {

		f_EncapsIsup_TC_302_009();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_017() runs on SipComponent {

		f_EncapsIsup_TC_302_007();
		f_EncapsIsup_TC_302_001();
	
	}
	
	function f_EncapsIsup_TC_302_018() runs on SipComponent {

		f_EncapsIsup_TC_302_007();
		f_EncapsIsup_TC_302_001();
	
	}

@@ -1771,7 +1760,7 @@ group TP303_Sending_ACM {
		/*function with default mwIAM message*/	
		f_mwIAM();
		
		f_mACM_v(m_ACM_BCI(c_BCI_cldPstatInd_noInd));
		f_mACM_v(m_ACM_OBCI(m_OBCI_cDivMay));
		
		f_mCPG_v(m_CPG_EVI(c_EVI_eventInd_alert));
		
@@ -1841,10 +1830,12 @@ group TP304_Sending_CPG {
		/*function with default mwIAM message*/	
		f_mwIAM();
		
		f_mACM_v(m_ACM_BCI(c_BCI_cldPstatInd_noInd));
		f_mACM_v(m_ACM_OBCI(m_OBCI_cDivMay));
		
		f_mCPG_v(m_CPG_EVI(c_EVI_eventInd_alert));
		
		f_mANM();
		
		/*function with default mwREL and mRLC messages*/	
		f_mwREL_mRLC();
	
+81 −41
Original line number Diff line number Diff line
@@ -307,6 +307,18 @@ import from LibCommon_VerdictControl all;
		  		v_SDP_remote := loc_INVITE_Request.messageBody.sdpMessageBody;
		  		v_SDP_remote_is_valid := true;
		  		f_prepareSDPanswer(false);};
		  if (ischosen(loc_INVITE_Request.messageBody.mimeMessageBody)){
			for (var integer i := 0; i<sizeof(loc_INVITE_Request.messageBody.mimeMessageBody.mimeEncapsulatedParts); i:=i+1)
    		{	
    			if (ischosen(loc_INVITE_Request.messageBody.mimeMessageBody.mimeEncapsulatedParts[i].mime_encapsulated_part.sdpMessageBody))
    			{
    				v_SDP_remote := loc_INVITE_Request.messageBody.mimeMessageBody.mimeEncapsulatedParts[i].mime_encapsulated_part.sdpMessageBody;
    				v_SDP_remote_is_valid := true;
    				f_prepareSDPanswer(false);
    				break;
				};
    		}
    	  }
		};
		if (ispresent(loc_INVITE_Request.msgHeader.supported.optionsTags))
		{
@@ -1086,8 +1098,9 @@ import from LibCommon_VerdictControl all;
	{
//		f_awaitingResponse_andAck(mw_Response_200_Encaps(v_CallId, v_CSeq, loc_ISUP_BICC), 0, doAck);	
		f_awaiting2ResponsesAck(
  			mw_Response_200_MIME(v_CallId, v_CSeq, loc_ISUP_BICC), // MIME content type
			mw_Response_200_Encaps(v_CallId, v_CSeq, loc_ISUP_BICC),  // ISUP content type
			mw_Response_200_MIME(v_CallId, v_CSeq, loc_ISUP_BICC), doAck); // MIME content type
			doAck);
	} // end f_awaiting200OkResponse_andAck

	/* 
@@ -1368,7 +1381,7 @@ import from LibCommon_VerdictControl all;
				TResp.stop;
				v_ignore_bye:= true;
				f_setHeadersOnReceiptOfBye(v_BYE_Request);
				f_send200OK_MIME();
				f_send200OKBYE_MIME();
			  }
			// Ignore other Request
			[] SIPP.receive {
@@ -1745,7 +1758,7 @@ import from LibCommon_VerdictControl all;
								v_From,
								v_Cancel_To,
								v_reqHostPort,
								valueof(m_MBody_SDP_ISUP_s_2(v_rel_msg)));
								valueof(m_MBody_ISUP(v_rel_msg)));
					f_awaitSUTidle();
					f_RemoveRegistration(v_CSeq);
					syncPort.send(m_syncClientStop);
@@ -1831,17 +1844,17 @@ group SendMessage {
	{	var MessageBody v_messagebody := {sdpMessageBody:=v_SDP_local};
		if(v_SDP_remote_is_valid and loc_sdp_flag)
			{if (not noencaps)
				{SIPP.send(m_Response_180_2 // SDP and ISUP
				{SIPP.send(m_Response_180_MIME // SDP and ISUP
					(v_CallId, v_CSeq, caller_From, caller_To, v_Via, 
					 valueof(m_MBody_SDP_ISUP_s_1( v_SDP_local,loc_ISUP)))) to sent_label;}
					 valueof(m_MBody_SDP_ISUP( v_SDP_local,loc_ISUP)))) to sent_label;}
				else {SIPP.send(m_Response_180_2
					(v_CallId, v_CSeq, caller_From, caller_To, v_Via, v_messagebody)) to sent_label;}; // SDP only			
//					(v_CallId, v_CSeq, caller_From, caller_To, v_Via, valueof({sdpMessageBody:=v_SDP_local}))) to sent_label;}; // SDP only			
			}
		else {if (not noencaps) // without SDP
				{SIPP.send(m_Response_180_2 // no SDP but ISUP
				{SIPP.send(m_Response_180_ISUP // no SDP but ISUP
					(v_CallId, v_CSeq, caller_From, caller_To, v_Via, 
					 valueof(m_MBody_SDP_ISUP_s_2(loc_ISUP)))) to sent_label;}
					 valueof(m_MBody_ISUP(loc_ISUP)))) to sent_label;}
				else {SIPP.send(m_Response_180_1 // no SDP no ISUP
					(v_CallId, v_CSeq, caller_From, caller_To, v_Via )) to sent_label;}; 
		}
@@ -1859,8 +1872,8 @@ group SendMessage {
	function f_send183_Encaps(in boolean noencaps, in template ISUP_BICC_MSG loc_ISUP) runs on SipComponent
	{
		if (not noencaps) 
			{SIPP.send(m_Response_183_2
				(v_CallId, v_CSeq, caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP_s_2(loc_ISUP)))) to sent_label;}
			{SIPP.send(m_Response_183_ISUP
				(v_CallId, v_CSeq, caller_From, caller_To, v_Via, valueof(m_MBody_ISUP(loc_ISUP)))) to sent_label;}
			else {SIPP.send(m_Response_183_1
				(v_CallId, v_CSeq, caller_From, caller_To, v_Via )) to sent_label;};
	}
@@ -1883,12 +1896,12 @@ group SendMessage {
	  if (v_BOO_RecordRoute)
	  {
		SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
		  caller_From, caller_To, v_Via, {sdpMessageBody:=v_SDP_local}, v_RecordRoute)) to sent_label;
		  caller_From, caller_To, v_Via, {sdpMessageBody:=v_SDP_local}, v_RecordRoute, v_Contact)) to sent_label;
	  }
	  else
	  {
		SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
		  caller_From, caller_To, v_Via, {sdpMessageBody:=v_SDP_local}, omit )) to sent_label;
		  caller_From, caller_To, v_Via, {sdpMessageBody:=v_SDP_local}, omit, v_Contact )) to sent_label;
	  };
	}
    
@@ -1899,13 +1912,13 @@ group SendMessage {
		{
			if (v_BOO_RecordRoute)
			{
			  SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
				caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP_s_1(v_SDP_local, loc_ISUP)), v_RecordRoute)) to sent_label;
			  SIPP.send(m_Response_200_MIMEwithRoute_1(v_CallId, v_CSeq,
				caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP(v_SDP_local, loc_ISUP)), v_RecordRoute, v_Contact)) to sent_label;
			}
			else
			{
			  SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
				caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP_s_1(v_SDP_local, loc_ISUP)), omit )) to sent_label;
			  SIPP.send(m_Response_200_MIMEwithRoute_1(v_CallId, v_CSeq,
				caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP(v_SDP_local, loc_ISUP)), omit, v_Contact )) to sent_label;
			};
		}
		else
@@ -1913,12 +1926,12 @@ group SendMessage {
			if (v_BOO_RecordRoute)
				{
				  SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
					caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP_s_2(loc_ISUP)), v_RecordRoute)) to sent_label;
					caller_From, caller_To, v_Via, valueof(m_MBody_ISUP(loc_ISUP)), v_RecordRoute, v_Contact)) to sent_label;
				}
				else
				{
				  SIPP.send(m_Response_200_Invite_WithRoute_1(v_CallId, v_CSeq,
					caller_From, caller_To, v_Via, valueof(m_MBody_SDP_ISUP_s_2(loc_ISUP)), omit )) to sent_label;
					caller_From, caller_To, v_Via, valueof(m_MBody_ISUP(loc_ISUP)), omit, v_Contact )) to sent_label;
				};
		}

@@ -1952,17 +1965,17 @@ group SendMessage {
	  };
	}

	function f_send200OK_MIME() runs on SipComponent
	function f_send200OKBYE_MIME() runs on SipComponent
	{
		if (v_BOO_RecordRoute)
		{
		  SIPP.send(m_Response_200_MIMEwithRoute_1(v_CallId, v_CSeq,
			v_From, v_To, v_Via, valueof(m_MBody_SDP_ISUP_s_2(v_rlc_msg)), v_RecordRoute )) to sent_label;
		  SIPP.send(m_Response_200_ISUPwithRoute_1(v_CallId, v_CSeq,
			v_From, v_To, v_Via, valueof(m_MBody_ISUP(v_rlc_msg)), v_RecordRoute )) to sent_label;
		}
		else
		{
		  SIPP.send(m_Response_200_MIME_1(v_CallId, v_CSeq,
			v_From, v_To, v_Via, valueof(m_MBody_SDP_ISUP_s_2(v_rlc_msg)))) to sent_label;
		  SIPP.send(m_Response_200_ISUPwithRoute_1(v_CallId, v_CSeq,
			v_From, v_To, v_Via, valueof(m_MBody_ISUP(v_rlc_msg)), omit)) to sent_label;
		};
	}

@@ -1978,6 +1991,11 @@ group SendMessage {
	  };
	}
    
		function f_sendResponse(template Response p_response) runs on SipComponent
		{
			SIPP.send(p_response) to sent_label;
		}
    
		/* 
		*  @desc Send PRACK message
		*        Check that u-law PCMA is not included
@@ -2166,7 +2184,7 @@ group SendMessage {
//					v_To,
//					v_Via,
//					v_Contact,
//					valueof(m_MBody_SDP_ISUP_s_1(valueof(m_SDP(m_media_PT0_PT8_attr({m_attribute_curr_n,m_attribute_des_sr}))),loc_msg)) //[IAM encapsulated]
//					valueof(m_MBody_SDP_ISUP(valueof(m_SDP(m_media_PT0_PT8_attr({m_attribute_curr_n,m_attribute_des_sr}))),loc_msg)) //[IAM encapsulated]
//					)) to sent_label;
//			}
	} // end of f_SendINVITE_MIME_precond
@@ -2233,7 +2251,7 @@ group SendMessage {
					v_To,
					v_Via,
					v_Contact,
					valueof(m_MBody_SDP_ISUP_s_1(valueof(m_SDP_medialist(loc_SDPmedialist)),loc_msg)) //[IAM encapsulated]
					valueof(m_MBody_SDP_ISUP(valueof(m_SDP_medialist(loc_SDPmedialist)),loc_msg)) //[IAM encapsulated]
					)) to sent_label;
			}
	} // end of f_SendINVITE_MIME_precond_SDPlist
@@ -2254,7 +2272,7 @@ group SendMessage {
				v_To,
				v_Via,
				v_def_Contact,
				valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
				valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
				)) to sent_label;
//			SIPP.send (
//					m_INVITE_Request_2(
@@ -2276,7 +2294,7 @@ group SendMessage {
					v_To,
					v_Via,
					v_Contact,
					valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
					valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
					)) to sent_label;
			} else {
			SIPP.send (
@@ -2288,7 +2306,7 @@ group SendMessage {
					v_To,
					v_Via,
					v_Contact,
					valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
					valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)) //[IAM encapsulated]
					)) to sent_label;
			}
										
@@ -2311,7 +2329,7 @@ group SendMessage {
				v_To,
				v_Via,
				v_def_Contact,
				valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
				valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
				loc_Privacy,
				loc_passertedid
				)) to sent_label;
@@ -2335,7 +2353,7 @@ group SendMessage {
					v_To,
					v_Via,
					v_Contact,
					valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
					valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
					loc_Privacy,
					loc_passertedid
					)) to sent_label;
@@ -2349,7 +2367,7 @@ group SendMessage {
					v_To,
					v_Via,
					v_Contact,
					valueof(m_MBody_SDP_ISUP_s_1(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
					valueof(m_MBody_SDP_ISUP(valueof(loc_SDP),loc_msg)), //[IAM encapsulated]
					loc_Privacy,
					loc_passertedid
					)) to sent_label;
@@ -2656,7 +2674,7 @@ group SendMessage {
				v_From,
				v_To,
				v_Via,
				valueof(m_MBody_SDP_ISUP_s_2(loc_msg)) //[IAM encapsulated]
				valueof(m_MBody_ISUP(loc_msg)) //[IAM encapsulated]
		)) to sent_label;
		
	} // end of f_SendUPDATE
@@ -2880,7 +2898,7 @@ group GlobalSteps {
			caller_From,
			caller_To,
			v_reqHostPort,
			valueof(m_MBody_SDP_ISUP_s_2(v_rel_msg)));
			valueof(m_MBody_ISUP(v_rel_msg)));

	} // end function f_terminateCall

@@ -3019,16 +3037,30 @@ group GlobalSteps {
	*  @desc check if message body include SDP media (2nd parameter)
	*		 
	*/
	function f_check_media(in MessageBody loc_sdp, in template SDP_media_desc loc_media) runs on SipComponent return boolean {
	function f_check_media(in MessageBody p_mb, in template SDP_media_desc p_media) runs on SipComponent return boolean {
		
	if (ischosen(loc_sdp.sdpMessageBody) and ispresent(loc_sdp.sdpMessageBody.media_list)) {
		for (var integer j:=0; j<sizeof(loc_sdp.sdpMessageBody.media_list); j:=j+1){			
			if (match(loc_sdp.sdpMessageBody.media_list[j].media_field.transport,loc_media.media_field.transport) and
				match(loc_sdp.sdpMessageBody.media_list[j].media_field.fmts,loc_media.media_field.fmts) and
				not match(loc_sdp.sdpMessageBody.media_list[j].media_field.ports.port_number,0)) // not rejected
	if (ischosen(p_mb.sdpMessageBody) and ispresent(p_mb.sdpMessageBody.media_list)) {
		for (var integer j:=0; j<sizeof(p_mb.sdpMessageBody.media_list); j:=j+1){			
			if (match(p_mb.sdpMessageBody.media_list[j].media_field.transport,p_media.media_field.transport) and
				match(p_mb.sdpMessageBody.media_list[j].media_field.fmts,p_media.media_field.fmts) and
				not match(p_mb.sdpMessageBody.media_list[j].media_field.ports.port_number,0)) // not rejected
				{return(true);};
			};
	}	
	//if (ischosen(p_mb.mimeMessageBody.mimeEncapsulatedParts.mime_encapsulated_part.sdpMessageBody) and ispresent(p_mb.mimeMessageBody.mimeEncapsulatedParts[].mime_encapsulated_part.sdpMessageBody.media_list)) {
	if (ischosen(p_mb.mimeMessageBody)) {	
		for (var integer i:=0; i<sizeof(p_mb.mimeMessageBody.mimeEncapsulatedParts); i:=i+1) {
			if (ispresent(p_mb.mimeMessageBody.mimeEncapsulatedParts[i].mime_encapsulated_part.sdpMessageBody.media_list)) {
				var SDP_Message v_sdp := p_mb.mimeMessageBody.mimeEncapsulatedParts[i].mime_encapsulated_part.sdpMessageBody;
        		for (var integer j:=0; j<sizeof(v_sdp.media_list); j:=j+1){			
        			if (match(v_sdp.media_list[j].media_field.transport,p_media.media_field.transport) and
        				match(v_sdp.media_list[j].media_field.fmts,p_media.media_field.fmts) and
        				not match(v_sdp.media_list[j].media_field.ports.port_number,0)) // not rejected
        				{return(true);};
        		};
			}
		}
	}
	return(false);
	}		

@@ -3270,7 +3302,8 @@ group GlobalSteps {
	{
		var integer mn, cn := 0, i, j, k :=0;
		var charstring v_PT, v_rtpmap := "";
		var charstring mypat :="[ \t]#(0,)([/d]+)*";
		var template charstring  mypat := pattern "[ \t]#(0,)([\d]+)*"; //"[ \t]#(0,)([/d]+)*";
		
		var SDP_attribute_list v_mediaAttributes := {};
		f_copySDP(); // TO BE DONE with more details!
		//increase session version
@@ -3294,6 +3327,10 @@ group GlobalSteps {
				{
					if (ischosen(v_SDP_local.media_list[i].attributes[j].rtpmap))
					{
					 	//log(v_SDP_local.media_list[i].attributes[j].rtpmap);
						//log(v_PT);
						//log(regexp(v_SDP_local.media_list[i].attributes[j].rtpmap.attr_value,	mypat,	0));
						
						//if (v_PT == regexp(v_SDP_local.media_list[i].attributes[j].rtpmap.attr_value,"[ \t]#{0,}([/d]+)*",0))
						if (v_PT == regexp(v_SDP_local.media_list[i].attributes[j].rtpmap.attr_value,	mypat,	0))
						{
@@ -3529,6 +3566,9 @@ group Preambles {
		//Defaults
		v_def_catchSyncStop := activate(a_Sip_catchSyncStop());
		v_Default := activate (a_clearRegistration());
		//set header fields in case Registration is not used
		v_def_Contact:= valueof(m_Contact_ETS);
		v_Contact:= valueof(m_Contact_ETS);

		//Preamble
		f_Registration(loc_CSeq_s);
@@ -3555,7 +3595,7 @@ group Postambles {
			loc_From,
			loc_To,
			v_reqHostPort,
			valueof(m_MBody_ISUP_1(v_rel_msg)));
			valueof(m_MBody_ISUP(v_rel_msg)));

		f_SIP_postamble_00()
	}
+265 −287

File changed.

Preview size limit exceeded, changes collapsed.

+145 −79
Original line number Diff line number Diff line
@@ -108,11 +108,6 @@ group SubFields
	  headers := omit
	}

	template SipUrl m_SipUrlPhone_ofETS modifies m_SipUrl_ofETS:=  	// SIP-URL of the test system on SIP side
	{
	  urlParameters := {{ id := "user", paramValue :="phone" }}
	}

	template SipUrl m_SipUrl_ofETS2 modifies m_SipUrl_ofETS :=  	// SIP-URL of the test system on SIP side
	{
	  userInfo := 			// optional
@@ -243,6 +238,36 @@ group SubFields
	  headers := omit
	};

	template SipUrl mw_SipUrl_ofETS :=  	// SIP-URL of the test system on SIP side
	{
		scheme := SIP_SCHEME,  		// contains "sip"
		userInfo := 			// optional
		{
        	userOrTelephoneSubscriber := PX_SIP_ETS_LOCAL_USER,// charstring
        	password := *		// optional charstring
		},
		hostPort :=
		{
        	host := PX_SIP_ETS_IPADDR,	// hostname, IPv4 or IPv6 as a charstring
        	portField := PX_SIP_ETS_PORT	//optional integer
		},
		urlParameters := *,
		headers := *
	}

	template SipUrl mw_SipUrlPhone_ofETS modifies mw_SipUrl_ofETS:=  	// SIP-URL of the test system on SIP side
	{
			urlParameters := {{ id := "user", paramValue :="phone" }}
	}

	template SipUrl mw_SipUrl_ofETS2 modifies mw_SipUrl_ofETS :=  	// SIP-URL of the test system on SIP side
	{
		userInfo := 			// optional
		{
			userOrTelephoneSubscriber := PX_SIP_ETS_LOCAL_USER_FULL // charstring
		}
	}
	
	template SipUrl mw_SipUrl_Number(charstring loc_number) :=  	// SIP-URL with a calling party number
	{
	  scheme := SIP_SCHEME,  		// contains "sip"
@@ -417,6 +442,20 @@ group Headers
	  toParams := omit
	};

     template To mw_To(template SipUrl loc_SipUrl) :=
     {
       fieldName := TO_E,
       addressField :=({addrSpecUnion := loc_SipUrl
						},
       					{nameAddr := {
    						displayName := "IUT", 	 			// optional charstring
    						addrSpec :=	loc_SipUrl		// SipUrl
            				}
       					}
       				),//end addressField
       toParams := omit
     };

	template To m_To_IUT :=
	{
	  fieldName := TO_E,
@@ -1304,7 +1343,7 @@ group Requests
	modifies mw_INVITE_Request_1
	:=
	{
		messageBody := mw_MBody_SDP_ISUP_1(loc_INV) // with SDP
		messageBody := mw_MBody_MIME(loc_INV) // with SDP
	}

	template Request mw_INVITE_RequestTo_Encaps (template To loc_To, template ISUP_BICC_MSG loc_INV)
@@ -1312,7 +1351,7 @@ group Requests
	:=
	{
		msgHeader :={toField := loc_To},
		messageBody := mw_MBody_SDP_ISUP_1(loc_INV)
		messageBody := mw_MBody_MIME(loc_INV)
	}


@@ -1320,13 +1359,13 @@ group Requests
	modifies mw_INVITE_Request_1
	:=
	{
		messageBody := mw_MBody_SDP_ISUP_1(loc_INV)
		messageBody := mw_MBody_MIME(loc_INV)
	}
	template Request mw_INVITE_Request_Encaps_3 (template SDP_Message loc_SDP, template ISUP_BICC_MSG loc_INV)
	modifies mw_INVITE_Request_1
	:=
	{
		messageBody := m_MBody_SDP_ISUP_s_1(valueof(loc_SDP), loc_INV)
		messageBody := m_MBody_SDP_ISUP(valueof(loc_SDP), loc_INV)
	}
	/* added on 12.12.06 by Butinskaya Inga, IUT */
	template Request mw_INVITE_Request_Encaps_CLIP (template ISUP_BICC_MSG loc_INV)
@@ -1643,7 +1682,7 @@ group Requests
	modifies mw_CANCEL_Request_1
	:=
	{
		messageBody := mw_MBody_SDP_ISUP_2(loc_MSG)
		messageBody := mw_MBody_ISUP(loc_MSG)
	}

	template Request mw_CANCEL_Request_Encaps 
@@ -1651,7 +1690,7 @@ group Requests
	modifies mw_CANCEL_Request_1
	:=
	{
		messageBody := m_MBody_ISUP_1(loc_MSG)
		messageBody := m_MBody_ISUP(loc_MSG)
	}
 
 	  template Request m_BYE_Request_noroute_1
@@ -1848,14 +1887,14 @@ group Requests
	modifies mw_BYE_Request_1
	:=
	{
		messageBody := m_MBody_ISUP_1(loc_REL)
		messageBody := m_MBody_ISUP(loc_REL)
	}
	
	template Request mw_BYE_Request_MIME (template CallId loc_CallId, template ISUP_BICC_MSG loc_REL)
	modifies mw_BYE_Request_1
	:=
	{
		messageBody := m_MBody_SDP_ISUP_s_2(loc_REL)
		messageBody := m_MBody_ISUP(loc_REL)
	}

	template Request m_ACK_Request_1 (HostPort loc_reqHostPort, CallId loc_CallId, CSeq loc_CSeq,
@@ -2400,7 +2439,7 @@ group Requests
  pPreferredID := *,  // due to new message header field
  privacy := * // due to new message header field
	},
	messageBody := m_MBody_SDP_ISUP_s_2(loc_ISUP),
	messageBody := m_MBody_ISUP(loc_ISUP),
	payload := *
  }
  
@@ -2577,7 +2616,7 @@ group Responses
	  :=
	  {
		statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := loc_code, reasonPhrase := loc_phrase},
		messageBody := m_MBody_SDP_ISUP_s_2(loc_ISUP)
		messageBody := m_MBody_ISUP(loc_ISUP)
	  }

	template Response m_Response_XXX_withCause (CallId loc_CallId, CSeq loc_CSeq,
@@ -2642,16 +2681,33 @@ group Responses
		messageBody := loc_MB
	  }

	template Response m_Response_180_Encaps (CallId loc_CallId, CSeq loc_CSeq, MessageBody loc_MB)
	modifies mw_Response_1XX_1
	template Response m_Response_180_ISUP (CallId loc_CallId, CSeq loc_CSeq,
	From loc_From, To loc_To, Via loc_Via, MessageBody loc_MB)
	modifies m_Response_200_1
	// (loc_CallId, loc_CSeq)  // original params
	:=
	{
	  statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 180, reasonPhrase := ?},
		statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 180, reasonPhrase := "Ringing"},
		msgHeader :=
		{
    		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:=  f_MessageBodyLength(loc_MB)},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  MIME_APPLICATION}
    		contentType := m_IsupContentType
		},
		messageBody := loc_MB
	}

	template Response m_Response_180_MIME (CallId loc_CallId, CSeq loc_CSeq,
	From loc_From, To loc_To, Via loc_Via, MessageBody loc_MB)
	modifies m_Response_200_1
	// (loc_CallId, loc_CSeq)  // original params
	:=
	{
	  statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 180, reasonPhrase := "Ringing"},
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:=  f_MessageBodyLength(loc_MB)},
		contentType := m_MimeContentType,
		mimeVersion := m_MimeVersion
	  },
	  messageBody := loc_MB
	}
@@ -2671,7 +2727,7 @@ group Responses
	:=
	{
	  statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 180, reasonPhrase := ?},
	  messageBody := mw_MBody_SDP_ISUP_1(loc_ISUP)
	  messageBody := (mw_MBody_MIME(loc_ISUP), m_MBody_ISUP(loc_ISUP))
	}
      
	template Response m_Response_183_1 (CallId loc_CallId, CSeq loc_CSeq,
@@ -2721,6 +2777,20 @@ group Responses
		}
	  }

	template Response m_Response_183_ISUP (CallId loc_CallId, CSeq loc_CSeq,
		From loc_From, To loc_To, Via loc_Via, MessageBody loc_MB)
		modifies m_Response_200_1
		:=
		{
    		statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 183, reasonPhrase := "Session Progress"},
    		msgHeader :=
    		{
    			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(loc_MB)},
				contentType := m_IsupContentType
    		},
				messageBody := loc_MB
		}

	template Response mw_Response_183_1 (CallId loc_CallId, CSeq loc_CSeq)
	modifies mw_Response_1XX_1
	// (loc_CallId, loc_CSeq)  // original params
@@ -2736,7 +2806,7 @@ group Responses
	:=
	{
	  statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := 183, reasonPhrase := ?},
	  messageBody := m_MBody_SDP_ISUP_s_2(loc_ISUP)//{aCM_MSG :=mw_ACM_MSG_Def})
	  messageBody := m_MBody_ISUP(loc_ISUP)//{aCM_MSG :=mw_ACM_MSG_Def})
	}

	template Response mw_Response_1XX_1 (CallId loc_CallId, CSeq loc_CSeq) :=
@@ -3095,16 +3165,34 @@ group Responses
	  
	}
      
	template Response m_Response_200_ISUPwithRoute_1
	(CallId loc_CallId, CSeq loc_CSeq, From loc_From, To loc_To, Via loc_Via,
	MessageBody loc_MB, template RecordRoute loc_Route)
	modifies m_Response_200_MIME_1
	:=
	{
		msgHeader :=
		{
    		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:=  f_MessageBodyLength(loc_MB)},
    		contentType := m_IsupContentType,
    		recordRoute:=loc_Route
		},
		messageBody := loc_MB
	  
	}
      
	template Response m_Response_200_MIMEwithRoute_1
	(CallId loc_CallId, CSeq loc_CSeq, From loc_From, To loc_To, Via loc_Via,
	MessageBody loc_MB, RecordRoute loc_Route)
	MessageBody loc_MB, template RecordRoute loc_Route, template Contact p_contact)
	modifies m_Response_200_MIME_1
	:=
	{
	  msgHeader :=
	  {
	  	contact	:=	p_contact,
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:=  f_MessageBodyLength(loc_MB)},
        contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  MIME_APPLICATION},
        contentType := m_MimeContentType,
		mimeVersion := m_MimeVersion,
		recordRoute:=loc_Route
	  },
	  messageBody := loc_MB
@@ -3126,12 +3214,13 @@ group Responses
      
	template Response m_Response_200_Invite_WithRoute_1
	  (CallId loc_CallId, CSeq loc_CSeq, From loc_From, To loc_To,
		Via loc_Via, MessageBody loc_MB, template RecordRoute loc_Route)
		Via loc_Via, MessageBody loc_MB, template RecordRoute loc_Route, template Contact p_contact)
	  modifies m_Response_200_Invite_1
	  :=
	  {
		msgHeader :=
		{
		  contact := p_contact,
		  recordRoute:=loc_Route
		}
	  }
@@ -3224,14 +3313,14 @@ group Responses
	modifies mw_Response_200_1
	:=
	{
		messageBody := m_MBody_ISUP_1(loc_ISUP_BICC)
		messageBody := m_MBody_ISUP(loc_ISUP_BICC)
	}
	
	template Response mw_Response_200_MIME(template CallId loc_CallId, template CSeq loc_CSeq, template ISUP_BICC_MSG loc_ISUP_BICC)
	modifies mw_Response_200_1
	:=
	{
		messageBody := m_MBody_SDP_ISUP_s_2(loc_ISUP_BICC)
		messageBody := mw_MBody_MIME(loc_ISUP_BICC)
	}
	template Response mw_Response_200_SDP(template CallId loc_CallId, template CSeq loc_CSeq, template SDP_Message loc_SDP)
	modifies mw_Response_200_1
@@ -3266,7 +3355,7 @@ group Responses
	modifies m_Response_480_1
	:=
	{
		messageBody := m_MBody_SDP_ISUP_s_2(loc_ISUP_BICC)
		messageBody := m_MBody_ISUP(loc_ISUP_BICC)
	}
	template Response m_Response_484_1 (CallId loc_CallId, CSeq loc_CSeq, From loc_From, To loc_To, Via loc_Via)
	modifies m_Response_200_1
@@ -3392,14 +3481,14 @@ group Responses
	  modifies mw_Response_Final
	  :=
	  {
		messageBody := m_MBody_SDP_ISUP_s_2(loc_RLC)
		messageBody := m_MBody_ISUP(loc_RLC)
	  }
	  
	template Response mw_Response_Final_RLC_encaps (CallId loc_CallId, CSeq loc_CSeq, template ISUP_BICC_MSG loc_RLC)
	  modifies mw_Response_Final
	  :=
	  {
		messageBody := m_MBody_ISUP_1(loc_RLC)
		messageBody := m_MBody_ISUP(loc_RLC)
	  }
	  
	template Response m_Response_503_1 (CallId loc_CallId, CSeq loc_CSeq, From loc_From, To loc_To, Via loc_Via)
@@ -3445,7 +3534,7 @@ group Responses
	:=
	{
  		statusLine := {sipVersion := SIP_NAME_VERSION, statusCode := loc_statusCode, reasonPhrase := ?},
		messageBody := m_MBody_SDP_ISUP_s_2(loc_REL)
		messageBody := m_MBody_ISUP(loc_REL)
	}
} //end group Responses
} //end group MessageTemplates
@@ -3471,7 +3560,7 @@ group SDP_Messages {
		phone_numbers := omit,
		connection := {
			net_type := "IN",
			addr_type := "IN4",
			addr_type := "IP4",
			conn_addr := { addr:= PX_SIP_ETS_IPADDR, ttl:=omit, num_of_addr:=omit }
		}, //c=IN IP4 172.27.1.219
		bandwidth := omit,
@@ -4031,7 +4120,7 @@ group SDP_Fields {

group MBody
{
	template MessageBody m_MBody_SDP_ISUP_s_1(SDP_Message loc_SDP,template ISUP_BICC_MSG loc_ISUP):=
	template MessageBody m_MBody_SDP_ISUP(SDP_Message loc_SDP,template ISUP_BICC_MSG loc_ISUP):=
	{
		mimeMessageBody := {boundary:=PX_SIP_MIME_Boundary, 
			mimeEncapsulatedParts:= {
@@ -4045,45 +4134,28 @@ group MBody
		}
	}

//	template MessageBody m_MBody_SDP_ISUP_s_3(MessageBody loc_MB):=
//			{
//				mimeMessageBody:={ // union
//				  boundary:=PX_SIP_MIME_Boundary,//PIXIT parameter
//		  	  
//				  mimeEncapsulatedParts:={
//					  {
//						content_type:=PX_SIP_SDP_ContentType,
//						content_disposition:=omit,
//						mime_encapsulated_part:={sdpMessageBody:=loc_MB.sdpMessageBody}
//					  },
//			  	  
//					  {
//						content_type:=PX_SIP_ISUP_ContentType,
//						content_disposition:=PX_SIP_ISUP_ContentDisposition,
//						mime_encapsulated_part:={isupBiccMessageBody:=loc_MB.isupBiccMessageBody}
//					  }
//				  }
//				}
//			  }
			  
	
	template MessageBody m_MBody_SDP_ISUP_s_2(template ISUP_BICC_MSG loc_ISUP):=
			{
				mimeMessageBody:={ // union
				  boundary:=PX_SIP_MIME_Boundary,//PIXIT parameter
		  	  
				  mimeEncapsulatedParts:={
					  {
						content_type:=PX_SIP_ISUP_ContentType,
						content_disposition:=PX_SIP_ISUP_ContentDisposition, 
						mime_encapsulated_part:={isupBiccMessageBody:=loc_ISUP}
					  }
				  }
				}
			  }
			  
	template MessageBody m_MBody_SDP_ISUP_s_3(MessageBody loc_MB):=
			{
				mimeMessageBody:={ // union
				  boundary:=PX_SIP_MIME_Boundary,//PIXIT parameter
		  	  
				  mimeEncapsulatedParts:={
					  {
						content_type:=PX_SIP_SDP_ContentType,
						content_disposition:=omit,
						mime_encapsulated_part:={sdpMessageBody:=loc_MB.sdpMessageBody}
					  },
			  	  
					  {
						content_type:=PX_SIP_ISUP_ContentType,
						content_disposition:=PX_SIP_ISUP_ContentDisposition,
						mime_encapsulated_part:={isupBiccMessageBody:=loc_MB.isupBiccMessageBody}
					  }
				  }
				}
			  }
			  
	template MessageBody mw_MBody_SDP_ISUP_1(template ISUP_BICC_MSG loc_ISUP):=
	template MessageBody mw_MBody_MIME(template ISUP_BICC_MSG loc_ISUP):=
	{
		mimeMessageBody := {boundary:=?,//PX_SIP_MIME_Boundary, 
			mimeEncapsulatedParts:= {
@@ -4098,18 +4170,12 @@ group MBody
	}

			  
	template MessageBody mw_MBody_SDP_ISUP_2(template ISUP_BICC_MSG loc_ISUP):=
	template MessageBody mw_MBody_ISUP(template ISUP_BICC_MSG loc_ISUP):=
	{
		mimeMessageBody := {boundary:=PX_SIP_MIME_Boundary, 
			mimeEncapsulatedParts:= {
			{content_type:=PX_SIP_ISUP_ContentType, 
				content_disposition:=PX_SIP_ISUP_ContentDisposition,
				mime_encapsulated_part:={isupBiccMessageBody:=loc_ISUP}}
			}
		}
		isupBiccMessageBody := loc_ISUP
	}

	template MessageBody m_MBody_ISUP_1(template ISUP_BICC_MSG loc_ISUP):=
	template MessageBody m_MBody_ISUP(template ISUP_BICC_MSG loc_ISUP):=
	{
		isupBiccMessageBody := loc_ISUP
	}
+40 −13
Original line number Diff line number Diff line
@@ -1142,7 +1142,6 @@ group SubTypes{// Subtypes
      {
        RequestLine			requestLine,
        MessageHeader 		msgHeader,
//		charstring			messageBody optional,
		MessageBody			messageBody optional,
        Payload				payload	    optional
      } 
@@ -1155,7 +1154,6 @@ group SubTypes{// Subtypes
      {
        StatusLine			statusLine,
        MessageHeader 		msgHeader,
//		charstring			messageBody optional,
		MessageBody			messageBody optional,
        Payload				payload	    optional
      } 
@@ -1200,29 +1198,46 @@ function f_MessageBodyLength(MessageBody loc_MB_par) return integer {
		result := f_singleSDPlength(loc_MB_par.sdpMessageBody);
	};
		
	//assume ISUP_Message ONLY in the message body
	if (ischosen(loc_MB_par.isupBiccMessageBody)){ 
 		result := f_singleISUPlength(loc_MB_par.isupBiccMessageBody);
 	};

	// assume MIME_Message in the message body
	if (ischosen(loc_MB_par.mimeMessageBody)){ 	
		
		//log ("MIME Length=", result);
		for (var integer i:=0; i<sizeof(loc_MB_par.mimeMessageBody.mimeEncapsulatedParts); i:=i+1) {
			
			result := result + 1 + lengthof(loc_MB_par.mimeMessageBody.boundary);
			result := result + lengthof(loc_MB_par.mimeMessageBody.boundary) + 2/*--*/ + c_CR;
			//log ("MIME Length(boundary)=", result);

			v_MBelement := loc_MB_par.mimeMessageBody.mimeEncapsulatedParts[i];
			result := result + 15 + lengthof(v_MBelement.content_type);
			result := result + lengthof("Content-Type: ") + lengthof(v_MBelement.content_type) + c_CR;
			//log ("MIME Length(Content-Type)=", result);
			result := result + c_CR;
			//log ("MIME Length(Empty line)=", result);
			
			if(ischosen(v_MBelement.mime_encapsulated_part.sdpMessageBody)) 
				{result := result + f_singleSDPlength(v_MBelement.mime_encapsulated_part.sdpMessageBody) + c_CR;};
			//log ("MIME Length(SDP)=", result);
							
			if(ispresent(v_MBelement.content_disposition)) 
				{auxstring := v_MBelement.content_disposition;
				 result := result + 22 + lengthof(auxstring);};

			if(ischosen(v_MBelement.mime_encapsulated_part.sdpMessageBody)) 
				{result := result + 1 + f_singleSDPlength(v_MBelement.mime_encapsulated_part.sdpMessageBody);};
				 result := result + lengthof("Content-Disposition: ") + lengthof(auxstring) + c_CR;
    			//log ("MIME Length(Content-Disposition)=", result);
    			result := result + c_CR;
    			//log ("MIME Length(Empty line)=", result);
    		};
			
			if(ischosen(v_MBelement.mime_encapsulated_part.isupBiccMessageBody)) 
				{result := result + 1 + f_singleISUPlength(v_MBelement.mime_encapsulated_part.isupBiccMessageBody);};
				{result := result + f_singleISUPlength(v_MBelement.mime_encapsulated_part.isupBiccMessageBody);};
			//log ("MIME Length(ISUP)=", result);
			
			};
			
		result := result + 1 + lengthof(loc_MB_par.mimeMessageBody.boundary); // last boundary	
		result := result + 2/*--*/ + lengthof(loc_MB_par.mimeMessageBody.boundary) + 2/*--*/; // last boundary	
		//log ("MIME Length(Last boundary)=", result);
			
		};
	
@@ -2168,6 +2183,7 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
	var charstring auxstring;
	  	
	result := 2+c_CR + lengthof(int2str(loc_MB.protocol_version)); // "v="
	//log ("v", result);
	result := result + 2+c_CR + lengthof(loc_MB.origin.user_name & " " & 
									loc_MB.origin.session_id & " " & 
									loc_MB.origin.session_version & " " & 
@@ -2175,7 +2191,9 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
									loc_MB.origin.addr_type & " " & 
									loc_MB.origin.addr           
									); // "o="
	//log ("v+o", result);
	result := result + 2+c_CR + lengthof(loc_MB.session_name); // "s="
	//log ("v+o+s", result);
	if (ispresent(loc_MB.information)) 
		{auxstring:=loc_MB.information; result := result + 2+c_CR + lengthof(auxstring);}; // "i= "
	if (ispresent(loc_MB.uri)) 
@@ -2201,6 +2219,7 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
		{
		  var integer v_len_con0 := f_SDPlength_connection(loc_MB.connection);
		  result := result + v_len_con0;
			//log ("v+o+s+c", result);
		}; // "c="
			
	if (ispresent(loc_MB.bandwidth))   
@@ -2208,6 +2227,7 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
		  result := result + 2+c_CR + lengthof(loc_MB.bandwidth[i].modifier & " ") + 
		  lengthof(int2str(loc_MB.bandwidth[i].bandwidth));
		  }		
			//log ("v+o+s+c+b", result);				
		};
				
	for (var integer i:=0; i<sizeof(loc_MB.times); i:=i+1){
@@ -2234,6 +2254,7 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
					
				}
			};
		//log ("v+o+s+c+b+t", result);	
	};

	if (ispresent(loc_MB.timezone_adjustments)) 
@@ -2257,12 +2278,16 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
	  	
			  result := result + 2+c_CR + lengthof(loc_MB.media_list[i].media_field.media)
							   + 1 + lengthof(int2str(loc_MB.media_list[i].media_field.ports.port_number));
			//log ("v+o+s+c+b+t+media", result);				   
			  if (ispresent(loc_MB.media_list[i].media_field.ports.num_of_ports)) 
				  {result := result + 1 + lengthof(int2str(loc_MB.media_list[i].media_field.ports.num_of_ports));};
			//log ("v+o+s+c+b+t+ports", result);	  
			  result := result + 1 + lengthof(loc_MB.media_list[i].media_field.transport);
			//log ("v+o+s+c+b+t+transport", result);
			  for (var integer j:=0; j<sizeof(loc_MB.media_list[i].media_field.fmts); j:=j+1){	
				  result := result + 1 + lengthof(valueof(loc_MB.media_list[i].media_field.fmts[j]));
				  }
			//log ("v+o+s+c+b+t+m+a", result);
			  if (ispresent(loc_MB.media_list[i].information)) {
				   auxstring:=loc_MB.media_list[i].information;
				   result := result + 2+c_CR + lengthof(auxstring);  // "i= "
@@ -2291,6 +2316,7 @@ function f_singleSDPlength(SDP_Message loc_MB) return integer {
					  }
				   };
			  };
			//log ("v+o+s+c+b+t+m+a", result);	  	
		};

	   return result;
@@ -2338,6 +2364,7 @@ function f_SDPlength_connection(SDP_connection loc_element) return integer // "c
										& loc_element.des.statusType & " " & loc_element.des.direction)};
	  if (ischosen(loc_element.rtpmap)) {result := result + 2+c_CR + lengthof("rtpmap:" & loc_element.rtpmap.attr_value)};
	  if (ischosen(loc_element.rtcp)) {result := result + 2+c_CR + lengthof("rtcp:" & loc_element.rtcp.attr_value)};
	  if (ischosen(loc_element.unknown)) {result := result + 2+c_CR + lengthof(loc_element.unknown.name & ":" & loc_element.unknown.attr_value)};

//	  log("axr: length attribute=", result);
	  return result