Newer
Older
template(value) To p_to,
template(value) Via p_via,
template(value) Route p_route,
template(value) RecordRoute p_recordroute,
template(value) PAssertedID p_pAssertedID,
template(value) Privacy p_privacy,
template(value) MessageBody p_mb
) modifies m_Response_ext := {
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_sdpApplication
// },
pAssertedID := p_pAssertedID,
privacy := p_privacy
},
messageBody := p_mb
}
template(present) StatusLine p_statusLine := ?,
template(present) DeltaSec p_deltaSec := ?
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {expires := mw_Expires(p_deltaSec)}
}
template(present) Response mw_Response_PAsserted_Privacy(
template(present) 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(present) StatusLine p_statusLine := ?,
template CallId p_callId,
template CSeq p_cSeq,
template(value) charstring p_cause
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {reason := mw_Reason(p_cause)}
}
template(present) 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(present) StatusLine p_statusLine := ?,
template(present) Via p_via := ?
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {via := p_via}
template(present) 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 := ?
},
template(present) StatusLine p_statusLine := ?,
template CallId p_callId,
template CSeq p_cSeq,
template AlertInfo p_alertInfo
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {alertInfo := p_alertInfo}
}
template(present) StatusLine p_statusLine := ?,
template CallId p_callId,
template CSeq p_cSeq,
template HistoryInfo p_historyInfo
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {historyInfo := p_historyInfo}
}
template(present) 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(present) 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 := ?
},
template(present) Response mw_Response_Require_ifpresent(
template(present) 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 := ?
},
msgHeader := {require := p_require ifpresent}
}
template(present) StatusLine p_statusLine := ?,
template CallId p_callId,
template CSeq p_cSeq,
template Supported p_supported
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {supported := p_supported}
}
template(present) StatusLine p_statusLine := ?,
template CallId p_callId,
template CSeq p_cSeq
) modifies mw_Response_Base := {
statusLine := {
sipVersion := c_sipNameVersion,
statusCode := p_statusLine.statusCode,
reasonPhrase := ?
},
msgHeader := {userToUser := ?}
group SDP_Templates {
group SDP_Messages {
group base_templates {
template(value) SDP_Message m_SDP(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile
) := {
protocol_version := 0, //* v=0
origin := {
user_name := PX_SIP_SDP_user_name,
session_id := PX_SIP_SDP_session_id,
session_version := "0",
net_type := c_in,
addr_type := c_ip4,
addr := p_userprofile.contactIpaddr
},
//* o=voicesession 12345 12345 IN IP4 172.27.1.219
session_name := "Voice Session", //* s=Voice Session
information := omit,
uri := omit,
emails := omit,
phone_numbers := omit,
connection := {
net_type := c_in,
addr_type := c_ip4,
conn_addr := {
addr := p_userprofile.bearerIpaddr,
ttl := omit,
num_of_addr := omit
}
}, //* c=IN
//* IP4
//* 172.27.1.219
times := {
{
time_field := {"0", "0"},
time_repeat := omit
}
}, //* t=0 0
timezone_adjustments := omit,
key := omit,
attributes := omit,
media_list := {p_media}
}
template(value) SDP_Message m_SDP_mediaList(
template(value) SDP_media_desc_list p_media_list,
template(value) SipUserProfile p_userprofile
) := {
protocol_version := 0, //* v=0
origin := {
user_name := PX_SIP_SDP_user_name,
session_id := PX_SIP_SDP_session_id,
session_version := "0",
net_type := c_in,
addr_type := c_ip4,
addr := p_userprofile.contactIpaddr
},
//* o=voicesession 12345 12345 IN IP4 172.27.1.219
session_name := "Voice Session", //* s=Voice Session
information := omit,
uri := omit,
emails := omit,
phone_numbers := omit,
connection := {
net_type := c_in,
addr_type := c_ip4,
conn_addr := {
addr := p_userprofile.bearerIpaddr,
ttl := omit,
num_of_addr := omit
}
}, //* c=IN
//* IP4
//* 172.27.1.219
times := {
{
time_field := {"0", "0"},
time_repeat := omit
}
}, //* t=0 0
timezone_adjustments := omit,
key := omit,
attributes := omit,
media_list := p_media_list
}
template(value) SDP_Message m_SDP_media_attr_preconditions(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile,
template(value) SDP_attribute_list p_attribute_list
) modifies m_SDP := {
media_field := {
media := c_audio,
ports := {
port_number := 8500,
num_of_ports := omit
},
transport := c_rtpAvp,
fmts := {"0"}
}, //* m=audio
//* 8500
//* RTP/AVP
//* 0
information := omit,
connections := omit,
bandwidth := omit,
key := omit,
attributes := p_attribute_list
}
}
}
template(value) SDP_Message m_SDP_attribute(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile,
template(value) SDP_attribute loc_attribute
) modifies m_SDP := {
attributes := {loc_attribute}
}
template(present) SDP_Message mw_SDP := {
protocol_version := 0, //* v=0
origin := ?,
session_name := ?,
information := omit,
uri := omit,
emails := omit,
phone_numbers := omit,
connection := ?,
bandwidth := omit,
times := {
{
time_field := {"0", "0"},
time_repeat := omit
}
}, //* t=0 0
timezone_adjustments := omit,
key := omit,
attributes := omit,
media_list := ?
}
template(value) SDP_Message m_SDP_bandwidth(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile
) modifies m_SDP := {
bandwidth := {
{
PX_SIP_SDP_b_modifier,
PX_SIP_SDP_b_bandwidth
}
}
template(value) SDP_Message m_SDP_unacceptable(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile
) modifies m_SDP := {
protocol_version := 1, //* v=1 unacceptable version of
//* SDP
bandwidth := {
{
PX_SIP_SDP_b_modifier,
PX_SIP_SDP_b_bandwidth
}
}
template(value) SDP_Message m_SDP_encrypted(
template(value) SDP_media_desc p_media,
template(value) SipUserProfile p_userprofile
{
PX_SIP_SDP_b_modifier,
PX_SIP_SDP_b_bandwidth
}
group SDP_Fields {
template(value) SDP_media_desc m_media(template(value) SDP_media_field p_mf) := {
media_field := p_mf,
information := omit,
connections := omit,
bandwidth := omit,
key := omit,
attributes := omit
template(value) SDP_media_desc m_mediaFieldBandwdthAttributes(
template(value) SDP_media_field p_mf,
template(omit) SDP_bandwidth_list p_bw_l := omit,
template(omit) SDP_attribute_list p_attributes := omit
) := {
media_field := p_mf,
information := omit,
connections := omit,
bandwidth := p_bw_l,
key := omit,
attributes := p_attributes
template(value) SDP_media_desc m_media_dynPT(
template(value) charstring p_PT,
template(value) charstring p_encod,
template(omit) SDP_key p_sdpKey := omit
media_field := {
media := c_audio, //* "audio",
}, //* m=audio 8500 RTP/AVP 8
information := omit,
connections := omit,
bandwidth := omit,
attributes := {{rtpmap := {attr_value := p_PT & " " & p_encod}}} //* a=rtpmap:8 PCMA/8000
}
template(value) SDP_media_desc m_media_unsupported := {
media_field := {
media := PX_SIP_SDP_media_video,
}, //* m=audio 8500 RTP/AVP 0
information := omit,
connections := omit,
bandwidth := omit,
key := omit,
attributes := {{rtpmap := {attr_value := PX_SIP_SDP_media_attribute_Exp}}}
template(value) SDP_bandwidth m_bandwidth(
template(value) charstring loc_m,
template(value) integer loc_b
) := {
modifier := loc_m,
bandwidth := loc_b
template(value) SDP_bandwidth m_bandwidth_as_64 := {
modifier := "AS",
bandwidth := 64
}
template(present) SDP_bandwidth mw_bandwidth_rs := {
modifier := "RS",
bandwidth := ?
}
template(present) SDP_bandwidth mw_bandwidth_rr := {
modifier := "RR",
bandwidth := ?
}
template(value) SDP_media_field m_media_field(
template(value) charstring p_media,
template(value) integer p_portNum,
template(value) charstring p_transport,
template(value) charstring p_fmts
) := {
media := p_media,
ports := {
port_number := p_portNum,
num_of_ports := omit
},
transport := p_transport,
fmts := {p_fmts}
}
template(present) SDP_media_field mw_media_PCMU := {
media := c_audio,
ports := {
port_number := ?,
num_of_ports := *
},
transport := c_rtpAvp,
fmts := {"0"}
}
template(present) SDP_media_field mw_media_PCMA := {
media := c_audio,
ports := {
port_number := 8500,
num_of_ports := omit
},
transport := c_rtpAvp,
fmts := {"8"}
}
template(present) SDP_media_field mw_media_PCMA_U_DPT := {
media := c_audio,
ports := {
port_number := ?,
num_of_ports := *
},
transport := c_rtpAvp,
fmts := {*}
}
template(present) SDP_media_field mw_media_T38 := {
media := c_image,
ports := {
port_number := ?,
num_of_ports := *
},
transport := pattern "*ptl", //* udptl,tcptl
fmts := {"t38"}
}
template(present) SDP_media_field mw_media_G722 := {
media := c_audio,
ports := {
port_number := ?,
num_of_ports := *
},
transport := "RTP/AVP",
fmts := {"9"}
}
template(present) SDP_media_field mw_media_AMR_DPT := {
media := c_audio,
ports := {
port_number := ?,
num_of_ports := *
},
transport := c_rtpAvp,
fmts := {*}
}
template(present) SDP_media_field mw_media_MSRP := {
media := c_msrp,
ports := {
port_number := ?,
num_of_ports := omit
},
transport := c_msrpTcp,
fmts := {*}
}
template(value) SDP_attribute m_attribute_sendonly := {sendonly := {}}
template(present) SDP_attribute mw_attribute_sendonly := {sendonly := {}}
template(value) SDP_attribute m_attribute_recvonly := {recvonly := {}}
template(present) SDP_attribute mw_attribute_recvonly := {recvonly := {}}
template(value) SDP_attribute m_attribute_sendrecv := {sendrecv := {}}
template(present) SDP_attribute mw_attribute_sendrecv := {sendrecv := {}}
template(value) SDP_attribute m_attribute_inactive := {inactive := {}}
template(present) SDP_attribute mw_attribute_inactive := {inactive := {}}
template(present) SDP_attribute mw_attribute_sendonly_inactive := (mw_attribute_sendonly, mw_attribute_inactive);
template SDP_attribute mw_attribute_sendrecv_recvonly_omit := (mw_attribute_sendrecv, mw_attribute_recvonly, omit);
template(value) SDP_attribute m_attribute_AMR_DPT := {rtpmap := {attr_value := PX_SIP_SDP_dyn & " " & PX_SIP_SDP_media_transport_AMR}}
template(value) SDP_attribute m_attribute_CLEARMODE_DPT := {rtpmap := {attr_value := PX_SIP_SDP_dyn & " " & PX_SIP_SDP_media_transport_Cle}}
template(value) SDP_attribute m_attribute_G722 := {rtpmap := {attr_value := PX_SIP_SDP_encoding_attribute_G222}}
template(value) SDP_attribute m_attribute_PCMU := {rtpmap := {attr_value := PX_SIP_SDP_encoding_attribute_PCMU}}
template(value) SDP_attribute m_attribute_PCMU_DPT := {rtpmap := {attr_value := PX_SIP_SDP_dyn & " " & PX_SIP_SDP_media_transport_PCMU}}
template(value) SDP_attribute m_attribute_PCMA := {rtpmap := {attr_value := PX_SIP_SDP_encoding_attribute_PCMA}}
template(value) SDP_attribute m_attribute_PCMA_DPT := {rtpmap := {attr_value := PX_SIP_SDP_dyn & " " & PX_SIP_SDP_media_transport_PCMA}}
// TODO: STF471 template name suggests that this is a send
// template, while it contains matching mechanisms
template(present) SDP_attribute mw_attribute_T38 := {
unknown := {
name := ?,
attr_value := pattern "*t38*"
}
}
template(value) SDP_attribute m_attribute_curr(
template(value) charstring p_preconditionType,
template(value) charstring p_statusType,
template(value) charstring p_direction
) := {
curr := {
preconditionType := p_preconditionType,
statusType := p_statusType,
direction := p_direction
}
}
template(present) SDP_attribute mw_attribute_curr := {curr := ?}
template(value) SDP_attribute m_attribute_des(
template(value) charstring p_preconditionType,
template(value) charstring p_strength,
template(value) charstring p_statusType,
template(value) charstring p_direction
) := {
des := {
preconditionType := p_preconditionType,
strength := p_strength,
statusType := p_statusType,
direction := p_direction
}
}
template(present) SDP_attribute mw_attribute_des := {des := ?}
template(value) SDP_attribute m_attribute_conf(
template(value) charstring p_preconditionType,
template(value) charstring p_statusType,
template(value) charstring p_direction
) := {
conf := {
preconditionType := p_preconditionType,
statusType := p_statusType,
direction := p_direction
}
template(value) SimpleMsgSummary m_SMS(
template(value) Msg_summary_line_list p_summaryLineList,
template(value) charstring p_uri
) := {
msg_status_line := m_msgStatusLine_yes,
msg_account := m_msgAccount(p_uri),
msg_summary_line_list := p_summaryLineList,
opt_msg_headers := omit
template(present) SimpleMsgSummary mw_SMS := {
msg_status_line := ?,
msg_account := *,
msg_summary_line_list := *,
opt_msg_headers := *
}
template(present) SimpleMsgSummary mw_SMS_yes := {
msg_status_line := mw_msgStatusLine_yes,
msg_account := *,
msg_summary_line_list := *,
opt_msg_headers := *
}
template(present) SimpleMsgSummary mw_SMS_yesUri := {
msg_status_line := mw_msgStatusLine_yes,
msg_account := mw_msgAccount,
msg_summary_line_list := *,
opt_msg_headers := *
}
template(present) SimpleMsgSummary mw_SMS_yesVoice := {
msg_status_line := mw_msgStatusLine_yes,
msg_account := *,
msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)},
opt_msg_headers := *
}
template(present) SimpleMsgSummary mw_SMS_yesUriVoice := {
msg_status_line := mw_msgStatusLine_yes,
msg_account := mw_msgAccount,
msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)},
opt_msg_headers := *
}
template(value) Msg_status_line m_msgStatusLine_yes := {
msg_type := c_messageWaiting,
msg_status := "yes"
}
template(present) Msg_status_line mw_msgStatusLine_yes := {
msg_type := c_messageWaiting,
msg_status := "yes"
}
template(value) Msg_account m_msgAccount(
template(value) charstring p_uri
) := {
msg_type_account := c_messageAccount,
account_URI :=
p_uri // m_SipUrl_NumberHostParam(PX_IMS_SUT_UE2_PUBLIC_USER,PX_IMS_SUT_UE2_HOME_DOMAIN,omit)
template(present) Msg_account mw_msgAccount := {
msg_type_account := c_messageAccount,
account_URI := ?
}
template(value) Msg_summary_line m_msgSummaryLine(
template(value) charstring p_msgContexClass,
template(value) charstring p_msgs,
template(value) charstring p_urgent_msgs
) := {
msg_context_class := p_msgContexClass,
msgs := p_msgs,
urgent_msgs := p_urgent_msgs
template(present) Msg_summary_line mw_msgSummaryLine(
template(present) charstring p_msgContexClass := ?
) := {
msg_context_class := p_msgContexClass,
msgs := ?,
urgent_msgs := *
template(value) MessageBody m_MBody_SDP(
template(value) SDP_Message p_SDP
) := {
sdpMessageBody := p_SDP
}
template(value) MessageBody m_MBody_XML(
template(value) XmlBody p_xmlBody
) := {
xmlBody := p_xmlBody
}
template(value) MessageBody m_mBody_SMS(
template(value) SimpleMsgSummary p_SMS
) := {
simpleMsgSummary := p_SMS
}
template(value) MessageBody m_MBody_longPlainText := {textplain := c_longMessageContent_1300Bytes}
template(value) MessageBody m_mBody_plainText(
template(value) charstring p_plaitext
) := {
textplain := p_plaitext
}
template(value) MessageBody m_MBody_sipfrag(
template(value) charstring p_sipfrag
) := {
sipfrag := p_sipfrag
}
// TODO STF471 check fixed values vs. PIXITs
template(value) MessageBody m_MBody_MIMESdpXml(
template(value) SDP_Message p_sdp,
template(value) XmlBody p_xmlBody
) := {
boundary := "--" & PX_SIP_MIME_Boundary,
content_type := c_sdpApplication,
content_disposition := omit,
mime_encapsulated_part := {sdpMessageBody := p_sdp}
},
{
content_type := c_ims3gppCwApplication,
content_disposition := omit,
mime_encapsulated_part := {xmlBody := p_xmlBody}
}
}
}
}
template(value) MessageBody m_MBody_MIMESdpEncrypted(
template(value) SDP_Message p_sdp
) := {
mimeMessageBody := {
boundary := "--boundary1", // "PX_SIP_MIME_Boundary",
mimeEncapsulatedList := {
content_type := "application/sdp", // "PX_SIP_SDP_ContentType",
// TODO add "Content-Transfer-Encoding:base64"
content_disposition := "attachment;handling=required;filename=smime.p7", // TODO use PIXIT
mime_encapsulated_part := {sdpMessageBody := p_sdp}
template(present) MessageBody mw_MBody_SDP(
template(present) SDP_Message p_SDP := ?
) := {
sdpMessageBody := p_SDP
}
template(present) MessageBody mw_MBody_XML(
template(present) XmlBody p_xmlBody := ?
) := {
xmlBody := p_xmlBody
}
template(present) MessageBody mw_mBody_SMS(
template(present) SimpleMsgSummary p_SMS := ?
) := {
simpleMsgSummary := p_SMS
}
template(present) SDP_Message p_sdp := ?,
template(present) XmlBody p_xmlBody := ?
mimeMessageBody := {
boundary := ?,
mimeEncapsulatedList := {
{
content_type := ?,
content_disposition := *,
mime_encapsulated_part := {sdpMessageBody := p_sdp}
},
{
content_type := ?,
content_disposition := *,
mime_encapsulated_part := {xmlBody := p_xmlBody}
}
template(present) MessageBody mw_MBody_MIME_Ims3gpp(
template charstring p_disposition,
template(present) Ims_3gpp p_ims3gpp := ?
mimeMessageBody := {
boundary := ?,
mimeEncapsulatedList := {
*,
{
content_type := c_ims3gppApplication,
content_disposition := p_disposition,
mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}}
},
*
}
}
}
template(present) MessageBody mw_MBody_MIME_Ims3gppCW(
template charstring p_disposition,
template(present) Ims_3gpp p_ims3gpp := ?
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
mimeMessageBody := {
boundary := ?,
mimeEncapsulatedList := {
*,
{
content_type := c_ims3gppCwApplication,
content_disposition := p_disposition,
mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}}
},
*
}
}
}
}
/*
*
* @desc group TemplatePreparationFunctions contain functions which are used for templates
*/
group TemplatePreparationFunctions {
group MessageBody_Calculation {
/**
* @desc Calculation of Message Body length
* @param p_mb_par contain message body part
* @return message body length
*/
function f_MessageBodyLength(
template(value) MessageBody p_mb_par
) return integer {
var integer v_result := 0;
if (MB_LENGTH_FROM_ENCVAL) {
// by default it is set to true
// in case the codec encodes the variant selector, this
// needs to be changed to ischosen...
v_result := lengthof(encvalue(p_mb_par)) / 8; // length
// in
// bytes,
// let get
// length
// of
// encoded
// value
}
else {
// assume SDP_Message ONLY in the message body
if (ischosen(p_mb_par.sdpMessageBody)) {
v_result := f_SDPlength(valueof(p_mb_par.sdpMessageBody));
}
if (ischosen(p_mb_par.xmlBody)) {
v_result := f_XMLBody_Length(valueof(p_mb_par.xmlBody), USE_FX_FOR_XML_LENGTH);
}
// assume simpleMsgSummary_Body ONLY in the message body
if (ischosen(p_mb_par.simpleMsgSummary)) {
v_result := f_simpleMsgSummaryBody_Length(valueof(p_mb_par.simpleMsgSummary));
}
if (ischosen(p_mb_par.mimeMessageBody)) {
v_result := f_MIMElength(valueof(p_mb_par.mimeMessageBody));
}