LibSip_Templates.ttcn 79.2 KB
Newer Older
	template MESSAGE_Request m_MESSAGE_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template NOTIFY_Request m_NOTIFY_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template PRACK_Request m_PRACK_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template PUBLISH_Request m_PUBLISH_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template REGISTER_Request m_REGISTER_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template REFER_Request m_REFER_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template SUBSCRIBE_Request m_SUBSCRIBE_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template UPDATE_Request m_UPDATE_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}
  }//* end group dummy_request_templates_send
  group dummy_request_templates_receive{

	template ACK_Request mw_ACK_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template BYE_Request mw_BYE_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template CANCEL_Request mw_CANCEL_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template INFO_Request mw_INFO_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template INVITE_Request mw_INVITE_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template MESSAGE_Request mw_MESSAGE_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template NOTIFY_Request mw_NOTIFY_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template PRACK_Request mw_PRACK_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template PUBLISH_Request mw_PUBLISH_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template REFER_Request mw_REFER_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template REGISTER_Request mw_REGISTER_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template SUBSCRIBE_Request mw_SUBSCRIBE_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template UPDATE_Request mw_UPDATE_Dummy :=
	{
		requestLine	:= mw_requestLine_dummy,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}
  }//* end group dummy_request_templates_receive
  
  group dummy_response_templates_send{
  	
	template Response m_Response_Dummy :=
	{
		statusLine	:= c_statusLine100,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}
  } //*  group dummy_response_templates_send
  
  group dummy_response_templates_receive{
	template Response mw_Response_Dummy :=
	{
		statusLine	:= ?,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}
  } //*  group dummy_response_templates_receive
}

group base_templates{
	
	group request_send {
		
		
		template ACK_Request m_ACK_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via) modifies m_ACK_Dummy :=
		{
			requestLine	:=
			{
				method := ACK_E,
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "ACK"},
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
		template BYE_Request m_BYE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
			Via p_via) modifies m_BYE_Dummy :=
		{	
			requestLine	:=
			{
				method := BYE_E,
				requestUri := 
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
		template CANCEL_Request m_CANCEL_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
			Via p_via) modifies m_CANCEL_Dummy :=
		{
			requestLine	:=
			{
				method := CANCEL_E,
				requestUri :=
					{
						hostPort:= p_requestUri.hostPort
					}
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
pintar's avatar
pintar committed
		template INFO_Request m_INFO_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, 
			Via p_via) modifies m_INFO_Dummy :=
		{	
			requestLine	:=
			{
				method := INFO_E,
				requestUri := 
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
		template INVITE_Request m_INVITE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
			 From p_from, To p_to, Via p_via, Contact p_contact) modifies m_INVITE_Dummy :=
		{
			requestLine	:=
		  	{
				method := INVITE_E,
				requestUri := p_requestUri
		  	},
		  	msgHeader :=
		  	{
		  		callId := p_callId,
				contact := p_contact,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}

		template MESSAGE_Request m_MESSAGE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via) modifies m_MESSAGE_Dummy :=
		{
			requestLine	:=
			{
				method := MESSAGE_E,
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}

		template NOTIFY_Request m_NOTIFY_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via) modifies m_NOTIFY_Dummy :=
		{
			requestLine	:=
			{
				method := NOTIFY_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			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:= "NOTIFY"},
				fromField := p_from,
				toField := p_to,
				via := p_via
		}
		
		template PRACK_Request m_PRACK_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, RAck p_RAck) 
		  modifies m_PRACK_Dummy :=
		{
			requestLine	:=
			{
				method := PRACK_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
				fromField := p_from,
				rAck := p_RAck,
				toField := p_to,
				via := p_via
			},
			messageBody := omit
		}
		
		//* in reality PUBLISH request contain xml in content
		template PUBLISH_Request m_PUBLISH_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, template Event p_event, template RAck p_RAck, template MessageBody p_mb) 
		  modifies m_PUBLISH_Dummy :=
		{
			requestLine	:=
			{
				method := PUBLISH_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			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:= "PUBLISH"},
				event := p_event, 
				fromField := p_from,
				toField := p_to,
				via := p_via
			},
			messageBody := p_mb
		}

		template REFER_Request m_REFER_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, Contact p_contact,
			From p_from, template To p_to, Via p_via, template ReferTo p_referTo, template ReferredBy p_referredBy)
			modifies m_REFER_Dummy :=
		{
			requestLine	:=
			{
				method := REFER_E,
				requestUri := p_requestUri
		  	},
		  	msgHeader :=
	  		{
				callId		:= p_callId,
				contact := p_contact,
				cSeq		:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "REFER"},
				fromField	:= p_from,
				referTo := p_referTo,
				referredBy := p_referredBy,
				toField		:= p_to,
				via		:= p_via
	  		}
		}
		
		template REGISTER_Request m_REGISTER_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, Contact p_contact, template Authorization p_authorization) modifies m_REGISTER_Dummy :=
		{
			requestLine	:=
			{
				method := REGISTER_E,
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				authorization := p_authorization,
				callId := p_callId,
				contact	:= p_contact,
				cSeq		:= p_cSeq,
				fromField	:= p_from,
				toField		:= p_to,
				via		:= p_via

			}
		}

		template SUBSCRIBE_Request m_SUBSCRIBE_Request_Base (SipUrl p_requestUri, CallId p_callId, 
			CSeq p_cSeq, From p_from, To p_to, Via p_via)  modifies m_SUBSCRIBE_Dummy :=
		{
			requestLine	:=
			{
				method := SUBSCRIBE_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				callId		:= p_callId,
				cSeq		:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
				fromField	:= p_from,
				toField		:= p_to,
				via		:= p_via
			}
		}

		template UPDATE_Request m_UPDATE_Request_Base (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_UPDATE_Dummy :=
		{
			requestLine	:=
			{
				method := UPDATE_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				callId		:= p_callId,
				contact		:= p_contact,
				contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
				contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
				cSeq		:= {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "UPDATE"},
				fromField	:= p_from,
				toField		:= p_to,
				via		:= p_via
			 },
			messageBody := p_mb
		}
		  
	} //*  end of group message_send

	group request_receive {
		
		template ACK_Request mw_ACK_Request_Base (template CallId p_callId) modifies mw_ACK_Dummy :=
		{
			requestLine	:=
			{
				method := ACK_E
			},
			msgHeader :=
			{
				callId		:= p_callId
			}
		}
		
		template BYE_Request mw_BYE_Request_Base(template CallId p_callId) modifies mw_BYE_Dummy :=
		  {
			requestLine	:=
			{
				method := BYE_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}
		
		template CANCEL_Request mw_CANCEL_Request_Base (template CallId p_callId) modifies mw_CANCEL_Dummy :=
		{
			requestLine	:=
			{
				method := CANCEL_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}
  
		template INFO_Request mw_INFO_Request_Base(template CallId p_callId) modifies mw_INFO_Dummy :=
		{
			requestLine	:=
			{
				method := INFO_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}

		template INVITE_Request mw_INVITE_Request_Base modifies mw_INVITE_Dummy :=
		{
			requestLine	:=
			{
				method := INVITE_E
			}
		}

		template MESSAGE_Request mw_MESSAGE_Request_Base(template CallId p_callId) modifies mw_MESSAGE_Dummy :=
		{
			requestLine	:=
			{
				method := MESSAGE_E
			},
			msgHeader :=
			{
				callId := p_callId,
				contact := omit
			}
		}

		template NOTIFY_Request mw_NOTIFY_Request_Base (CallId p_callId) modifies mw_NOTIFY_Dummy :=
		{
			requestLine	:=
			{
				method := NOTIFY_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}
		
		template PRACK_Request mw_PRACK_Request_Base(template CallId p_callId) modifies mw_PRACK_Dummy :=
		{
			requestLine	:=
			{
				method := PRACK_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}
		
		template PUBLISH_Request mw_PUBLISH_Request_Base(template CallId p_callId) modifies mw_PUBLISH_Dummy :=
		{
			requestLine	:=
			{
				method := PUBLISH_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}

		template REFER_Request mw_REFER_Request_Base (CallId p_callId) modifies mw_REFER_Dummy :=
		{
			requestLine	:=
			{
				method := REFER_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}
		
		template REGISTER_Request mw_REGISTER_Request_Base modifies mw_REGISTER_Dummy :=
		{
			requestLine	:=
			{
				method := REGISTER_E
			}
		}

		template SUBSCRIBE_Request mw_SUBSCRIBE_Request_Base modifies mw_SUBSCRIBE_Dummy :=
		{
			requestLine	:=
			{
				method := SUBSCRIBE_E
			}
		}

		template UPDATE_Request mw_UPDATE_Request_Base(template CallId p_callId) modifies mw_UPDATE_Dummy :=
		{
			requestLine	:=
			{
				method := UPDATE_E
			},
			msgHeader :=
			{
				callId := p_callId
			}
		}

	} //*  end group request_receive
	
	group response_send {

		template Response m_Response_Base (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
		  From p_from, To p_to, Via p_via) modifies m_Response_Dummy:=
		{
			statusLine := p_statusLine,
			msgHeader :=
			{
				callId		:= p_callId,
				cSeq		:= p_cSeq,
				fromField	:= p_from,
				maxForwards := omit,
				toField		:= p_to,
				via		:= p_via
			},
			messageBody := omit,
			payload			:= omit
		}

	

	} //*  end group response_send

	group response_receive {

		template Response mw_Response_Base (template StatusLine p_statusLine, template CallId p_callId,
			template CSeq p_cSeq) modifies mw_Response_Dummy:=
		{
			statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
			msgHeader :=
			{
			  callId		:= p_callId,
			  contentLength	:= *,
			  cSeq		:= p_cSeq,
			  fromField	:= ?,
			  maxForwards := *,
			  toField		:= ?,
			  via		:= ?
		  }
		}
	} //*  end group message_receive
} //*  end group full_templates

group modified_templates {
	
group request_send {
	
	template ACK_Request m_ACK_Request_route (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via, Route p_route)
	  modifies m_ACK_Request_Base
	  :=
	  {
		msgHeader :=
		{
		  route		:= p_route
		}
	  }

	template ACK_Request m_ACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq,
	From p_from, To p_to, Via p_via,template MessageBody p_mb )
	  modifies m_ACK_Request_Base
	  :=
	  {
		msgHeader :=
		{
			contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication}
		},
		messageBody := p_mb
	  }
	  
	template BYE_Request m_BYE_Request_cause
	  (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, integer p_cause)
	  modifies m_BYE_Request_Base
	  :=
	  {
		msgHeader :=
		{
			  reason := m_Reason(p_cause) //*  PIXIT value
		}
	  }
	
	template INVITE_Request m_INVITE_Request_sdp
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template MessageBody p_mb)
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication}
	  },
	  messageBody := p_mb
	}
	
	template INVITE_Request m_INVITE_Request_ResourceList
	(SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,
	  Via p_via, Contact p_contact, template MessageBody p_mb)
	modifies m_INVITE_Request_Base
	:=
	{
	  msgHeader :=
	  {
		contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
		contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  "application/resource-lists+xml"},
		contentDisposition := {
			fieldName := CONTENT_DISPOSITION_E,
poglitsch's avatar
poglitsch committed
			dispositionType := "recipient-list",
			dispositionParams := omit
		},
		require := {
			fieldName := REQUIRE_E,
poglitsch's avatar
poglitsch committed
			optionsTags := {"recipient-list-invite"}
		}
	  },
	  messageBody := p_mb
	}	

	template REGISTER_Request m_REGISTER_Request_expires
	  (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, 
	  From p_from, To p_to, Via p_via, Contact p_contact,
	  template Authorization p_authorization, charstring p_expires)
	  modifies  m_REGISTER_Request_Base
	  :=
	  {
		msgHeader :=
		{
			authorization := p_authorization,
		    expires := {
			fieldName := EXPIRES_E,
			deltaSec  := p_expires }
		}
	  }
	  
	  template NOTIFY_Request m_NOTIFY_Request_sipfrag (
	  	SipUrl p_requestUri, 
	  	CallId p_callId, 
	  	CSeq p_cSeq,
		From p_from, 
		To p_to, 
		Via p_via, 
		charstring p_state, 
		charstring p_sipfrag
	) modifies m_NOTIFY_Request_Base := {
			requestLine	:=
			{
				method := NOTIFY_E,
				requestUri :=
				{
					hostPort:= p_requestUri.hostPort
				}
			},
			msgHeader :=
			{
				contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= lengthof(p_sipfrag)},
				contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  "message/sipfrag"},
				subscriptionState := {
					fieldName := SUBSCRIPTION_STATE_E,
    				subState := p_state,
    				substateParams := omit	
				},
				event := m_Event_refer
			},
			messageBody := {
				sipfrag := 	p_sipfrag
			}
		}
} //*  end group request_send	


group request_receive {
		
	template BYE_Request mw_BYE_Request_Reason(template CallId p_callId, integer p_cause) modifies mw_BYE_Request_Base :=
	{
		msgHeader :=
		{
			reason := mw_Reason(p_cause)
		}
	}

pintar's avatar
pintar committed
    template INFO_Request mw_INFO_Request_MB (template CallId p_callId, template MessageBody p_mb) modifies mw_INFO_Request_Base :=
    {
     messageBody := p_mb
    }

	template INVITE_Request mw_INVITE_Request_expires modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {expires := ?}
	  }
	  
	template INVITE_Request mw_INVITE_Request_callid(CallId p_callid) modifies  mw_INVITE_Request_Base
	  :=
	  {
		msgHeader := {callId := p_callid}
	  }
pintar's avatar
pintar committed
	
	template INVITE_Request mw_INVITE_Request_MB (CallId p_callId, template MessageBody p_mb) modifies mw_INVITE_Request_Base :=
	{
		msgHeader := {callId := p_callId},
		messageBody := p_mb
	}

	template INVITE_Request mw_INVITE_Request_noPaccessNetworkInfo	(template CallId p_callId)
		modifies mw_INVITE_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := omit}
		}
	template INVITE_Request mw_INVITE_Request_PaccessNetworkInfo	(template CallId p_callId)
		modifies mw_INVITE_Request_Base
		:=
		{
		  msgHeader := {  pAccessNetworkInfo := ?}
		}

pintar's avatar
pintar committed
	template REGISTER_Request mw_REGISTER_Request_ISC (template  PAccessNetworkInfo p_access , template  PVisitedNetworkID p_visited )modifies mw_REGISTER_Request_Base :=
	{
	  msgHeader := {  
		  pAccessNetworkInfo := p_access,
		  pVisitedNetworkID  := p_visited
		  }
pintar's avatar
pintar committed
	}
pintar's avatar
pintar committed
	template UPDATE_Request mw_UPDATE_Request_SDP(template CallId p_callId, template MessageBody p_mb) modifies mw_UPDATE_Dummy :=
	{
		messageBody := p_mb
	}
	
    template NOTIFY_Request mw_NOTIFY_Request_MB (CallId p_callId, template MessageBody p_mb) modifies mw_NOTIFY_Request_Base :=
    {
		messageBody := p_mb
    }
} //*  end group request_receive	

group response_send {	

	template Response m_Response_ext (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	  From p_from, To p_to, Via p_via) modifies m_Response_Base:=
	{
		msgHeader :={
			route 		:= f_route(),
			recordRoute := f_recordroute()
			}
	}
			
	template Response m_Response_mbody (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
	  From p_from, To p_to, Via p_via, MessageBody p_mb) modifies m_Response_ext:=
	{
		msgHeader :=
			 {
			   contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
			   contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication}
			 },
	  	messageBody := p_mb
	}
			
	template Response m_Response_PAsserted_Privacy (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_ext:=
	{
		msgHeader :=
				{
						pAssertedID := p_pAssertedID,
						privacy := p_privacy
				}
	}
			
	template Response m_Response_PAsserted_Privacy_mbody (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq,
			From p_from, To p_to, Via p_via, template PAssertedID p_pAssertedID, template Privacy p_privacy, MessageBody p_mb) modifies m_Response_ext:=
	{
		msgHeader :=
				{
						contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
						contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdpAplication},
						pAssertedID := p_pAssertedID,
						privacy := p_privacy
				},
				messageBody := p_mb
	}

} //*  end group response_send	


group response_receive {

	template Response mw_Response_Expires (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template DeltaSec p_deltaSec) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec}
	  }
	}

	template Response mw_Response_PAsserted_Privacy (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			pAssertedID := p_pAssertedID,
			privacy := p_privacy
		}
	}

	template Response mw_Response_Reason (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, integer p_cause) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			reason := mw_Reason(p_cause)
			}
	}

	template Response mw_Response_RecordRoute (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template RecordRoute p_recordRoute) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			recordRoute := p_recordRoute
	  }
	}

	template Response mw_Response_Via (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template Via p_via) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			via := p_via
	  }
	}
	
	template Response mw_Response_Contact (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template Contact p_contact) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			contact := p_contact
	  }
	}
	
poglitsch's avatar
poglitsch committed
	template Response mw_Response_messageBody (
		template StatusLine p_statusLine, 
		template CallId p_callId,
		template CSeq p_cSeq, 
		template Require p_require,
		template MessageBody p_mb
	) modifies mw_Response_Base:= {
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},
		msgHeader :=
		{
			require := p_require
	    },
	    messageBody := p_mb
	}
	
	template Response mw_Response_Require (template StatusLine p_statusLine, template CallId p_callId,
		template CSeq p_cSeq, template Require p_require) modifies mw_Response_Base:=
	{
		statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?},