Commit 041a5455 authored by mullers's avatar mullers
Browse files

f_sndChildSaReqAndWaitForRsp

f_sndInformationalReqAndWaitForRsp added
parent 7e3347ef
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -251,15 +251,4 @@
	external function fx_ikeEncPayloadLength( in template EncryptedPayload p_msg ) 
	return UInt16;

	
	/* @desc 	This external function runs the ConfigAttributeList through Codec and returns 
	 *			the octetstring representing the ConfigAttributeList
	 *			
	 * @param 	p_configAttributeList ConfigAttributeList to be encoded to octetstring
	 * @return 	octetstring
	*/
	external function fx_configAttributeListToOct(ConfigAttributeList p_configAttributeList)
	return octetstring;


}// end module LibIpv6_ExternalFunctions
+74 −1
Original line number Diff line number Diff line
@@ -3638,6 +3638,79 @@ group establishSAFns_active {
														
	} // end f_sndAuthReqAndWaitForRsp

	function f_sndChildSaReqAndWaitForRsp(
		template Ipv6Address 	p_addrTn,
		template Ipv6Address 	p_addrIut,
		UInt1 					p_iFlag,
		in UInt8 				p_protocolId
	)
	runs on LibIpv6Node return FncRetCode {
		var FncRetCode v_ret := e_success;
		var UInt1 v_iFlag;

		if ((p_protocolId != c_protocolEsp) and (p_protocolId != c_protocolAh))
		{	log("**** f_sndChildSaReqAndWaitForRsp: ERROR: Invalid protocol Id, only ESP and AH allowed here !**** ");
			return e_error;}

		v_ret := f_createAndSendCreateChildSaReq(
			p_addrTn,
			p_addrIut,
			p_iFlag,
			p_protocolId
		);
		if (v_ret != e_success) { return v_ret;}

		if (p_iFlag == c_iFlagResponder)
			{v_iFlag := c_iFlagInitiator;}
		else
			{v_iFlag := c_iFlagResponder;}
		
		// wait for CreateChild response
		v_ret := f_waitForCreateChildSaRsp(p_addrIut, p_addrTn, v_iFlag);
		if (v_ret != e_success) { return v_ret;}

		// no key values are set
		
		//protocolId, p_iflag not needed

		return v_ret;
														
	} // end f_sndChildSaReqAndWaitForRsp

	function f_sndInformationalReqAndWaitForRsp(
		template Ipv6Address 	p_addrTn,
		template Ipv6Address 	p_addrIut,
		UInt1 					p_iFlag,
		UInt8 					p_nextPayload,
		template IkePayload 	p_m_payload,
		template IkePayload 	p_mw_payload
	)
	runs on LibIpv6Node return FncRetCode {
		var FncRetCode v_ret := e_success;
		var UInt1 v_iFlag;

		v_ret := f_createAndSendInfoReq(
			p_addrTn,
			p_addrIut,
			p_iFlag,
			p_nextPayload,
			p_m_payload
		);
		if (v_ret != e_success) { return v_ret;}

		if (p_iFlag == c_iFlagResponder)
			{v_iFlag := c_iFlagInitiator;}
		else
			{v_iFlag := c_iFlagResponder;}
		
		// wait for CreateChild response
		v_ret := f_waitForInformationalRsp(p_addrIut, p_addrTn, v_iFlag, {p_mw_payload});
		if (v_ret != e_success) { return v_ret;}

		return v_ret;
														
	} // end f_sndInformationalReqAndWaitForRsp

} // end establishSAFns_active

group establishSAFns_passive {
+4 −4
Original line number Diff line number Diff line
@@ -1365,19 +1365,19 @@ group encrPLTmplts {

group cfgPLTmplts {

	template IkePayload m_cfgPL (
	template IkePayload m_cfgPL_cfgAttrList_1Elem (
		UInt8 							p_nextPayload,
		UInt8							p_configType,
		template ConfigAttributeList 	p_configAttributeList
		template ConfigAttribute 		p_configAttribute
	) := {
			configuration := {
				nextPayload	 		:= p_nextPayload,
				criticalFlag 		:= 0,
				reserved1	 		:= 0,
				payloadLength 		:= 8 + lengthof(fx_configAttributeListToOct(valueof(p_configAttributeList))),
				payloadLength 		:= 8 + 4 + valueof(p_configAttribute.attributeLength),
				configType   		:= p_configType,
				reserved2	 		:= 0,
				configAttributeList := p_configAttributeList
				configAttributeList := m_cfgAttrList_1Elem(p_configAttribute)
			}
	}