Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Functions.ttcn +9 −53 Original line number Diff line number Diff line Loading @@ -33,15 +33,19 @@ function f_sendGeneralIpv6(template GeneralIpv6 p_msg) runs on LibIpv6Node return FncRetCode { //Variables var Ipv6Packet v_ipPkt; v_ipPkt.generalIpv6 := valueof(p_msg); //set extensionHeaders if(f_setGeneralIpv6ExtensionHeaders(v_ipPkt.generalIpv6) != e_success) { log(" **** f_sendIpv6ExtHdrs: Error when calculating length of extension headers ****"); if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.generalIpv6.extHdrList, v_ipPkt.generalIpv6.ipv6Hdr.sourceAddress, v_ipPkt.generalIpv6.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendGeneralIpv6: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.generalIpv6.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send Loading @@ -50,57 +54,9 @@ return e_success; }//end f_sendGeneralIpv6 /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_mipPrefixSol GeneralIpv6 * @return execution status */ function f_setGeneralIpv6ExtensionHeaders(inout GeneralIpv6 p_generalIpv6) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; //select ext hdrs that need special calculation if (ispresent(p_generalIpv6.extHdrList)) { for (i:=0; i<sizeof(p_generalIpv6.extHdrList);i:=i+1) { if (ischosen(p_generalIpv6.extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_generalIpv6.extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_generalIpv6.ipv6Hdr.destinationAddress, p_generalIpv6.extHdrList[i].mipHeader); } else { f_setMipHeader( p_generalIpv6.ipv6Hdr.sourceAddress, p_generalIpv6.ipv6Hdr.destinationAddress, p_generalIpv6.extHdrList[i].mipHeader); } } else if (ischosen(p_generalIpv6.extHdrList[i].tunnelIpv6)) { //Cast GeneralIpv6Packet to Ipv6Packet in order to be able to reuse fx_tunnelledPayloadLength var Ipv6Packet v_ipv6Packet := {generalIpv6 := p_generalIpv6}; v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_generalIpv6.extHdrList[i].tunnelIpv6.payloadLength := fx_tunnelledPayloadLength(v_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ } } return e_success; }//end f_setGeneralIpv6ExtensionHeaders } //end group ipv6Packets group extHdrFns { }//end group extHdrFns } // end module LibIpv6_Rfc2460Root_Functions ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Templates.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ version := c_ipv6Version , trafficClass := c_trafficClassZero , flowLabel := c_flowLabelZero , payloadLength := 16,//c_zeroPayloadLength, TODO possible to calculate??? payloadLength := c_zeroPayloadLength, //16 nextHeader := p_nextHdr, hopLimit := c_hopLimit255, sourceAddress := p_src, Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +63 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.redirect := valueof(p_redirect); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.redirect.extHdrList, v_ipPkt.redirect.ipv6Hdr.sourceAddress, v_ipPkt.redirect.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRedirect: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.redirect.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -73,6 +83,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerAdvert := valueof(p_rtAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerAdvert.extHdrList, v_ipPkt.routerAdvert.ipv6Hdr.sourceAddress, v_ipPkt.routerAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -137,6 +157,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.nbrAdvert := valueof(p_nbrAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.nbrAdvert.extHdrList, v_ipPkt.nbrAdvert.ipv6Hdr.sourceAddress, v_ipPkt.nbrAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendNbrAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.nbrAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -163,8 +193,17 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerAdvert := valueof(p_rtAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerAdvert.extHdrList, v_ipPkt.routerAdvert.ipv6Hdr.sourceAddress, v_ipPkt.routerAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -193,6 +232,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.nbrSolicitation := valueof(p_nbrSol); //set extensionHeaders if (ispresent(v_ipPkt.nbrSolicitation.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.nbrSolicitation.extHdrList, v_ipPkt.nbrSolicitation.ipv6Hdr.sourceAddress, v_ipPkt.nbrSolicitation.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendNbrSol: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.nbrSolicitation.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -219,6 +268,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerSolicitation := valueof(p_rtrSol); //set extensionHeaders if (ispresent(v_ipPkt.routerSolicitation.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerSolicitation.extHdrList, v_ipPkt.routerSolicitation.ipv6Hdr.sourceAddress, v_ipPkt.routerSolicitation.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtSol: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerSolicitation.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn +38 −19 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ routerFlag:=p_rFlag, solicitedFlag:=p_sFlag, overrideFlag:=p_oFlag, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:=p_targetAddr, nbrAdvOptions:=p_opts } Loading Loading @@ -110,7 +110,7 @@ routerFlag:=p_rFlag, solicitedFlag:=p_sFlag, overrideFlag:=p_oFlag, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:=p_targetAddr, nbrAdvOptions:=p_opts } Loading Loading @@ -218,7 +218,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -241,7 +241,7 @@ icmpType:= c_nbrSol, icmpCode:= p_icmpCode, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -264,7 +264,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading Loading @@ -296,7 +296,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= ?, nbrSolOptions:= * } Loading @@ -317,7 +317,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -336,7 +336,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= * } Loading @@ -353,7 +353,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= * } Loading Loading @@ -382,7 +382,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -410,7 +410,7 @@ icmpType := c_redirect, icmpCode := p_code, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -438,7 +438,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -492,7 +492,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := ?, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -634,7 +634,7 @@ managedConfigFlag:=p_mFlag, otherConfigFlag:=p_oFlag, homeAgentFlag := c_haFlag0, reserved:= 0, reserved:= c_uInt16Zero, routerLifetime:=p_lifetime, reachableTime:=p_reachTime, retransTimer:=p_retransTimer, Loading Loading @@ -1114,6 +1114,8 @@ srcLinkLayerAddr := omit, mtuOption := omit, prefixInfoList := omit, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOpt } Loading @@ -1139,10 +1141,11 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } /* * @param p_prefixLength Length of the prefix. * @param p_lFlag Value for link flag. Loading @@ -1168,6 +1171,8 @@ p_preferredLifetime, p_prefix) }, srcLinkLayerAddr := m_macSlla(p_macSlla), advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading @@ -1179,6 +1184,8 @@ srcLinkLayerAddr := m_macSlla(p_macSlla), mtuOption := omit, prefixInfoList := omit, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1207,6 +1214,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1234,6 +1243,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOption } Loading Loading @@ -1264,6 +1275,8 @@ p_preferredLifetime, p_prefix) }, mtuOption:= p_mtu, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1295,6 +1308,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1325,6 +1340,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOption } Loading Loading @@ -1353,6 +1370,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +78 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import from LibIpv6_Rfc2461NeighborDiscovery_Templates all; //used for mixed procedure import from LibIpv6_Rfc2461NeighborDiscovery_Functions all; //used for mixed procedure import from LibIpv6_MultiRfcs_TypesAndValues all; import from LibIpv6_MultiRfcs_Functions all; group sendCalculation { Loading @@ -43,6 +44,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoRequest := valueof(p_echoRequest); if (ispresent(v_ipPkt.echoRequest.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoRequest.extHdrList, v_ipPkt.echoRequest.ipv6Hdr.sourceAddress, v_ipPkt.echoRequest.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoRequest: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.echoRequest.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -69,6 +79,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoReply := valueof(p_echoReply); if (ispresent(v_ipPkt.echoReply.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoReply.extHdrList, v_ipPkt.echoReply.ipv6Hdr.sourceAddress, v_ipPkt.echoReply.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoReply: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.echoReply.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -357,6 +376,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoRequest := valueof(p_echoRequest); if (ispresent(v_ipPkt.echoRequest.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoRequest.extHdrList, v_ipPkt.echoRequest.ipv6Hdr.sourceAddress, v_ipPkt.echoRequest.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoRequest_noCalcPayloadLength: Error when calculating length of extension headers ****"); return e_error; } } //set payload length v_ipPkt.echoRequest.ipv6Hdr.payloadLength := p_payloadLength; //set checksum to zero Loading Loading @@ -483,6 +511,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.otherHeader := valueof(p_otherIcmpv6); //set Extension Header if (ispresent(v_ipPkt.otherHeader.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.otherHeader.extHdrList, v_ipPkt.otherHeader.ipv6Hdr.sourceAddress, v_ipPkt.otherHeader.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendOtherIcmpv6: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.otherHeader.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -511,6 +549,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.destinationUnreachable := valueof(p_destUnreachable); //set Extension Header if (ispresent(v_ipPkt.destinationUnreachable.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.destinationUnreachable.extHdrList, v_ipPkt.destinationUnreachable.ipv6Hdr.sourceAddress, v_ipPkt.destinationUnreachable.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendDestUnreachable: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.destinationUnreachable.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -539,6 +587,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.packetTooBig := valueof(p_packetTooBig); //set Extension Header if (ispresent(v_ipPkt.packetTooBig.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.packetTooBig.extHdrList, v_ipPkt.packetTooBig.ipv6Hdr.sourceAddress, v_ipPkt.packetTooBig.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendPacketTooBig: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.packetTooBig.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -567,6 +625,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.timeExceeded := valueof(p_timeExceeded); //set Extension Header if (ispresent(v_ipPkt.timeExceeded.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.timeExceeded.extHdrList, v_ipPkt.timeExceeded.ipv6Hdr.sourceAddress, v_ipPkt.timeExceeded.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendTimeExceeded: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.timeExceeded.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -595,6 +663,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.parameterProblem := valueof(p_parameterProblem); //set Extension Header if (ispresent(v_ipPkt.parameterProblem.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.parameterProblem.extHdrList, v_ipPkt.parameterProblem.ipv6Hdr.sourceAddress, v_ipPkt.parameterProblem.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendParameterProblem: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.parameterProblem.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Functions.ttcn +9 −53 Original line number Diff line number Diff line Loading @@ -33,15 +33,19 @@ function f_sendGeneralIpv6(template GeneralIpv6 p_msg) runs on LibIpv6Node return FncRetCode { //Variables var Ipv6Packet v_ipPkt; v_ipPkt.generalIpv6 := valueof(p_msg); //set extensionHeaders if(f_setGeneralIpv6ExtensionHeaders(v_ipPkt.generalIpv6) != e_success) { log(" **** f_sendIpv6ExtHdrs: Error when calculating length of extension headers ****"); if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.generalIpv6.extHdrList, v_ipPkt.generalIpv6.ipv6Hdr.sourceAddress, v_ipPkt.generalIpv6.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendGeneralIpv6: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.generalIpv6.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send Loading @@ -50,57 +54,9 @@ return e_success; }//end f_sendGeneralIpv6 /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_mipPrefixSol GeneralIpv6 * @return execution status */ function f_setGeneralIpv6ExtensionHeaders(inout GeneralIpv6 p_generalIpv6) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; //select ext hdrs that need special calculation if (ispresent(p_generalIpv6.extHdrList)) { for (i:=0; i<sizeof(p_generalIpv6.extHdrList);i:=i+1) { if (ischosen(p_generalIpv6.extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_generalIpv6.extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_generalIpv6.ipv6Hdr.destinationAddress, p_generalIpv6.extHdrList[i].mipHeader); } else { f_setMipHeader( p_generalIpv6.ipv6Hdr.sourceAddress, p_generalIpv6.ipv6Hdr.destinationAddress, p_generalIpv6.extHdrList[i].mipHeader); } } else if (ischosen(p_generalIpv6.extHdrList[i].tunnelIpv6)) { //Cast GeneralIpv6Packet to Ipv6Packet in order to be able to reuse fx_tunnelledPayloadLength var Ipv6Packet v_ipv6Packet := {generalIpv6 := p_generalIpv6}; v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_generalIpv6.extHdrList[i].tunnelIpv6.payloadLength := fx_tunnelledPayloadLength(v_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ } } return e_success; }//end f_setGeneralIpv6ExtensionHeaders } //end group ipv6Packets group extHdrFns { }//end group extHdrFns } // end module LibIpv6_Rfc2460Root_Functions
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Templates.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ version := c_ipv6Version , trafficClass := c_trafficClassZero , flowLabel := c_flowLabelZero , payloadLength := 16,//c_zeroPayloadLength, TODO possible to calculate??? payloadLength := c_zeroPayloadLength, //16 nextHeader := p_nextHdr, hopLimit := c_hopLimit255, sourceAddress := p_src, Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn +63 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.redirect := valueof(p_redirect); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.redirect.extHdrList, v_ipPkt.redirect.ipv6Hdr.sourceAddress, v_ipPkt.redirect.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRedirect: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.redirect.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -73,6 +83,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerAdvert := valueof(p_rtAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerAdvert.extHdrList, v_ipPkt.routerAdvert.ipv6Hdr.sourceAddress, v_ipPkt.routerAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -137,6 +157,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.nbrAdvert := valueof(p_nbrAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.nbrAdvert.extHdrList, v_ipPkt.nbrAdvert.ipv6Hdr.sourceAddress, v_ipPkt.nbrAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendNbrAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.nbrAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -163,8 +193,17 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerAdvert := valueof(p_rtAdv); //set extensionHeaders if (ispresent(v_ipPkt.generalIpv6.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerAdvert.extHdrList, v_ipPkt.routerAdvert.ipv6Hdr.sourceAddress, v_ipPkt.routerAdvert.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerAdvert.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -193,6 +232,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.nbrSolicitation := valueof(p_nbrSol); //set extensionHeaders if (ispresent(v_ipPkt.nbrSolicitation.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.nbrSolicitation.extHdrList, v_ipPkt.nbrSolicitation.ipv6Hdr.sourceAddress, v_ipPkt.nbrSolicitation.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendNbrSol: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.nbrSolicitation.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -219,6 +268,16 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions { return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.routerSolicitation := valueof(p_rtrSol); //set extensionHeaders if (ispresent(v_ipPkt.routerSolicitation.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.routerSolicitation.extHdrList, v_ipPkt.routerSolicitation.ipv6Hdr.sourceAddress, v_ipPkt.routerSolicitation.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendRtSol: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.routerSolicitation.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn +38 −19 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ routerFlag:=p_rFlag, solicitedFlag:=p_sFlag, overrideFlag:=p_oFlag, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:=p_targetAddr, nbrAdvOptions:=p_opts } Loading Loading @@ -110,7 +110,7 @@ routerFlag:=p_rFlag, solicitedFlag:=p_sFlag, overrideFlag:=p_oFlag, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:=p_targetAddr, nbrAdvOptions:=p_opts } Loading Loading @@ -218,7 +218,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -241,7 +241,7 @@ icmpType:= c_nbrSol, icmpCode:= p_icmpCode, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -264,7 +264,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= c_2ZeroBytes, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading Loading @@ -296,7 +296,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= ?, nbrSolOptions:= * } Loading @@ -317,7 +317,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= p_opts } Loading @@ -336,7 +336,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= * } Loading @@ -353,7 +353,7 @@ icmpType:= c_nbrSol, icmpCode:= c_icmpCode0, checksum:= ?, reserved:= 0, reserved:= c_uInt16Zero, targetAddr:= p_targetAddr, nbrSolOptions:= * } Loading Loading @@ -382,7 +382,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -410,7 +410,7 @@ icmpType := c_redirect, icmpCode := p_code, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -438,7 +438,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -492,7 +492,7 @@ icmpType := c_redirect, icmpCode := c_icmpCode0, checksum := ?, reserved := 0, reserved := c_uInt16Zero, targetAddr := p_targetAddr, destinationAddr := p_destinationAddr, redirectOptions := p_redirectOptions Loading Loading @@ -634,7 +634,7 @@ managedConfigFlag:=p_mFlag, otherConfigFlag:=p_oFlag, homeAgentFlag := c_haFlag0, reserved:= 0, reserved:= c_uInt16Zero, routerLifetime:=p_lifetime, reachableTime:=p_reachTime, retransTimer:=p_retransTimer, Loading Loading @@ -1114,6 +1114,8 @@ srcLinkLayerAddr := omit, mtuOption := omit, prefixInfoList := omit, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOpt } Loading @@ -1139,10 +1141,11 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } /* * @param p_prefixLength Length of the prefix. * @param p_lFlag Value for link flag. Loading @@ -1168,6 +1171,8 @@ p_preferredLifetime, p_prefix) }, srcLinkLayerAddr := m_macSlla(p_macSlla), advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading @@ -1179,6 +1184,8 @@ srcLinkLayerAddr := m_macSlla(p_macSlla), mtuOption := omit, prefixInfoList := omit, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1207,6 +1214,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1234,6 +1243,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOption } Loading Loading @@ -1264,6 +1275,8 @@ p_preferredLifetime, p_prefix) }, mtuOption:= p_mtu, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1295,6 +1308,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading Loading @@ -1325,6 +1340,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := p_otherOption } Loading Loading @@ -1353,6 +1370,8 @@ p_validLifetime, p_preferredLifetime, p_prefix) }, advertisementInterval := omit, homeAgentInfo := omit, otherOption := omit } Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +78 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import from LibIpv6_Rfc2461NeighborDiscovery_Templates all; //used for mixed procedure import from LibIpv6_Rfc2461NeighborDiscovery_Functions all; //used for mixed procedure import from LibIpv6_MultiRfcs_TypesAndValues all; import from LibIpv6_MultiRfcs_Functions all; group sendCalculation { Loading @@ -43,6 +44,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoRequest := valueof(p_echoRequest); if (ispresent(v_ipPkt.echoRequest.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoRequest.extHdrList, v_ipPkt.echoRequest.ipv6Hdr.sourceAddress, v_ipPkt.echoRequest.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoRequest: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.echoRequest.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading @@ -69,6 +79,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoReply := valueof(p_echoReply); if (ispresent(v_ipPkt.echoReply.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoReply.extHdrList, v_ipPkt.echoReply.ipv6Hdr.sourceAddress, v_ipPkt.echoReply.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoReply: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.echoReply.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -357,6 +376,15 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.echoRequest := valueof(p_echoRequest); if (ispresent(v_ipPkt.echoRequest.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.echoRequest.extHdrList, v_ipPkt.echoRequest.ipv6Hdr.sourceAddress, v_ipPkt.echoRequest.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendEchoRequest_noCalcPayloadLength: Error when calculating length of extension headers ****"); return e_error; } } //set payload length v_ipPkt.echoRequest.ipv6Hdr.payloadLength := p_payloadLength; //set checksum to zero Loading Loading @@ -483,6 +511,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.otherHeader := valueof(p_otherIcmpv6); //set Extension Header if (ispresent(v_ipPkt.otherHeader.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.otherHeader.extHdrList, v_ipPkt.otherHeader.ipv6Hdr.sourceAddress, v_ipPkt.otherHeader.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendOtherIcmpv6: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.otherHeader.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -511,6 +549,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.destinationUnreachable := valueof(p_destUnreachable); //set Extension Header if (ispresent(v_ipPkt.destinationUnreachable.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.destinationUnreachable.extHdrList, v_ipPkt.destinationUnreachable.ipv6Hdr.sourceAddress, v_ipPkt.destinationUnreachable.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendDestUnreachable: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.destinationUnreachable.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -539,6 +587,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.packetTooBig := valueof(p_packetTooBig); //set Extension Header if (ispresent(v_ipPkt.packetTooBig.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.packetTooBig.extHdrList, v_ipPkt.packetTooBig.ipv6Hdr.sourceAddress, v_ipPkt.packetTooBig.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendPacketTooBig: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.packetTooBig.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -567,6 +625,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.timeExceeded := valueof(p_timeExceeded); //set Extension Header if (ispresent(v_ipPkt.timeExceeded.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.timeExceeded.extHdrList, v_ipPkt.timeExceeded.ipv6Hdr.sourceAddress, v_ipPkt.timeExceeded.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendTimeExceeded: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.timeExceeded.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading Loading @@ -595,6 +663,16 @@ return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt.parameterProblem := valueof(p_parameterProblem); //set Extension Header if (ispresent(v_ipPkt.parameterProblem.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.parameterProblem.extHdrList, v_ipPkt.parameterProblem.ipv6Hdr.sourceAddress, v_ipPkt.parameterProblem.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendParameterProblem: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.parameterProblem.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //set checksum to zero Loading