Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +3 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +111 −82 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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 Loading @@ -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); } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -794,6 +821,8 @@ group rfc4303Esp_ExtHdrFunctions { } } p_originalIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_originalIpv6Packet); return e_success; }//end f_setEspHeader Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +12 −17 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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, Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +25 −37 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn +142 −12 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +3 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +111 −82 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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 Loading @@ -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); } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -794,6 +821,8 @@ group rfc4303Esp_ExtHdrFunctions { } } p_originalIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_originalIpv6Packet); return e_success; }//end f_setEspHeader Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +12 −17 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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, Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +25 −37 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading
ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn +142 −12 File changed.Preview size limit exceeded, changes collapsed. Show changes