0,0 → 1,1809 |
/* |
* @author STF 346, STF366, STF368, STF369, STF450 |
* @version $Id$ |
* @desc This module provides the types used by the test component |
* for SIP-IMS tests. |
* This module is part of LibImsV2. |
*/ |
|
module LibIms_Steps |
{ |
//LibSip |
import from LibSip_SIPTypesAndValues all; |
import from LibSip_SDPTypes all; |
import from LibSip_Templates all; |
import from LibSip_Steps all; |
import from LibSip_PIXITS all; |
import from LibSip_Interface all; |
import from LibSip_XMLTypes all; |
import from LibSip_MessageBodyTypes all; |
//LibIms |
import from LibIms_Templates all; |
import from LibIms_Interface all; |
import from LibIms_PIXITS all; |
import from LibIms_SIPTypesAndValues all; |
|
group externalfunctions { |
}//end group externalfunctions |
group parameterOperations { |
|
/** |
* |
* @desc functions add new via parameter |
* @param p_message (request) SIP message to be used to prepair via header |
* @param p_userprofile user profile |
*/ |
function f_addNewViaParameter(in Request p_message, in integer p_userprofile) runs on ImsComponent |
{ |
var integer v_intVia; |
var integer i := 0; |
if (ispresent(p_message.msgHeader.via)) { |
|
v_intVia := sizeof(p_message.msgHeader.via.viaBody); |
while (i < v_intVia) { |
p_message.msgHeader.via.viaBody[v_intVia] := p_message.msgHeader.via.viaBody[v_intVia-1]; |
v_intVia := v_intVia - 1; |
} |
vc_branch := c_branchCookie & f_getRndTag(); |
p_message.msgHeader.via.viaBody[0] := valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)); |
vc_via := p_message.msgHeader.via; |
} |
} |
|
/** |
* |
* @desc functions add new via parameter |
* @param p_message (request) SIP message to be used to prepair via header |
* @param p_userprofile user profile |
*/ |
function f_addNewRecordRouteAndRemoveRoutParameter(in Request p_message) runs on ImsComponent |
{ |
var integer v_intRoute,v_intRecordRoute; |
var integer i := 1; |
var integer j := 0; |
var RouteBody v_route1; |
var Route v_newRoute; |
v_newRoute.fieldName := ROUTE_E; |
if (ispresent(p_message.msgHeader.route)) { |
|
v_intRoute := sizeof(p_message.msgHeader.route.routeBody); |
v_route1 := p_message.msgHeader.route.routeBody[0]; |
while (i < v_intRoute) { |
v_newRoute.routeBody[i-1] := p_message.msgHeader.route.routeBody[i]; |
i := i + 1; |
} |
vc_route := v_newRoute; |
} |
|
if (ispresent(p_message.msgHeader.recordRoute)) { |
|
v_intRecordRoute := sizeof(p_message.msgHeader.recordRoute.routeBody); |
while (j < v_intRecordRoute) { |
p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute] := p_message.msgHeader.recordRoute.routeBody[v_intRecordRoute-1]; |
v_intRecordRoute := v_intRecordRoute - 1; |
} |
p_message.msgHeader.recordRoute.routeBody[0] := v_route1; |
vc_recordRoute := p_message.msgHeader.recordRoute; |
} |
} |
|
/** |
* |
* @desc functions add new recordRoute parameter |
* @param p_message (request) SIP message to be used to prepair via header |
* @param p_userprofile user profile |
*/ |
function f_addNewRecordRouteIMS(in RecordRoute p_rr) runs on ImsComponent return template RecordRoute |
{ |
template RecordRoute v_recordRoute := omit; |
var integer v_intRecordRoute; |
var integer i := 1; |
var integer j := 0; |
|
v_intRecordRoute := sizeof(p_rr.routeBody); |
if (v_intRecordRoute>0){ |
while (j < v_intRecordRoute) { |
p_rr.routeBody[v_intRecordRoute] := p_rr.routeBody[v_intRecordRoute-1]; |
v_intRecordRoute := v_intRecordRoute - 1; |
} |
p_rr.routeBody[0] := valueof(m_routeBody_currIpAddr(vc_userprofile)); |
vc_recordRoute := p_rr; |
return vc_recordRoute; |
} |
else {return(v_recordRoute)} |
} |
|
}//end group parameterOperations |
|
group fieldOperations { |
|
/* |
* |
* @desc sets BYE header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to send Bye |
* @verdict |
*/ |
function f_setHeadersBYE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
// vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
// |
// vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
vc_route := f_route(); // update the route header field depending on vc_boo_route |
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route |
|
LibSip_Steps.f_setHeadersBYE(p_cSeq_s); |
|
}// end f_setHeadersBYE |
|
/* |
* |
* @desc sets CANCEL header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to send Cancel |
* @verdict |
*/ |
function f_setHeadersCANCEL(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_route := f_route(); // update the route header field depending on vc_boo_route |
vc_recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route |
|
LibSip_Steps.f_setHeadersCANCEL(p_cSeq_s); |
|
}// end f_setHeadersCANCEL |
|
/** |
* |
* @desc sets headers for forward request from AS in case if AS acts as Proxy |
* @param p_proxyMode true = proxyMode, false = B2BMode |
*/ |
function f_setHeadersForwardRequestFromAS (inout CSeq p_cSeq_s, boolean p_proxyMode) runs on ImsComponent |
{ |
var Request v_request; |
v_request := vc_request; |
|
if (p_proxyMode) |
{ |
vc_requestUri2 := v_request.requestLine.requestUri; |
vc_to := v_request.msgHeader.toField; |
vc_contact := v_request.msgHeader.contact; |
f_addNewViaParameter(v_request, c_userProfile_AS1); |
f_addNewRecordRouteAndRemoveRoutParameter(v_request); |
} |
else |
{ //B2Bmode |
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); |
vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; |
} |
}// end function f_setHeadersForwardRequest |
|
/** |
* |
* @desc sets header fields for forward request from AS in case if AS acts as Proxy |
*/ |
function f_setHeadersForwardResponseFromAS (inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
var Response v_response; |
v_response := vc_response; |
|
vc_via:= v_response.msgHeader.via; // TODO via header need to be adapted due to standards |
|
if (ispresent(v_response.msgHeader.recordRoute)) { |
vc_recordRoute:= v_response.msgHeader.recordRoute; // TODO recordRoute header need to be adapted due to standards |
} |
}// end function f_setHeadersForwardResponse |
|
/* |
* |
* @desc sets Invite header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersINVITE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
LibSip_Steps.f_setHeadersINVITE(p_cSeq_s); |
|
}// end f_setHeadersINVITE |
|
/* |
* |
* @desc sets Invite header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersUPDATE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
LibSip_Steps.f_setHeadersUPDATE(p_cSeq_s); |
|
}// end f_setHeadersUPDATE |
|
/* |
* |
* @desc sets Message header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersMESSAGE(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
LibSip_Steps.f_setHeadersMESSAGE(p_cSeq_s); |
|
}// end f_setHeadersMESSAGE |
|
/* |
* |
* @desc sets Notify header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersNOTIFY(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
LibSip_Steps.f_setHeadersNOTIFY(p_cSeq_s); |
|
vc_branch := c_branchCookie & f_getRndTag(); |
vc_via:={ |
fieldName := VIA_E, |
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))} |
}; |
|
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
//contact header initialization for sending of NOTIFY from CSCF component |
vc_contact := valueof(m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile))); |
|
}// end f_setHeadersNOTIFY |
|
/* |
* |
* @desc sets Publish header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersPUBLISH(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
LibSip_Steps.f_setHeadersPUBLISH(p_cSeq_s); |
|
vc_branch := c_branchCookie & f_getRndTag(); |
vc_via:={ |
fieldName := VIA_E, |
viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))} |
}; |
|
vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
//contact header initialization for sending of PUBLISH from CSCF component |
vc_contact := valueof(m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile))); |
|
}// end f_setHeadersPUBLISH |
|
/** |
** |
* @desc sets Subscribe header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersSUBSCRIBE(inout CSeq p_cSeq_s, in SipUrl p_to_user) runs on ImsComponent |
{ |
vc_to := { fieldName := TO_E, |
addressField := |
{ |
nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := p_to_user // SipUrl |
} |
},//end addressField |
toParams := omit |
}; |
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri :=p_to_user; // Request URI of Invite is identical with To header |
|
LibSip_Steps.f_setHeadersSUBSCRIBE(p_cSeq_s); |
|
}// end f_setHeadersSUBSCRIBE |
|
/** |
* @desc sets headers for ReINVITE method |
* @param p_cSeq_s current cSeq |
* @param p_orginatingSide true in case of Re-INVITE is send from the orgination endpoint otherwise false. |
*/ |
function f_setHeadersReINVITE (inout CSeq p_cSeq_s, in boolean p_orginatingSide, in integer p_to_user) runs on ImsComponent |
{ |
var integer v_tmp, v_i, v_j, v_nbroute; |
var Request v_request; |
v_request := vc_request; |
|
f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via |
|
vc_reqHostPort := vc_requestUri.components.sip.hostPort; |
|
vc_requestUri := f_initSipUrl(p_to_user); |
|
if(p_orginatingSide) { |
vc_to := vc_caller_To; |
vc_from := vc_caller_From; |
} |
else { |
vc_to := vc_callee_To; |
vc_from := vc_callee_From; |
|
//get route from previous ACK request |
// Route Management |
if (ispresent(v_request.msgHeader.recordRoute)) |
{ |
vc_recordRoute := v_request.msgHeader.recordRoute; |
v_nbroute := sizeof(vc_recordRoute.routeBody); |
// copy and reverse the order of the routes in route header |
for (v_i:=0; v_i<=(v_nbroute - 1); v_i:=v_i+1) |
{ |
v_j:= v_nbroute - 1 - v_i; |
vc_route.routeBody[v_j]:=vc_recordRoute.routeBody[v_i]; |
} |
vc_route.fieldName := ROUTE_E; |
vc_boo_recordRoute := true; |
vc_boo_route := true; |
} |
else |
{ |
vc_boo_recordRoute := false; |
vc_boo_route := false; |
} |
|
} |
|
v_tmp := str2int(vc_sdp_local.origin.session_id); |
vc_sdp_local.origin.session_id := int2str(v_tmp + 1); |
v_tmp := str2int(vc_sdp_local.origin.session_version); |
vc_sdp_local.origin.session_version := int2str(v_tmp + 1); |
|
}// end function f_setHeadersReINVITE |
|
/** |
* |
* @desc sets component variables related to message header fields |
* when sending requests from the home I-CSCF (TS) to the visited P-CSCF (SUT) |
* (message type independent: CSeq, contact, via), function uses information from |
* userprofile and interfaceprofile |
* |
* @param p_cSeq_s CSeq parameter |
* @param p_method method name for cSeq header field |
*/ |
function f_setHeadersGeneral_ICSCF(inout CSeq p_cSeq_s, in charstring p_method) runs on SipComponent |
{ |
var SemicolonParam_List v_params; |
|
p_cSeq_s.fieldName := CSEQ_E; |
p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1; |
p_cSeq_s.method := p_method ; |
vc_cSeq := p_cSeq_s; |
|
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); |
|
vc_branch := c_branchCookie & f_getRndTag(); |
vc_branch_ICSCF := c_branchCookie & f_getRndTag(); |
|
vc_via:={ |
fieldName := VIA_E, |
viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)), |
valueof(m_ViaBody_virtualUEinPCSCF(vc_branch_ICSCF, vc_userprofile)) |
} |
}; |
}// end function f_setHeadersGeneral_ICSCF |
|
/** |
* |
* @desc sets header field for the next outgoing REGISTER message |
* from the visited P-CSCF to the home I-CSCF |
* @param p_cSeq_s CSeq parameter to be applied |
*/ |
function f_setHeaders_REGISTER_PCSCF(inout CSeq p_cSeq_s) runs on SipComponent |
{ |
var SemicolonParam_List v_params; |
|
f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via |
|
vc_requestUri:= |
{ |
scheme := c_sipScheme, |
components := { sip:= { |
userInfo := omit, |
hostPort := {host:=vc_userprofile.registrarDomain, portField:=omit}}}, |
urlParameters := omit, |
headers := omit |
}; |
|
vc_reqHostPort := vc_requestUri.components.sip.hostPort; |
|
vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; |
vc_callIdReg := vc_callId; |
|
vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); |
v_params := {{id:=c_tagId, paramValue:=f_getRndTag()}} |
vc_from := {fieldName := FROM_E, |
addressField :=vc_to.addressField, |
fromParams := v_params |
}; |
|
if(not vc_firstREGISTER_sent) |
{ |
v_params := {{id:=c_expiresId, paramValue:=c_shortRegistration}}; |
vc_contact.contactBody.contactAddresses[0].contactParams := v_params; |
} |
|
vc_firstREGISTER_sent := true;//f_setHeaders_Register is called in deREGISTER function |
|
vc_authorization := |
{ |
fieldName := AUTHORIZATION_E, |
body := {f_calculatecCredentials_empty(vc_userprofile)} |
} |
|
}// end function setHeaders_REGISTER_PCSCF |
|
|
|
/* |
* |
* @desc sets REFER header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_to_user user_profile id of the user to be invited |
* @verdict |
*/ |
function f_setHeadersREFER(inout CSeq p_cSeq_s, in integer p_to_user) runs on ImsComponent |
{ |
//vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier |
|
//vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := f_initSipUrl(p_to_user); // Request URI of Invite is identical with To header |
|
if (vc_boo_route) |
{ vc_route := valueof(m_route_interface(vc_interfaceprofile))}; |
if (vc_boo_recordRoute) |
{ vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile))}; |
|
LibSip_Steps.f_setHeadersREFER(p_cSeq_s); |
|
}// end f_setHeadersREFER |
|
/* |
* @desc sets REFER header fields (IMS addresses) |
* extension of general settings from LibSip basic function |
* @param p_cSeq_s current cSeq |
* @param p_uri SipUrl for request URI and To header |
*/ |
function f_setHeadersREFER_conf(inout CSeq p_cSeq_s, in SipUrl p_uri) runs on ImsComponent |
{ |
vc_to := { |
fieldName := TO_E, |
addressField := { |
nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := p_uri // SipUrl |
} |
},//end addressField |
toParams := omit |
}; |
|
vc_from := f_initFromHeader(vc_userprofile.id, f_getRndTag()); // init of vc_from using userProfile identifier |
|
vc_requestUri := p_uri; // Request URI of Invite is identical with To header |
|
if (vc_boo_route) { |
vc_route := valueof(m_route_interface(vc_interfaceprofile)) |
}; |
if (vc_boo_recordRoute) { |
vc_recordRoute := valueof(m_recordRoute_currIpAddr(vc_userprofile)) |
}; |
|
LibSip_Steps.f_setHeadersREFER(p_cSeq_s); |
}// end f_setHeadersREFER_conf |
|
} // end group fieldOperations |
|
group awaitingMessage { |
} |
group sendMessage { |
/** |
* |
* @desc send PRACK message |
* @param p_request template of the message to be sent |
*/ |
function f_SendPRACK_sdp(template MessageBody p_mb) runs on SipComponent |
{ |
f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via |
vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method)); |
|
SIPP.send(m_PRACK_Request_sdp( |
vc_requestUri, |
vc_callId, |
vc_cSeq, |
vc_from, |
vc_to, |
vc_via, |
vc_rAck, |
p_mb |
)) to vc_sent_label; |
} |
|
} |
group globalSteps { |
|
/* |
* |
* @desc sets user parameters with PIXIT values |
* @param p_user identifies the selected user configuration and location |
* @verdict |
*/ |
function f_init_userprofile(in integer p_user) runs on ImsComponent |
{ |
LibSip_Steps.f_init_userprofile(p_user); |
|
select(p_user){ |
case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; |
} |
|
case (c_userProfile_UE2atSUThome) { //variant c_userProfile_UE2atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE2_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE2_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE2_REGISTRAR; |
} |
|
case (c_userProfile_UE3atSUThome) { //variant c_userProfile_UE3atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE3_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE3_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE3_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE3_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE3_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE3_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE3_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE3_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE3_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE3_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE3_REGISTRAR; |
} |
|
case (c_userProfile_UE4atSUThome) { //variant c_userProfile_UE4atSUThome |
vc_userprofile.currPort := PX_IMS_TS_UE4_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE4_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; |
} |
|
case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting - UE3 parameters |
vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE3_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE3_HOME_DOMAIN; |
vc_userprofile.publUsername := PX_IMS_SUT_UE3_PUBLIC_USER; |
vc_userprofile.qop := PX_IMS_SUT_UE3_QOP; |
vc_userprofile.privUsername := PX_IMS_SUT_UE3_PRIVAT_USERNAME; |
vc_userprofile.passwd := PX_IMS_SUT_UE3_PRIVAT_PASSWD; |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE3_REGISTRAR; |
} |
|
// //temporary not used and it can be deleted during validation |
// case (c_userProfile_UE1atSUTvisiting) { //variant c_userProfile_UE1atSUTvisiting |
// vc_userprofile.currPort := PX_IMS_TS_UE2_PORT; |
// vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR; |
// vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; |
// vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; |
// vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR; |
// vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; |
// vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; |
// vc_userprofile.qop := PX_IMS_SUT_UE2_QOP; |
// vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME; |
// vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD; |
// vc_userprofile.registrarDomain := PX_IMS_TS_UE2_REGISTRAR; |
// } |
|
case (c_userProfile_IBCFwithHomeUE) { //variant c_userProfile_IBCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_IBCFwithVisitingUE) { //variant c_userProfile_IBCFwithVisitingUE |
vc_userprofile.currPort := PX_IMS_TS_IBCF_PORT; // via (Ic interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_IBCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_IBCF_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_IBCF_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE - UE4 parameters |
vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_IBCFwithUnknownUE) { //variant |
vc_userprofile.currPort := PX_IMS_TS_ICSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_ICSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_PCSCFwithHomeUE) { //variant c_userProfile_PCSCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_PCSCFwithVisitingUE) { //variant c_userProfile_PCSCFwithVisitingUE |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_REGISTRAR; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
// another visting user in IMS (cp. TP_IMST2_MW_REG_15: different public id, same private id) |
case (c_userProfile_PCSCFwithVisitingUE2) { //variant |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
// unknown visting user in IMS (cp. TP_IMST2_MW_REG_16) |
case (c_userProfile_PCSCFwithUnknownVisitingUE) { //variant |
vc_userprofile.currPort := PX_IMS_TS_PCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_PCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_unknownUE_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE - UE4 parameters |
vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_SCSCFwithHomeUE_domain) { //variant c_userProfile_SCSCFwithHomeUE - UE4 parameters |
vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization |
} |
|
case (c_userProfile_AS1) { //variant c_userProfile_AS1 |
vc_userprofile.currPort := PX_IMS_TS_AS1_PORT; // via, route(Isc interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_AS1_IPADDR; // via, route |
vc_userprofile.contactPort := PX_IMS_TS_AS1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_AS1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_TS_AS1_HOME_DOMAIN; // via, routevc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) |
vc_userprofile.publUsername := "as1"; |
vc_userprofile.qop := ""; // Authorization |
vc_userprofile.privUsername := ""; // Authorization |
vc_userprofile.passwd := ""; // Authorization |
vc_userprofile.registrarDomain := ""; // Authorization |
|
} |
|
case (c_userProfile_AS2) { //variant c_userProfile_AS2 |
vc_userprofile.currPort := PX_IMS_TS_AS2_PORT; // via, route(Isc interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_AS2_IPADDR; // via, route |
vc_userprofile.homeDomain := PX_IMS_TS_AS2_HOME_DOMAIN; // via, route |
} |
|
case (c_userProfile_ECSCFwithHomeUE) { //variant c_userProfile_PCSCFwithHomeUE |
vc_userprofile.currPort := PX_IMS_TS_ECSCF_PORT; // via (Mw interface of TS) |
vc_userprofile.currIpaddr := PX_IMS_TS_ECSCF_IPADDR; // via |
vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; // contact (simulated UE) |
vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; // contact |
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; |
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; // From, To (register) |
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; // From, To (register) |
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; // Authorization |
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; // Authorization |
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; // Authorization |
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; // Authorization |
} |
|
} |
} |
|
function f_initToHeader(in integer p_user) runs on ImsComponent return To |
{ |
var To p_to := c_empty_To; |
p_to := { fieldName := TO_E, |
addressField := |
{nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := f_initSipUrl(p_user) // SipUrl |
}},//end addressField |
toParams := omit |
}; |
return(p_to); |
} |
|
|
function f_initFromHeader(in integer p_user, charstring p_tag_str) runs on ImsComponent return From |
{ |
var From p_from := c_empty_From; |
p_from := { fieldName := FROM_E, |
addressField := |
{nameAddr := { |
displayName := omit, // optional charstring |
addrSpec := f_initSipUrl(p_user) // SipUrl |
}},//end addressField |
fromParams := {{id := c_tagId, paramValue := p_tag_str}} |
}; |
return(p_from) |
} |
|
function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl |
{ |
var SipUrl v_sipUrl := { |
scheme := c_sipScheme, // contains "sip" |
components := { sip:= { |
userInfo := omit, |
hostPort := {omit,omit}}}, |
urlParameters := omit, |
headers := omit}; |
|
var SipUrl v_urnUrl := { |
scheme := c_urnScheme, // contains "urn" |
components := { urn:= { |
namespaceId := "service", |
namespaceSpecificString := "sos"}}, |
urlParameters := omit, |
headers := omit}; |
|
select(p_user){ |
case (c_userProfile_UE1atSUThome) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_UE2atSUThome) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_UE3atSUThome) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE3_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE3_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_UE4atSUThome) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE4_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_IBCFwithHomeUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_ICSCFwithHomeUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_IMS1UE_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_PCSCFwithHomeUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit} |
} |
case (c_userProfile_PCSCFwithVisitingUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_PCSCF_IPADDR, portField :=omit} |
} |
case (c_userProfile_SCSCFwithHomeUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_TS_SCSCF_PORT} |
} |
case (c_userProfile_SCSCFwithHomeUE_domain) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=omit} |
} |
case (c_userProfile_AS1) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_AS1_IPADDR, portField :=omit} |
} |
case (c_userProfile_ECSCFwithHomeUE) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_IMS1UE_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_ECSCF_IPADDR, portField :=omit} |
} |
case (c_userProfile_ISUP) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_ISUP_PUBLIC_USER, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_ISUP_HOME_DOMAIN, portField :=omit} |
} |
case (c_serviceProfile_EMERGENCY) { |
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceId; |
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString; |
} |
case (c_serviceProfile_EMERGENCY_INVALID) { |
v_urnUrl.components.urn.namespaceId := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceId; |
v_urnUrl.components.urn.namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_INVALID_namespaceSpecificString; |
} |
|
// following setting is used for the assignment of the Path header field |
case (c_interfaceProfile_IMS_SUT_PCSCF1) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
|
// following setting is used in relation to the route headers list elements |
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_domain) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
case (c_interfaceSIPURL_IMS_SUT_PCSCF1_ip) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_PCSCF1_IPADDR, portField :=PX_IMS_TS_SCSCF_PORT} |
} |
case (c_interfaceProfile_IMS_SUT_SCSCF) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:="", password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_SCSCF_HOME_DOMAIN, portField :=PX_IMS_SUT_PCSCF1_PORT} |
} |
case (c_conferenceProfile_factoryURI) { |
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_CONF_FACTORY_NAME, password:=omit}; |
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_CONF_HOME_DOMAIN, portField := omit} |
} |
}; |
if(p_user == c_serviceProfile_EMERGENCY or p_user == c_serviceProfile_EMERGENCY_INVALID) |
{return(v_urnUrl)} |
else |
{return(v_sipUrl)} |
} |
|
|
/* |
* |
* @desc sets user parameters with PIXIT values |
* @param p_user identifies the selected user configuration and location |
* @verdict |
*/ |
function f_init_interfaceprofile(in integer p_interface) runs on ImsComponent |
{ |
select(p_interface){ |
case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; |
} |
case (c_interfaceProfile_IMS_SUT_AS) { //variant c_interfaceProfile_IMS_SUT_AS |
vc_interfaceprofile.SUTPort := PX_IMS_SUT_AS_PORT; |
vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_AS_IPADDR; |
vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_AS_HOME_DOMAIN; |
} |
} |
} |
|
/* |
* |
* @desc retrieves user DomainPort value of the interface profile |
* @param p_interface identifies the selected interface |
* @return DomainPort template |
*/ |
function f_get_userDomainPort (in SipUserProfile p_userProfile) runs on ImsComponent return /*template*/ HostPort |
{ |
return {p_userProfile.homeDomain, p_userProfile.currPort} |
} |
|
/* |
* |
* @desc retrieves HostPort value of the interface profile |
* @param p_interface identifies the selected interface |
* @return HostPort template |
*/ |
function f_get_interfaceHostPort (in ImsInterfaceProfile p_interface) runs on ImsComponent return /*template*/ HostPort // STS commented out template but check why in there in first place |
{ |
return {p_interface.SUTIpaddr,p_interface.SUTPort} |
} |
|
/* |
* |
* @desc retrieves DomainPort value of the interface profile |
* @param p_interface identifies the selected interface |
* @return DomainPort template |
*/ |
function f_get_interfaceDomainPort (in ImsInterfaceProfile p_interface) runs on ImsComponent return /*template*/ HostPort |
{ |
return {p_interface.SUTHomeDomain,p_interface.SUTPort} |
} |
|
/* |
* @desc retrieves SipUrl of the interface profile |
* @param p_interface identifies the selected interface |
* @return SipUrl template |
*/ |
function f_get_interfaceNameAddr(in ImsInterfaceProfile p_interface) runs on ImsComponent return template NameAddr |
{ |
return mw_SipUrl_SUTinterface(p_interface.SUTIpaddr,p_interface.SUTPort) |
} |
|
|
} |
group registration { |
|
/** |
* |
* @desc registration and authentication with MD5 |
* @param p_cSeq_s cseq parameter |
* @param p_auth flag indicating if authentication is needed |
*/ |
function f_Registration_IMS(inout CSeq p_cSeq_s, in boolean p_auth) runs on SipComponent |
{ |
f_setHeaders_REGISTER(p_cSeq_s); |
f_SendREGISTER(m_REGISTER_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest(vc_authorization,{c_Integrity_protected_no}))); //LibSip |
|
//awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER |
if (p_auth) |
{ |
// receiving 401 Unauthorized response. |
// and Re-send REGISTER request with Authorization header |
tc_ack.start(PX_SIP_TACK); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response |
{ |
tc_ack.stop; |
// set headers via, cseq and authorization |
f_setHeaders_2ndREGISTER(p_cSeq_s); |
f_SendREGISTER(m_REGISTER_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest(vc_authorization,{c_Integrity_protected_yes}))); //LibSip |
|
// awaiting 200 OK REGISTER |
f_awaitingOkResponse(p_cSeq_s); |
f_getServiceRouteMapIntoRouteInRegistration(p_cSeq_s, vc_response); |
} |
[] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) |
{ |
tc_ack.stop; |
log ("Authorization was not requested as expected"); |
setverdict(inconc) |
} |
} |
} |
else |
{ |
f_awaitingOkResponse(p_cSeq_s); |
f_getServiceRouteMapIntoRouteInRegistration(p_cSeq_s, vc_response); |
}; |
}//end function f_Registration_IMS |
|
/** |
* |
* @desc awaiting UE1 registration (with authentication) |
* @param p_cSeq_s cseq parameter |
*/ |
function f_awaitingRegistration_IMS(inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
var SipUrl v_passociated_url; |
var Authorization p_authorization; |
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending))))); |
|
// 200OK to complete the request |
vc_contact := vc_request.msgHeader.contact; |
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}}; |
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE),v_passociated_url)); |
|
}//end function f_awaitingRegistration_IMS |
|
/** |
* |
* @desc awaiting UE1 registration (with authentication) |
* @param p_cSeq_s cseq parameter |
*/ |
function f_awaitingRegistration_IMS_gm(inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
var SipUrl v_passociated_url; |
var Authorization p_authorization; |
vc_ignore_subscribe := true;//handle SUBSCRIBE during the call |
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_authorizedRequest_wo_securityheaders_IMS); |
//f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse((c_Integrity_protected_yes,c_Integrity_protected_ip_assoc_pending))))); |
|
// 200OK to complete the request |
vc_contact := vc_request.msgHeader.contact; |
vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(3600)}}; |
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE),v_passociated_url)); |
vc_DeregDone := false; |
}//end function f_awaitingRegistration_IMS_gm |
|
|
/** |
* |
* @desc remove registration |
* @param p_cSeq_s cseq parameter |
*/ |
function f_RemoveRegistration_IMS(inout CSeq p_cSeq) runs on SipComponent |
{ |
var CommaParam_List v_challenge; |
var Credentials v_credentials; |
var template REGISTER_Request v_request; |
|
if (PX_SIP_REGISTRATION) |
{ |
f_setHeaders_deREGISTER(p_cSeq); |
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, |
p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); |
v_request.msgHeader.route := f_route(); |
|
f_SendREGISTER(v_request); |
if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) |
{ |
// receiving 401 Unauthorized response. |
// and Re-send REGISTER request with Authorization header |
tc_ack.start(PX_SIP_TACK); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response |
{ |
tc_ack.stop; |
// set headers via, cseq and authorization |
f_setHeaders_2ndREGISTER(p_cSeq); |
v_request := m_REGISTER_Request_expires_IMS(vc_requestUri, vc_callIdReg, |
p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0"); |
v_request.msgHeader.route := f_route(); |
// Re-send protected REGISTER |
f_SendREGISTER(v_request);//LibSip |
|
// awaiting 200 OK REGISTER |
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); |
} |
[] SIPP.receive (mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq))-> value vc_response |
{ |
tc_ack.stop; |
f_setHeadersOnReceiptOfResponse(vc_cSeq, vc_response); |
log ("Authorization was not requested as expected"); |
} |
} |
} |
else |
{ |
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); |
} |
} |
} // end f_RemoveRegistration_IMS |
|
|
} // end group registration |
|
group preambles { |
|
/* |
* |
* @desc Sets variables and default initialization for user profile where proxy role is present |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_MGCF(in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
vc_boo_recordRoute := true; |
vc_boo_route := true; |
f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_MGCF); |
|
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
} |
|
/* |
* |
* @desc Sets variables and default initialization for user profile |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_woRegistration(in integer p_userprofile, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
// avoid deregistration in default behavior |
vc_DeregDone := true; |
vc_boo_route := true; |
vc_boo_recordRoute := true; |
|
//Variables & defaults initialization |
LibSip_Steps.f_init_component(p_cSeq_s); |
|
//Preamble |
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable |
vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); |
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); |
} |
|
/* |
* |
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5 |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
* @param p_register register template |
*/ |
function f_IMS_preamble_withRegistration (in integer p_userprofile, in integer p_interface, inout CSeq p_cSeq_s, template REGISTER_Request p_register) runs on ImsComponent |
{ |
|
f_init_interfaceprofile(p_interface); |
//Variables & defaults initialization |
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
|
//Preamble |
f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); |
|
// deregistration in case of successful registration |
vc_DeregDone := false; |
|
f_setHeaders_SUBSCRIBE(p_cSeq_s); |
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG)); |
|
} |
|
/* |
* |
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5 |
* (basic registration template) |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_withRegistrationBasic (in integer p_userprofile,in integer p_interface, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
f_init_interfaceprofile(p_interface); |
//Variables & defaults initialization |
f_IMS_preamble_woRegistration(p_userprofile, p_cSeq_s); |
|
//Preamble |
f_Registration_IMS(p_cSeq_s, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); |
f_setHeaders_SUBSCRIBE(p_cSeq_s); |
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG)); |
} |
|
/* |
* |
* @desc Sets variables and default initialization for user profile and handle registration and authentication with MD5 |
* (basic registration template) |
* @param p_userprofile user profile of call |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_preamble_AS (in integer p_userprofile, in integer p_interface, inout CSeq p_cSeq_s) runs on ImsComponent |
{ |
// avoid deregistration in default behavior |
vc_DeregDone := true; |
vc_boo_route := true; |
vc_boo_recordRoute := true; |
vc_cSeq := p_cSeq_s; |
|
//Defaults |
vc_def_catchSyncStop := activate(a_Sip_catchSyncStop()); |
vc_default := activate (a_altstep_AS()); |
|
//Preamble |
f_init_interfaceprofile(p_interface); |
f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable |
vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); |
vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); |
} |
|
} // end group preambles |
|
group postambles { |
|
/* |
* |
* @desc Sets variables and default initialization for user profile and handle deregistration |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_postamble_withDeRegistration (CSeq p_CSeq) runs on ImsComponent { |
f_RemoveRegistration(p_CSeq); // TODO check if applicable for IMS |
|
f_terminate_component(); |
} |
|
/* |
* |
* @desc Sets variables and default initialization for user profile and handle deregistration on AS as TS |
* @param p_cSeq_s cseq parameter |
*/ |
function f_IMS_postamble_AS_withDeRegistration (boolean p_deRegistration) runs on ImsComponent { |
|
if(p_deRegistration == true) |
{f_awaitingREGISTER_sendReply(mw_REGISTER_Request_Base,true);} |
f_terminate_component(); |
} |
|
function f_SIP_postamble_IMS1_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_IMS_postamble_withoutDeRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_SIP_postamble_IMS1_awaitDeRegistration () runs on ImsComponent |
{ |
var SipUrl v_passociated_url; |
//Awaiting 1st REGISTER |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
// f_awaitingREGISTER(mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
// vc_contact := vc_request.msgHeader.contact; |
// vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(0)}}; |
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE),v_passociated_url)); |
|
f_terminate_component() |
}; |
|
function f_IMS_postamble_awaitDeRegistration () runs on ImsComponent |
{ |
var SipUrl v_passociated_url; |
//Awaiting 1st REGISTER |
|
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
// vc_contact := vc_request.msgHeader.contact; |
// vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(0)}}; |
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE),v_passociated_url)); |
|
f_terminate_component() |
}; |
|
|
function f_IMS_awaitDeRegistration () runs on ImsComponent |
{ |
var SipUrl v_passociated_url; |
//Awaiting 1st REGISTER |
|
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); |
|
// 401 response |
f_sendResponse(m_Response_WWWauthenticate_IMS(c_statusLine401, |
vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, |
m_wwwAuthenticate(f_calculatecChallenge_forWWWAuthorization |
(PX_IMS_SUT_UE1_QOP,vc_authorization.body[0].digestResponse))) |
); |
|
//Awaiting 2nd REGISTER with authorization header |
f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS);//mw_REGISTER_authorizedRequest_IMS(m_Authorization_digest(mw_digestResponse(c_Integrity_protected_yes)))); |
|
// 200OK to complete the request |
// vc_contact := vc_request.msgHeader.contact; |
// vc_contact.contactBody.contactAddresses[0].contactParams := {{"expires",int2str(0)}}; |
v_passociated_url := vc_caller_From.addressField.nameAddr.addrSpec; |
f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_userProfile_SCSCFwithHomeUE),v_passociated_url)); |
}; |
|
function f_SIP_postamble_UE1_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
function f_SIP_postamble_UE2_withoutRegistration () runs on ImsComponent |
{f_terminate_component()}; |
|
/** |
* |
* @desc sends BYE and awaits response |
* @param p_CallId parameter for outgoing BYE |
* @param p_cSeq parameter for outgoing BYE |
* @param p_from parameter for outgoing BYE |
* @param p_to parameter for outgoing BYE |
* @param p_reqHostPort parameter for outgoing BYE |
*/ |
function f_terminateCall_IMS(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, |
template To p_to) runs on ImsComponent |
{ |
LibSip_Steps.f_setHeadersBYE(p_cSeq); |
// Sending of a BYE request to release the call and expect a final response |
f_SendBYE(m_BYE_Request_IMS(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); |
|
tc_resp.start(PX_SIP_TRESP); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) |
{ |
repeat; |
} |
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) |
{ |
tc_resp.stop; |
} |
// timeout should be handled in default_alt_step |
} |
} // end function f_terminateCall |
|
|
/** |
* |
* @desc sends BYE and awaits response |
* @param p_CallId parameter for outgoing BYE |
* @param p_cSeq parameter for outgoing BYE |
* @param p_from parameter for outgoing BYE |
* @param p_to parameter for outgoing BYE |
* @param p_reqHostPort parameter for outgoing BYE |
*/ |
function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, |
template To p_to) runs on ImsComponent |
{ |
LibSip_Steps.f_setHeadersBYE(p_cSeq); |
// Sending of a BYE request to release the call and expect a final response |
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); |
|
tc_resp.start(PX_SIP_TRESP); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) |
{ |
repeat; |
} |
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) |
{ |
tc_resp.stop; |
} |
// timeout should be handled in default_alt_step |
} |
} // end function f_terminateCall_UE |
|
|
/** |
* |
* @desc sends BYE and awaits response and De-registration |
* @param p_CallId parameter for outgoing BYE |
* @param p_cSeq parameter for outgoing BYE |
* @param p_from parameter for outgoing BYE |
* @param p_to parameter for outgoing BYE |
* @param p_reqHostPort parameter for outgoing BYE |
*/ |
function f_terminateCall_UE_withDeReg(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, |
template To p_to) runs on ImsComponent |
{ |
LibSip_Steps.f_setHeadersBYE(p_cSeq); |
// Sending of a BYE request to release the call and expect a final response |
f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); |
|
tc_resp.start(PX_SIP_TRESP); |
alt |
{ |
[] SIPP.receive (mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) |
{ |
repeat; |
} |
[] SIPP.receive (mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) |
{ |
tc_resp.stop; |
} |
// timeout should be handled in default_alt_step |
}; |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
//f_terminate_component(); |
} // end function f_terminateCall_UE_withDeReg |
|
} |
group defaults { |
|
altstep a_clearRegistration_IMSuser() runs on ImsComponent |
{ |
var Response v_response; |
var Request v_request; |
|
[] any timer.timeout |
{ |
setverdict(fail); |
all timer.stop; |
//TODO check how to solve release of call |
//f_SendCANCEL(m_CANCEL_Request(vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_reqHostPort, vc_via )); // difference between registration state or transaction state |
vc_callId := vc_callIdReg; |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
// allow repeated INVITEs |
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) |
{ |
repeat |
} |
|
// allow repeated BYEs after ack of the first BYE |
[vc_ignore_bye] SIPP.receive (mw_BYE_Request_Base(?)) |
{ |
repeat |
} |
[] SIPP.receive (mw_ACK_Request_Base(?)) |
{ |
repeat |
} |
// allow 100 replies |
[] SIPP.receive(mw_Response_Base(c_statusLine100,?, ?)) |
{ |
repeat |
} |
|
// ignore 181 if flag is set (following TS 183004 §4.5.2.1) |
[vc_ignore181] SIPP.receive(mw_Response_Base(c_statusLine181,vc_callId, vc_cSeq))-> value v_response sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response); |
repeat; |
} |
|
// according to SIP chap.8.1.3.2 |
[] SIPP.receive(mw_Response_Base(c_statusLine183,vc_callId, vc_cSeq)) |
{ |
repeat; |
} |
|
// ignore 484 if flag is set |
[vc_ignore484] SIPP.receive(mw_Response_Base(c_statusLine484,vc_callId, vc_cSeq)) |
{ |
repeat |
} |
|
[vc_ignore4xx] SIPP.receive(mw_Response_Base(mw_statusLine4xx,vc_callId, ?))-> value v_response sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response); |
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); |
repeat |
} |
|
[vc_ignore200OKinv] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, ?)) |
{ |
repeat |
} |
|
[] SIPP.receive(mw_INFO_Request_Base(vc_callId))->value v_request sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfRequest(v_request); |
f_send200OK(); |
repeat |
} |
|
// awaiting of Notify |
[] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId))->value v_request sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfRequest(v_request); |
f_send200OK(); |
repeat |
} |
// awaiting of subscribe from UE |
[vc_ignore_subscribe] SIPP.receive(mw_SUBSCRIBE_Request_Base)-> value v_request sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfSUBSCRIBE(v_request); |
f_send200OK(); |
repeat; |
} |
|
//awaiting of subscribe on proxy |
[] SIPP.receive(mw_SUBSCRIBE_Request_Base)->value v_request sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfRequest(v_request); |
f_sendResponse(m_Response_Contact(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact)); |
//f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via |
//f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact)); |
log(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec); |
f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); |
f_awaitingOkResponse(vc_cSeq); |
repeat |
} |
// unexpected BYE is acknowledged to avoid retransmissions |
[] SIPP.receive(mw_BYE_Request_Base(?))-> value v_request sender vc_sent_label |
{ |
setverdict(fail); |
f_setHeadersOnReceiptOfRequest(v_request); |
f_send200OK(); |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
|
// unexpected CANCEL is acknowledged to avoid retransmissions |
[] SIPP.receive(mw_CANCEL_Request_Base(?))-> value v_request sender vc_sent_label |
{ |
setverdict(fail); |
f_setHeadersOnReceiptOfRequest(v_request); |
//Answer to the CANCEL |
f_send200OK(); |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
// catch 4xx response |
[] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?))-> value v_response sender vc_sent_label |
{ |
setverdict(fail); |
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response); |
LibSip_Steps.f_setHeadersACK(); |
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
// catch 5xx response |
[] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?))-> value v_response sender vc_sent_label |
{ |
setverdict(fail); |
f_setHeadersOnReceiptOfResponse(v_response.msgHeader.cSeq, v_response); |
LibSip_Steps.f_setHeadersACK(); |
f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
// catch invalid REGISTER |
[] SIPP.receive(mw_REGISTER_Request_Base)-> value v_request sender vc_sent_label |
{ |
setverdict(fail); |
f_componentStop(); |
} |
// any |
[] SIPP.receive |
{ |
setverdict(fail); |
all timer.stop; |
// f_setHeadersCANCEL(vc_cSeq); |
// f_SendCANCEL(m_CANCEL_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_via )); // difference between registration state or transaction state |
action("Please de-register"); |
f_IMS_awaitDeRegistration(); |
f_componentStop(); |
} |
} |
|
/** |
* |
* @desc main default altstep to handle unexpected messages and timeout |
* @verdict fail for all unexpected branches |
*/ |
altstep a_altstep_AS() runs on SipComponent |
{ |
var Response v_response; |
var Request v_request; |
|
[] any timer.timeout |
{ |
setverdict(fail); |
all timer.stop; |
} |
|
// allow repeated INVITEs |
[vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) |
{ |
repeat |
} |
//handle REGISTER requests |
[] SIPP.receive(mw_REGISTER_Request_Base)-> value v_request sender vc_sent_label |
{ |
f_setHeadersOnReceiptOfREGISTER(v_request); |
//vc_contact := vc_request.msgHeader.contact; |
f_sendResponse(m_Response_Contact(c_statusLine200,vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via, vc_contact)); |
repeat; |
} |
|
// according to SIP chap.8.1.3.2 |
[] SIPP.receive(mw_Response_Base(c_statusLine183,vc_callId, vc_cSeq)) |
{ |
repeat; |
} |
// any |
[] SIPP.receive |
{ |
setverdict(fail); |
all timer.stop; |
} |
} |
} |
} // module LibIms_Steps |
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Index: v2.0.0/ttcn/LibIms_Templates.ttcn |
=================================================================== |
--- v2.0.0/ttcn/LibIms_Templates.ttcn (nonexistent) |
+++ v2.0.0/ttcn/LibIms_Templates.ttcn (revision 161) |
@@ -0,0 +1,3612 @@ |
+/* |
+ * @author STF 346, STF366, STF368, STF369, STF450 |
+ * @version $Id$ |
+ * @desc This module provides the types used by the test component |
+ * for SIP-IMS tests. Module become from STF306 and STF334-336 |
+ * This module is part of LibImsV2. |
+ */ |
+ |
+module LibIms_Templates |
+{ |
+ import from XSDAUX all; |
+ |
+ //LibCommon |
+ import from LibCommon_DataStrings all; |
+ |
+ //LibSip |
+ import from LibSip_SIPTypesAndValues all; |
+ import from LibSip_SDPTypes all; |
+ import from LibSip_Templates all; |
+ import from LibSip_Steps all; |
+ import from LibSip_PIXITS all; |
+ import from LibSip_XMLTypes all; |
+ import from LibSip_MessageBodyTypes all; |
+ |
+ //LibIms |
+ import from LibIms_SIPTypesAndValues all; |
+ |
+ import from LibIms_PIXITS all; |
+ |
+ //LibXMLTypes |
+ import from urn_ietf_params_xml_ns_resource_lists language "XSD" all |
+ with { |
+ extension "File:../xsd/ResourceList.xsd" |
+ } |
+ |
+ import from urn_ietf_params_xml_ns_reginfo language "XSD" all except{type Contact} |
+ with { |
+ extension "File:../xsd/regInfo.xsd" |
+ } |
+ |
+ import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all |
+ with { |
+ extension "File:../xsd/SupplementaryServices.xsd" |
+ } |
+ |
+ import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all |
+ with { |
+ extension "File:../xsd/MCID.xsd" |
+ } |
+ |
+ import from NoTargetNamespace language "XSD" all |
+ with { |
+ extension "File:../xsd/Ims3gpp.xsd" |
+ } |
+ |
+ import from urn_ietf_params_xml_ns_conference_info language "XSD" all |
+ with { |
+ extension "File:../xsd/CONF.xsd" |
+ } |
+ |
+ import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all |
+ with { |
+ extension "File:../xsd/PSTN.xsd" |
+ } |
+ |
+ import from urn_ietf_params_xml_ns_common_policy language "XSD" all |
+ with { |
+ extension "File:../xsd/common-policy.xsd" |
+ } |
+ |
+ import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all |
+ with { |
+ extension "File:../xsd/CDIVN.xsd" |
+ } |
+ |
+ import from urn_3gpp_ns_cw_1_0 language "XSD" all |
+ with { |
+ extension "File:../xsd/cw.xsd" |
+ } |
+ |
+ template charstring m_international_number_format := pattern "\\+\d+";//pattern "\+\d+"; |
+ |
+ template NameAddr mw_SipUrl_SUTinterface(charstring p_host, integer p_port) := |
+ { |
+ displayName := *, |
+ addrSpec := { |
+ scheme := "sip:", |
+ components := { sip:= { |
+ userInfo := *, |
+ hostPort := {p_host, p_port}}}, |
+ urlParameters := *, |
+ headers := * |
+ } |
+ } |
+ |
+ template Addr_Union mw_UE1_Addr_display := {nameAddr:={displayName:=PX_IMS_SUT_UE1_DISPLAY,addrSpec:=?}}; |
+ |
+group Subfields{ |
+ |
+ |
+ template SipUrl m_SipUrl_currIpaddr_CSCF(in SipUserProfile p_userprofile) := //* SIP-URL of the test system on SIP side |
+ { |
+ scheme := c_sipScheme, //* contains "sip" |
+ components := { sip:= { |
+ userInfo := omit, //* optional |
+ hostPort := |
+ { |
+ host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring |
+ portField := p_userprofile.currPort //* optional integer |
+ }}}, |
+ urlParameters := omit, |
+ headers := omit |
+ } |
+ |
+ template SemicolonParam_List mw_semicolonParams_realm (template charstring p_realm) := |
+ /*?;*/ |
+ superset({"realm",p_realm},{"nonce",?},{"algorithm","AKAv1-MD5"},{"ik",?},{"ck",?}) ;//Working with TTWorkbench// ERROR HERE! Superset operation must contain value list - no templates! |
+ template SemicolonParam_List m_semicolonParams_language (template charstring p_language):= |
+ {{"language",p_language}} |
+ |
+ template SemicolonParam_List mw_semicolonParams_language (template charstring p_language):= |
+ {{"language",p_language}} |
+ |
+ template SemicolonParam_List m_semicolonParams_isub (template charstring p_address):= |
+ {{"isub",p_address}} |
+} |
+ |
+group HeaderFieldTemplates{ |
+ |
+ template MinSE m_minSE(DeltaSec p_ds):= |
+ { |
+ fieldName := MIN_SE_E, |
+ deltaSec:=p_ds, |
+ minSeParam:=omit |
+ } |
+ |
+ template PathValue mw_pathvalue (template SipUrl p_sipUrl):= |
+ { |
+ nameAddr := {displayName := *, // optional charstring |
+ addrSpec := p_sipUrl // SipUrl |
+ }, |
+ rrParam := * |
+ } |
+ |
+ template Path m_path (template SipUrl p_sipUrl):= |
+ { |
+ fieldName := PATH_E, |
+ pathValues := { |
+ {nameAddr := { |
+ displayName := omit, // optional charstring |
+ addrSpec := p_sipUrl // SipUrl |
+ }, |
+ rrParam := omit} |
+ } |
+ } |
+ |
+ template Path m_path_TS := { |
+ fieldName := PATH_E, |
+ pathValues := { |
+ { |
+ nameAddr := { |
+ displayName := omit, // optional charstring |
+ addrSpec := { |
+ scheme := c_sipScheme, |
+ components := { sip:= { |
+ userInfo := { |
+ userOrTelephoneSubscriber := "registrar", |
+ password := omit |
+ }, |
+ hostPort := { |
+ PX_IMS_TS_PCSCF_HOME_DOMAIN, PX_IMS_TS_PCSCF_PORT |
+ }}}, |
+ urlParameters := { { id := "lr", paramValue := omit}}, |
+ headers := omit |
+ } |
+ }, |
+ rrParam := omit |
+ } |
+ } |
+ } |
+/* |
+ * @desc Path header field expectation with at least one path value |
+ * @param p_sipUrl value of the last element in the list of path values |
+ */ |
+ template Path mw_path (template SipUrl p_sipUrl):= |
+ { |
+ fieldName := PATH_E, |
+ pathValues := {mw_pathvalue(p_sipUrl)} // any number of SipUrl may occur before p_sipUrl |
+ } |
+ |
+ template PAccessNetworkInfo m_pAccessNetworkInfo_IEEE_11a := |
+ { |
+ fieldName := P_ACCESS_NETWORK_INFO_E, |
+ accessType := "IEEE-802.11a", |
+ genericParams := {{id:="extension-access-info",paramValue :="192.1.1.20"}} |
+ }; |
+ |
+ template PAssertedService m_pAssertedService (PAssertedServiceValue p_pAssertedServiceValue):= |
+ { |
+ fieldName := P_ASSERTED_SERVICE_E, |
+ pAssertedServiceValue := p_pAssertedServiceValue |
+ }; |
+ |
+ template PChargingFunctionAddresses m_pChargingFunctionAddresses_fixedValue := |
+ { |
+ fieldName := P_CHARGING_FUNCTION_ADDRESSES_E, |
+ chargeAddrParams := {{id:="ccf",paramValue :="192.1.1.1"}, // value is fixed because it is deleted on proxy |
+ {id:="ecf",paramValue :="192.1.1.2"}} // value is fixed because it is deleted on proxy |
+ }; |
+ |
+ |
+ template PChargingVector m_pChargingVector(template SemicolonParam_List p_chargeParams) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := p_chargeParams |
+ }; |
+ |
+ template PChargingVector m_pChargingVector_icid_TS := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}} |
+ }; |
+ |
+ template PChargingVector m_pChargingVector_origIoi_fixedValue(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}, |
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, |
+ {id:=c_orig_ioi, paramValue := p_homeDomain}} |
+ }; |
+ |
+ template PChargingVector m_pChargingVector_termIoi_fixedValue(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}, |
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, |
+ {id:=c_term_ioi, paramValue := p_homeDomain}} |
+ }; |
+ |
+ template PChargingVector m_pChargingVector_origIoi_fixedValue1(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := { |
+ {id:=c_icid_generated_at, paramValue :="192.1.1.10"}, |
+ {id:=c_orig_ioi, paramValue := p_homeDomain}} |
+ }; |
+ |
+ template PChargingVector m_pChargingVector_accessNetwInfo(charstring p_homeDomain) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := {{id:=c_icid, paramValue :=c_icid_value}, |
+ {id:=c_term_ioi, paramValue := p_homeDomain}, |
+ {id:=c_access_network_charging_info, paramValue := "192.1.1.10"}} |
+ }; |
+ |
+ template PChargingVector mw_pChargingVector(template charstring p_id, template charstring p_paramValue) := |
+ { |
+ fieldName := P_CHARGING_VECTOR_E, |
+ chargeParams := superset({id := p_id, paramValue := p_paramValue}) |
+ }; |
+ |
+ template PMediaAuthorization m_pMediaAuthorization_fixedValue := |
+ { |
+ fieldName := P_MEDIA_AUTHORIZATION_E, |
+ pMediaAuthorizations := {"A"} // example |
+ }; |
+ |
+ |
+ template PEarlyMedia m_pEarlyMedia_sup := |
+ {fieldName := P_EARLY_MEDIA_E, em_param := {"supported"}}; |
+ |
+ |
+ template ProxyRequire m_proxyRequire_secAgree := |
+ { |
+ fieldName := PROXY_REQUIRE_E, |
+ optionsTags := {"sec-agree"} |
+ }; |
+ |
+ template PVisitedNetworkID m_pVisitedNetworkID_TS := |
+ { |
+ fieldName := P_VISITED_NETWORK_E, |
+ vNetWorkSpec := {{vNetworkSpecToken := "Visited ETSI 1", |
+ genericParams := omit}} |
+ } |
+ |
+ template PVisitedNetworkID mw_pVisitedNetworkID := |
+ { |
+ fieldName := P_VISITED_NETWORK_E, |
+ vNetWorkSpec := {{vNetworkSpecToken := PX_IMS_SUT_PCSCF_VisitedNetworkID, |
+ genericParams := *}} |
+ } |
+ |
+ template RecordRoute m_recordRoute_notmatching:= |
+ { |
+ fieldName := RECORD_ROUTE_E, |
+ routeBody := |
+ {{ |
+ nameAddr := |
+ { |
+ displayName := omit, |
+ addrSpec := |
+ { |
+ scheme := c_sipScheme, // contains "sip" |
+ components := { sip:= { |
+ userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, |
+ hostPort := |
+ { |
+ host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring |
+ portField := omit |
+ }}}, |
+ urlParameters := omit, |
+ headers := omit |
+ } |
+ }, |
+ rrParam := omit |
+ } } |
+ }; |
+ |
+ template Require m_require_secAgree := |
+ { |
+ fieldName := REQUIRE_E, |
+ optionsTags := {"sec-agree"} |
+ }; |
+ |
+ template Require mw_require_path := |
+ { |
+ fieldName := REQUIRE_E, |
+ optionsTags := superset("path") |
+ }; |
+ |
+ template Route m_route_interface (in ImsInterfaceProfile p_interfaceprofile):= |
+ { |
+ fieldName := ROUTE_E, |
+ routeBody := {{nameAddr := {displayName := omit, |
+ addrSpec := {scheme := c_sipScheme, // contains "sip" |
+ components := { sip:= { |
+ userInfo := omit, |
+ hostPort := {host:=p_interfaceprofile.SUTHomeDomain, portField:= omit}}}, |
+ urlParameters := omit, |
+ headers := omit} |
+ }, |
+ rrParam := omit} |
+ }}; |
+ |
+ template Route m_route_notmatching:= |
+ { |
+ fieldName := ROUTE_E, |
+ routeBody := |
+ {{ |
+ nameAddr := |
+ { |
+ displayName := omit, |
+ addrSpec := |
+ { |
+ scheme := c_sipScheme, // contains "sip" |
+ components := { sip:= { |
+ userInfo := {userOrTelephoneSubscriber := "unknown", password := omit}, |
+ hostPort := |
+ { |
+ host := "unknown.domain.name", // hostname, IPv4 or IPv6 as a charstring |
+ portField := omit |
+ }}}, |
+ urlParameters := omit, |
+ headers := omit |
+ } |
+ }, |
+ rrParam := omit |
+ } } |
+ }; |
+ |
+ template SessionExpires m_se(DeltaSec p_ds):= |
+ { |
+ fieldName := SESSION_EXPIRES_E, |
+ deltaSec:=p_ds, |
+ seParam:=omit |
+ } |
+ |
+ template SessionExpires mw_se:= |
+ { |
+ fieldName := SESSION_EXPIRES_E, |
+ deltaSec:=?, |
+ seParam:=omit |
+ } |
+ |
+ template Supported m_supported_timer:= |
+ { |
+ fieldName := SUPPORTED_E, |
+ optionsTags := {"timer"} |
+ } |
+ |
+ template Supported m_supported_histinfo:= |
+ { |
+ fieldName := SUPPORTED_E, |
+ optionsTags := {"histinfo"} |
+ } |
+ |
+ |
+ template Supported m_supported_fromChange:= |
+ { |
+ fieldName := SUPPORTED_E, |
+ optionsTags := {"from-change"} |
+ } |
+ |
+ template To m_To_targetRefreshRequest(template To p_To) := |
+ { |
+ fieldName := TO_E, |
+ addressField := |
+ {nameAddr := { |
+ displayName := p_To.addressField.nameAddr.displayName, |
+ addrSpec := p_To.addressField.nameAddr.addrSpec |
+ }},//end addressField |
+ toParams := {{id := c_tagId, paramValue := f_getRndTag()}} |
+ }; |
+ |
+ template ViaBody m_ViaBody_virtualUEinPCSCF(charstring branch_val,in SipUserProfile p_userprofile) := |
+ { |
+ sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT), |
+ sentBy:={host:=p_userprofile.contactIpaddr, portField:= p_userprofile.contactPort}, |
+ viaParams:={{id :=c_branchId,paramValue :=branch_val}} |
+ } |
+ |
+ template ViaBody m_ViaBody_virtual_XCSCF(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 Via m_via_notmatching:= |
+ { |
+ fieldName := VIA_E, |
+ viaBody := |
+ {{ |
+ sentProtocol := valueof(m_SentProtocol("UDP")), |
+ sentBy:={host:="unknown.domain.name", portField:= 10000}, |
+ viaParams:={{id :=c_branchId,paramValue :="abcd0000"}} |
+ } } |
+ }; |
+ |
+ /* |
+ * @desc WWW-Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template WwwAuthenticate m_wwwAuthenticate (Challenge p_challenge):= |
+ { |
+ fieldName := WWW_AUTHENTICATE_E, |
+ challenge := p_challenge |
+ } |
+ |
+ /* |
+ * @desc WWW-Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template WwwAuthenticate mw_wwwAuthenticate (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := WWW_AUTHENTICATE_E, |
+ challenge := |
+ {digestCln := p_semicolonParam_List // set of GenericParam |
+ } |
+ } |
+ |
+ template SemicolonParam_List mw_challenge := superset(mw_ck,mw_ik); |
+ // template SemicolonParam_List mw_challenge := {mw_ck,mw_ik}; |
+ template GenericParam mw_ck := {"ck"}; |
+ template GenericParam mw_ik := {"ik"} |
+ |
+ |
+ /* |
+ * @desc AcceptContact header field |
+ * @param p_acValues value |
+ */ |
+ template AcceptContact m_acceptContact (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := ACCEPT_CONTACT_E, |
+ acValues := {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam |
+ } |
+ } |
+ |
+ /* |
+ * @desc Authenticate header field |
+ * @param p_challenge value |
+ */ |
+ template AcceptContact mw_acceptContact (template SemicolonParam_List p_semicolonParam_List):= |
+ { |
+ fieldName := ACCEPT_CONTACT_E, |
+ acValues := |
+ {{wildcard:=c_WILDCARD, acRcParams := p_semicolonParam_List} // set of GenericParam |
+ } |
+ } |
+ |
+ template SubscriptionState mw_subscriptionState(template charstring p_state) := { |
+ fieldName := SUBSCRIPTION_STATE_E, |
+ subState := p_state, |
+ substateParams := omit |
+ } |
+ |
+ //[3455/5.1] |
+ template PAssociatedURI m_pAssociatedURI (template NameAddr p_nameAddr) := { |
+ fieldName := P_ASSOCIATED_URI_E, |
+ nameAddrList := {{nameAddr:=p_nameAddr, genericParams:=omit}} |
+ } |
+ |
+ template SecurityServer mw_securityServer (template SecurityMechanism_List p_securityMechanism_List):= { |
+ fieldName := SECURITY_SERVER_E, |
+ securityMech := p_securityMechanism_List |
+ } |
+ |
+ template SecurityClient m_securityClient (template SecurityMechanism_List p_securityMechanism_List):= { |
+ fieldName := SECURITY_CLIENT_E, |
+ securityMech := p_securityMechanism_List |
+ } |
+ |
+ template SecurityVerify m_securityVerify (template SecurityMechanism_List p_securityMechanism_List):= { |
+ fieldName := SECURITY_VERIFY_E, |
+ securityMech := p_securityMechanism_List |
+ } |
+ |
+} // end group HeaderFieldTemplates |
+ |
+group MessageBodyTemplates { |
+ |
+group XMLTemplates { |
+ |
+ template XmlBody m_XmlBody_ConfInfo(template Conference_type p_confInfo) := |
+ { |
+ conference := p_confInfo |
+ }; |
+ |
+ template XmlBody m_XmlBody_CW(template Ims_cw p_cw) := |
+ { |
+ cw := p_cw |
+ }; |
+ |
+ template XmlBody m_XmlBody_CUG(template Cug p_cug) := |
+ { |
+ cug := p_cug |
+ }; |
+ |
+ template XmlBody m_XmlBody_MCID(template Mcid p_mcid) := |
+ { |
+ mcid := p_mcid |
+ }; |
+ |
+ template XmlBody m_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := |
+ { |
+ pstnTransit := p_pstn |
+ }; |
+ |
+ template XmlBody m_XmlBody_simservs(template Simservs p_simservs) := |
+ { |
+ simservs := p_simservs |
+ }; |
+ |
+ template XmlBody m_XmlBody_ACR_ICB(template Incoming_communication_barring p_icb) := { |
+ simservs := { |
+ attr := {}, |
+ absServiceGroup_list := {}, |
+ extensions := { |
+ elem_list := valueof(p_icb.attr) |
+ } |
+ } |
+ }; |
+ |
+ template XmlBody m_XmlBody_ACR_OCB(template Outgoing_communication_barring p_ocb) := { |
+ simservs := { |
+ attr := {}, |
+ absServiceGroup_list := {}, |
+ extensions := { |
+ elem_list := valueof(p_ocb.attr) |
+ } |
+ } |
+ }; |
+ |
+ template XmlBody m_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) := |
+ { |
+ cdivn := p_cdivn |
+ }; |
+ |
+ template XmlBody m_XmlBody_Reginfo(template Reginfo p_regInfo) := |
+ { |
+ regInfo := p_regInfo |
+ }; |
+ |
+ template MessageBody m_messageBodyXML(template XmlBody p_xmlBody) := |
+ { |
+ xmlBody := p_xmlBody |
+ }; |
+ |
+ template Reginfo m_reginfo (template XSDAUX.anyURI p_user):= { |
+ full, |
+ 0, |
+ {m_registration(p_user)}, |
+ {} |
+ }; |
+ |
+ template Registration m_registration (template XSDAUX.anyURI p_user):= { |
+ p_user, // XSDAUX.anyURI aor |
+ "a7", // XSDAUX.string id |
+ init, //enumerated {active,init,terminated} state, |
+ {}, // record of Contact contact_list optional, |
+ {} // record of anytype elem_list optional |
+ }; |
+ |
+ template XmlBody mw_XmlBody_ConfInfo(template Conference_type p_confInfo) := |
+ { |
+ conference := p_confInfo |
+ }; |
+ |
+ template XmlBody mw_XmlBody_CUG(template Cug p_cug) := |
+ { |
+ cug := p_cug |
+ }; |
+ |
+ template XmlBody mw_XmlBody_MCID(template Mcid p_mcid) := |
+ { |
+ mcid := p_mcid |
+ }; |
+ |
+ template XmlBody mw_XmlBody_PSTNTransit(template PSTN_transit p_pstn) := |
+ { |
+ pstnTransit := p_pstn |
+ }; |
+ |
+ template XmlBody mw_XmlBody_CDIVN(template Comm_div_info_type p_cdivn) := |
+ { |
+ cdivn := p_cdivn |
+ }; |
+ |
+ template XmlBody mw_XmlBody_simservs(template Simservs p_simservs) := |
+ { |
+ simservs := p_simservs |
+ }; |
+ |
+ template XmlBody mw_XmlBody_ResourceLists(template Resource_lists p_resourceLists) := |
+ { |
+ resourceLists := p_resourceLists |
+ }; |
+ |
+ template XmlBody mw_XmlBody_Reginfo(template Reginfo p_regInfo) := |
+ { |
+ regInfo := p_regInfo |
+ }; |
+ |
+}// end group XMLTemplates |
+ |
+group ACR_CBTemplates { |
+ |
+ template Incoming_communication_barring m_ICB(template RuleType p_ruleType) := |
+ { |
+ active := omit, |
+ attr := {}, |
+ ruleset := { |
+ {p_ruleType} |
+ } |
+ } |
+ |
+ template Outgoing_communication_barring m_OCB(template(present) RuleType p_ruleType) := |
+ { |
+ active := omit, |
+ attr := {}, |
+ ruleset := { |
+ {p_ruleType} |
+ } |
+ } |
+ |
+ template RuleType m_ruleType_actionFalse(template ConditionsType p_condition) := |
+ { |
+ id := "rule66", |
+ conditions := p_condition, |
+ actions := {elem_list:={"<false/>"}}, |
+ transformations := omit |
+ } |
+ |
+ template ConditionsType m_conditionsType_identity(template(present) charstring p_id, template charstring p_scheme) := { |
+ { |
+ {identity_list := {{{{one := {id := p_id, elem := omit}}}}}} |
+ } |
+ } |
+ |
+} //end group ACR_CBTemplates |
+ |
+group CUGTemplates { |
+ |
+ template Cug m_CUG ( |
+ template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci |
+ ):= { |
+ active := omit, |
+ attr := {}, |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator :=p_cci |
+ } |
+ |
+ template Cug mw_CUG ( |
+ template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci |
+ ):= { |
+ active := omit, |
+ attr := ?, |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator := p_cci |
+ } |
+ |
+ template CugRequestType m_cugReqType(boolean p_outAccessRequest, integer p_cugIndex) := |
+ { |
+ outgoingAccessRequest := p_outAccessRequest, |
+ cugIndex := p_cugIndex |
+ } |
+ |
+ template CugRequestType mw_cugReqType(template boolean p_outAccessRequest, template integer p_cugIndex) := |
+ { |
+ outgoingAccessRequest := p_outAccessRequest, |
+ cugIndex := p_cugIndex |
+ } |
+}//end group CUGTemplates |
+ |
+group CWTemplates { |
+ |
+ template Ims_cw m_CW(template TEmptyType p_cwi) := { |
+ attr := {}, |
+ communication_waiting_indication := p_cwi, |
+ elem_list := {} |
+ } |
+ |
+ template Ims_cw mw_ims_cw(template TEmptyType p_cwi) := { |
+ attr := ?, |
+ communication_waiting_indication := p_cwi, |
+ elem_list := ? |
+ } |
+ |
+ template Cug m_CW2 ( |
+ template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci |
+ ):= { |
+ active := omit, |
+ attr := {}, |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator :=p_cci |
+ } |
+ |
+ template Cug mw_CW ( |
+ template CugRequestType p_crt, |
+ template NetworkIdentityType p_nit, |
+ template SixteenbitType p_cibc, |
+ template TwoBitType p_cci |
+ ):= { |
+ active := omit, |
+ attr := ?, |
+ cugCallOperation := p_crt, |
+ networkIndicator := p_nit, |
+ cugInterlockBinaryCode := p_cibc, |
+ cugCommunicationIndicator := p_cci |
+ } |
+ |
+}//end group CWTemplates |
+ |
+group MCIDTemplates { |
+ |
+ template Mcid m_mcid_request_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ request := {mcidRequestIndicator := bit2str('1'B), |
+ holdingIndicator := bit2str('0'B)} |
+ } |
+ } |
+ |
+ template Mcid m_mcid_request_mcidIndicatorTrue_holdIndTrue := |
+ { |
+ choice := { |
+ request := {mcidRequestIndicator := bit2str('1'B), |
+ holdingIndicator := bit2str('1'B)} |
+ } |
+ } |
+ |
+ template Mcid m_mcid_response_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ response := {mcidResponseIndicator := bit2str('1'B), |
+ holdingProvidedIndicator := bit2str('0'B)} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_request_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ request := {mcidRequestIndicator := bit2str('1'B), |
+ holdingIndicator := ?} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_response_mcidIndicatorTrue := |
+ { |
+ choice := { |
+ response := {mcidResponseIndicator := bit2str('1'B), |
+ holdingProvidedIndicator := ?} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndFalse := |
+ { |
+ choice := { |
+ response := {mcidResponseIndicator := bit2str('1'B), |
+ holdingProvidedIndicator := bit2str('0'B)} |
+ } |
+ } |
+ |
+ template Mcid mw_mcid_response_mcidIndicatorTrue_holdProvIndTrue := |
+ { |
+ choice := { |
+ response := {mcidResponseIndicator := bit2str('1'B), |
+ holdingProvidedIndicator := bit2str('1'B)} |
+ } |
+ } |
+ |
+} //end group MCIDTemplates |
+ |
+group PSTNTemplates { |
+ |
+ template PSTN_transit m_PSTN_transit_BC1(template BearerCapabilityType p_bct) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC2(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2) := |
+ { |
+ bearerInfomationElement_list := {p_bct, p_bct2}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_HLC1(template BearerCapabilityType p_bct, |
+ template HighLayerCompatibilityType p_hlc) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {p_hlc}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_LLC(template BearerCapabilityType p_bct, |
+ template LowLayerCompatibilityType p_llc) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := p_llc, |
+ progressIndicator_list := {}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_PI1(template BearerCapabilityType p_bct, |
+ template ProgressIndicatorType p_pi1) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {p_pi1}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_PI2(template BearerCapabilityType p_bct, |
+ template ProgressIndicatorType p_pi1, |
+ template ProgressIndicatorType p_pi2) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {p_pi1, p_pi2}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_PI3(template BearerCapabilityType p_bct, |
+ template ProgressIndicatorType p_pi1, |
+ template ProgressIndicatorType p_pi2, |
+ template ProgressIndicatorType p_pi3) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {p_pi1, p_pi2, p_pi3}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_HLC2(template BearerCapabilityType p_bct, |
+ template HighLayerCompatibilityType p_hlc1, |
+ template HighLayerCompatibilityType p_hlc2) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {p_hlc1, p_hlc2}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit m_PSTN_transit_BC1_HLC1_PI1(template BearerCapabilityType p_bct, |
+ template HighLayerCompatibilityType p_hlc1, |
+ template ProgressIndicatorType p_pi1) := |
+ { |
+ bearerInfomationElement_list := {p_bct}, |
+ highLayerCompatibility_list := {p_hlc1}, |
+ lowLayerCompatibility := omit, |
+ progressIndicator_list := {p_pi1}, |
+ display_list := {} |
+ } |
+ |
+ template PSTN_transit mw_PSTN_transit_bc(template BearerCapabilityType p_bct, |
+ template BearerCapabilityType p_bct2) := |
+ { |
+ bearerInfomationElement_list := {p_bct, p_bct2}, |
+ highLayerCompatibility_list := {*, *}, |
+ lowLayerCompatibility := *, |
+ progressIndicator_list := {*}, |
+ display_list := {*} |
+ } |
+ |
+ |
+ template BearerCapabilityType m_BearerCapabilityType (Bit5 p_InfoTrfCap):= { |
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ bCoctet4_1 := omit, |
+ bCoctet5 := omit, |
+ bCoctet5a := omit, |
+ bCoctet5bV110 := omit, |
+ bCoctet5bV120 := omit, |
+ bCoctet5c := omit, |
+ bCoctet5d := omit, |
+ bCoctet6 := omit, |
+ bCoctet7 := omit, |
+ bCoctet7a := omit, |
+ bCoctet7b := omit |
+ } |
+ |
+ template ProgressIndicatorType m_ProgressIndicatorType (Bit7 p_progDesc) := { |
+ progressOctet3 := {codingStandard := bit2str('00'B), |
+ location := bit2str('0000'B) |
+ }, |
+ progressOctet4 := {progressDescription := bit2str(p_progDesc)} |
+ } |
+ |
+ template LowLayerCompatibilityType m_LowLayerCompatibilityType (Bit5 p_InfoTrfCap) := { |
+ lLOctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferCapability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ lLOctet3a := omit, |
+ lLOctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ lLOctet4_1 := omit, |
+ lLOctet5 := omit, |
+ lLOctet5a := omit, |
+ lLOctet5bV110 := omit, |
+ lLOctet5bV120 := omit, |
+ lLOctet5c := omit, |
+ lLOctet5d := omit, |
+ lLOctet6 := omit, |
+ lLOctet6aHDLC := omit, |
+ lLOctet6aUserSpecific := omit, |
+ lLOctet6b := omit, |
+ lLOctet7 := {layer3Identification := bit2str('10'B), //TODO check valueand if parameter is mandatory |
+ userInfoLayer3Protocol := bit2str('10000'B)}, //TODO check value and if parameter is mandatory |
+ lLOctet7aUserSpecific := omit, |
+ lLOctet7aX25 := omit, |
+ lLOctet7bX25 := omit, |
+ lLOctet7c := omit, |
+ lLOctet7aTR9577 := omit, |
+ lLOctet7bTR9577 := omit |
+ } |
+ |
+ template HighLayerCompatibilityType m_HighLayerCompatibilityType |
+ (Bit7 p_HLOctet4):= { |
+ hLOctet3 := { |
+ codingStandard :=bit2str('00'B), |
+ interpretation :=bit2str('100'B), |
+ presentationMethod := bit2str('01'B) |
+ }, |
+ hLOctet4 := { |
+ highLayerCharacteristics := bit2str(p_HLOctet4) |
+ }, |
+ hLOctet4aMaintenance := omit, |
+ hLOctet4Audio := omit |
+ } |
+ |
+ template BearerCapabilityType mw_BearerCapabilityType (template BCOctet3Type p_BCOctet3Type, template BCOctet4Type p_BCOctet4Type):= { |
+ bCoctet3 := p_BCOctet3Type, |
+ bCoctet4 := p_BCOctet4Type, |
+ bCoctet4_1 := * , |
+ bCoctet5 := * , |
+ bCoctet5a := * , |
+ bCoctet5bV110 := * , |
+ bCoctet5bV120 := * , |
+ bCoctet5c := * , |
+ bCoctet5d := * , |
+ bCoctet6 := * , |
+ bCoctet7 := * , |
+ bCoctet7a := * , |
+ bCoctet7b := * |
+ } |
+ |
+ template BearerCapabilityType mw_BearerCapabilityType_TrfCap (Bit5 p_InfoTrfCap):= { |
+ bCoctet3 := {codingStandard := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferCabability := bit2str(p_InfoTrfCap)},//Information transfer capability |
+ bCoctet4 := {transferMode := bit2str('00'B), //Coding standard = CCITT standardized coding |
+ informationTransferRate := bit2str('10000'B)}, //Information transfer rate = 64 kbit/s |
+ bCoctet4_1 := * , |
+ bCoctet5 := * , |
+ bCoctet5a := * , |
+ bCoctet5bV110 := * , |
+ bCoctet5bV120 := * , |
+ bCoctet5c := * , |
+ bCoctet5d := * , |
+ bCoctet6 := * , |
+ bCoctet7 := * , |
+ bCoctet7a := * , |
+ bCoctet7b := * |
+ } |
+ |
+ template ProgressIndicatorType mw_ProgressIndicatorType (template ProgressOctet3Type p_ProgressOctet3Type, template ProgressOctet4Type p_ProgressOctet4Type) := { |
+ progressOctet3 := p_ProgressOctet3Type, |
+ progressOctet4 := p_ProgressOctet4Type |
+ } |
+ |
+ template LowLayerCompatibilityType mw_LowLayerCompatibilityType |
+ (template LLOctet3Type p_LLOctet3, template LLOctet4Type p_LLOctet4, template LLOctet7Type p_LLOctet7) := { |
+ lLOctet3 := p_LLOctet3, |
+ lLOctet3a := * , |
+ lLOctet4 := p_LLOctet4, |
+ lLOctet4_1 := * , |
+ lLOctet5 := * , |
+ lLOctet5a := * , |
+ lLOctet5bV110 := * , |
+ lLOctet5bV120 := * , |
+ lLOctet5c := * , |
+ lLOctet5d := * , |
+ lLOctet6 := * , |
+ lLOctet6aHDLC := * , |
+ lLOctet6aUserSpecific := * , |
+ lLOctet6b := * , |
+ lLOctet7 := p_LLOctet7, |
+ lLOctet7aUserSpecific := * , |
+ lLOctet7aX25 := * , |
+ lLOctet7bX25 := * , |
+ lLOctet7c := * , |
+ lLOctet7aTR9577 := * , |
+ lLOctet7bTR9577 := * |
+ } |
+ |
+ template HighLayerCompatibilityType mw_HighLayerCompatibilityType |
+ (template HLOctet3Type p_HLOctet3, template HLOctet4Type p_HLOctet4):= { |
+ hLOctet3 := p_HLOctet3, |
+ hLOctet4 := p_HLOctet4, |
+ hLOctet4aMaintenance := *, |
+ hLOctet4Audio := * |
+ } |
+ |
+} //end group PSTNTemplates |
+ |
+group CDIVNTemplates { |
+ |
+ /* general CDIVN subscription */ |
+ template Comm_div_info_type m_CDIVN_sub := { |
+ entity := "comm-div-info", |
+ comm_div_subs_info := { |
+ attr := {}, |
+ comm_div_selection_criteria := { |
+ attr := {}, |
+ originating_user_selection_criteria := omit, |
+ diverting_user_selection_criteria := omit, |
+ diverted_to_user_selection_criteria := omit, |
+ diversion_time_selection_criteria := omit, |
+ diversion_reason_selection_criteria := omit, |
+ elem_list := {} |
+ }, |
+ comm_div_ntfy_trigger_criteria := omit, |
+ comm_div_info_selection_criteria := omit, |
+ elem_list := {} |
+ }, |
+ comm_div_ntfy_info := omit, |
+ elem_list := {} |
+ } |
+ |
+ |
+} // end grouup CDIVNTemplates |
+ |
+group ResourceListsTemplates { |
+ |
+ |
+ template Resource_lists m_ResourceList_2Users( |
+ template EntryType p_user1, |
+ template EntryType p_user2 |
+ ) := |
+ { |
+ sequence_list := { |
+ { |
+ list := { |
+ name := omit, |
+ attr := {}, |
+ display_name := omit, |
+ sequence_list := { |
+ { |
+ choice := { |
+ entry := p_user1 |
+ } |
+ }, |
+ { |
+ choice := { |
+ entry := p_user2 |
+ } |
+ } |
+ }, |
+ elem_list := {} |
+ } |
+ } |
+ } |
+ } |
+ |
+ template EntryType m_EntryUser(SipUrl p_user) := { |
+ |
+ uri := |
+ p_user.components.sip.userInfo.userOrTelephoneSubscriber & "@" & |
+ p_user.components.sip.hostPort.host, |
+ attr := {}, |
+ display_name := omit, |
+ elem_list := {} |
+ } |
+}// end grouup ResourceListsTemplates |
+ |
+group Ims3gppTemplates { |
+ |
+ //TODO:check commented and below templates when test will be validated |
+ template TIMS3GPP mw_Ims_3gpp_CW := { |
+ version := 1.0, |
+ attr := ?, |
+ choice := { |
+ alternative_service := { |
+ attr := ?, |
+ type_ := ?, |
+ reason := ?, |
+ elem_list := ? |
+ } |
+ }, |
+ elem_list := ? |
+ } |
+// template TIMS3GPP mw_Ims_3gpp_CW := { |
+// version := 1.0, |
+// anyAttributes := ?, |
+// choice_1 := { |
+// alternative_service := { |
+// anyAttributes := ?, |
+// type_ := ?, |
+// reason := ?, |
+// action_ := { |
+// anyAttributes := ?, |
+// emergency_registration := *, |
+// call_waiting_indication := {}, |
+// any_1 := * |
+// }, |
+// any_1 := * |
+// } |
+// }, |
+// any_1 := * |
+// } |
+} // end group Ims3gpp |
+ |
+group CONFTemplates { |
+ template booleanXSD boolXSD_true:={bool:=true} |
+ template booleanXSD boolXSD_false:={bool:=false} |
+ |
+ template anyAttributes m_emptyAnyAttributes:={} |
+ |
+ template urn_ietf_params_xml_ns_conference_info.Media_type m_mediatype_status(template Media_status_type p_status):= { |
+ id:="1", |
+ attr := {}, |
+ display_text :=omit, |
+ type_ :=omit, |
+ label_ :=omit, |
+ src_id:=omit, |
+ status:= p_status, |
+ elem_list:={} |
+ } |
+ |
+ template Endpoint_type m_endpoint(template charstring p_Uri,template Endpoint_status_type p_epStatus,template Joining_type p_joinMethod, template Disconnection_type p_discMethod, template urn_ietf_params_xml_ns_conference_info.Media_type p_mediastatus):= { |
+ entity:=p_Uri, |
+ state:=full, |
+ attr := {}, |
+ display_text:=omit, |
+ referred:=omit, |
+ status:=p_epStatus, |
+ joining_method:=p_joinMethod, |
+ joining_info:=omit, |
+ disconnection_method:=omit, |
+ disconnection_info:=omit, |
+ media_list:={p_mediastatus},// optional, |
+ call_info:=omit, |
+ elem_list:={} |
+ } |
+ |
+ template User_type m_1user (template charstring p_Uri,template Endpoint_type p_endpoint) := { |
+ entity:=p_Uri, |
+ state:=full, |
+ attr := {}, |
+ display_text:=omit, |
+ associated_aors:=omit, |
+ roles:=omit, |
+ languages :=omit, |
+ cascaded_focus :=omit, |
+ endpoint_list:={p_endpoint},// optional, |
+ elem_list:={} |
+ } |
+ |
+ template Users_type m_users_1user_full(template User_type p_user):={ |
+ state:=full, |
+ attr := {}, |
+ user_list:={p_user}, |
+ elem_list:={} |
+ } |
+ |
+ template Users_type m_users_2user_full(template User_type p_user1,template User_type p_user2):={ |
+ state:=full, |
+ attr := {}, |
+ user_list:={p_user1,p_user2}, |
+ elem_list:={} |
+ } |
+ |
+ template Conference_state_type m_conference_state(template unsignedInt p_nUsers, boolean p_active, boolean p_locked) := { |
+ attr := {}, |
+ user_count:=p_nUsers, |
+ active:=p_active, |
+ locked:=p_locked, |
+ elem_list:= {} |
+ } |
+ |
+ template Conference_type m_ci_cUri_cState_userEntity(template charstring p_cUri, template Conference_state_type p_cState, template Users_type p_users ) := { |
+ entity := p_cUri, |
+ state := full, |
+ version := 1, |
+ attr := {}, |
+ conference_description := omit, |
+ host_info := omit, |
+ conference_state := p_cState, |
+ users := p_users, |
+ sidebars_by_ref := omit, |
+ sidebars_by_val := omit, |
+ elem_list := {} |
+ } |
+ |
+ template Conference_type mw_conferenceInfo_active := { |
+ entity := ?, |
+ state := *, |
+ version := *, |
+ attr := ?, |
+ conference_description := *, |
+ host_info := *, |
+ conference_state := ?, |
+ users := { |
+ state := ?, |
+ attr := ?, |
+ user_list := { |
+ { |
+ entity := *, |
+ state := *, |
+ attr := ?, |
+ display_text := *, |
+ associated_aors := *, |
+ roles := *, |
+ languages := *, |
+ cascaded_focus := *, |
+ endpoint_list := { |
+ { |
+ entity := *, |
+ state := *, |
+ attr := ?, |
+ display_text := *, |
+ referred := *, |
+ status := connected, |
+ joining_method := dialed_in, |
+ joining_info := *, |
+ disconnection_method := *, |
+ disconnection_info := *, |
+ media_list := *, |
+ call_info := *, |
+ elem_list := ? |
+ } |
+ }, |
+ elem_list := ? |
+ } |
+ }, |
+ elem_list := {} |
+ }, |
+ sidebars_by_ref := *, |
+ sidebars_by_val := *, |
+ elem_list := ? |
+ } |
+} |
+ |
+} // end group MessageBodyTemplates |
+ |
+group MessageTemplates { |
+ |
+group modified_templates { |
+ |
+group request_send { |
+ |
+ template ACK_Request m_ACK_Request_AS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordRoute ) modifies m_ACK_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route, |
+ recordRoute := p_recordRoute |
+ } |
+ } |
+ |
+ template ACK_Request m_ACK_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template Route p_route) modifies m_ACK_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ template ACK_Request m_ACK_Request_sdp_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via,template MessageBody p_mb, template Route p_route) |
+ 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}, |
+ route := p_route |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template BYE_Request m_BYE_Request_IMS |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ template BYE_Request m_BYE_Request_Reason_IMS |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route, charstring p_cause) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ reason := mw_Reason(p_cause), |
+ route := p_route |
+ } |
+ } |
+ |
+ template BYE_Request m_BYE_Request_UserToUser_IMS |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route, template charstring p_U2UData) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route, |
+ userToUser := m_UserToUserData(p_U2UData) |
+ } |
+ } |
+ |
+ template BYE_Request m_BYE_Request_UE |
+ ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) |
+ modifies m_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_Reason_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route, integer p_cause) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ reason := m_Reason(p_cause), |
+ route := p_route |
+ } |
+ } |
+ |
+ template CANCEL_Request m_CANCEL_Request_UE (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Route p_route) modifies m_CANCEL_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ route := p_route |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INFO message |
+ * |
+ */ |
+ template INFO_Request m_INFO_Request_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_INFO_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 |
+ } |
+ |
+ /* |
+ * |
+ * @desc INFO message |
+ * |
+ */ |
+ template INFO_Request m_INFO_Request_Mime_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_INFO_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INFO_Request m_INFO_Request_Xml_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_INFO_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication} |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, 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}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_noBody_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_Allow_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ allow := p_allow |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_noBody_Allow_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template LibSip_SIPTypesAndValues.Allow p_allow) |
+ modifies m_INVITE_Request_noBody_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ allow := p_allow |
+ } |
+ } |
+ |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_IMS ( |
+ SipUrl p_requestUri, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ Contact p_contact, |
+ template Require p_require, |
+ template Route p_route, |
+ template RecordRoute p_recordRoute, |
+ template Supported p_supported, |
+ template PChargingVector p_pChargingVector, |
+ 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}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_HistoryInfo_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, |
+ template HistoryInfo p_historyInfo) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ historyInfo := p_historyInfo |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_Mime_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_IMS_noBody |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_Mime_PAsserted_Privacy_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, |
+ template PAssertedID p_pAssertedID, template Privacy p_privacy ) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy |
+ } |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAsserted_AcceptContact_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template AcceptContact p_acceptContact, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) |
+ modifies m_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ acceptContact := p_acceptContact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ require := p_require, |
+ pAssertedID := p_pAssertedID, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAsserted_Privacy_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Privacy p_privacy, template Supported p_supported, template PChargingVector p_pChargingVector, 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}, |
+ require := p_require, |
+ pAssertedID := p_pAssertedID, |
+ pChargingVector := p_pChargingVector, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PAssertedService_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template PAssertedService p_pAssertedService) |
+ 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}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ route := p_route, |
+ supported := p_supported, |
+ pAssertedService := p_pAssertedService |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_PEarlyMedia_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, 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}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ pEarlyMedia := m_pEarlyMedia_sup, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_PPreferred_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID ) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_PPreferred_Privacy_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb,template PPreferredID p_pPreferredID, template Privacy p_privacy) |
+ modifies m_INVITE_Request_UE |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID, |
+ privacy := p_privacy |
+ } |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_SessionExpires_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template SessionExpires p_se) |
+ 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}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported, |
+ sessionExpires := p_se |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_minSE_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_mb, template MinSE p_minSE) |
+ 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}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported, |
+ minSE := p_minSE |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc INVITE message exchanged at Mw |
+ * |
+ */ |
+ template INVITE_Request m_INVITE_Request_minSE_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template MinSE p_minSE) |
+ 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}, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ route := p_route, |
+ supported := p_supported, |
+ minSE := p_minSE |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template INVITE_Request m_INVITE_Request_User2UserData_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, Contact p_contact, template Require p_require, |
+ template Route p_route, template RecordRoute p_recordRoute, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb, template charstring p_U2UData) |
+ modifies m_INVITE_Request_IMS |
+ := |
+ { |
+ msgHeader := |
+ { |
+ userToUser := m_UserToUserData(valueof(p_U2UData)) |
+ } |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_MBody_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported, template MessageBody p_messageBody) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ }, |
+ messageBody := p_messageBody |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_NoBody_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := m_pChargingVector_origIoi_fixedValue(PX_IMS_SUT_UE1_HOME_DOMAIN), |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PCharging_IMS |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported, |
+ template PChargingVector p_pChargingVector) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PMediaAuth_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_PPreferred_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported, template PPreferredID p_pPreferredID) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pPreferredID := p_pPreferredID, |
+ require := p_require, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := omit |
+ } |
+ |
+ template MESSAGE_Request m_MESSAGE_Request_1300Bytes_UE |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template Require p_require, |
+ template Route p_route, template Supported p_supported) |
+ modifies m_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(m_MBody_longPlainText))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ require := p_require, |
+ route := p_route, |
+ //securityVerify := p_securityVerify,//TODO check when information will be known regarding security assosiation |
+ supported := p_supported |
+ }, |
+ messageBody := m_MBody_longPlainText |
+ } |
+ |
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_Conference |
+ (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, |
+ Via p_via, template MessageBody p_mb ) |
+ modifies m_NOTIFY_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}, |
+ event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit}, |
+ subscriptionState:={fieldName:=SUBSCRIPTION_STATE_E, subState:="active",substateParams:=omit}, |
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"} |
+ |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ |
+ template NOTIFY_Request m_NOTIFY_Request_Xml_IMS_RegInfo |
+ (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_NOTIFY_Request_Base |
+ := |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlreginfoAplication}, |
+ event := m_Event_reg, |
+ subscriptionState:=m_SubscriptionState_active, |
+ expires:={fieldName:=EXPIRES_E, deltaSec:="3600"} |
+ |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template PRACK_Request m_PRACK_Request_sdp (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, RAck p_RAck, template MessageBody p_mb) |
+ modifies m_PRACK_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ requestUri := p_requestUri |
+ }, |
+ 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:= "PRACK"}, |
+ fromField := p_from, |
+ rAck := p_RAck, |
+ toField := p_to, |
+ via := p_via |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template PUBLISH_Request m_PUBLISH_Request_UE (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,template Route p_route) |
+ modifies m_PUBLISH_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ callId := p_callId, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/}, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"}, |
+ event := p_event, |
+ fromField := p_from, |
+ route := p_route, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ toField := p_to, |
+ via := p_via |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template PUBLISH_Request m_PUBLISH_Request_IMS (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, |
+ template Route p_route,template RecordRoute p_recordRoute,template PChargingVector p_pChargingVector) |
+ modifies m_PUBLISH_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ callId := p_callId, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_plainText/*c_sdpAplication*/}, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "PUBLISH"}, |
+ event := p_event, |
+ fromField := p_from, |
+ route := p_route, |
+ recordRoute:= p_recordRoute, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ pChargingVector := p_pChargingVector, |
+ toField := p_to, |
+ via := p_via |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ /* |
+ * |
+ * @desc REFER message exchanged at Mw |
+ * |
+ */ |
+ template REFER_Request m_REFER_Request_IMS( |
+ 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, |
+ template Require p_require, |
+ template Route p_route, |
+ template RecordRoute p_recordRoute, |
+ template Supported p_supported, |
+ template PChargingVector p_pChargingVector, |
+ template MessageBody p_mb |
+ ) modifies m_REFER_Request_Base := { |
+ msgHeader := { |
+ contentLength := { |
+ fieldName := CONTENT_LENGTH_E, |
+ len:= f_MessageBodyLength(valueof(p_mb)) |
+ }, |
+ contentType := { |
+ fieldName := CONTENT_TYPE_E, |
+ mediaType := c_sdpAplication |
+ }, |
+ referredBy := p_referredBy, |
+ referTo := p_referTo, |
+ require := p_require, |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ supported := p_supported |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template REGISTER_Request m_REGISTER_Request_UE (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, |
+ template ProxyRequire p_proxyRequire, template Require p_require, |
+ template SecurityClient p_securityClient, template SecurityVerify p_securityVerify, template Supported p_supported) |
+ modifies m_REGISTER_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := REGISTER_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ authorization := p_authorization, |
+ callId := p_callId, |
+ contact := p_contact, |
+ cSeq := p_cSeq, |
+ fromField := p_from, |
+ proxyRequire := p_proxyRequire, |
+ require := p_require, |
+ securityClient := p_securityClient, |
+ securityVerify := p_securityVerify, |
+ supported := p_supported, |
+ toField := p_to, |
+ via := p_via |
+ |
+ } |
+ } |
+ |
+ |
+ template REGISTER_Request m_REGISTER_Request_IMS (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_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := REGISTER_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ authorization := p_authorization, |
+ callId := p_callId, |
+ contact := p_contact, |
+ cSeq := p_cSeq, |
+ fromField := p_from, |
+ path := m_path_TS, |
+ pChargingVector := m_pChargingVector_icid_TS, |
+ pVisitedNetworkID := m_pVisitedNetworkID_TS, |
+ require := {fieldName := REQUIRE_E,optionsTags := {"path"}}, |
+ toField := p_to, |
+ via := p_via |
+ |
+ } |
+ } |
+ |
+ template REGISTER_Request m_REGISTER_Request_IMS_3party ( |
+ 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, |
+ template Path p_path |
+ ) modifies m_REGISTER_Request_IMS := |
+ { |
+ msgHeader := |
+ { |
+ path := p_path |
+ |
+ } |
+ } |
+ |
+ template REGISTER_Request m_REGISTER_Request_expires_IMS (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, template DeltaSec p_deltaSec) |
+ modifies m_REGISTER_Request_IMS := |
+ { |
+ msgHeader := |
+ { |
+ expires := {fieldName := EXPIRES_E, deltaSec := p_deltaSec} |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_UE (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Route p_route) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000, |
+ route := p_route |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_UE (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_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_mb_event_UE (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, Event p_event, charstring p_contentType) modifies m_SUBSCRIBE_Request_mb_UE := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType}, |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := p_event, |
+ expires := m_Expires_600000 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_IMS (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := m_Event_reg, |
+ expires := m_Expires_600000 |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request m_SUBSCRIBE_Request_Event (SipUrl p_requestUri, CallId p_callId, |
+ CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Event p_event) modifies m_SUBSCRIBE_Request_Base := |
+ { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E, |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ cSeq := {fieldName:=CSEQ_E, seqNumber:= p_cSeq.seqNumber, method:= "SUBSCRIBE"}, |
+ event := p_event, |
+ expires := m_Expires_600000 |
+ } |
+ } |
+ template UPDATE_Request m_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ fromField := p_from |
+ } |
+ } |
+ |
+}//end group request_send |
+ |
+group request_receive { |
+ |
+ template ACK_Request mw_ACK_Request_noPaccessNetworkInfo (template CallId p_callId) |
+ modifies mw_ACK_Request_Base |
+ := |
+ { |
+ msgHeader := { pAccessNetworkInfo := omit} |
+ } |
+ |
+ template ACK_Request mw_ACK_Request_PchargingVector (template CallId p_callId, template PChargingVector p_pChargingVector) |
+ modifies mw_ACK_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingVector := p_pChargingVector} |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_noPChargingFunction_UE(template CallId p_callId) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_via_PChargingVector_UE(template CallId p_callId, template PChargingVector p_pChargingVector, template Via p_via) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingVector := p_pChargingVector, |
+ via := p_via} |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_via_UE(template CallId p_callId, template Via p_via) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := { via := p_via } |
+ } |
+ |
+ template BYE_Request mw_BYE_Request_route(template CallId p_callId, template Route p_route) modifies mw_BYE_Request_Base |
+ := |
+ { |
+ msgHeader := {route := p_route} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_noPChargingFunction modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit} |
+ } |
+ template INVITE_Request mw_INVITE_Request_PChargingFunction modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := ?} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_NoPCharging modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_NoPChargingPreferred modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pChargingFunctionAddresses := omit, |
+ pChargingVector := omit, |
+ pPreferredID := omit} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_PAsserted_noPPreferred (template PAssertedID p_pAssertedID)modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ pPreferredID := omit |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_PAsserted_AcceptContact (template PAssertedID p_pAssertedID, template AcceptContact p_acceptContact) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ acceptContact := p_acceptContact |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_RecordRoute_Via (template RecordRoute p_recordRoute, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {recordRoute := p_recordRoute, |
+ via := p_via} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_route (template Route p_route) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {route := p_route} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_require ( |
+ template Require p_require |
+ ) modifies mw_INVITE_Request_Base := { |
+ msgHeader := { require := p_require } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_supported ( |
+ template Supported p_supported |
+ ) modifies mw_INVITE_Request_Base := { |
+ msgHeader := { supported := p_supported } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_SessionExpires (template SessionExpires p_sessionExpires) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {sessionExpires := p_sessionExpires} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_User2UserData (template charstring p_U2UData) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := {userToUser := mw_UserToUserData(p_U2UData)} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ } |
+ } |
+ template INVITE_Request mw_INVITE_Request_IMS_requestLine(template PChargingVector p_pChargingVector, |
+ template RecordRoute p_recordRoute, |
+ template Route p_route, template Via p_via, template SipUrl p_requestUri) |
+ modifies mw_INVITE_Request_Base := { |
+ requestLine := |
+ { |
+ requestUri := p_requestUri |
+ }, |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_PAsserted_noPPreferred(template PChargingVector p_pChargingVector, |
+ template RecordRoute p_recordRoute, |
+ template Route p_route, template Via p_via, template SipUrl p_requestUri, template PAssertedID p_pAssertedID) |
+ modifies mw_INVITE_Request_Base := { |
+ msgHeader := {pAssertedID := p_pAssertedID, pPreferredID := omit} |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_mb (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := ? |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_cug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template Cug p_cug ) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := (mw_MBody_XML(mw_XmlBody_CUG(p_cug)), |
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_CUG(p_cug))) |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_noCug (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via ) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := (mw_MBody_XML(complement(mw_XmlBody_CUG(?))), |
+ mw_MBody_MIMESdpXml(?, complement(mw_XmlBody_CUG(?)) )) |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_IMS_pstn (template PChargingVector p_pChargingVector, template RecordRoute p_recordRoute, template Route p_route, template Via p_via, template PSTN_transit p_pstn ) modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ pChargingVector := p_pChargingVector, |
+ recordRoute := p_recordRoute, |
+ route := p_route, |
+ via := p_via |
+ }, |
+ messageBody := (mw_MBody_XML(mw_XmlBody_PSTNTransit(p_pstn)), |
+ mw_MBody_MIMESdpXml(?, mw_XmlBody_PSTNTransit(p_pstn)))//m_MBody_PSTN(p_pstn)//PSTN_transit |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE using topology hiding |
+ */ |
+ template INVITE_Request mw_INVITE_Request_TH modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit } |
+ } |
+ |
+ template INVITE_Request mw_INVITE_Request_TH_R10 modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit } |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE without PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_noPasserted_noPrivacy (template From p_from) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { fromField := p_from, |
+ pAssertedID := omit, |
+ pPreferredID := omit} |
+ } |
+ |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_PassertedPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ fromField := p_from, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy} |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_Passerted_ifPrivacy (template From p_from, template PAssertedID p_pAssertedID, template Privacy p_privacy) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ fromField := p_from, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy ifpresent} |
+ } |
+ |
+ /* |
+ * |
+ * @desc Await INVITE with PAsserted and Privacy |
+ */ |
+ template INVITE_Request mw_INVITE_Request_HistoryInfo (template HistoryInfo p_historyInfo) |
+ modifies mw_INVITE_Request_Base |
+ := |
+ { |
+ msgHeader := { |
+ historyInfo := p_historyInfo} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_UE |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunctionPrefId_UE |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit, |
+ pPreferredID := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPchargingFunction_IMS |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingFunctionAddresses := omit, |
+ pChargingVector := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_PAsserted_noPPreferred (template CallId p_callId, template PAssertedID p_pAssertedID)modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := {pAssertedID := p_pAssertedID, |
+ pPreferredID := omit |
+ } |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_route (template CallId p_callId, template Route p_route )modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := {route := p_route |
+ } |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_via (template CallId p_callId, template Via p_via )modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := {via := p_via |
+ } |
+ } |
+ |
+ template NOTIFY_Request mw_NOTIFY_Request( |
+ template CallId p_callId, |
+ template charstring p_state, |
+ template charstring p_contentType, |
+ template Event p_event, |
+ template MessageBody p_mb |
+ ) modifies mw_NOTIFY_Request_Base := { |
+ msgHeader := |
+ { |
+ subscriptionState := mw_subscriptionState(p_state), |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := p_contentType}, |
+ event := p_event |
+ }, |
+ messageBody := p_mb |
+ } |
+ template PRACK_Request mw_PRACK_Request_sdp(template CallId p_callId, template MessageBody p_mb) modifies mw_PRACK_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ callId := p_callId |
+ }, |
+ messageBody := p_mb |
+ } |
+ template MESSAGE_Request mw_MESSAGE_Request_PchargingVector (template charstring p_id, template charstring p_paramValue) |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pChargingVector := mw_pChargingVector(p_id,p_paramValue)} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPaccessNetworkInfo |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pAccessNetworkInfo := omit} |
+ } |
+ |
+ template MESSAGE_Request mw_MESSAGE_Request_noPMediaAuthorization |
+ modifies mw_MESSAGE_Request_Base |
+ := |
+ { |
+ msgHeader := { pMediaAuthorization := omit} |
+ } |
+ |
+ template PUBLISH_Request mw_PUBLISH_Request_PchargingVector(template CallId p_callId, template PChargingVector p_pChargingVector) modifies mw_PUBLISH_Request_Base := |
+ { |
+ msgHeader := { pChargingVector := p_pChargingVector} |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_Request_IMS (template Path p_Path, template PChargingVector p_pChargingVector, template PVisitedNetworkID p_pVisitedNetworkID) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := ?, |
+ path := p_Path, |
+ pChargingVector := p_pChargingVector, //mw_pChargingVector(p_id,p_paramValue) |
+ pVisitedNetworkID := p_pVisitedNetworkID, |
+ require := mw_require_path, |
+ securityClient := omit, |
+ securityVerify := omit |
+ } |
+ } |
+ |
+ |
+ |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_IMS (template Authorization p_authorization) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := p_authorization |
+ } |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityclient_IMS (template Authorization p_authorization) |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := p_authorization, |
+ securityClient := omit |
+ } |
+ } |
+ template REGISTER_Request mw_REGISTER_auth_via_nosecclient_IMS (template Authorization p_authorization, Via p_via ) |
+ modifies mw_REGISTER_Request_Base := { |
+ msgHeader := { |
+ authorization := p_authorization, |
+ via := p_via, |
+ securityClient := omit |
+ } |
+ } |
+ template REGISTER_Request mw_REGISTER_authorizedRequest_wo_securityheaders_IMS |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { securityVerify := omit, |
+ securityClient := omit |
+ } |
+ } |
+ |
+ template REGISTER_Request mw_REGISTER_unauthorizedRequest_IMS |
+ modifies mw_REGISTER_Request_Base |
+ := |
+ { |
+ msgHeader := { authorization := * |
+ } |
+ } |
+ |
+ template SUBSCRIBE_Request mw_SUBSCRIBE_Request_IMS ( |
+ template From p_from, |
+ template To p_to, |
+ template PAssertedID p_pAssertedID, |
+ template PChargingVector p_pChargingVector |
+ ) modifies mw_SUBSCRIBE_Request_Base := { |
+ requestLine := |
+ { |
+ method := SUBSCRIBE_E |
+ }, |
+ msgHeader := |
+ { fromField := p_from, |
+ toField := p_to, |
+ event := m_Event_reg, |
+ pAccessNetworkInfo := *, |
+ pChargingVector := p_pChargingVector |
+ } |
+ } |
+ |
+ template UPDATE_Request mw_UPDATE_Request_fromChange (template CallId p_callId, template From p_from) modifies mw_UPDATE_Request_Base := |
+ { |
+ msgHeader := |
+ { |
+ fromField := p_from |
+ } |
+ } |
+ |
+}//end group request_receive |
+group response_send |
+{ |
+ template Response m_Response_2xxonBYE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onCANCEL (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ //contact := p_contact, |
+ maxForwards := omit//, |
+ //recordRoute := p_recordRoute |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact //mandatory field due to 24 229 rel 7.9 |
+ //maxForwards := omit, |
+ //rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_AlertInfo ( |
+ StatusLine p_statusLine, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ AlertInfo p_alertInfo |
+ ) modifies m_Response_Base:= { |
+ msgHeader := |
+ { |
+ alertInfo := p_alertInfo |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_sdp_require (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb,template Require p_require ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ require := p_require, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_AS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ recordRoute := p_recordRoute |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_HistoryInfo_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template HistoryInfo p_historyInfo) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ historyInfo := p_historyInfo, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector |
+ |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_pEearlyMedia (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PEarlyMedia p_pEarlyMedia ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pEarlyMedia := p_pEarlyMedia |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ pPreferredID := p_pPreferredID, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ privacy := p_privacy, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_18XonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ supported := p_supported, |
+ privacy := p_privacy, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_recordRoute_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ recordRoute := p_recordRoute//for INVITE response |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Require ( |
+ StatusLine p_statusLine, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ Contact p_contact, |
+ Require p_require |
+ ) modifies m_Response_Base:= { |
+ msgHeader := |
+ { |
+ require := p_require |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Require_ifpresent ( |
+ StatusLine p_statusLine, |
+ CallId p_callId, |
+ CSeq p_cSeq, |
+ From p_from, |
+ To p_to, |
+ Via p_via, |
+ Contact p_contact, |
+ Require p_require |
+ ) modifies m_Response_Base:= { |
+ msgHeader := |
+ { |
+ require := p_require |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template charstring p_U2UData) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ userToUser := m_UserToUserData(valueof(p_U2UData)) |
+ } |
+ } |
+ |
+ template Response m_Response_18XonINVITE_Xml (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact,template MessageBody p_mb ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999}//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_18XonINVITE_require_sdp_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, Require p_require, template MessageBody p_mb, template LibSip_SIPTypesAndValues.Allow p_allow ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ require := p_require, |
+ rSeq := {fieldName:=RSEQ_E, responseNum:= 9999},//Ref: ES 283 003 V2.5.1 ch:A.2.1.4.7 |
+ allow := p_allow |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_HistoryInfo (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template HistoryInfo p_historyInfo, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ historyInfo := p_historyInfo, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_Mime (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_PchargingVector (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb, template Contact p_contact, template PChargingVector p_pChargingVector ) modifies m_Response_mbody := |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector |
+ |
+ } |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_pPreferred_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PPreferredID p_pPreferredID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ pPreferredID := p_pPreferredID, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ |
+ template Response m_Response_2XXonINVITE_pAsserted_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_pAsserted_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template PAssertedID p_pAssertedID, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_supported_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Supported p_supported, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ supported := p_supported, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2XXonINVITE_privacy_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template Privacy p_privacy, template RecordRoute p_recordRoute, template MessageBody p_mb) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ privacy := p_privacy, |
+ recordRoute := p_recordRoute//for INVITE response |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonINVITE_UserToUser (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb, template charstring p_U2UData) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute,//for INVITE response |
+ userToUser := m_UserToUserData(valueof(p_U2UData)) |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ template Response m_Response_2xxonREGISTER_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, SipUrl p_serviceroute_sip_url, SipUrl p_passociated_uri) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ serviceRoute := {fieldName:=SERVICE_ROUTE_E, |
+ routeBody:={{ nameAddr:= {displayName:=omit,addrSpec:=p_serviceroute_sip_url},rrParam:=omit}}}, |
+ pAssociatedURI := m_pAssociatedURI({displayName:=omit,addrSpec:=p_passociated_uri}) // PAssociatedURI RFC3455 |
+ |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonSUBSCRIBE_IMS (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonSUBSCRIBE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response m_Response_onMESSAGE_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PAccessNetwInfo_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PCharging_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_2xxonMESSAGE_PCharging_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PChargingVector p_pChargingVector) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := m_pChargingFunctionAddresses_fixedValue, |
+ pChargingVector := p_pChargingVector |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_PMediaAuth_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pMediaAuthorization := m_pMediaAuthorization_fixedValue |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonMESSAGE_pPreferredID_UE(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template PPreferredID p_pPreferredID) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template Response m_Response_2xxonUPDATE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, template MessageBody p_mb) |
+ modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, |
+ contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_sdpAplication}, |
+ maxForwards := omit, |
+ recordRoute := p_recordRoute |
+ }, |
+ messageBody := p_mb |
+ } |
+ |
+ |
+ template Response m_Response_3XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ |
+ template Response m_Response_4XXonINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_4XXonINVITE_UE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template Contact p_contact ) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onINVITE (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit |
+ } |
+ } |
+ |
+ template Response m_Response_onINVITE_Reason (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, Contact p_contact, template RecordRoute p_recordRoute, charstring p_cause) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ contact := p_contact, |
+ maxForwards := omit, |
+ reason := mw_Reason(p_cause) |
+ } |
+ } |
+ |
+ template Response m_Response_WWWauthenticate_IMS(StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, |
+ From p_from, To p_to, Via p_via, template WwwAuthenticate p_wwwAuthenticate) modifies m_Response_Base:= |
+ { |
+ msgHeader := |
+ { |
+ wwwAuthenticate := p_wwwAuthenticate |
+ } |
+ } |
+ |
+}//end group response_send |
+ |
+group response_receive |
+{ |
+ |
+ template Response mw_Response_200onINVITE_noPChargingVector_UE(template 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 := |
+ { |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_200onINVITE_SDP_UE(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ messageBody := { |
+ sdpMessageBody := ? |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPCharging_UE(template 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 := |
+ { |
+ pChargingFunctionAddresses := omit, |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPCharging_IMS(template 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 := |
+ { |
+ pChargingFunctionAddresses := omit, |
+ pChargingVector := omit |
+ } |
+ } |
+ |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPAccessNetworkInfo_IMS(template 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 := |
+ { |
+ pAccessNetworkInfo := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_2xxonMESSAGE_noPMediaAuthorization_IMS(template 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 := |
+ { |
+ pMediaAuthorization := omit |
+ } |
+ } |
+ |
+ template Response mw_Response_401onREGISTER_securityServer_UE(template 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 := |
+ { |
+ securityServer := ?, |
+ wwwAuthenticate := ? |
+ } |
+ } |
+ |
+ template Response mw_Response_SecServer_WWWAuth_UE (template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template SecurityServer p_securityServer, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ securityServer := p_securityServer, |
+ wwwAuthenticate := p_wwwAuthenticate |
+ } |
+ } |
+ |
+ template Response mw_Response_401onREGISTER_WWWauthenticate_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template WwwAuthenticate p_wwwAuthenticate) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ wwwAuthenticate := p_wwwAuthenticate |
+ } |
+ } |
+ |
+ template Response mw_Response_200onREGISTER_IMS(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template SipUrl p_ue_uri, template Contact p_contact, template SipUrl p_sut_scscf_uri) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssociatedURI := {fieldName := P_ASSOCIATED_URI_E, nameAddrList:={*,{nameAddr:={displayName:=*,addrSpec:=p_ue_uri},genericParams:=*},*}}, |
+ path := ?, |
+ serviceRoute := {fieldName := SERVICE_ROUTE_E, routeBody := {{nameAddr:={displayName:=*,addrSpec:=p_sut_scscf_uri},rrParam:=*}}}, |
+ pChargingFunctionAddresses := ?, |
+ pChargingVector := ?, |
+ contact := p_contact |
+ } |
+ } |
+ |
+ template Response mw_Response_PpreferredID_PassertedID(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PPreferredID p_pPreferredID, template PAssertedID p_pAssertedID) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssertedID := p_pAssertedID, |
+ pPreferredID := p_pPreferredID |
+ } |
+ } |
+ |
+ template Response mw_Response_PAsserted_Privacy_History (template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template Privacy p_privacy, template HistoryInfo p_historyInfo) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssertedID := p_pAssertedID, |
+ privacy := p_privacy, |
+ historyInfo := p_historyInfo |
+ } |
+ } |
+ |
+ template Response mw_Response_PAsserted_ContentType (template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PAssertedID p_pAssertedID, template ContentType p_contentType) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pAssertedID := p_pAssertedID, |
+ contentType := p_contentType |
+ } |
+ } |
+ |
+ template Response mw_Response_PchargingVector(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PChargingVector p_chargingVector) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingVector := p_chargingVector // mw_pChargingVector(p_id,p_paramValue) |
+ } |
+ } |
+ |
+ |
+ template Response mw_Response_PchargingVecFctadrId(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PChargingVector p_chargingVector, |
+ template PChargingFunctionAddresses p_chargingFunctionAddresses, template PPreferredID p_preferredID) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingVector := p_chargingVector, // mw_pChargingVector(p_id,p_paramValue) |
+ pChargingFunctionAddresses := p_chargingFunctionAddresses, |
+ pPreferredID := p_preferredID |
+ } |
+ } |
+ |
+ template Response mw_Response_PchargingFunctionAddr(template StatusLine p_statusLine, template CallId p_callId, |
+ template CSeq p_cSeq, template PChargingFunctionAddresses p_chargingFunctionAddresses) modifies mw_Response_Base:= |
+ { |
+ statusLine := {sipVersion := c_sipNameVersion, statusCode := p_statusLine.statusCode, reasonPhrase := ?}, |
+ msgHeader := |
+ { |
+ pChargingFunctionAddresses := p_chargingFunctionAddresses |
+ } |
+ } |
+ |
+} // end response_receive |
+ |
+}//end modified_templates |
+ |
+}//end Message_templates |
+ |
+} // end module LibIms_Templates |
\ No newline at end of file |