LibSip_Templates.ttcn 127 KB
Newer Older
		template(present) From mw_From(template(present) SipUrl p_sipUrl) := {
		  fieldName := FROM_E,
		  addressField := { nameAddr := mw_NameAddr(*, p_sipUrl)},
nikolajev's avatar
nikolajev committed
		template(present) From mw_From_NameAddr_SipUrl(template charstring p_dn, template(present) charstring p_user, template charstring p_host) :=
rennoch's avatar
rennoch committed
		{
			fieldName := FROM_E,
			addressField := (mw_AddrUnion_Nameaddr(p_dn,p_user,p_host),mw_AddrUnion_SipUrl(p_user,p_host)),
			fromParams := *
		}
nikolajev's avatar
nikolajev committed
		template(value) ViaBody m_ViaBody_currIpaddr(template(value) charstring branch_val, template(value) SipUserProfile p_userprofile) :=
		{
		  sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
		  sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
		  viaParams:={{id :=c_branchId,paramValue :=branch_val}}
		}
		
		template(present) ViaBody mw_ViaBody_interface(template(present) HostPort p_hostport) :=
		{
		  sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
		  sentBy:={host:=p_hostport.host, portField:= p_hostport.portField},
		  viaParams:=*
		}

        //TODO STF471 check superset, can it be applied to ViaBody (record of)
		template(present) Via mw_Via(template(present) ViaBody p_viabody) :=
		  viaBody:= {*,p_viabody,*}//superset(p_viabody)
		template(present) CallId mw_CallId_any :=
		{
		  fieldName := CALL_ID_E,
		  callid := ?
		}
		
		template(present) Require mw_Require_Base :=
		{		  
			fieldName := REQUIRE_E,
			optionsTags := {}
		};
		template(present) Require mw_Require_not_100rel modifies mw_Require_Base :=
		{
rennoch's avatar
rennoch committed
			optionsTags := superset(complement(c_tag100rel))
		template(present) Require mw_require_100rel modifies mw_Require_Base :=
poglitsch's avatar
poglitsch committed
    	{
    		optionsTags := superset(c_tag100rel)
    	};
        //TODO STF471 check superset, can it be applied to RouteBody (record of)
		template(present) RecordRoute mw_recordroute (template(present) RouteBody p_routeBody):=
		{   
			fieldName := RECORD_ROUTE_E,
			routeBody := {*,p_routeBody,*}//superset(p_routeBody)
		template(present) Route mw_route (template(present) RouteBody_List p_routeBody):=
		{   
			fieldName := ROUTE_E,
			routeBody := p_routeBody
		template(present) StatusLine mw_statusLine(template(present) integer p_statusCode)	:=	
		{
			sipVersion:=c_sipNameVersion,
			statusCode:=p_statusCode,
			reasonPhrase:=?
		template(present) Supported mw_Supported_Base :=
		{
			fieldName := SUPPORTED_E, 
			optionsTags := {}
		}
		
		template(present) Supported mw_Supported_100rel_prec modifies mw_Supported_Base :=
poglitsch's avatar
poglitsch committed
		{
			optionsTags:= superset(c_tag100rel, c_tagPrecond)
		}
		
		template(present) Supported mw_Supported_100rel modifies mw_Supported_Base :=
poglitsch's avatar
poglitsch committed
		{
			optionsTags:= superset(c_tag100rel)
		}
rennoch's avatar
rennoch committed

		template(present) Supported mw_Supported_fromChange modifies mw_Supported_Base :=
rennoch's avatar
rennoch committed
		{
			optionsTags:= superset(c_tagFromChange)
		}
		template(present) UserToUser mw_UserToUserData(template(present) charstring p_U2UData):=
juvancic's avatar
juvancic committed
		{
			fieldName := USER_TO_USER_E,
			uuiData := p_U2UData,
			uuiParam := ?
		}
rennoch's avatar
rennoch committed
				
		template(present) Contact mw_Contact_conference :=
		{
		  fieldName := CONTACT_E,
		  contactBody :=
		  {
			contactAddresses :=
			{
			  {
				addressField := {
                    nameAddr := {
                        displayName := *,
                        addrSpec := {
                            scheme := ?,  
                            components := ?,
                            urlParameters := {{"isfocus",*},*},
                            headers := *
                        }
                    }
				},
				contactParams := *
		template(value) AlertInfo m_AlertInfo_Base := {
			fieldName := ALERT_INFO_E,
nikolajev's avatar
nikolajev committed
		template(value) AlertInfo m_AlertInfo(template(value) charstring p_urn) modifies m_AlertInfo_Base := {
			alertInfoBody := {{p_urn, omit}}
		}
		
nikolajev's avatar
nikolajev committed
		template(present) AlertInfo mw_AlertInfo(template(present) charstring p_urn) modifies m_AlertInfo_Base := {
			alertInfoBody := superset({p_urn, omit})
		}
	} //*  end of group HeaderFieldTemplates


group MessageTemplates {
group dummy_templates {
  group dummy_parameter_send {

nikolajev's avatar
nikolajev committed
	template(value) RequestLine m_requestLine_dummy(template(value) Method p_method) := 
		method := p_method,
poglitsch's avatar
poglitsch committed
		requestUri := c_unavailableUri,
		sipVersion := c_sipNameVersion
	}

	template(value) MessageHeader m_msgHeader_dummy := 
	{
		accept := omit,
		acceptContact := omit,
		acceptEncoding := omit,
		acceptLanguage := omit,
		alertInfo := omit,
		allow := omit,
		allowEvents := omit, //*  RFC3265
		authenticationInfo := omit,
		authorization := omit,
		callId := c_empty_CallId,
		callInfo := omit,
		contact := omit,
		contentDisposition := omit,
		contentEncoding := omit,
		contentLanguage := omit,
		contentLength := {fieldName := CONTENT_LENGTH_E, len:=  0},
		contentType := omit, //* if message body present m, else not present
		cSeq := c_empty_cSeq,
		date := omit,
		errorInfo := omit,
		expires := omit,
		fromField := c_empty_From,
        geolocationRouting := omit,
		historyInfo := omit, //*  RFC4244
		inReplyTo := omit,
		maxForwards := c_maxForwards70,
		mimeVersion := omit,
		minExpires := omit,
		organization := omit,
		pAccessNetworkInfo := omit, //*  RFC3455
		pAssertedID := omit,
		pAssertedService := omit,
		pAssociatedURI := omit,
		path := omit, //*  RFC3327
		pCalledPartyID := omit, //*  RFC3455
		pChargingFunctionAddresses := omit, //*  RFC3455
		pChargingVector := omit, //*  RFC3455
		pEarlyMedia := omit, //*  RFC5009
		pMediaAuthorization := omit, //*  RFC3313
		pPreferredID := omit,
		priority := omit,
		privacy := omit,
		proxyAuthenticate := omit,
		proxyAuthorization := omit,
		proxyRequire := omit,
		pVisitedNetworkID := omit, //*  RFC3455
		rAck := omit,
		rSeq := omit,
		reason := omit,
		recordRoute := omit,
		referredBy := omit, //*  RFC3892 - REFER method
		referTo := omit, //*  RFC3515 - REFER method
		referSub := omit, //*  RFC4488 - REFER method
		replyTo := omit,
		require := omit,
		retryAfter := omit,
		route := omit,
		securityClient := omit, //*  RFC3329
		securityServer := omit, //*  RFC3329
		securityVerify := omit, //*  RFC3329
		serviceRoute := omit, //*  RFC3608
		sessionExpires := omit, //*  RFC4028
        sessionId := omit,
        sipETag := omit,
        sipIfMatch := omit,
		subscriptionState := omit, //*  RFC3265
		supported := omit,
		timestamp := omit,
		toField := c_empty_To,
		unsupported := omit,
		userToUser := omit,
		userAgent := omit,
		via := c_empty_Via,
		warning := omit,
		wwwAuthenticate := omit,
		undefinedHeader_List := omit
	}
  } //*  group dummy_parameter_send
  
  group dummy_parameter_receive {

	template(present) RequestLine mw_requestLine_dummy(Method p_method) := 
		method := p_method,
		requestUri := ?,
		sipVersion := c_sipNameVersion
	}

	template(present) MessageHeader mw_msgHeader_dummy := 
	{
		accept := *,
		acceptContact := *,
		acceptEncoding := *,
		acceptLanguage := *,
		alertInfo := *,
		allow := *,
		allowEvents := *, //*  RFC3265
		authenticationInfo := *,
		authorization := *,
		callId := ?,
		callInfo := *,
		contact := *,
		contentDisposition := *,
		contentEncoding := *,
		contentLanguage := *,
		contentLength := ?,
		contentType := *,
		cSeq := ?,
		date := *,
		errorInfo := *,
		expires := *,
		fromField := ?,
        geolocationRouting := *,
		historyInfo := *, //*  RFC4244
poglitsch's avatar
poglitsch committed
		maxForwards := *,
		mimeVersion := *,
		minExpires := *,
		organization := *,
		pAccessNetworkInfo := *, //*  RFC3455
		pAssertedID := *,
		pAssertedService := *,
		pAssociatedURI := *,
		path := *, //*  RFC3327
		pCalledPartyID := *, //*  RFC3455
		pChargingFunctionAddresses := *, //*  RFC3455
		pChargingVector := *, //*  RFC3455
		pEarlyMedia := *, //*  RFC5009
		pMediaAuthorization := *, //*  RFC3313
		pPreferredID := *,
		priority := *,
		privacy := *,
		proxyAuthenticate := *,
		proxyAuthorization := *,
		proxyRequire := *,
		pVisitedNetworkID := *, //*  RFC3455
		rAck := *,
		rSeq := *,
		reason := *,
		recordRoute := *,
		referredBy := *, //*  RFC3892 - REFER method
		referTo := *, //*  RFC3515 - REFER method
		referSub := *, //*  RFC4488 - REFER method
		replyTo := *,
		require := *,
		retryAfter := *,
		route := *,
		securityClient := *, //*  RFC3329
		securityServer := *, //*  RFC3329
		securityVerify := *, //*  RFC3329
		serviceRoute := *, //*  RFC3608
		sessionExpires := *, //*  RFC4028
		sessionId := *,
        sipETag := *,
        sipIfMatch := *,		
		subscriptionState := *, //*  RFC3265
		supported := *,
		timestamp := *,
		toField := ?,
		unsupported := *,
		userToUser := *,
		userAgent := *,
		via := ?,
		warning := *,
		wwwAuthenticate := *,
		undefinedHeader_List := *
	}
  }//* end group dummy_parameter_receive
  
  group dummy_request_templates_send {

	template(value) ACK_Request m_ACK_Dummy :=
		requestLine	:= m_requestLine_dummy(ACK_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) BYE_Request m_BYE_Dummy :=
		requestLine	:= m_requestLine_dummy(BYE_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) CANCEL_Request m_CANCEL_Dummy :=
		requestLine	:= m_requestLine_dummy(CANCEL_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) INFO_Request m_INFO_Dummy :=
pintar's avatar
pintar committed
	{
		requestLine	:= m_requestLine_dummy(INFO_E),
pintar's avatar
pintar committed
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) INVITE_Request m_INVITE_Dummy :=
		requestLine	:= m_requestLine_dummy(INVITE_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) MESSAGE_Request m_MESSAGE_Dummy :=
		requestLine	:= m_requestLine_dummy(MESSAGE_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) NOTIFY_Request m_NOTIFY_Dummy :=
		requestLine	:= m_requestLine_dummy(NOTIFY_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}
    template(value) OPTIONS_Request m_OPTIONS_Dummy :=
    {
        requestLine	:= m_requestLine_dummy(OPTIONS_E),
        msgHeader := m_msgHeader_dummy,
        messageBody := omit,
        payload := omit
    }
	template(value) PRACK_Request m_PRACK_Dummy :=
		requestLine	:= m_requestLine_dummy(PRACK_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) PUBLISH_Request m_PUBLISH_Dummy :=
		requestLine	:= m_requestLine_dummy(PUBLISH_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) REGISTER_Request m_REGISTER_Dummy :=
		requestLine	:= m_requestLine_dummy(REGISTER_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) REFER_Request m_REFER_Dummy :=
		requestLine	:= m_requestLine_dummy(REFER_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template(value) SUBSCRIBE_Request m_SUBSCRIBE_Dummy :=
		requestLine	:= m_requestLine_dummy(SUBSCRIBE_E),
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

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

	template(present) ACK_Request mw_ACK_Dummy :=
		requestLine	:= mw_requestLine_dummy(ACK_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) BYE_Request mw_BYE_Dummy :=
		requestLine	:= mw_requestLine_dummy(BYE_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) CANCEL_Request mw_CANCEL_Dummy :=
		requestLine	:= mw_requestLine_dummy(CANCEL_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) INFO_Request mw_INFO_Dummy :=
		requestLine	:= mw_requestLine_dummy(INFO_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) INVITE_Request mw_INVITE_Dummy :=
		requestLine	:= mw_requestLine_dummy(INVITE_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) MESSAGE_Request mw_MESSAGE_Dummy :=
		requestLine	:= mw_requestLine_dummy(MESSAGE_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}
    template(present) OPTIONS_Request mw_OPTIONS_Dummy :=
    {
        requestLine	:= mw_requestLine_dummy(OPTIONS_E),
        msgHeader := mw_msgHeader_dummy,
        messageBody := *,
        payload := *
    }
	template(present) NOTIFY_Request mw_NOTIFY_Dummy :=
		requestLine	:= mw_requestLine_dummy(NOTIFY_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) PRACK_Request mw_PRACK_Dummy :=
		requestLine	:= mw_requestLine_dummy(PRACK_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) PUBLISH_Request mw_PUBLISH_Dummy :=
		requestLine	:= mw_requestLine_dummy(PUBLISH_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) REFER_Request mw_REFER_Dummy :=
		requestLine	:= mw_requestLine_dummy(REFER_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) REGISTER_Request mw_REGISTER_Dummy :=
		requestLine	:= mw_requestLine_dummy(REGISTER_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Dummy :=
		requestLine	:= mw_requestLine_dummy(SUBSCRIBE_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}

	template(present) UPDATE_Request mw_UPDATE_Dummy :=
		requestLine	:= mw_requestLine_dummy(UPDATE_E),
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}
  }//* end group dummy_request_templates_receive
  
  group dummy_response_templates_send{
  	
	template(value) Response m_Response_Dummy :=
	{
		statusLine	:= c_statusLine100,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}
  } //*  group dummy_response_templates_send
  
  group dummy_response_templates_receive{
	template(present) Response mw_Response_Dummy :=
	{
		statusLine	:= ?,
		msgHeader := mw_msgHeader_dummy,
		messageBody := *,
		payload := *
	}
  } //*  group dummy_response_templates_receive
    
	//STF471 Use these 3 templates in LibIMS too
nikolajev's avatar
nikolajev committed
	template(value) CSeq m_cSeq(template(value) integer p_seqNumber, template(value) charstring p_method) := {
        fieldName:=CSEQ_E, 
        seqNumber:= p_seqNumber, 
        method:= p_method
	}

nikolajev's avatar
nikolajev committed
    template(value) ContentLength m_contentLength(template(value) integer p_len) := {
        fieldName := CONTENT_LENGTH_E,   
        len := p_len
    }
        		
nikolajev's avatar
nikolajev committed
    template(value) ContentType m_contentType(template(value) charstring p_mediaType) := {
        fieldName := CONTENT_TYPE_E,   
        mediaType :=  p_mediaType
    }
        		
    template(present) ContentType mw_contentType(in template(present) charstring p_mediaType) := {
        fieldName := CONTENT_TYPE_E,   
        mediaType :=  p_mediaType
    }
                
nikolajev's avatar
nikolajev committed
		template(value) ACK_Request m_ACK_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
			template(value) From p_from, template(value) To p_to, template(value) Via p_via) modifies m_ACK_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := m_cSeq(p_cSeq.seqNumber, "ACK"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "ACK"},
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
		// TODO STF471 added
nikolajev's avatar
nikolajev committed
		template(value) ACK_Request m_ACK_Request_withRecordRoute (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
			template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(value) Route p_route) modifies m_ACK_Request_Base :=
		{
			msgHeader :=
			{
				route := p_route,
				//recordRoute := p_recordRoute,
				contentLength := m_contentLength(0) // STF471 {CONTENT_LENGTH_E, 0}
nikolajev's avatar
nikolajev committed
		template(value) BYE_Request m_BYE_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq, 
			template(value) From p_from, template(value) To p_to, template(value) Via p_via) modifies m_BYE_Dummy :=
poglitsch's avatar
poglitsch committed
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
nikolajev's avatar
nikolajev committed
		template(value) CANCEL_Request m_CANCEL_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, 
			template(value) Via p_via) modifies m_CANCEL_Dummy :=
    			requestUri := p_requestUri

			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
nikolajev's avatar
nikolajev committed
		template(value) INFO_Request m_INFO_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, 
			template(value) Via p_via) modifies m_INFO_Dummy :=
pintar's avatar
pintar committed
		{	
			requestLine	:=
			{
				requestUri := p_requestUri
pintar's avatar
pintar committed
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}
		
nikolajev's avatar
nikolajev committed
		template(value) INVITE_Request m_INVITE_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
			 template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(value) Contact p_contact) modifies m_INVITE_Dummy :=
		{
			requestLine	:=
		  	{
				requestUri := p_requestUri
		  	},
		  	msgHeader :=
		  	{
		  		callId := p_callId,
				contact := p_contact,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}

nikolajev's avatar
nikolajev committed
		template(value) MESSAGE_Request m_MESSAGE_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via) modifies m_MESSAGE_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := p_cSeq,
				fromField := p_from,
				toField := p_to,
				via := p_via
			}
		}

nikolajev's avatar
nikolajev committed
		template(value) NOTIFY_Request m_NOTIFY_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
		  template(value) From p_from, template(value) To p_to, template(value) Via p_via) modifies m_NOTIFY_Dummy :=
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq :=  m_cSeq(p_cSeq.seqNumber, "NOTIFY"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "NOTIFY"},
				fromField := p_from,
				toField := p_to,
				via := p_via
nikolajev's avatar
nikolajev committed
        template(value) OPTIONS_Request m_OPTIONS_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
          template(value) From p_from, template(value) To p_to, template(value) Via p_via) modifies m_OPTIONS_Dummy :=
        {
            requestLine	:=
            {
                requestUri := p_requestUri
            },
            msgHeader :=
            {
                callId := p_callId,
                cSeq :=  m_cSeq(p_cSeq.seqNumber, "OPTIONS"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "OPTIONS"},
                fromField := p_from,
                toField := p_to,
                via := p_via
            }
        }
nikolajev's avatar
nikolajev committed
		template(value) PRACK_Request m_PRACK_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
		  template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(value) RAck p_RAck) 
		  modifies m_PRACK_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
				cSeq := m_cSeq(p_cSeq.seqNumber, "PRACK"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PRACK"},
				fromField := p_from,
				rAck := p_RAck,
				toField := p_to,
				via := p_via
			},
			messageBody := omit
		}
		
	//TODO: parameters "p_RAck" is not used, intentional or bug?
nikolajev's avatar
nikolajev committed
		template(value) PUBLISH_Request m_PUBLISH_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
		  template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) Event p_event, template(omit) RAck p_RAck, template(value) MessageBody p_mb) 
		  modifies m_PUBLISH_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId := p_callId,
nikolajev's avatar
nikolajev committed
				contentLength	:= m_contentLength(f_MessageBodyLength(p_mb)), // STF471 {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
				contentType := m_contentType(c_plainText), // STF471 {fieldName := CONTENT_TYPE_E, mediaType :=  c_plainText/*c_sdp*/},
				cSeq := m_cSeq(p_cSeq.seqNumber, "PUBLISH"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"},
				rAck := p_RAck,//TODO: added by STF471
				fromField := p_from,
				toField := p_to,
				via := p_via
			},
			messageBody := p_mb
		}

		template(value) REFER_Request m_REFER_Request_Base (
nikolajev's avatar
nikolajev committed
			template(value) SipUrl p_requestUri, 
			template(omit) CallId p_callId, 
			template(omit) CSeq p_cSeq, 
			template(omit) Contact p_contact,
			template(value) From p_from, 
			template(value) To p_to, 
			template(value) Via p_via, 
			template(omit) ReferTo p_referTo, 
			template(omit) ReferredBy p_referredBy)
			modifies m_REFER_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
		  	},
		  	msgHeader :=
	  		{
				callId		:= p_callId,
				contact := p_contact,
				cSeq		:= m_cSeq(p_cSeq.seqNumber, "REFER"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "REFER"},
				fromField	:= p_from,
				referTo := p_referTo,
				referredBy := p_referredBy,
				toField		:= p_to,
				via		:= p_via
	  		}
		}
		
		template(value) REFER_Request m_REFER_Request_replaces (
nikolajev's avatar
nikolajev committed
			template(value) SipUrl p_requestUri, 
			template(omit) CallId p_callId, 
			template(omit) CSeq p_cSeq, 
			template(omit) Contact p_contact,
			template(value) From p_from, 
			template(value) To p_to, 
			template(value) Via p_via, 
			template(value) ReferTo p_referTo, 
			template(value) ReferredBy p_referredBy,
			template(value) Replaces p_replaces,
			template(omit) Require p_require
		) modifies m_REFER_Request_Base := {
			msgHeader :=
			{
				replaces := p_replaces,
				require := p_require
			}
		}
		
nikolajev's avatar
nikolajev committed
		template(value) REGISTER_Request m_REGISTER_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
			template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) Contact p_contact, template(omit) Authorization p_authorization) modifies m_REGISTER_Dummy :=
		{
			requestLine	:=
			{
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				authorization := p_authorization,
				callId 		:= p_callId,
				contact		:= p_contact,
				cSeq		:= p_cSeq,
				fromField	:= p_from,
				toField		:= p_to,
				supported := {
					fieldName := SUPPORTED_E, optionsTags := {"path"}
				},
nikolajev's avatar
nikolajev committed
		template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, 
			template(omit) CSeq p_cSeq, template(value) From p_from, template(value) To p_to, template(value) Via p_via)  modifies m_SUBSCRIBE_Dummy :=
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId		:= p_callId,
				cSeq		:= m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"},
				fromField	:= p_from,
				toField		:= p_to,
				via		:= p_via
			}
		}

nikolajev's avatar
nikolajev committed
		template(value) UPDATE_Request m_UPDATE_Request_Base (template(value) SipUrl p_requestUri, template(omit) CallId p_callId, template(omit) CSeq p_cSeq,
		  template(value) From p_from, template(value) To p_to, template(value) Via p_via, template(omit) Contact p_contact, template(omit) MessageBody p_mb) modifies m_UPDATE_Dummy :=
poglitsch's avatar
poglitsch committed
				requestUri := p_requestUri
			},
			msgHeader :=
			{
				callId		:= p_callId,
				contact		:= p_contact,
nikolajev's avatar
nikolajev committed
				contentLength	:= m_contentLength(f_MessageBodyLength(p_mb)), // STF471 {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
				contentType := m_contentType(c_sdpApplication), // STF471 {fieldName := CONTENT_TYPE_E, mediaType :=  c_sdp},
				cSeq		:= m_cSeq(p_cSeq.seqNumber, "UPDATE"), //STF471 {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "UPDATE"},
				fromField	:= p_from,
				toField		:= p_to,
				via		:= p_via
			 },
			messageBody := p_mb
		}
		  
	} //*  end of group message_send
		template(present) ACK_Request mw_ACK_Request_Base (template CallId p_callId) modifies mw_ACK_Dummy :=
		template(present) BYE_Request mw_BYE_Request_Base(template CallId p_callId) modifies mw_BYE_Dummy :=
		template(present) CANCEL_Request mw_CANCEL_Request_Base (template CallId p_callId) modifies mw_CANCEL_Dummy :=
		template(present) INFO_Request mw_INFO_Request_Base(template CallId p_callId) modifies mw_INFO_Dummy :=
		template(present) INVITE_Request mw_INVITE_Request_Base modifies mw_INVITE_Dummy :=
		template(present) MESSAGE_Request mw_MESSAGE_Request_Base modifies mw_MESSAGE_Dummy :=
berge's avatar
berge committed
				contact := *
		template(present) NOTIFY_Request mw_NOTIFY_Request_Base (template CallId p_callId) modifies mw_NOTIFY_Dummy :=
        template(present) OPTIONS_Request mw_OPTIONS_Request_Base (template CallId p_callId) modifies mw_OPTIONS_Dummy :=
		template(present) PRACK_Request mw_PRACK_Request_Base(template CallId p_callId) modifies mw_PRACK_Dummy :=
		template(present) PUBLISH_Request mw_PUBLISH_Request_Base(template CallId p_callId) modifies mw_PUBLISH_Dummy :=