LibSip_Templates.ttcn 73.3 KB
Newer Older
/**
 *  @author   STF 346
 *  @version  $Id$
 *	@desc     This module defines SIP Templates for message, header, and 
 *            structured types. <br>
 *            Note that any changes made to the definitions in this module
 *            may be overwritten by future releases of this library
 *            End users are encouraged to contact the distributers of this  
 *            module regarding their modifications or additions
 *  @remark   Any additions to the templates shall follow the design rules
 *            and always modify base templates only;
 *            Existing templates shall not be changed or removed -
 *            change requests shall be made to http://t-ort.etsi.org
 */

module LibSip_Templates
{
	//LibSip
	import from LibSip_SIPTypesAndValues all;
	import from LibSip_SDPTypes all;
	import from LibSip_Interface all;
	import from LibSip_PIXITS all;
	import from LibSip_XMLTypes all;
	

	group SubFields
	{

		template Addr_Union m_AddrUnion_NameAddr(template NameAddr p_nameAddr) :=
		{
		  nameAddr := p_nameAddr
		}

		template Addr_Union m_AddrUnion_DisplayAndSipUrl(template charstring p_displayName, template SipUrl p_addrSpec) :=
		{
		  nameAddr := m_CallingAddr(p_displayName, p_addrSpec)
		}
		
		template NameAddr m_CallingAddr(template charstring p_displayName, template SipUrl p_addrSpec) :=
		{
		  displayName := p_displayName,
		  addrSpec := p_addrSpec
		}		

		template CommaParam_List mw_digestResponse(in GenericParam p_genericParam) :=
		{
		  *,p_genericParam,* //* c_Integrity_protected_yes
		}	

		template SemicolonParam_List m_cpc :=
		{{"cpc",PX_SIP_ISUP_CPC_VALUE}};

		template SemicolonParam_List m_ReasonParams
			(template charstring p_cause, template charstring p_text) :=
		{m_Cause(p_cause),m_Text(p_text)};
				
		template ReasonValue m_ReasonValue
			(template charstring p_cause, template charstring p_text) :=
		{		  
			token := "Q.850",
			reasonParams := m_ReasonParams(p_cause,p_text)
		};

		template RouteBody mw_routeBody (template SipUrl p_sipurl):=
		{
			nameAddr :=
			{
				displayName := *,
				addrSpec := p_sipurl
			},
			rrParam := *
		}

		template SentProtocol m_SentProtocol (charstring p_protocol) :=
		{protocolName := c_sipName,
		  protocolVersion:= c_sipVersion,
		  transport:= p_protocol};

		template SipUrl m_SipUrl_currDomain(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := p_userprofile.publUsername,//*  charstring
			password := omit		//*  optional charstring
			host := p_userprofile.homeDomain,	//*  hostname, IPv4 or IPv6 as a charstring
			portField := omit	//* p_userprofile.currPort	//* optional integer
		  },
		  urlParameters := omit,
		  headers := omit
		}

		template SipUrl m_SipUrl_contactIpaddr(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := p_userprofile.publUsername,//*  charstring
			password := omit		//*  optional charstring
			host := p_userprofile.contactIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
			portField := p_userprofile.contactPort	//* optional integer
		  },
		  urlParameters := omit,
		  headers := omit
		}

		template SipUrl m_SipUrl_contactIpaddrAndCpc(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
				scheme := c_sipScheme,  		//*  contains "sip"
				userInfo := 			//*  optional
			userOrTelephoneSubscriber := p_userprofile.publUsername & "; cpc=" & PX_SIP_ISUP_CPC_VALUE,//*  charstring
			password := omit		//*  optional charstring
			host := p_userprofile.contactIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
			portField := p_userprofile.contactPort	//* optional integer
				},
				urlParameters := omit,
				headers := omit
		}

		template SipUrl m_SipUrl_currIpaddr(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := p_userprofile.publUsername,//*  charstring
			password := omit		//*  optional charstring
			host := p_userprofile.currIpaddr,	//*  hostname, IPv4 or IPv6 as a charstring
			portField := p_userprofile.currPort	//* optional integer
		  },
		  urlParameters := omit,
		  headers := omit
		} 
   
		template SipUrl m_SipUrl_Anonymous :=  	//*  SIP-URL with a calles party number
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := "Anonymous",//*  charstring
			password := omit		//*  optional charstring
			host := "Anonymous.invalid",	//*  hostname, IPv4 or IPv6 as a charstring
			portField := omit	//* optional integer
		  },
		  urlParameters := omit,
		  headers := omit
		};
		
		template SipUrl m_TelUrl_publUser(in SipUserProfile p_userprofile) :=  	//*  SIP-URL of the test system on SIP side
		  scheme := c_telScheme,  		//*  contains "tel"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := p_userprofile.publUsername,//*  charstring
			password := omit		//*  optional charstring
			host := omit,	//*  hostname, IPv4 or IPv6 as a charstring
			portField := omit	//* p_userprofile.currPort	//* optional integer
		  },
		  urlParameters := omit,
		  headers := omit
		}

	
		template SipUrl mw_TelSip_unavailableInvalidUri :=
		{
				scheme  := (c_telScheme,c_sipScheme),
				userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
				hostPort := {host:="anonymous.invalid", portField:=c_defaultSipPort},
				urlParameters := omit,
				headers := omit
		};		

	
		template SipUrl mw_TelSip_unavailableUri (charstring p_host):=
		{
				scheme  := (c_telScheme,c_sipScheme),
				userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
				hostPort := {host:=p_host, portField:=c_defaultSipPort},
				urlParameters := omit,
				headers := omit
		};		

		template SipUrl mw_SipUrl_Number(charstring p_number) :=  	//*  SIP-URL with a calling party number
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
		  hostPort := ?,
		  urlParameters := *,
		  headers := *
		};

		template SipUrl mw_TelSipUrl_Number(template charstring p_number) :=  	//*  SIP-URL with a calling party number
				scheme := (c_telScheme,c_sipScheme), //*  contains "sip" or "tel"
				userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*}, //*  nat or int format
				hostPort := ?,
				urlParameters := *,
				headers := *
		};
		
		template SipUrl mw_SipUrl_Host(charstring p_host) :=  	//*  SIP-URL with a calling party number
				scheme := c_sipScheme,  		//*  contains "sip"
				userInfo:= {userOrTelephoneSubscriber:=?, password:=*},
				hostPort := {host:=p_host, portField:=*},
				urlParameters := *,
				headers := *
		};

          template SipUrl mw_SipUrl_NumberHost(charstring p_number, charstring p_host) :=  	//*  SIP-URL with a calling party number
            scheme := c_sipScheme,  		//*  contains "sip"
            userInfo:= {userOrTelephoneSubscriber:=p_number, password:=*},
            hostPort := {host:=p_host, portField:=*},
            urlParameters := *,
            headers := *
          };

		template SipUrl mw_SipUrl_Anonymous :=  	//*  SIP-URL with a calles party number
		  scheme := c_sipScheme,  		//*  contains "sip"
		  userInfo := 			//*  optional
			userOrTelephoneSubscriber := "Anonymous",//*  charstring
			password := omit		//*  optional charstring
			host := "anonymous.invalid",	//*  hostname, IPv4 or IPv6 as a charstring
			portField := *	//* optional integer
		  },
		  urlParameters := *,
		  headers := *
		};

		template SipUrl mw_SipUrl_urlParam(template SemicolonParam_List p_urlParameters) :=  	//*  SIP-URL with a calling party number
				scheme := c_sipScheme,  		//*  contains "sip"
				userInfo:= *,
				hostPort := *,
				urlParameters := p_urlParameters,
				headers := *
		};
		
		template ContactAddress mw_ContactAddress :=
		{
		  addressField  := ?,
		  contactParams := *
		};

		template HostPort mw_hostPort(template charstring p_host) :=
		{
		  host  := p_host,
		  portField := *
		};
		
		template StatusLine mw_statusLine1xx   := {sipVersion := c_sipNameVersion, statusCode := (100..199), reasonPhrase := ?};
		template StatusLine mw_statusLine4xx   := {sipVersion := c_sipNameVersion, statusCode := (400..499), reasonPhrase := ?};
		template StatusLine mw_statusLineFinal := {sipVersion := c_sipNameVersion, statusCode := (200..699), reasonPhrase := ?};

		template NameAddr mw_NameAddr_DispName_User_Host(template charstring p_dn, template charstring p_user, template charstring p_host) := 
		{
			displayName := p_dn,
			addrSpec :=
			{
				scheme := c_sipScheme,  //*  contains "sip"
				userInfo := {userOrTelephoneSubscriber :=p_user,	password := *},
				hostPort :=
				{
					host := p_host,		//*  hostname, IPv4 or IPv6 as a charstring
					portField := *	//* optional integer
				},
			urlParameters := {m_UserPhone},
			headers := *
			}
		}
		
		template Addr_Union mw_AddrUnion_Nameaddr(template charstring p_dn, template charstring p_user, template charstring p_host):=
		{
			nameAddr:=mw_NameAddr_DispName_User_Host(p_dn,p_user,p_host)
		}
		
		template SipUrl mw_SipUrl_User_Host(template charstring p_user, template charstring p_host) :=
		{
			scheme := c_sipScheme,  //*  contains "sip"
			userInfo := {userOrTelephoneSubscriber :=p_user,	password := *},
			hostPort :=
			{
				host := p_host,		//*  hostname, IPv4 or IPv6 as a charstring
				portField := *	//* optional integer
			},
			urlParameters := {m_UserPhone},
			headers := *
		}
		template Addr_Union mw_AddrUnion_SipUrl(template charstring p_user, template charstring p_host):=
		{
			addrSpecUnion:=mw_SipUrl_User_Host(p_user,p_host)
		}
		

poglitsch's avatar
poglitsch committed
		
		template Allow m_Allow (template Method_List p_methods) := {
			fieldName := ALLOW_E,
			methods := p_methods
		}
		
		template Allow mw_Allow (charstring p_method) := {
			fieldName := ALLOW_E,
			methods := superset(p_method)
		}

		template GenericParam m_Cause (template charstring p_cause):=
			{id:="cause", paramValue:=p_cause}

		template Authorization m_Authorization (template Credentials p_Credentials):=
		{
		  fieldName := AUTHORIZATION_E,
		  body := p_Credentials
		}
		
		template Authorization m_Authorization_digest (template CommaParam_List p_CommaParam_List):=
		{
		  fieldName := AUTHORIZATION_E,
		  body := {digestResponse := p_CommaParam_List}
		}

		template Authorization m_add_Authorization_digest (in Authorization p_auth, template CommaParam_List p_CommaParam_List):=
		{
		  fieldName := AUTHORIZATION_E,
		  body := {digestResponse := f_merge_CommaParam_List(p_auth.body.digestResponse,valueof(p_CommaParam_List))}
		}

		template Authorization m_Authorization_other :=
		{
		  fieldName := AUTHORIZATION_E,
		  body := {otherResponse := ?}
		}

		template Contact m_Contact(template SipUrl p_sipUrl) :=
		{
		  fieldName := CONTACT_E,
		  contactBody :=
		  {
			contactAddresses :=
			{
			  {
				addressField := { addrSpecUnion := p_sipUrl},
				contactParams := omit
			  }
			}
		  } //* end contactBody
		}//* end m_Contact

		template Contact m_Contact_profile(in SipUserProfile p_userprofile) :=
		{
		  fieldName := CONTACT_E,
		  contactBody :=
		  {
			contactAddresses :=
			{
			  {
				addressField := { addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
				contactParams := omit
			  }
			}
		  } //* end contactBody
		}//* end m_Contact


		template Contact m_Contact_profile_expires(in SipUserProfile p_userprofile, in charstring p_expires) :=
		{
		  fieldName := CONTACT_E,
		  contactBody :=
		  {
			contactAddresses :=
			{
			  {
				addressField := { addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)},
				contactParams := {{"expires",p_expires}}
			  }
			}
		  } //* end contactBody
		}//* end m_Contact
		
		template From m_From(template NameAddr p_nameAddr, charstring p_tag_str) :=
		{
		  fieldName := FROM_E,
		  addressField :=
		  {nameAddr := p_nameAddr},//* end addressField
		  fromParams := {{id := c_tagId, paramValue := p_tag_str}}
		};
		
		template From m_From_SipUrl(template SipUrl p_sipUrl) :=
		{
				fieldName := FROM_E,
				addressField :=
				{nameAddr := {
						displayName := omit, 	 			//*  optional charstring
						addrSpec := p_sipUrl		//*  SipUrl
				}},//* end addressField
				fromParams := omit
		};

		template Event m_Event_conference := 
		{
			fieldName := EVENT_E,
			eventType := "conference",
			eventParams := omit
		};

		template Event m_Event_presence := 
		{
			fieldName := EVENT_E,
			eventType := "presence",
			eventParams := omit
		};

		template Event m_Event_reg := 
		{
			fieldName := EVENT_E,
			eventType := "reg",
			eventParams := omit
		};

		template Expires m_Expires_600000 := 
		{
			fieldName := EXPIRES_E,
			deltaSec := "600000"
		};

		template Expires m_Expires (charstring p_deltaSec):= 
		{
			fieldName := EXPIRES_E,
			deltaSec := p_deltaSec
		};

		template PAssertedID m_PAssertedID(template Addr_Union p_pAssertedIDValue) := 
		{
			fieldName := P_ASSERTED_ID_E,
			pAssertedIDValueList := {p_pAssertedIDValue}
		};

		template PAssertedID m_PAssertedID_2x(template Addr_Union p_pAssertedIDValue1, template Addr_Union p_pAssertedIDValue2) := 
		{
			fieldName := P_ASSERTED_ID_E,
			pAssertedIDValueList := {p_pAssertedIDValue1, p_pAssertedIDValue2}
		};
	
		template PAssertedID mw_PAssertedID(template PAssertedIDValue p_pAssertedIDValue) := 
		{
			fieldName := P_ASSERTED_ID_E,
			pAssertedIDValueList := {p_pAssertedIDValue}
		};

		template PAssertedIDValue mw_PAssertedIDValue(template SipUrl p_SipUrl) := 
		{
			addrSpecUnion := p_SipUrl
		};
		
		template PPreferredID m_PPreferredID(template Addr_Union p_pPreferredIDValue) := 
		{
			fieldName := P_PREFERRED_ID_E,
			pPreferredIDValueList := {p_pPreferredIDValue}
		};

		template Privacy m_Privacy(PrivacyValue p_privacy) := 
		{
			fieldName := PRIVACY_E,
			privValueList := {p_privacy}
		};

		template Privacy m_Privacy_without(PrivacyValue p_privacy) := 
		{
			fieldName := PRIVACY_E,
			privValueList := complement({*,p_privacy,*})
		};
				
		template RAck m_RAck(integer p_responseNum, integer p_seqNumber, charstring p_method) :=
		{
		  	fieldName := RACK_E,
		  	responseNum := p_responseNum,
		  	seqNumber := p_seqNumber,
		  	method  := p_method
	  	};

		template Reason m_Reason(integer p_cause) :=
		{		  
			fieldName := REASON_E,
			reasonValues := {m_ReasonValue(int2str(p_cause),"dummy")}
		};

		template Reason m_Reason21 :=
		{		  
			fieldName := REASON_E,
			reasonValues := {m_ReasonValue(int2str(21),"call reject")}
		};

		template RecordRoute m_recordRoute_currIpAddr (in SipUserProfile p_userprofile):=
		{   
			fieldName := RECORD_ROUTE_E,
			routeBody := {{nameAddr := {displayName := omit, 
									   addrSpec := 	{scheme := c_sipScheme,  			//*  contains "sip"
													userInfo := omit,
													hostPort := {host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
													urlParameters := omit,
													headers := omit}
									   },
						  rrParam := omit}
		}};
	
		template ReferredBy m_ReferredBy_SipUrl(template SipUrl p_sipUrl) := 
		{
			fieldName := REFERRED_BY_E,
			nameAddr :={displayName := omit, addrSpec:=p_sipUrl},
			referredbyIdParams := omit
		}

		template ReferTo m_ReferTo_SipUrl(template SipUrl p_sipUrl) := 
		{
			fieldName := REFER_TO_E,
			nameAddr :={displayName := omit, addrSpec:=p_sipUrl},
			referToParams := {{id:="method",paramValue :="INVITE"}}
		}
		
		template Require m_Require_100rel :=
		{		  
			fieldName := REQUIRE_E,
			optionsTags := {c_tag100rel}
		};
		
		template Require m_Require_prec :=
		{		  
			fieldName := REQUIRE_E,
			optionsTags := {c_tagPrecond}
		};
		
pintar's avatar
pintar committed
        template Supported m_Supported_fromChange :=
        {
       		fieldName:=SUPPORTED_E, 
       		optionsTags:={c_tagFromChange}
      	}
		
		template Supported m_Supported_prec :=
		{
			fieldName:=SUPPORTED_E, 
			optionsTags:={c_tagPrecond}
		}
		
poglitsch's avatar
poglitsch committed
		template Supported m_Supported_100rel :=
		{
			fieldName:=SUPPORTED_E, 
			optionsTags:={c_tag100rel}
		}
		
		template Supported m_Supported_100rel_prec :=
		{
			fieldName:=SUPPORTED_E, 
			optionsTags:={c_tag100rel, c_tagPrecond}
		}

		template GenericParam m_Text (template charstring p_text):=
			{id:="text", paramValue:=p_text}
		
		template GenericParam m_UserPhone :=
		{
			id := "user",
			paramValue := "phone"
		}
		
		template To m_To(template SipUrl p_sipUrl) :=
		{
		  fieldName := TO_E,
		  addressField :=
		  {nameAddr := {
			  displayName := "ETSI Tester", //*  optional charstring
			  addrSpec :=	p_sipUrl		//*  SipUrl
			}},//* end addressField
		  toParams := omit
		};

		template To m_To_SipUrl(SipUrl p_sipUrl) :=
		{
		  fieldName := TO_E,
		  addressField :=
		  {nameAddr := {
			  displayName := omit, 	 			//*  optional charstring
			  addrSpec := p_sipUrl		//*  SipUrl
			}},//* end addressField
		  toParams := omit
		};

		template To mw_To_NameAddr_SipUrl(template charstring p_dn, template charstring p_user, template charstring p_host) :=
		{
			fieldName := TO_E,
			addressField := (mw_AddrUnion_Nameaddr(p_dn,p_user,p_host),mw_AddrUnion_SipUrl(p_user,p_host)),
			toParams := omit
		}

		template From mw_From(template SipUrl p_sipUrl) := {
		  fieldName := FROM_E,
		  addressField := { addrSpecUnion := p_sipUrl},
		  fromParams:= *
		}

		template ViaBody m_ViaBody_currIpaddr(charstring branch_val,in SipUserProfile p_userprofile) :=
		{
		  sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
		  sentBy:={host:=p_userprofile.currIpaddr, portField:= p_userprofile.currPort},
		  viaParams:={{id :=c_branchId,paramValue :=branch_val}}
		}
		
		template ViaBody mw_ViaBody_interface(HostPort p_hostport) :=
		{
		  sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT),
		  sentBy:={host:=p_hostport.host, portField:= p_hostport.portField},
		  viaParams:=*
		}

		template Via mw_Via(template ViaBody p_viabody) :=
		{
		  fieldName := VIA_E,
		  viaBody:= ? //*  superset(p_viabody)
		}
		
		template CallId mw_CallId_any :=
		{
		  fieldName := CALL_ID_E,
		  callid := ?
		}

		template Privacy mw_Privacy_id := 
		{
			fieldName := PRIVACY_E,
			privValueList := {*,"id",*}
		};
		
		template Privacy mw_Privacy_notId := 
		{
			fieldName := PRIVACY_E,
			privValueList := complement ({*,"id",*})
		};

		template Privacy mw_Privacy_user := 
		{
			fieldName := PRIVACY_E,
			privValueList := {*,"user",*}
		};
		
		template Reason mw_Reason(integer p_cause) :=
		{		  
			fieldName := REASON_E,
			reasonValues := {m_ReasonValue(int2str(p_cause),?)}
		};
		
		template Require mw_Require_not_100rel :=
		{		  
			fieldName := REQUIRE_E,
poglitsch's avatar
poglitsch committed
			optionsTags := superset(complement(c_tag100rel))
poglitsch's avatar
poglitsch committed
		
		template Require mw_require_100rel :=
    	{
    		fieldName := REQUIRE_E,
    		optionsTags := superset(c_tag100rel)
    	};

		template RecordRoute mw_recordroute (template RouteBody p_routeBody):=
		{   
			fieldName := RECORD_ROUTE_E,
			routeBody := ? //*  superset(p_routeBody)
		};
		
		template Route mw_route (template RouteBody_List p_routeBody):=
		{   
			fieldName := ROUTE_E,
			routeBody := p_routeBody
		};
		
poglitsch's avatar
poglitsch committed
		template Supported mw_Supported_100rel_prec :=
		{
			fieldName:=SUPPORTED_E, 
			optionsTags:= superset(c_tag100rel, c_tagPrecond)
		}
		
		template Supported mw_Supported_100rel :=
		{
			fieldName:=SUPPORTED_E, 
			optionsTags:= superset(c_tag100rel)
		}
		
	} //*  end of group HeaderFieldTemplates


group MessageTemplates {
group dummy_templates {
  group dummy_parameter_send {

	template RequestLine m_requestLine_dummy := 
	{
		method := ACK_E,
		requestUri := c_empty_RequestUri,
		sipVersion := c_sipNameVersion
	}

	template MessageHeader m_msgHeader_dummy := 
	{
		accept := omit,
		acceptContact := omit,
		acceptEncoding := omit,
		acceptLanguage := omit,
		alertInfo := omit,
		allow := omit,
		allowEvents := omit, //*  RFC3265
		authenticationInfo := omit,
		authorization := omit,
		callId := c_empty_CallId,
		callInfo := omit,
		contact := omit,
		contentDisposition := omit,
		contentEncoding := omit,
		contentLanguage := omit,
		contentLength := {fieldName := CONTENT_LENGTH_E, len:=  0},
		contentType := omit, //* if message body present m, else not present
		cSeq := c_empty_cSeq,
		date := omit,
		errorInfo := omit,
		event := omit, //*  RFC3265
		expires := omit,
		fromField := c_empty_From,
		historyInfo := omit, //*  RFC4244
		inReplyTo := omit,
		maxForwards := c_maxForwards70,
		mimeVersion := omit,
		minExpires := omit,
		minSE := omit, //*  RFC4028
		organization := omit,
		pAccessNetworkInfo := omit, //*  RFC3455
		pAssertedID := omit,
		pAssertedService := omit,
		pAssociatedURI := omit,
		path := omit, //*  RFC3327
		pCalledPartyID := omit, //*  RFC3455
		pChargingFunctionAddresses := omit, //*  RFC3455
		pChargingVector := omit, //*  RFC3455
		pEarlyMedia := omit, //*  RFC5009
		pMediaAuthorization := omit, //*  RFC3313
		pPreferredID := omit,
		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
		replyTo := omit,
		require := omit,
		retryAfter := omit,
		route := omit,
		securityClient := omit, //*  RFC3329
		securityServer := omit, //*  RFC3329
		securityVerify := omit, //*  RFC3329
		serviceRoute := omit, //*  RFC3608
		sessionExpires := omit, //*  RFC4028
		subscriptionState := omit, //*  RFC3265
		supported := omit,
		timestamp := omit,
		toField := c_empty_To,
		unsupported := omit,
		userAgent := omit,
		via := c_empty_Via,
		warning := omit,
		wwwAuthenticate := omit,
		undefinedHeader_List := omit
	}
  } //*  group dummy_parameter_send
  
  group dummy_parameter_receive {

	template RequestLine mw_requestLine_dummy := 
	{
		method := ACK_E,
		requestUri := ?,
		sipVersion := c_sipNameVersion
	}

	template MessageHeader mw_msgHeader_dummy := 
	{
		accept := *,
		acceptContact := *,
		acceptEncoding := *,
		acceptLanguage := *,
		alertInfo := *,
		allow := *,
		allowEvents := *, //*  RFC3265
		authenticationInfo := *,
		authorization := *,
		callId := ?,
		callInfo := *,
		contact := *,
		contentDisposition := *,
		contentEncoding := *,
		contentLanguage := *,
		contentLength := ?,
		contentType := *,
		cSeq := ?,
		date := *,
		errorInfo := *,
		expires := *,
		fromField := ?,
		historyInfo := *, //*  RFC4244
		inReplyTo := *,
		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
		replyTo := *,
		require := *,
		retryAfter := *,
		route := *,
		securityClient := *, //*  RFC3329
		securityServer := *, //*  RFC3329
		securityVerify := *, //*  RFC3329
		serviceRoute := *, //*  RFC3608
		sessionExpires := *, //*  RFC4028
		subscriptionState := *, //*  RFC3265
		supported := *,
		timestamp := *,
		toField := ?,
		unsupported := *,
		userAgent := *,
		via := ?,
		warning := *,
		wwwAuthenticate := *,
		undefinedHeader_List := *
	}
  }//* end group dummy_parameter_receive
  
  group dummy_request_templates_send {

	template ACK_Request m_ACK_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template BYE_Request m_BYE_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template CANCEL_Request m_CANCEL_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	template INVITE_Request m_INVITE_Dummy :=
	{
		requestLine	:= m_requestLine_dummy,
		msgHeader := m_msgHeader_dummy,
		messageBody := omit,
		payload := omit
	}

	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,