Commit 0bdf273f authored by mullers's avatar mullers
Browse files

chnages for tunnel mode introduced, version is not ready yet. needs finish by alex

parent 65020ec7
Loading
Loading
Loading
Loading
+101 −33
Original line number Diff line number Diff line
@@ -1319,8 +1319,10 @@ module LibIpv6_Rfc4306Ikev2_Functions {
	 * @param p_addrTn address of test node
	*/
	function f_waitForIkeSaInitRsp(	
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut
		in template Ipv6Address p_addrTn,
		in template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTunnelStart,
		in template Ipv6Address p_addrTunnelEnd
	)
	runs on LibIpv6Node
	return FncRetCode {
@@ -1334,11 +1336,22 @@ module LibIpv6_Rfc4306Ikev2_Functions {
		var IkePayload v_ikePayload;
		// transform
		var SaTransform v_saTransform;
		var Ipv6Address v_ikeSrc;
		var	Ipv6Address v_ikeDst;

		if(vc_sad[c_saIni].ipSecProtocolMode == e_transportMode) {
			v_ikeDst := valueof(p_addrTn);
			v_ikeSrc := valueof(p_addrIut);
		}
		else {
			v_ikeDst := valueof(p_addrTunnelStart);
			v_ikeSrc := valueof(p_addrTunnelEnd);
		}

		tc_wait.start;
		alt {
			[]	ipPort.receive(mw_ikeSaInitRsp(	p_addrIut,
												p_addrTn,
			[]	ipPort.receive(mw_ikeSaInitRsp(	v_ikeSrc,
												v_ikeDst,
												vc_ikeSad[0].udpIutPort,
												vc_ikeSad[0].udpTnPort,
												vc_ikeSad[0].spiInitiator,
@@ -1465,8 +1478,8 @@ module LibIpv6_Rfc4306Ikev2_Functions {
				}

			// A unexpected IKE_SA_INIT response with a Notify payload is received
			[]	ipPort.receive(mw_ikeSaInitRsp(	p_addrIut,
												p_addrTn,
			[]	ipPort.receive(mw_ikeSaInitRsp(	v_ikeSrc,
												v_ikeDst,
												vc_ikeSad[0].udpIutPort,
												vc_ikeSad[0].udpTnPort,
												vc_ikeSad[0].spiInitiator,
@@ -2136,9 +2149,13 @@ group sendRequests {
	function f_createSaInitReq(
		in template Ipv6Address p_addrTn,
		in template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTunnelStart,
		in template Ipv6Address p_addrTunnelEnd,
		out IkeSaInitRequest 	p_ikeSaInitReq
	)
	runs on LibIpv6Node {
		var Ipv6Address v_ikeSrc;
		var	Ipv6Address v_ikeDst;
		
		var SaTransform v_saTransformEncr := valueof (
			m_saTransform (
@@ -2162,10 +2179,19 @@ group sendRequests {
			);
		}

		if(vc_sad[c_saIni].ipSecProtocolMode == e_transportMode) {
			v_ikeSrc := valueof(p_addrTn);
			v_ikeDst := valueof(p_addrIut);
		}
		else {
			v_ikeSrc := valueof(p_addrTunnelStart);
			v_ikeDst := valueof(p_addrTunnelEnd);
		}
													
		p_ikeSaInitReq := valueof(
			m_ikeSaInitReq (
				p_addrTn,
				p_addrIut,
				v_ikeSrc,
				v_ikeDst,
				vc_ikeSad[0].udpTnPort,
				vc_ikeSad[0].udpIutPort,
				vc_ikeSad[0].spiInitiator,
@@ -2260,8 +2286,10 @@ group sendRequests {
	 * @param p_addrTn address of test node
	*/
	function f_createAndSendSaInitReq(
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut
		in template Ipv6Address p_addrTn,
		in template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTunnelStart,
		in template Ipv6Address p_addrTunnelEnd
	)
	runs on LibIpv6Node
	return FncRetCode {
@@ -2272,6 +2300,8 @@ group sendRequests {
		f_createSaInitReq(
			p_addrTn,
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd,
			v_ikeSaInitReq
		);
										
@@ -3316,6 +3346,8 @@ group sendRequests {
	function f_createInfoReq(
		in template Ipv6Address 	p_addrTn,
		in template Ipv6Address 	p_addrIut,
		in template Ipv6Address 	p_addrTunnelStart,
		in template Ipv6Address 	p_addrTunnelEnd,
		in UInt1 					p_iFlag,
		in UInt8 					p_nextPayload,
		in template IkePayload 		p_payload,
@@ -3324,11 +3356,22 @@ group sendRequests {
	runs on LibIpv6Node {

		var FncRetCode v_ret := e_success;
		var Ipv6Address v_ikeSrc;
		var	Ipv6Address v_ikeDst;

		if(vc_sad[c_saIni].ipSecProtocolMode == e_transportMode) {
			v_ikeSrc := valueof(p_addrTn);
			v_ikeDst := valueof(p_addrIut);
		}
		else {
			v_ikeSrc := valueof(p_addrTunnelStart);
			v_ikeDst := valueof(p_addrTunnelEnd);
		}

		p_informationalRequest := valueof (
			m_informationalReq (
				p_addrTn,
				p_addrIut,
				v_ikeSrc,
				v_ikeDst,
				vc_ikeSad[0].udpTnPort,
				vc_ikeSad[0].udpIutPort,
				vc_ikeSad[0].spiInitiator,
@@ -3382,8 +3425,10 @@ group sendRequests {
	 * @param p_payload template of payload to be sent in INFORMATIONAL request
	*/
	function f_createAndSendInfoReq(
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut,
		in template Ipv6Address 	p_addrTn,
		in template Ipv6Address 	p_addrIut,
		in template Ipv6Address 	p_addrTunnelStart,
		in template Ipv6Address 	p_addrTunnelEnd,
		UInt1 p_iFlag,
		UInt8 p_nextPayload,
		template IkePayload p_payload
@@ -3397,6 +3442,8 @@ group sendRequests {
		f_createInfoReq(
			p_addrTn,
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd,
			p_iFlag,
			p_nextPayload,
			p_payload,
@@ -4642,8 +4689,10 @@ group sendResponses {
group establishSAFns_active {
	
	function f_sndSaInitReqAndWaitForRsp(
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut
		in template Ipv6Address p_addrTn,
		in template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTunnelStart,
		in template Ipv6Address p_addrTunnelEnd
	)
	runs on LibIpv6Node
	return FncRetCode {
@@ -4651,12 +4700,19 @@ group establishSAFns_active {

		v_ret := f_createAndSendSaInitReq(
			p_addrTn,
			p_addrIut
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd
		);
		if (v_ret != e_success) { return v_ret;}
		
		// wait for IKE_SA_INIT response
		v_ret := f_waitForIkeSaInitRsp(p_addrTn,p_addrIut);
		v_ret := f_waitForIkeSaInitRsp(
			p_addrTn,
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd
		);
		if (v_ret != e_success) { return v_ret;}

		//fill keyLen
@@ -4736,8 +4792,10 @@ group establishSAFns_active {
	} // end f_sndAuthReqAndWaitForRsp

	function f_createIkeSaAndFirstChildSa(
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTn,
		in template Ipv6Address p_addrIut,
		in template Ipv6Address p_addrTunnelStart,
		in template Ipv6Address p_addrTunnelEnd,
		in UInt8 p_protocolId
	)
	runs on LibIpv6Node return FncRetCode {
@@ -4745,7 +4803,9 @@ group establishSAFns_active {

		v_ret := f_sndSaInitReqAndWaitForRsp(
		  	p_addrTn,
		  	p_addrIut
		  	p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd
		 );
		if(v_ret != e_success) {return v_ret;}

@@ -4791,8 +4851,10 @@ group establishSAFns_active {
	} // end f_sndChildSaReqAndWaitForRsp

	function f_sndInformationalReqAndWaitForRsp(
		template Ipv6Address 	p_addrTn,
		template Ipv6Address 	p_addrIut,
		in template Ipv6Address 	p_addrTn,
		in template Ipv6Address 	p_addrIut,
		in template Ipv6Address 	p_addrTunnelStart,
		in template Ipv6Address 	p_addrTunnelEnd,
		UInt1 					p_iFlag,
		UInt8 					p_nextPayload,
		template IkePayload 	p_m_payload,
@@ -4805,6 +4867,8 @@ group establishSAFns_active {
		v_ret := f_createAndSendInfoReq(
			p_addrTn,
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd,
			p_iFlag,
			p_nextPayload,
			p_m_payload
@@ -5015,8 +5079,10 @@ group establishSAFns_passive {
group deleteSAFns {

	function f_delIkeSa(
		template Ipv6Address p_addrTn,
		template Ipv6Address p_addrIut,
		in template Ipv6Address 	p_addrTn,
		in template Ipv6Address 	p_addrIut,
		in template Ipv6Address 	p_addrTunnelStart,
		in template Ipv6Address 	p_addrTunnelEnd,
		UInt1 p_iFlag
	)
	runs on LibIpv6Node
@@ -5027,6 +5093,8 @@ group deleteSAFns {
		v_ret := f_createAndSendInfoReq(
			p_addrTn,
			p_addrIut,
			p_addrTunnelStart,
			p_addrTunnelEnd,
			p_iFlag,
			c_deletePL,
			m_delIkeSaPL(c_noNextPL)