Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +30 −26 Original line number Diff line number Diff line Loading @@ -413,7 +413,7 @@ group ipSecFns { runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; var FncRetCode v_ret := e_success; //IKE Loading @@ -430,6 +430,21 @@ group ipSecFns { //smu 2007 add check for prf if (PX_IPSEC_CONTROL == e_manualSecParamsSetup ) { //ESP - AH if( f_checkEncryptionKeyLen(PX_ENCRYPTION_ALGO,lengthof(PX_ESP_ENCR_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected encryption algorithm " & int2str(lengthof(PX_ESP_ENCR_KEY)) & " ****"); return e_error; } if( f_checkIntegrityKeyLen(PX_INTEGRITY_ALGO, lengthof(PX_INTEGRITY_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected integrity algorithm ****"); return e_error; } } else { vc_ikeSad[0] := { spiInitiator := PX_IKE_SPI, spiResponder := PX_IKE_SPI, Loading @@ -453,17 +468,6 @@ group ipSecFns { ikev2Header := omit, ikePayloadList := omit } //ESP - AH if( f_checkEncryptionKeyLen(PX_ENCRYPTION_ALGO,lengthof(PX_ESP_ENCR_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected encryption algorithm ****"); return e_error; } if( f_checkIntegrityKeyLen(PX_INTEGRITY_ALGO, lengthof(PX_INTEGRITY_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected integrity algorithm ****"); return e_error; } // SAD-OUT Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +4 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,8 @@ */ external function fx_calcPayloadChecksum(in template Ipv6Address p_srcAddress, in template Ipv6Address p_dstAddress, in template Ipv6Payload p_payload) in template Ipv6Payload p_payload, in UInt8 p_nextHeader) return Oct2; external function fx_encodeMessage (in template Ipv6Packet p_msg) Loading Loading @@ -107,10 +108,10 @@ /* @desc This external function sets the test adapter with the relevant security parameters * * @param p_sa Security Association * @param p_IkeSa IKE Security Association * @return FncRetCode */ external function fx_setIkeSecurityParameters(in IkeSad p_ikeSad) external function fx_setIkeSecurityParameters(in IkeSa p_ikeSa) return FncRetCode; Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +26 −24 Original line number Diff line number Diff line Loading @@ -194,6 +194,14 @@ group rfc2460Root_Functions { // all extension headers have been processed // Is there still a payload to be processed and which has not been already processed in a recursive call? if (v_loop==true and ispresent(v_activeIpv6Packet.ipv6Payload)) { if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg)) { if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); } } v_ret := f_calcIpv6PayloadChecksum(v_pseudoSrcAddr, v_pseudoDstAddr, v_activeIpv6Packet.ipv6Payload); } v_ret := f_setAuthHeader (v_activeIpv6Packet); Loading Loading @@ -312,115 +320,109 @@ group rfc2460Root_Functions { if(ischosen(p_ipv6Payload.echoReplyMsg)) { if(p_ipv6Payload.echoReplyMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.echoReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.echoReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.echoRequestMsg)) { if(p_ipv6Payload.echoRequestMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.echoRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.echoRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.nbrAdvMsg)) { if(p_ipv6Payload.nbrAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.nbrAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.nbrAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.nbrSolMsg)) { if(p_ipv6Payload.nbrSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.nbrSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.nbrSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.routerAdvMsg)) { if(p_ipv6Payload.routerAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.routerSolMsg)) { if(p_ipv6Payload.routerSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.routerSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.routerSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.redirectMsg)) { if(p_ipv6Payload.redirectMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.redirectMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.redirectMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.parameterProblemMsg)) { if(p_ipv6Payload.parameterProblemMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.parameterProblemMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.parameterProblemMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.timeExceededMsg)) { if(p_ipv6Payload.timeExceededMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.timeExceededMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.timeExceededMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.packetTooBigMsg)) { if(p_ipv6Payload.packetTooBigMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.packetTooBigMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.packetTooBigMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.destinationUnreachableMsg)) { if(p_ipv6Payload.destinationUnreachableMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.destinationUnreachableMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.destinationUnreachableMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobileRouterAdvMsg)) { if(p_ipv6Payload.mobileRouterAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobileRouterAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobileRouterAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.homeAgentAddrDiscRequestMsg)) { if(p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.homeAgentAddrDiscReplyMsg)) { if(p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobilePrefixSolMsg)) { if(p_ipv6Payload.mobilePrefixSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobilePrefixSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobilePrefixSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobilePrefixAdvMsg)) { if(p_ipv6Payload.mobilePrefixAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobilePrefixAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobilePrefixAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.otherIcmpv6Msg)) { if(p_ipv6Payload.otherIcmpv6Msg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.otherIcmpv6Msg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.otherIcmpv6Msg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.ikeMsg)) { if(p_ipv6Payload.ikeMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.ikeMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); } if(p_ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg p_ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(p_ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(p_ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(p_ipv6Payload.ikeMsg.payloadList)); p_ipv6Payload.ikeMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_udpHdr); } } Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +4 −4 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_rtAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -239,7 +239,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_nbrAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -290,7 +290,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_nbrSol); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -322,7 +322,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_rtrSol); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn +12 −12 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_prRtAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -63,9 +63,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -88,7 +88,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_rtSolPr); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -98,9 +98,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -123,7 +123,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_hoInit); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -133,9 +133,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -158,7 +158,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_hoAck); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -168,9 +168,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +30 −26 Original line number Diff line number Diff line Loading @@ -413,7 +413,7 @@ group ipSecFns { runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; var FncRetCode v_ret := e_success; //IKE Loading @@ -430,6 +430,21 @@ group ipSecFns { //smu 2007 add check for prf if (PX_IPSEC_CONTROL == e_manualSecParamsSetup ) { //ESP - AH if( f_checkEncryptionKeyLen(PX_ENCRYPTION_ALGO,lengthof(PX_ESP_ENCR_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected encryption algorithm " & int2str(lengthof(PX_ESP_ENCR_KEY)) & " ****"); return e_error; } if( f_checkIntegrityKeyLen(PX_INTEGRITY_ALGO, lengthof(PX_INTEGRITY_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected integrity algorithm ****"); return e_error; } } else { vc_ikeSad[0] := { spiInitiator := PX_IKE_SPI, spiResponder := PX_IKE_SPI, Loading @@ -453,17 +468,6 @@ group ipSecFns { ikev2Header := omit, ikePayloadList := omit } //ESP - AH if( f_checkEncryptionKeyLen(PX_ENCRYPTION_ALGO,lengthof(PX_ESP_ENCR_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected encryption algorithm ****"); return e_error; } if( f_checkIntegrityKeyLen(PX_INTEGRITY_ALGO, lengthof(PX_INTEGRITY_KEY)) != true) { log("**** f_init_ipSecParams: ERROR: Incorrect key length for the selected integrity algorithm ****"); return e_error; } // SAD-OUT Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +4 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,8 @@ */ external function fx_calcPayloadChecksum(in template Ipv6Address p_srcAddress, in template Ipv6Address p_dstAddress, in template Ipv6Payload p_payload) in template Ipv6Payload p_payload, in UInt8 p_nextHeader) return Oct2; external function fx_encodeMessage (in template Ipv6Packet p_msg) Loading Loading @@ -107,10 +108,10 @@ /* @desc This external function sets the test adapter with the relevant security parameters * * @param p_sa Security Association * @param p_IkeSa IKE Security Association * @return FncRetCode */ external function fx_setIkeSecurityParameters(in IkeSad p_ikeSad) external function fx_setIkeSecurityParameters(in IkeSa p_ikeSa) return FncRetCode; Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +26 −24 Original line number Diff line number Diff line Loading @@ -194,6 +194,14 @@ group rfc2460Root_Functions { // all extension headers have been processed // Is there still a payload to be processed and which has not been already processed in a recursive call? if (v_loop==true and ispresent(v_activeIpv6Packet.ipv6Payload)) { if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg)) { if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); } } v_ret := f_calcIpv6PayloadChecksum(v_pseudoSrcAddr, v_pseudoDstAddr, v_activeIpv6Packet.ipv6Payload); } v_ret := f_setAuthHeader (v_activeIpv6Packet); Loading Loading @@ -312,115 +320,109 @@ group rfc2460Root_Functions { if(ischosen(p_ipv6Payload.echoReplyMsg)) { if(p_ipv6Payload.echoReplyMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.echoReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.echoReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.echoRequestMsg)) { if(p_ipv6Payload.echoRequestMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.echoRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.echoRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.nbrAdvMsg)) { if(p_ipv6Payload.nbrAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.nbrAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.nbrAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.nbrSolMsg)) { if(p_ipv6Payload.nbrSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.nbrSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.nbrSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.routerAdvMsg)) { if(p_ipv6Payload.routerAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.routerSolMsg)) { if(p_ipv6Payload.routerSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.routerSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.routerSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.redirectMsg)) { if(p_ipv6Payload.redirectMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.redirectMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.redirectMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.parameterProblemMsg)) { if(p_ipv6Payload.parameterProblemMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.parameterProblemMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.parameterProblemMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.timeExceededMsg)) { if(p_ipv6Payload.timeExceededMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.timeExceededMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.timeExceededMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.packetTooBigMsg)) { if(p_ipv6Payload.packetTooBigMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.packetTooBigMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.packetTooBigMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.destinationUnreachableMsg)) { if(p_ipv6Payload.destinationUnreachableMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.destinationUnreachableMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.destinationUnreachableMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobileRouterAdvMsg)) { if(p_ipv6Payload.mobileRouterAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobileRouterAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobileRouterAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.homeAgentAddrDiscRequestMsg)) { if(p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.homeAgentAddrDiscRequestMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.homeAgentAddrDiscReplyMsg)) { if(p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.homeAgentAddrDiscReplyMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobilePrefixSolMsg)) { if(p_ipv6Payload.mobilePrefixSolMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobilePrefixSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobilePrefixSolMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.mobilePrefixAdvMsg)) { if(p_ipv6Payload.mobilePrefixAdvMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.mobilePrefixAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.mobilePrefixAdvMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.otherIcmpv6Msg)) { if(p_ipv6Payload.otherIcmpv6Msg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.otherIcmpv6Msg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); p_ipv6Payload.otherIcmpv6Msg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_icmpHdr); } } else if(ischosen(p_ipv6Payload.ikeMsg)) { if(p_ipv6Payload.ikeMsg.checksum == c_2ZeroBytes) { //calc checksum p_ipv6Payload.ikeMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload); } if(p_ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg p_ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(p_ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(p_ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(p_ipv6Payload.ikeMsg.payloadList)); p_ipv6Payload.ikeMsg.checksum := fx_calcPayloadChecksum (p_srcAddr, p_dstAddr, p_ipv6Payload, c_udpHdr); } } Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +4 −4 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_rtAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -239,7 +239,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_nbrAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -290,7 +290,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_nbrSol); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading Loading @@ -322,7 +322,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { v_ipPkt := valueof(p_rtrSol); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading
ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn +12 −12 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_prRtAdv); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -63,9 +63,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -88,7 +88,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_rtSolPr); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -98,9 +98,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -123,7 +123,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_hoInit); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -133,9 +133,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading @@ -158,7 +158,7 @@ module LibIpv6_Rfc4068FastHandovers_Functions { v_ipPkt := valueof(p_hoAck); //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set extensionHeaders if(f_setExtensionHeaders( v_ipPkt, Loading @@ -168,9 +168,9 @@ module LibIpv6_Rfc4068FastHandovers_Functions { return e_error; } //set checksum to zero v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_calcPayloadChecksum(v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt.ipv6Payload); //send ipPort.send(v_ipPkt); Loading