Loading IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { const UInt8 c_optLen0 := 0; const UInt8 c_optLen0 := 0; const UInt8 c_optLen1 := 1; const UInt8 c_optLen1 := 1; const UInt8 c_optLen2 := 2; const UInt8 c_optLen2 := 2; const UInt8 c_optLen3 := 3; const UInt8 c_optLen4 := 4; const UInt8 c_optLen4 := 4; const UInt8 c_optLen6 := 6; const UInt8 c_optLen6 := 6; const UInt8 c_optLen16 := 16; const UInt8 c_optLen16 := 16; Loading IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn +1015 −935 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; group rfc2460Root_Templates { group rfc2460Root_Templates { Loading Loading @@ -425,6 +426,26 @@ group rfc2460Root_Templates { }//end group tunnelHdrTemplates }//end group tunnelHdrTemplates group authHdrTemplates { /* @desc Auth Hdr * @param p_nextHdr Next header identifier value to be used. */ template ExtensionHeader m_extHdr_authHeader ( UInt8 p_nextHdr ) := { authHeader := { nextHeader := p_nextHdr, payloadLen := ?, reserved := ?, securityParametersIndex := ?, sequenceNumber := ?, icv := ? } } }//end group authHdrTemplates } // end extensionHeader } // end extensionHeader group hbhOptionTemplates { group hbhOptionTemplates { Loading Loading @@ -730,18 +751,6 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } //Added by PK template MipMessage mw_bindingAck_mipOpt ( template MipOptionList p_mipOptions ) := { bindingAck := { status := c_mipCodeBindingUpdateAccepted, kFlag := ?, reserved := ?, sequenceNumber := ?, lifeTime := ?, mipOptions := p_mipOptions } } // Added by PK // Added by PK template MipMessage mw_bindingAck_statusSN ( template MipMessage mw_bindingAck_statusSN ( template UInt8 p_status, template UInt8 p_status, Loading Loading @@ -773,6 +782,21 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } // Added by PK template MipMessage mw_bindingAck_statusOpt ( template UInt8 p_status, template MipOptionList p_mipOptions ) := { bindingAck := { status := p_status, kFlag := ?, reserved := ?, sequenceNumber := ?, lifeTime := ?, mipOptions := p_mipOptions } } //Added by PK //Added by PK template MipMessage m_bindingError_noOpt ( template MipMessage m_bindingError_noOpt ( UInt8 p_status, UInt8 p_status, Loading Loading @@ -879,6 +903,30 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } /* * @param p_mipOptions Mobility options */ template MipMessage m_fastNbrAdv ( template MipOptionList p_mipOptions ) := { fastNbrAdv := { reserved := c_uInt16Zero, mipOptions := p_mipOptions } } /* * @param p_mipOptions Mobility options */ template MipMessage mw_fastNbrAdv ( template MipOptionList p_mipOptions ) := { fastNbrAdv := { reserved := ?, mipOptions := p_mipOptions } } }//end group mobilityHdrMessageTemplates }//end group mobilityHdrMessageTemplates Loading Loading @@ -1044,14 +1092,47 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } }//end group mipHeaderTemplates }//end group mipHeaderTemplates }//end group rfc3775Mipv6_ExtHdrTemplates }//end group rfc3775Mipv6_ExtHdrTemplates group rfc4302Ah_ExtHdrTemplates { group rfc4068HastHandovers_OptionTemplates { /* * @param p_optionCode The value of code field * @param p_llaAddr Link lyer address */ template MipOption m_extHdr_llaOpt ( UInt8 p_optionCode, template Oct6to15 p_llaAddr ) := { fHLinkLayerAddress := { optionType := c_fhMobilityHeaderLinkLayerAddress, optionLength := PX_MAC_OPTION_LEN, optionCode := p_optionCode, pad0 := ?, linkLayerAddr := p_llaAddr } } /* * @param p_llaAddr Link lyer address */ template MipOption mw_extHdr_llaOpt ( template Oct6to15 p_llaAddr ) := { fHLinkLayerAddress := { optionType := c_fhMobilityHeaderLinkLayerAddress, optionLength := PX_MAC_OPTION_LEN, optionCode := c_fHCode2, pad0 := 0, linkLayerAddr := p_llaAddr } } }//end group rfc4068HastHandovers_OptionTemplates group rfc4302Ah_ExtHdrTemplates { }//end group rfc4302Ah_ExtHdrTemplates }//end group rfc4302Ah_ExtHdrTemplates Loading Loading @@ -1102,7 +1183,6 @@ group cryptoTemplates { ipv6Payload := p_ipv6Payload ipv6Payload := p_ipv6Payload } } }//end group cryptoTemplates }//end group cryptoTemplates } // end module LibIpv6_Interface_Templates } // end module LibIpv6_Interface_Templates IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn +38 −8 Original line number Original line Diff line number Diff line Loading @@ -60,12 +60,17 @@ module LibIpv6_Interface_TypesAndValues { Redirect, Redirect, //Imported from Rfc 2894 //Imported from Rfc 2894 RouterRenumbering, RouterRenumbering, //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 HomeAgentAddressDiscoveryRequest, HomeAgentAddressDiscoveryRequest, HomeAgentAddressDiscoveryReply, HomeAgentAddressDiscoveryReply, MobilePrefixSolicitation, MobilePrefixSolicitation, MobilePrefixAdvertisement, MobilePrefixAdvertisement, MipRouterAdvertisement, MipRouterAdvertisement, //Imported from Rfc 4068 RouterSolicitationForProxyRtAdv, ProxyRouterAdvertisement, HandoverInitiate, HandoverAcknowledge, OtherIcmpv6, OtherIcmpv6, //hand encoded IPv6 packets //hand encoded IPv6 packets RawIpv6Packet, RawIpv6Packet, Loading Loading @@ -123,9 +128,9 @@ module LibIpv6_Interface_TypesAndValues { type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet FastBindingUpdate; // type Ipv6Packet FastBindingUpdate; type Ipv6Packet FastBindingAcknowledgment; // type Ipv6Packet FastBindingAcknowledgment; type Ipv6Packet FastNeighborAdvertisement; // type Ipv6Packet FastNeighborAdvertisement; //Default value //Default value type Ipv6Packet OtherIcmpv6; type Ipv6Packet OtherIcmpv6; //Udp //Udp Loading Loading @@ -497,7 +502,8 @@ module LibIpv6_Interface_TypesAndValues { CareOfTest careOfTest, CareOfTest careOfTest, BindingUpdate bindingUpdate, BindingUpdate bindingUpdate, BindingAck bindingAck, BindingAck bindingAck, BindingError bindingError BindingError bindingError, FastNbrAdv fastNbrAdv } } /* /* Loading Loading @@ -623,7 +629,8 @@ module LibIpv6_Interface_TypesAndValues { MipOptBindingRefreshAdvice mipOptBindingRefreshAdvice, MipOptBindingRefreshAdvice mipOptBindingRefreshAdvice, MipOptAltCoA mipOptAltCoA, MipOptAltCoA mipOptAltCoA, MipOptNonceIndices mipOptNonceIndices, MipOptNonceIndices mipOptNonceIndices, MipBindingAuthorizationData mipBindingAuthorizationData MipBindingAuthorizationData mipBindingAuthorizationData, MobilityHeaderLinkLayerAddress fHLinkLayerAddress } } /* /* Loading Loading @@ -717,7 +724,6 @@ module LibIpv6_Interface_TypesAndValues { const UInt8 c_bindingError := 7; const UInt8 c_bindingError := 7; } } group statusCodesValues { group statusCodesValues { /* /* * @desc This values should be used in BindingAcknowledgement * @desc This values should be used in BindingAcknowledgement Loading Loading @@ -755,13 +761,29 @@ module LibIpv6_Interface_TypesAndValues { group rfc4068FastHandovers { group rfc4068FastHandovers { group rfc4068HastHandovers_messages { /* * @desc Derived from RFC4068 clause 6.3.3 */ type record FastNbrAdv { UInt16 reserved, MipOptionList mipOptions } // TODO // with { // encode "present=isEOF()== false && (valueOf(getTag('mobilityHeaderType'))==6);"; // } } // end group rfc4068HastHandovers_messages group rfc4068HastHandovers_options { group rfc4068HastHandovers_options { /* /* * @desc Derived from RFC4068, clause 6.4.4 * @desc Derived from RFC4068, clause 6.4.4 */ */ type record MobilityHeaderLinkLayerAddress { type record MobilityHeaderLinkLayerAddress { UInt8 icmpType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionLength, UInt8 optionLength, UInt8 optionCode, UInt8 optionCode, UInt8 pad0, UInt8 pad0, Loading @@ -770,6 +792,14 @@ module LibIpv6_Interface_TypesAndValues { } // end rfc4068HastHandovers_options } // end rfc4068HastHandovers_options group rfc4068FastHandovers_values { const UInt8 c_fastBindingUpdate := 8; const UInt8 c_fastBindingAck := 9; const UInt8 c_fastNbrAdv := 10; } // end group rfc4068FastHandovers_values } // end group rfc4068FastHandovers } // end group rfc4068FastHandovers group rfc4302Ah_ExtHdrTypesAndValues { group rfc4302Ah_ExtHdrTypesAndValues { Loading IPSec/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn +33 −1 Original line number Original line Diff line number Diff line Loading @@ -868,7 +868,7 @@ * test component. * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_dst Binary IPv6 address associated with NUT. */ */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr ( template Ipv6Address p_src, template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_noOpt ( template Ipv6Address p_src, template Ipv6Address p_dst ) := { template Ipv6Address p_dst ) := { ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255 ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255 extHdrList := omit, extHdrList := omit, Loading @@ -892,6 +892,38 @@ * @param p_src Binary IPv6 address associated with the * @param p_src Binary IPv6 address associated with the * test component. * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_dst Binary IPv6 address associated with NUT. * @param p_rtAdvOptions Router Advertisement options. */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr ( template Ipv6Address p_src, template Ipv6Address p_dst, template RtAdvOptions p_rtAdvOptions ) := { ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), extHdrList := omit, ipv6Payload := { routerAdvMsg := { icmpType:= c_rtAdvMsg, icmpCode:= c_icmpCode0, checksum:= ?, curHopLimit:= ?, managedConfigFlag:=?, otherConfigFlag:=?, homeAgentFlag := ?, reserved:= 0, routerLifetime:=?, reachableTime:=?, retransTimer:=?, rtAdvOptions:=p_rtAdvOptions } } } /* * @param p_src Binary IPv6 address associated with the * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_rtAdvOptions Router Advertisement options. */ */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag ( template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag ( template Ipv6Address p_src, template Ipv6Address p_src, Loading IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn +141 −33 Original line number Original line Diff line number Diff line Loading @@ -43,14 +43,14 @@ module LibIpv6_Rfc4068FastHandovers_Functions { import from AtsIpv6_ModuleParameters all ; import from AtsIpv6_ModuleParameters all ; /* /* * @desc This sends an ICMPv6 Proxy Router Advertisement from a router node * @desc This sends a Proxy Router Advertisement from a router node * to any NUT. Prior it modifies IPv6 packet payload length * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @remark The template passed in must NOT contain any matching expressions! * @param p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @param p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @return execution status * @return execution status */ */ function f_sendPrRtAdv (in template RouterAdvertisement p_prRtAdv) function f_sendPrRtAdv (in template ProxyRouterAdvertisement p_prRtAdv) runs on LibIpv6Node runs on LibIpv6Node return FncRetCode { return FncRetCode { var Ipv6Packet v_ipPkt; var Ipv6Packet v_ipPkt; Loading Loading @@ -78,4 +78,112 @@ module LibIpv6_Rfc4068FastHandovers_Functions { } // end f_sendPrRtAdv } // end f_sendPrRtAdv /* * @desc This sends a Router Solicitation for Proxy Router Advertisement * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_rtSolPr Ipv6 packet template with Router Solicitation for Proxy Router Advertisement to be sent * @return execution status */ function f_sendRtSolPr (in template RouterSolicitationForProxyRtAdv p_rtSolPr) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_rtSolPr); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendPrRtAdv: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendRtSolPr /* * @desc This sends a Handover Initiate message * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_hoInit Ipv6 packet template with Handover Initiate to be sent * @return execution status */ function f_sendHoInit (in template HandoverInitiate p_hoInit) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_hoInit); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoInit: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendHoInit /* * @desc This sends a Handover Ack message * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_hoAck Ipv6 packet template with Handover Initiate to be sent * @return execution status */ function f_sendHoAck (in template HandoverAcknowledge p_hoAck) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_hoAck); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoAck: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendHoAck } // end module LibIpv6_Rfc4068FastHandovers_Functions } // end module LibIpv6_Rfc4068FastHandovers_Functions Loading
IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { const UInt8 c_optLen0 := 0; const UInt8 c_optLen0 := 0; const UInt8 c_optLen1 := 1; const UInt8 c_optLen1 := 1; const UInt8 c_optLen2 := 2; const UInt8 c_optLen2 := 2; const UInt8 c_optLen3 := 3; const UInt8 c_optLen4 := 4; const UInt8 c_optLen4 := 4; const UInt8 c_optLen6 := 6; const UInt8 c_optLen6 := 6; const UInt8 c_optLen16 := 16; const UInt8 c_optLen16 := 16; Loading
IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn +1015 −935 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; group rfc2460Root_Templates { group rfc2460Root_Templates { Loading Loading @@ -425,6 +426,26 @@ group rfc2460Root_Templates { }//end group tunnelHdrTemplates }//end group tunnelHdrTemplates group authHdrTemplates { /* @desc Auth Hdr * @param p_nextHdr Next header identifier value to be used. */ template ExtensionHeader m_extHdr_authHeader ( UInt8 p_nextHdr ) := { authHeader := { nextHeader := p_nextHdr, payloadLen := ?, reserved := ?, securityParametersIndex := ?, sequenceNumber := ?, icv := ? } } }//end group authHdrTemplates } // end extensionHeader } // end extensionHeader group hbhOptionTemplates { group hbhOptionTemplates { Loading Loading @@ -730,18 +751,6 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } //Added by PK template MipMessage mw_bindingAck_mipOpt ( template MipOptionList p_mipOptions ) := { bindingAck := { status := c_mipCodeBindingUpdateAccepted, kFlag := ?, reserved := ?, sequenceNumber := ?, lifeTime := ?, mipOptions := p_mipOptions } } // Added by PK // Added by PK template MipMessage mw_bindingAck_statusSN ( template MipMessage mw_bindingAck_statusSN ( template UInt8 p_status, template UInt8 p_status, Loading Loading @@ -773,6 +782,21 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } // Added by PK template MipMessage mw_bindingAck_statusOpt ( template UInt8 p_status, template MipOptionList p_mipOptions ) := { bindingAck := { status := p_status, kFlag := ?, reserved := ?, sequenceNumber := ?, lifeTime := ?, mipOptions := p_mipOptions } } //Added by PK //Added by PK template MipMessage m_bindingError_noOpt ( template MipMessage m_bindingError_noOpt ( UInt8 p_status, UInt8 p_status, Loading Loading @@ -879,6 +903,30 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } /* * @param p_mipOptions Mobility options */ template MipMessage m_fastNbrAdv ( template MipOptionList p_mipOptions ) := { fastNbrAdv := { reserved := c_uInt16Zero, mipOptions := p_mipOptions } } /* * @param p_mipOptions Mobility options */ template MipMessage mw_fastNbrAdv ( template MipOptionList p_mipOptions ) := { fastNbrAdv := { reserved := ?, mipOptions := p_mipOptions } } }//end group mobilityHdrMessageTemplates }//end group mobilityHdrMessageTemplates Loading Loading @@ -1044,14 +1092,47 @@ group rfc3775Mipv6_ExtHdrTemplates { } } } } }//end group mipHeaderTemplates }//end group mipHeaderTemplates }//end group rfc3775Mipv6_ExtHdrTemplates }//end group rfc3775Mipv6_ExtHdrTemplates group rfc4302Ah_ExtHdrTemplates { group rfc4068HastHandovers_OptionTemplates { /* * @param p_optionCode The value of code field * @param p_llaAddr Link lyer address */ template MipOption m_extHdr_llaOpt ( UInt8 p_optionCode, template Oct6to15 p_llaAddr ) := { fHLinkLayerAddress := { optionType := c_fhMobilityHeaderLinkLayerAddress, optionLength := PX_MAC_OPTION_LEN, optionCode := p_optionCode, pad0 := ?, linkLayerAddr := p_llaAddr } } /* * @param p_llaAddr Link lyer address */ template MipOption mw_extHdr_llaOpt ( template Oct6to15 p_llaAddr ) := { fHLinkLayerAddress := { optionType := c_fhMobilityHeaderLinkLayerAddress, optionLength := PX_MAC_OPTION_LEN, optionCode := c_fHCode2, pad0 := 0, linkLayerAddr := p_llaAddr } } }//end group rfc4068HastHandovers_OptionTemplates group rfc4302Ah_ExtHdrTemplates { }//end group rfc4302Ah_ExtHdrTemplates }//end group rfc4302Ah_ExtHdrTemplates Loading Loading @@ -1102,7 +1183,6 @@ group cryptoTemplates { ipv6Payload := p_ipv6Payload ipv6Payload := p_ipv6Payload } } }//end group cryptoTemplates }//end group cryptoTemplates } // end module LibIpv6_Interface_Templates } // end module LibIpv6_Interface_Templates
IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn +38 −8 Original line number Original line Diff line number Diff line Loading @@ -60,12 +60,17 @@ module LibIpv6_Interface_TypesAndValues { Redirect, Redirect, //Imported from Rfc 2894 //Imported from Rfc 2894 RouterRenumbering, RouterRenumbering, //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 HomeAgentAddressDiscoveryRequest, HomeAgentAddressDiscoveryRequest, HomeAgentAddressDiscoveryReply, HomeAgentAddressDiscoveryReply, MobilePrefixSolicitation, MobilePrefixSolicitation, MobilePrefixAdvertisement, MobilePrefixAdvertisement, MipRouterAdvertisement, MipRouterAdvertisement, //Imported from Rfc 4068 RouterSolicitationForProxyRtAdv, ProxyRouterAdvertisement, HandoverInitiate, HandoverAcknowledge, OtherIcmpv6, OtherIcmpv6, //hand encoded IPv6 packets //hand encoded IPv6 packets RawIpv6Packet, RawIpv6Packet, Loading Loading @@ -123,9 +128,9 @@ module LibIpv6_Interface_TypesAndValues { type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet FastBindingUpdate; // type Ipv6Packet FastBindingUpdate; type Ipv6Packet FastBindingAcknowledgment; // type Ipv6Packet FastBindingAcknowledgment; type Ipv6Packet FastNeighborAdvertisement; // type Ipv6Packet FastNeighborAdvertisement; //Default value //Default value type Ipv6Packet OtherIcmpv6; type Ipv6Packet OtherIcmpv6; //Udp //Udp Loading Loading @@ -497,7 +502,8 @@ module LibIpv6_Interface_TypesAndValues { CareOfTest careOfTest, CareOfTest careOfTest, BindingUpdate bindingUpdate, BindingUpdate bindingUpdate, BindingAck bindingAck, BindingAck bindingAck, BindingError bindingError BindingError bindingError, FastNbrAdv fastNbrAdv } } /* /* Loading Loading @@ -623,7 +629,8 @@ module LibIpv6_Interface_TypesAndValues { MipOptBindingRefreshAdvice mipOptBindingRefreshAdvice, MipOptBindingRefreshAdvice mipOptBindingRefreshAdvice, MipOptAltCoA mipOptAltCoA, MipOptAltCoA mipOptAltCoA, MipOptNonceIndices mipOptNonceIndices, MipOptNonceIndices mipOptNonceIndices, MipBindingAuthorizationData mipBindingAuthorizationData MipBindingAuthorizationData mipBindingAuthorizationData, MobilityHeaderLinkLayerAddress fHLinkLayerAddress } } /* /* Loading Loading @@ -717,7 +724,6 @@ module LibIpv6_Interface_TypesAndValues { const UInt8 c_bindingError := 7; const UInt8 c_bindingError := 7; } } group statusCodesValues { group statusCodesValues { /* /* * @desc This values should be used in BindingAcknowledgement * @desc This values should be used in BindingAcknowledgement Loading Loading @@ -755,13 +761,29 @@ module LibIpv6_Interface_TypesAndValues { group rfc4068FastHandovers { group rfc4068FastHandovers { group rfc4068HastHandovers_messages { /* * @desc Derived from RFC4068 clause 6.3.3 */ type record FastNbrAdv { UInt16 reserved, MipOptionList mipOptions } // TODO // with { // encode "present=isEOF()== false && (valueOf(getTag('mobilityHeaderType'))==6);"; // } } // end group rfc4068HastHandovers_messages group rfc4068HastHandovers_options { group rfc4068HastHandovers_options { /* /* * @desc Derived from RFC4068, clause 6.4.4 * @desc Derived from RFC4068, clause 6.4.4 */ */ type record MobilityHeaderLinkLayerAddress { type record MobilityHeaderLinkLayerAddress { UInt8 icmpType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionLength, UInt8 optionLength, UInt8 optionCode, UInt8 optionCode, UInt8 pad0, UInt8 pad0, Loading @@ -770,6 +792,14 @@ module LibIpv6_Interface_TypesAndValues { } // end rfc4068HastHandovers_options } // end rfc4068HastHandovers_options group rfc4068FastHandovers_values { const UInt8 c_fastBindingUpdate := 8; const UInt8 c_fastBindingAck := 9; const UInt8 c_fastNbrAdv := 10; } // end group rfc4068FastHandovers_values } // end group rfc4068FastHandovers } // end group rfc4068FastHandovers group rfc4302Ah_ExtHdrTypesAndValues { group rfc4302Ah_ExtHdrTypesAndValues { Loading
IPSec/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn +33 −1 Original line number Original line Diff line number Diff line Loading @@ -868,7 +868,7 @@ * test component. * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_dst Binary IPv6 address associated with NUT. */ */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr ( template Ipv6Address p_src, template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_noOpt ( template Ipv6Address p_src, template Ipv6Address p_dst ) := { template Ipv6Address p_dst ) := { ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255 ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255 extHdrList := omit, extHdrList := omit, Loading @@ -892,6 +892,38 @@ * @param p_src Binary IPv6 address associated with the * @param p_src Binary IPv6 address associated with the * test component. * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_dst Binary IPv6 address associated with NUT. * @param p_rtAdvOptions Router Advertisement options. */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr ( template Ipv6Address p_src, template Ipv6Address p_dst, template RtAdvOptions p_rtAdvOptions ) := { ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ), extHdrList := omit, ipv6Payload := { routerAdvMsg := { icmpType:= c_rtAdvMsg, icmpCode:= c_icmpCode0, checksum:= ?, curHopLimit:= ?, managedConfigFlag:=?, otherConfigFlag:=?, homeAgentFlag := ?, reserved:= 0, routerLifetime:=?, reachableTime:=?, retransTimer:=?, rtAdvOptions:=p_rtAdvOptions } } } /* * @param p_src Binary IPv6 address associated with the * test component. * @param p_dst Binary IPv6 address associated with NUT. * @param p_rtAdvOptions Router Advertisement options. */ */ template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag ( template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag ( template Ipv6Address p_src, template Ipv6Address p_src, Loading
IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn +141 −33 Original line number Original line Diff line number Diff line Loading @@ -43,14 +43,14 @@ module LibIpv6_Rfc4068FastHandovers_Functions { import from AtsIpv6_ModuleParameters all ; import from AtsIpv6_ModuleParameters all ; /* /* * @desc This sends an ICMPv6 Proxy Router Advertisement from a router node * @desc This sends a Proxy Router Advertisement from a router node * to any NUT. Prior it modifies IPv6 packet payload length * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @remark The template passed in must NOT contain any matching expressions! * @param p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @param p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @return execution status * @return execution status */ */ function f_sendPrRtAdv (in template RouterAdvertisement p_prRtAdv) function f_sendPrRtAdv (in template ProxyRouterAdvertisement p_prRtAdv) runs on LibIpv6Node runs on LibIpv6Node return FncRetCode { return FncRetCode { var Ipv6Packet v_ipPkt; var Ipv6Packet v_ipPkt; Loading Loading @@ -78,4 +78,112 @@ module LibIpv6_Rfc4068FastHandovers_Functions { } // end f_sendPrRtAdv } // end f_sendPrRtAdv /* * @desc This sends a Router Solicitation for Proxy Router Advertisement * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_rtSolPr Ipv6 packet template with Router Solicitation for Proxy Router Advertisement to be sent * @return execution status */ function f_sendRtSolPr (in template RouterSolicitationForProxyRtAdv p_rtSolPr) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_rtSolPr); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendPrRtAdv: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendRtSolPr /* * @desc This sends a Handover Initiate message * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_hoInit Ipv6 packet template with Handover Initiate to be sent * @return execution status */ function f_sendHoInit (in template HandoverInitiate p_hoInit) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_hoInit); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoInit: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendHoInit /* * @desc This sends a Handover Ack message * to any NUT. Prior it modifies IPv6 packet payload length * and ICMPv6 checksum to their correct values * @remark The template passed in must NOT contain any matching expressions! * @param p_hoAck Ipv6 packet template with Handover Initiate to be sent * @return execution status */ function f_sendHoAck (in template HandoverAcknowledge p_hoAck) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_hoAck); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoAck: 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.routerAdvMsg.checksum := c_2ZeroBytes; //calc checksum v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; } // end f_sendHoAck } // end module LibIpv6_Rfc4068FastHandovers_Functions } // end module LibIpv6_Rfc4068FastHandovers_Functions