Commit 22a9e56b authored by berge's avatar berge
Browse files

Big changes in f_setExtensionHeaders.

Fixed some bugs in MN TCs.
parent f42e2acb
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -95,8 +95,9 @@
				var Bit128 v_prefixBits := oct2bit(p_prefix);
				var Bit64 v_prefixReadyBits := oct2bit('0000000000000000'O);
				var Oct8 v_prefixReady := int2oct(0,8);
				var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O;

			if (p_prefixLen > 64) {
			if (p_prefixLen != 64) {
				log("**** f_createHaAnycastAddress: Wrong prefixLen ****");
				return e_error;
			}
@@ -105,11 +106,8 @@
				for (i:=0; i<p_prefixLen; i:=i+1) {
					v_prefixReadyBits[i] := v_prefixBits[i];
				}
				//Complete v_prefixReady with Zero Bytes
				for (i:=p_prefixLen; i<64; i:=i+1) {
					v_prefixReadyBits[i] := int2bit(0,1);
				}
				v_prefixReady := bit2oct(v_prefixReadyBits);
				p_haAca := v_prefixReady & v_haAnycast;			
			}

			return e_success;
+111 −82
Original line number Diff line number Diff line
@@ -40,10 +40,9 @@ group rfc2460Root_Functions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendGeneralIpv6: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -66,81 +65,118 @@ group rfc2460Root_Functions {
	 * @param 	p_extHdrList Extension Header List
	 * @return 	execution status 
	*/
	function f_setExtensionHeaders(	inout ExtensionHeaderList p_extHdrList,
	function f_setExtensionHeaders(	inout Ipv6Packet p_ipv6Packet,
									in Ipv6Address p_srcAddr,
									in Ipv6Address p_dstAddr,
									in Ipv6Packet p_ipv6Packet)
									in Ipv6Address p_dstAddr)
	runs on LibIpv6Node
	return FncRetCode {
		var FncRetCode v_ret := e_success;
		var UInt8 i;
		var UInt8 i, j;
		var Ipv6Address v_homeAddress := c_16ZeroBytes;
		var UInt8 v_nrOfTunnelHdr := 0;
		var Ipv6Address v_pseudoSrcAddr := c_16ZeroBytes;
		var Ipv6Address v_pseudoDstAddr := c_16ZeroBytes;
		var boolean v_loop := true;
		var boolean v_checkPayload := true;		
		var Ipv6Packet v_originalIpv6Packet;
		var Ipv6Packet v_activeIpv6Packet := p_ipv6Packet;

		for (i:=0; i<sizeof(p_extHdrList) and v_loop ;i:=i+1) {
			if (ischosen(p_extHdrList[i].mobileHeader)) {
				if (f_isPresentHomeAddressOption(p_extHdrList, v_homeAddress) == e_success) {//used in all packets that are sent to registered CN
					v_pseudoSrcAddr := v_homeAddress;
		v_pseudoDstAddr := v_activeIpv6Packet.ipv6Hdr.destinationAddress;
				}
				else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) {
		v_pseudoSrcAddr := v_activeIpv6Packet.ipv6Hdr.sourceAddress;
					v_pseudoDstAddr := v_homeAddress;

		if (ispresent(v_activeIpv6Packet.extHdrList)) {
			for (i:=0; i<sizeof(v_activeIpv6Packet.extHdrList) and v_loop ;i:=i+1) {
				
				// Process Home Address Destination Option
				if (ischosen(v_activeIpv6Packet.extHdrList[i].destinationOptionHeader)) {
					for (j:=0; j<sizeof(v_activeIpv6Packet.extHdrList[i].destinationOptionHeader.destOptionList);j:=j+1) {
						if (ischosen(v_activeIpv6Packet.extHdrList[i].destinationOptionHeader.destOptionList[j].homeAddressOption)) {
							v_pseudoSrcAddr := v_activeIpv6Packet.extHdrList[i].destinationOptionHeader.destOptionList[j].homeAddressOption.homeAddress;
						}
				else {
					v_pseudoSrcAddr := v_activeIpv6Packet.ipv6Hdr.sourceAddress;					
					v_pseudoDstAddr := v_activeIpv6Packet.ipv6Hdr.destinationAddress;
					}
				
				}
				// Proccess Routing Header Type 2			
				else if (ischosen(v_activeIpv6Packet.extHdrList[i].routingHeader) and (v_activeIpv6Packet.extHdrList[i].routingHeader.routingType == c_routeHdrType2)) {
					if (ischosen(v_activeIpv6Packet.extHdrList[i].routingHeader.routingHeaderData.rtHdrDataHomeAddress)) {
						v_pseudoDstAddr := v_activeIpv6Packet.extHdrList[i].routingHeader.routingHeaderData.rtHdrDataHomeAddress;
					}
				}
				// Process Mobile Header			
				else if (ischosen(v_activeIpv6Packet.extHdrList[i].mobileHeader)) {
					v_ret := f_setMobileHeader(	v_activeIpv6Packet.ipv6Hdr.sourceAddress,
												v_activeIpv6Packet.ipv6Hdr.destinationAddress,
												v_pseudoSrcAddr,					
												v_pseudoDstAddr,
											p_extHdrList[i].mobileHeader);
												v_activeIpv6Packet.extHdrList[i].mobileHeader);
					
				//	update packet payloadLen
				p_ipv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_ipv6Packet);
				}
			else if (ischosen(p_extHdrList[i].tunneledIpv6)) {
				// Process Tunneled Header
				else if (ischosen(v_activeIpv6Packet.extHdrList[i].tunneledIpv6)) {
					v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1;
				p_extHdrList[i].tunneledIpv6.payloadLength := fx_tunnelledPayloadLength(p_ipv6Packet, v_nrOfTunnelHdr);
		
				// Tunneled header is the active packet
				//p_srcAddr := p_extHdrList[i].tunneledIpv6.sourceAddress;
				//p_dstAddr := p_extHdrList[i].tunneledIpv6.destinationAddress;
				v_activeIpv6Packet.ipv6Hdr.sourceAddress := p_extHdrList[i].tunneledIpv6.sourceAddress;
				v_activeIpv6Packet.ipv6Hdr.destinationAddress := p_extHdrList[i].tunneledIpv6.destinationAddress;
					//Build original packet
					v_originalIpv6Packet.ipv6Hdr := v_activeIpv6Packet.extHdrList[i].tunneledIpv6;
					for (j:=0; (i+j+1)<sizeof(v_activeIpv6Packet.extHdrList) ;j:=j+1) {
						v_originalIpv6Packet.extHdrList[j] := v_activeIpv6Packet.extHdrList[i+1];	
					}
					if (ispresent(v_activeIpv6Packet.ipv6Payload)) {
						v_originalIpv6Packet.ipv6Payload := v_activeIpv6Packet.ipv6Payload;	
					}
					v_originalIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (v_originalIpv6Packet);

					f_setExtensionHeaders(	v_originalIpv6Packet,
											v_originalIpv6Packet.ipv6Hdr.sourceAddress,
											v_originalIpv6Packet.ipv6Hdr.destinationAddress);	
					v_originalIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (v_originalIpv6Packet);											
			
					// include recursion results
					v_activeIpv6Packet.extHdrList[i].tunneledIpv6.payloadLength := v_originalIpv6Packet.ipv6Hdr.payloadLength;
					if (ispresent(v_originalIpv6Packet.extHdrList)) {
						for (j:=0; j<sizeof(v_originalIpv6Packet.extHdrList) ;j:=j+1) {
							v_activeIpv6Packet.extHdrList[i+1] := v_originalIpv6Packet.extHdrList[j];	
						}			
					}
					if (ispresent(v_originalIpv6Packet.ipv6Payload)) {
						v_activeIpv6Packet.ipv6Payload := v_originalIpv6Packet.ipv6Payload;	
					}
			else if (ischosen(p_extHdrList[i].espHeader)) {
					
					v_checkPayload := false;
					v_loop := false;				
				}
				//Process ESP Header
				else if (ischosen(v_activeIpv6Packet.extHdrList[i].espHeader)) {
	
					v_ret := f_getOriginalIpv6Packet(
									v_activeIpv6Packet,
									p_extHdrList[i].espHeader,
									v_activeIpv6Packet.extHdrList[i].espHeader,
									v_originalIpv6Packet);
					if (v_ret == e_success) {
						if (ispresent(v_originalIpv6Packet.extHdrList)) {
							p_extHdrList := v_originalIpv6Packet.extHdrList;
						}
						p_srcAddr := v_originalIpv6Packet.ipv6Hdr.sourceAddress;
						p_dstAddr := v_originalIpv6Packet.ipv6Hdr.destinationAddress;
						v_activeIpv6Packet := v_originalIpv6Packet;

						f_setExtensionHeaders(	p_extHdrList,
												p_srcAddr,
												p_dstAddr,
												v_activeIpv6Packet);
						f_setExtensionHeaders(	v_originalIpv6Packet,
												v_originalIpv6Packet.ipv6Hdr.sourceAddress,
												v_originalIpv6Packet.ipv6Hdr.destinationAddress);
	
						v_loop := false;
					}
				} 
			}//end for
		}

		if (ispresent(v_activeIpv6Packet.ipv6Payload)) {
			v_ret := f_calcIpv6PayloadChecksum(v_activeIpv6Packet);
		if (v_checkPayload==true and ispresent(v_activeIpv6Packet.ipv6Payload)) {
			v_originalIpv6Packet := v_activeIpv6Packet;
			v_originalIpv6Packet.ipv6Hdr.sourceAddress := v_pseudoSrcAddr;
			v_originalIpv6Packet.ipv6Hdr.destinationAddress := v_pseudoDstAddr;
			
			v_ret := f_calcIpv6PayloadChecksum(v_originalIpv6Packet);
			
			v_originalIpv6Packet.ipv6Hdr.sourceAddress := v_activeIpv6Packet.ipv6Hdr.sourceAddress;
			v_originalIpv6Packet.ipv6Hdr.destinationAddress := v_activeIpv6Packet.ipv6Hdr.destinationAddress;
			v_activeIpv6Packet := v_originalIpv6Packet;
		}

		p_ipv6Packet := v_activeIpv6Packet;

		return v_ret;

	}//end f_setExtensionHeaders
@@ -151,13 +187,13 @@ group rfc2460Root_Functions {
	return FncRetCode {
		
		if(ischosen(p_ipv6Packet.ipv6Payload.echoReplyMsg)) {
			if(p_ipv6Packet.ipv6Payload.echoReplyMsg.checksum != c_2ZeroBytes) {
			if(p_ipv6Packet.ipv6Payload.echoReplyMsg.checksum == c_2ZeroBytes) {
				//calc checksum
				p_ipv6Packet.ipv6Payload.echoReplyMsg.checksum := fx_icmpv6Checksum(p_ipv6Packet);
			}
		}
		else if(ischosen(p_ipv6Packet.ipv6Payload.echoRequestMsg)) {
			if(p_ipv6Packet.ipv6Payload.echoRequestMsg.checksum != c_2ZeroBytes) {
			if(p_ipv6Packet.ipv6Payload.echoRequestMsg.checksum == c_2ZeroBytes) {
				//calc checksum
				p_ipv6Packet.ipv6Payload.echoRequestMsg.checksum := fx_icmpv6Checksum(p_ipv6Packet);
			}
@@ -415,10 +451,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendBU: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -447,10 +482,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendBA: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -479,10 +513,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendBE: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -511,10 +544,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendBR: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -543,10 +575,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendHot: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -575,10 +606,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendHoti: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -607,10 +637,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendCoti: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -639,10 +668,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendCoti: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -671,10 +699,9 @@ group rfc3775Mipv6_ExtHdrFunctions {
		v_ipPkt := valueof(p_msg);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendFastNbrAdv: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -794,6 +821,8 @@ group rfc4303Esp_ExtHdrFunctions {
			}
		}

		p_originalIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_originalIpv6Packet);

		return e_success;

	}//end f_setEspHeader
+12 −17
Original line number Diff line number Diff line
@@ -45,10 +45,9 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
			v_ipPkt := valueof(p_redirect);
			//set extensionHeaders
			if (ispresent(v_ipPkt.extHdrList)) {
				if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
				if(f_setExtensionHeaders(	v_ipPkt,
											v_ipPkt.ipv6Hdr.sourceAddress,
											v_ipPkt.ipv6Hdr.destinationAddress,
											v_ipPkt) != e_success) {
											v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
					log(" **** f_sendRedirect: Error when calculating length of extension headers ****");
					return e_error;
				}
@@ -85,10 +84,9 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
			v_ipPkt := valueof(p_rtAdv);
			//set extensionHeaders
			if (ispresent(v_ipPkt.extHdrList)) {
				if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
				if(f_setExtensionHeaders(	v_ipPkt,
											v_ipPkt.ipv6Hdr.sourceAddress,
											v_ipPkt.ipv6Hdr.destinationAddress,
											v_ipPkt) != e_success) {
											v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
					log(" **** f_sendRtAdv: Error when calculating length of extension headers ****");
					return e_error;
				}
@@ -211,8 +209,8 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
															c_lFlag1,
															c_aFlag1,
															c_rtAddrFlag1,
															c_validLifetime30s,
															c_preferredLifetime10s,
															c_infinitePrefixLifetime,
															c_infinitePrefixLifetime,
															p_glaAddrTn,
															m_advInterval(c_rtrAdvInterval3000ms),
															m_homeAgentInfo(c_haPref10s,
@@ -239,10 +237,9 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
			v_ipPkt := valueof(p_nbrAdv);
			//set extensionHeaders
			if (ispresent(v_ipPkt.extHdrList)) {	
				if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
				if(f_setExtensionHeaders(	v_ipPkt,
											v_ipPkt.ipv6Hdr.sourceAddress,
											v_ipPkt.ipv6Hdr.destinationAddress,
											v_ipPkt) != e_success) {
											v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
					log(" **** f_sendNbrAdv: Error when calculating length of extension headers ****");
					return e_error;
				}
@@ -294,10 +291,9 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
			v_ipPkt := valueof(p_nbrSol);
			//set extensionHeaders
			if (ispresent(v_ipPkt.extHdrList)) {
				if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
				if(f_setExtensionHeaders(	v_ipPkt,
											v_ipPkt.ipv6Hdr.sourceAddress,
											v_ipPkt.ipv6Hdr.destinationAddress,
											v_ipPkt) != e_success) {
											v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
					log(" **** f_sendNbrSol: Error when calculating length of extension headers ****");
					return e_error;
				}
@@ -330,10 +326,9 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
			v_ipPkt := valueof(p_rtrSol);
			//set extensionHeaders
			if (ispresent(v_ipPkt.extHdrList)) {
				if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
				if(f_setExtensionHeaders(	v_ipPkt,
											v_ipPkt.ipv6Hdr.sourceAddress,
											v_ipPkt.ipv6Hdr.destinationAddress,
											v_ipPkt) != e_success) {
											v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
					log(" **** f_sendRtSol: Error when calculating length of extension headers ****");
					return e_error;
				}
+25 −37
Original line number Diff line number Diff line
@@ -39,21 +39,17 @@
	return FncRetCode {
		var EchoRequest v_ipPkt;
		v_ipPkt := valueof(p_echoRequest);
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,

		//calc payloadLen
		v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt);

		if(f_setExtensionHeaders(	v_ipPkt,
									v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
									v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
			log(" **** f_sendEchoRequest: Error when calculating length of extension headers ****");
			return e_error;
		}
		}
		//calc payloadLen
		v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt);
		//set checksum to zero
		v_ipPkt.ipv6Payload.echoRequestMsg.checksum := c_2ZeroBytes;
		//calc checksum
		v_ipPkt.ipv6Payload.echoRequestMsg.checksum := fx_icmpv6Checksum(v_ipPkt);
		
		//send
		ipPort.send(v_ipPkt);
	
@@ -76,10 +72,9 @@
		var EchoRequestWithEsp v_ipPkt;
		v_ipPkt := valueof(p_echoRequestWithEsp);
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** EchoRequestWithEsp: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -112,10 +107,9 @@
		var EchoReply v_ipPkt;
		v_ipPkt := valueof(p_echoReply);
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendEchoReply: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -476,10 +470,9 @@
		var EchoRequest v_ipPkt;
		v_ipPkt := valueof(p_echoRequest);
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendEchoRequest_noCalcPayloadLength: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -612,10 +605,9 @@
		v_ipPkt := valueof(p_otherIcmpv6);
		//set Extension Header
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendOtherIcmpv6: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -650,10 +642,9 @@
		v_ipPkt := valueof(p_destUnreachable);
		//set Extension Header
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendDestUnreachable: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -688,10 +679,9 @@
		v_ipPkt := valueof(p_packetTooBig);
		//set Extension Header
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendPacketTooBig: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -726,10 +716,9 @@
		v_ipPkt := valueof(p_timeExceeded);
		//set Extension Header
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendTimeExceeded: Error when calculating length of extension headers ****");
				return e_error;
			}
@@ -764,10 +753,9 @@
		v_ipPkt := valueof(p_parameterProblem);
		//set Extension Header
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
			if(f_setExtensionHeaders(	v_ipPkt,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
										v_ipPkt.ipv6Hdr.destinationAddress) != e_success) {
				log(" **** f_sendParameterProblem: Error when calculating length of extension headers ****");
				return e_error;
			}
+142 −12

File changed.

Preview size limit exceeded, changes collapsed.

Loading