Loading IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn +823 −787 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ module LibIpv6_Interface_TypesAndValues { import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues {type all}; import from LibIpv6_Rfc2894RouterRenumbering_TypesAndValues {type all}; import from LibIpv6_Rfc3775Mipv6_TypesAndValues {type all}; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; import from LibIpv6_Rfc0768Udp_TypesAndValues all ; import from LibIpv6_CommonRfcs_TypesAndValues all; Loading Loading @@ -108,12 +109,23 @@ group ipv6Packet { type Ipv6Packet Redirect; //Imported from Rfc 2894 type Ipv6Packet RouterRenumbering; //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 type Ipv6Packet HomeAgentAddressDiscoveryRequest; type Ipv6Packet HomeAgentAddressDiscoveryReply; type Ipv6Packet MobilePrefixSolicitation; type Ipv6Packet MobilePrefixAdvertisement; type Ipv6Packet MipRouterAdvertisement; // type Ipv6Packet BindingUpdate; // type Ipv6Packet BindingAcknowledgment; // type Ipv6Packet BindingError; //Imported from Rfc 4068 type Ipv6Packet RouterSolicitationForProxyRtAdv; type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet FastBindingUpdate; type Ipv6Packet FastBindingAcknowledgment; type Ipv6Packet FastNeighborAdvertisement; //Default value type Ipv6Packet OtherIcmpv6; //Udp Loading Loading @@ -142,12 +154,23 @@ group ipv6Packet { RedirectMsg redirectMsg, //Imported from Rfc 2894 RouterRenumberingMsg routerRenumberingMsg, //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 HomeAgentAddressDiscoveryRequestMsg homeAgentAddrDiscRequestMsg, HomeAgentAddressDiscoveryReplyMsg homeAgentAddrDiscReplyMsg, MobilePrefixSolicitationMsg mobilePrefixSolMsg, MobilePrefixAdvertisementMsg mobilePrefixAdvMsg, MobileRouterAdvertisementMsg mobileRouterAdvMsg,//TODO check this // BindingUpdateMsg bindingUpdMsg, // BindingAcknowledgmentMsg bindingAckMsg, // BindingErrorMsg bindingErrMsg, //Imported from Rfc 4068 RouterSolicitationForProxyRtAdvMsg routerSolPrRtAdvMsg, ProxyRouterAdvertisementMsg proxyRtAdvMsg, HandoverInitiateMsg handoverInitMsg, HandoverAcknowledgeMsg handoverAckMsg, // FastBindingUpdateMsg fastBUpdMsg, // FastBindingAcknowledgmentMsg fastBAckMsg, // FastNeighborAdvertisementMsg fastNbrAdvMsg, //Default value OtherIcmpv6Msg otherIcmpv6Msg, //Udp Loading Loading @@ -297,8 +320,6 @@ group rfc2460Root_TypesAndValues { group hbhOptions { const UInt8 c_maxNrHopByHopOption := 10; type union HopByHopOption { Loading Loading @@ -728,13 +749,28 @@ group rfc3775Mipv6_ExtHdrTypesAndValues { }//end group mipConstants }//end group mipHeader }//end group rfc3775Mipv6_ExtHdrTypesAndValues group rfc4068FastHandovers { group rfc4068HastHandovers_options { /* * @desc Derived from RFC4068, clause 6.4.4 */ type record MobilityHeaderLinkLayerAddress { UInt8 icmpType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionLength, UInt8 optionCode, UInt8 pad0, Oct6to15 linkLayerAddr } }//end group mipHeader } // end rfc4068HastHandovers_options }//end group rfc3775Mipv6_ExtHdrTypesAndValues } // end group rfc4068FastHandovers group rfc4302Ah_ExtHdrTypesAndValues { Loading IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common MIPv6 messages interchanges (= operations) * for an Ipv6 test component. * Functions do not set a test component verdict but instead * use the function return value instead to notify the function * caller about the success of the operation. * */ module LibIpv6_Rfc4068FastHandovers_Functions { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; import from LibCommon_VerdictControl { type FncRetCode }; import from LibCommon_Time all; //LibIpv6 import from LibIpv6_Interface_TypesAndValues all ; import from LibIpv6_Interface_Templates all; import from LibIpv6_Interface_Functions all; import from LibIpv6_Interface_Functions all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_ExternalFunctions all; import from LibIpv6_ModuleParameters all ; import from LibIpv6_Rfc2461NeighborDiscovery_Templates all; import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all; import from LibIpv6_Rfc2461NeighborDiscovery_Functions all; import from LibIpv6_Rfc2463Icmpv6_Functions all; import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_Templates all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_Templates all; import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Interface_Templates all; import from LibIpv6_Interface_Functions all; //AtsIpv6 import from AtsIpv6_TestSystem all; import from AtsIpv6_TestConfiguration_TypesAndValues all; import from AtsIpv6_ModuleParameters all ; /* * @desc This sends an ICMPv6 Proxy Router Advertisement from a router node * 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_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @return execution status */ function f_sendPrRtAdv (in template RouterAdvertisement p_prRtAdv) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_prRtAdv); //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_sendPrRtAdv } // end module LibIpv6_Rfc4068FastHandovers_Functions IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module contains templates for IPv6 headers and options * based on an RFC 4068 for Fast Handovers and using types from * the Common library. Also it provides some useful constant * definitions. * */ module LibIpv6_Rfc4068FastHandovers_Templates { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; } // end module LibIpv6_Rfc4068FastHandovers_Templates IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn 0 → 100644 +235 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module defines the structure of IPv6 headers and options * based on an RFC 4068 for Fast Handovers and using types from * the Common library. Also it provides some useful constant * definitions. * */ module LibIpv6_Rfc4068FastHandovers_TypesAndValues { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues all ; group rfc4068HastHandovers_constants { const UInt8 c_fHTypeId := 150; const UInt8 c_fHSubtypeRtSolPr := 2; const UInt8 c_fHSubtypePrRtAdv := 3; const UInt8 c_fHSubtypeHoInit := 4 const UInt8 c_fHSubtypeHoAck := 5; const UInt8 c_fHCode0 := 0; const UInt8 c_fHCode1 := 1; const UInt8 c_fHCode2 := 2; const UInt8 c_fHCode3 := 3; const UInt8 c_fHCode4 := 4; const UInt8 c_fHCode128 := 128; const UInt8 c_fHCode130 := 130; const UInt8 c_fhStatusBUAccepted := 0; const UInt8 c_fhStatusBuAcceptedInvalidNCoA := 1; const UInt8 c_fhStatusUnspecifiedReason := 128; const UInt8 c_fhStatusAdministrativelyProhibited := 129; const UInt8 c_fhStatusInsufficientResources := 130; const UInt8 c_fhStatusIncorrectInterfaceIdentifierLength := 131; const UInt8 c_fhIpAddress := 17; const UInt8 c_fhNewRouterPrefixInfo := 18; const UInt8 c_fhNewLinkLayerAddress := 19; const UInt8 c_fhMobilityHeaderLinkLayerAddress := 7; const UInt8 c_fhNeighborAdvertisementAcknowledgment := 20; const UInt8 c_oldCoA := 1; const UInt8 c_newCoA := 2; const UInt8 c_newRouter := 3; const UInt8 c_requestingResolution := 0; const UInt8 c_newAPLinkLayerAddress := 1; const UInt8 c_mNLinkLayerAddress := 2; const UInt8 c_newRouterLinkLayerAddress := 2; const UInt8 c_sourceRtSolPrOrPrRtAdv := 4; const UInt8 c_aPBelongsToCurrentInterface := 5; const UInt8 c_noPrefixInfo := 6; const UInt8 c_noFastHandoverSupport := 7; const UInt8 c_status1 := 1; const UInt8 c_status2 := 2; const UInt8 c_status128 := 128; const UInt8 c_mipCodeAcceptedButPrefixDiscoveryNecessary := 1; } // end rfc4068HastHandovers_constants group rfc4068HastHandovers_messages { /* * @desc Derived from RFC4068, clause 6.1.1 */ type record RouterSolicitationForProxyRtAdvMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeRtSolPr), UInt8 reserved, UInt16 identifier, FHRtSolPrOptions fHRtSolPrOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in RouterSolicitationForProxyRtAdvMsg */ type set FHRtSolPrOptions { //Imported SrcLinkLayerAddress fHSrcLinkLayerAddr optional, //Not imported NewLinkLayerAddress fHNewAPLinkLayerAddress optional } /* * @desc Derived from RFC4068, clause 6.1.2 */ type record ProxyRouterAdvertisementMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypePrRtAdv), UInt8 reserved, UInt16 identifier, FHPrRtAdvOptions fHPrRtAdvOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in ProxyRouterAdvertisementMsg */ type set FHPrRtAdvOptions { //Imported SrcLinkLayerAddress fHSrcLinkLayerAddr optional, //Not imported NewLinkLayerAddress fHNewAPLinkLayerAddress optional, NewLinkLayerAddress fHNewRouterLinkLayerAddress optional, IpAddress fHNewRouterIpAddress optional, NewRouterPrefixInfo fHNewRouterPrefixInfo optional, IpAddress fHNewCareOfAddress optional } /* * @desc Derived from RFC4068, clause 6.2.1 */ type record HandoverInitiateMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeHoInit), UInt1 sFlag, UInt1 uFlag, UInt6 reserved, UInt16 identifier, FHHoInitOptions fHHoInitOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in HandoverInitiateMsg */ type set FHHoInitOptions { //Not imported NewLinkLayerAddress fHMNLinkLayerAddress optional, IpAddress fHPreviousCareOfAddress optional, IpAddress fHNewCareOfAddress optional } /* * @desc Derived from RFC4068, clause 6.1.2 */ type record HandoverAcknowledgeMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeHoAck), UInt8 reserved, UInt16 identifier, FHHoAckOptions fHHoAckOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in HandoverAcknowledgeMsg */ type set FHHoAckOptions { //Not imported IpAddress fHNewCareOfAddress optional } } //end rfc4068HastHandovers_messages group rfc4068HastHandovers_options { /* * @desc Derived from RFC4068, clause 6.4.1 */ type record IpAddress { UInt8 icmpType(c_fhIpAddress), UInt8 optionLength, UInt8 optionCode, UInt8 prefixLength, UInt32 reserved, Ipv6Address ipv6Address } /* * @desc Derived from RFC4068, clause 6.4.2 */ type record NewRouterPrefixInfo { UInt8 icmpType(c_fhNewRouterPrefixInfo), UInt8 optionLength, UInt8 optionCode, UInt8 prefixLength, UInt32 reserved, Ipv6Address addrPrefix } /* * @desc Derived from RFC4068, clause 6.4.3 */ type record NewLinkLayerAddress { UInt8 icmpType(c_fhNewLinkLayerAddress), UInt8 optionLength, UInt8 optionCode, Oct6to15 linkLayerAddr } /* * @desc Derived from RFC4068, clause 6.4.5 */ type record NeighborAdvertisementAcknowledgment { UInt8 icmpType(c_fhNeighborAdvertisementAcknowledgment), UInt8 optionLength, UInt8 optionCode, UInt8 status, UInt32 reserved, Ipv6Address newCoA optional } } // end rfc4068HastHandovers_options } // end module LibIpv6_Rfc4068FastHandovers_TypesAndValues Loading
IPSec/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn +823 −787 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ module LibIpv6_Interface_TypesAndValues { import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues {type all}; import from LibIpv6_Rfc2894RouterRenumbering_TypesAndValues {type all}; import from LibIpv6_Rfc3775Mipv6_TypesAndValues {type all}; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; import from LibIpv6_Rfc0768Udp_TypesAndValues all ; import from LibIpv6_CommonRfcs_TypesAndValues all; Loading Loading @@ -108,12 +109,23 @@ group ipv6Packet { type Ipv6Packet Redirect; //Imported from Rfc 2894 type Ipv6Packet RouterRenumbering; //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 type Ipv6Packet HomeAgentAddressDiscoveryRequest; type Ipv6Packet HomeAgentAddressDiscoveryReply; type Ipv6Packet MobilePrefixSolicitation; type Ipv6Packet MobilePrefixAdvertisement; type Ipv6Packet MipRouterAdvertisement; // type Ipv6Packet BindingUpdate; // type Ipv6Packet BindingAcknowledgment; // type Ipv6Packet BindingError; //Imported from Rfc 4068 type Ipv6Packet RouterSolicitationForProxyRtAdv; type Ipv6Packet ProxyRouterAdvertisement; type Ipv6Packet HandoverInitiate; type Ipv6Packet HandoverAcknowledge; type Ipv6Packet FastBindingUpdate; type Ipv6Packet FastBindingAcknowledgment; type Ipv6Packet FastNeighborAdvertisement; //Default value type Ipv6Packet OtherIcmpv6; //Udp Loading Loading @@ -142,12 +154,23 @@ group ipv6Packet { RedirectMsg redirectMsg, //Imported from Rfc 2894 RouterRenumberingMsg routerRenumberingMsg, //Imported from Rfc XXXX Mipv6 //Imported from Rfc 3775 Mipv6 HomeAgentAddressDiscoveryRequestMsg homeAgentAddrDiscRequestMsg, HomeAgentAddressDiscoveryReplyMsg homeAgentAddrDiscReplyMsg, MobilePrefixSolicitationMsg mobilePrefixSolMsg, MobilePrefixAdvertisementMsg mobilePrefixAdvMsg, MobileRouterAdvertisementMsg mobileRouterAdvMsg,//TODO check this // BindingUpdateMsg bindingUpdMsg, // BindingAcknowledgmentMsg bindingAckMsg, // BindingErrorMsg bindingErrMsg, //Imported from Rfc 4068 RouterSolicitationForProxyRtAdvMsg routerSolPrRtAdvMsg, ProxyRouterAdvertisementMsg proxyRtAdvMsg, HandoverInitiateMsg handoverInitMsg, HandoverAcknowledgeMsg handoverAckMsg, // FastBindingUpdateMsg fastBUpdMsg, // FastBindingAcknowledgmentMsg fastBAckMsg, // FastNeighborAdvertisementMsg fastNbrAdvMsg, //Default value OtherIcmpv6Msg otherIcmpv6Msg, //Udp Loading Loading @@ -297,8 +320,6 @@ group rfc2460Root_TypesAndValues { group hbhOptions { const UInt8 c_maxNrHopByHopOption := 10; type union HopByHopOption { Loading Loading @@ -728,13 +749,28 @@ group rfc3775Mipv6_ExtHdrTypesAndValues { }//end group mipConstants }//end group mipHeader }//end group rfc3775Mipv6_ExtHdrTypesAndValues group rfc4068FastHandovers { group rfc4068HastHandovers_options { /* * @desc Derived from RFC4068, clause 6.4.4 */ type record MobilityHeaderLinkLayerAddress { UInt8 icmpType(c_fhMobilityHeaderLinkLayerAddress), UInt8 optionLength, UInt8 optionCode, UInt8 pad0, Oct6to15 linkLayerAddr } }//end group mipHeader } // end rfc4068HastHandovers_options }//end group rfc3775Mipv6_ExtHdrTypesAndValues } // end group rfc4068FastHandovers group rfc4302Ah_ExtHdrTypesAndValues { Loading
IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common MIPv6 messages interchanges (= operations) * for an Ipv6 test component. * Functions do not set a test component verdict but instead * use the function return value instead to notify the function * caller about the success of the operation. * */ module LibIpv6_Rfc4068FastHandovers_Functions { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; import from LibCommon_VerdictControl { type FncRetCode }; import from LibCommon_Time all; //LibIpv6 import from LibIpv6_Interface_TypesAndValues all ; import from LibIpv6_Interface_Templates all; import from LibIpv6_Interface_Functions all; import from LibIpv6_Interface_Functions all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_ExternalFunctions all; import from LibIpv6_ModuleParameters all ; import from LibIpv6_Rfc2461NeighborDiscovery_Templates all; import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all; import from LibIpv6_Rfc2461NeighborDiscovery_Functions all; import from LibIpv6_Rfc2463Icmpv6_Functions all; import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_Templates all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_Templates all; import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Interface_Templates all; import from LibIpv6_Interface_Functions all; //AtsIpv6 import from AtsIpv6_TestSystem all; import from AtsIpv6_TestConfiguration_TypesAndValues all; import from AtsIpv6_ModuleParameters all ; /* * @desc This sends an ICMPv6 Proxy Router Advertisement from a router node * 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_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent * @return execution status */ function f_sendPrRtAdv (in template RouterAdvertisement p_prRtAdv) runs on LibIpv6Node return FncRetCode { var Ipv6Packet v_ipPkt; v_ipPkt := valueof(p_prRtAdv); //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_sendPrRtAdv } // end module LibIpv6_Rfc4068FastHandovers_Functions
IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module contains templates for IPv6 headers and options * based on an RFC 4068 for Fast Handovers and using types from * the Common library. Also it provides some useful constant * definitions. * */ module LibIpv6_Rfc4068FastHandovers_Templates { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all; } // end module LibIpv6_Rfc4068FastHandovers_Templates
IPSec/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn 0 → 100644 +235 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module defines the structure of IPv6 headers and options * based on an RFC 4068 for Fast Handovers and using types from * the Common library. Also it provides some useful constant * definitions. * */ module LibIpv6_Rfc4068FastHandovers_TypesAndValues { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues all ; group rfc4068HastHandovers_constants { const UInt8 c_fHTypeId := 150; const UInt8 c_fHSubtypeRtSolPr := 2; const UInt8 c_fHSubtypePrRtAdv := 3; const UInt8 c_fHSubtypeHoInit := 4 const UInt8 c_fHSubtypeHoAck := 5; const UInt8 c_fHCode0 := 0; const UInt8 c_fHCode1 := 1; const UInt8 c_fHCode2 := 2; const UInt8 c_fHCode3 := 3; const UInt8 c_fHCode4 := 4; const UInt8 c_fHCode128 := 128; const UInt8 c_fHCode130 := 130; const UInt8 c_fhStatusBUAccepted := 0; const UInt8 c_fhStatusBuAcceptedInvalidNCoA := 1; const UInt8 c_fhStatusUnspecifiedReason := 128; const UInt8 c_fhStatusAdministrativelyProhibited := 129; const UInt8 c_fhStatusInsufficientResources := 130; const UInt8 c_fhStatusIncorrectInterfaceIdentifierLength := 131; const UInt8 c_fhIpAddress := 17; const UInt8 c_fhNewRouterPrefixInfo := 18; const UInt8 c_fhNewLinkLayerAddress := 19; const UInt8 c_fhMobilityHeaderLinkLayerAddress := 7; const UInt8 c_fhNeighborAdvertisementAcknowledgment := 20; const UInt8 c_oldCoA := 1; const UInt8 c_newCoA := 2; const UInt8 c_newRouter := 3; const UInt8 c_requestingResolution := 0; const UInt8 c_newAPLinkLayerAddress := 1; const UInt8 c_mNLinkLayerAddress := 2; const UInt8 c_newRouterLinkLayerAddress := 2; const UInt8 c_sourceRtSolPrOrPrRtAdv := 4; const UInt8 c_aPBelongsToCurrentInterface := 5; const UInt8 c_noPrefixInfo := 6; const UInt8 c_noFastHandoverSupport := 7; const UInt8 c_status1 := 1; const UInt8 c_status2 := 2; const UInt8 c_status128 := 128; const UInt8 c_mipCodeAcceptedButPrefixDiscoveryNecessary := 1; } // end rfc4068HastHandovers_constants group rfc4068HastHandovers_messages { /* * @desc Derived from RFC4068, clause 6.1.1 */ type record RouterSolicitationForProxyRtAdvMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeRtSolPr), UInt8 reserved, UInt16 identifier, FHRtSolPrOptions fHRtSolPrOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in RouterSolicitationForProxyRtAdvMsg */ type set FHRtSolPrOptions { //Imported SrcLinkLayerAddress fHSrcLinkLayerAddr optional, //Not imported NewLinkLayerAddress fHNewAPLinkLayerAddress optional } /* * @desc Derived from RFC4068, clause 6.1.2 */ type record ProxyRouterAdvertisementMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypePrRtAdv), UInt8 reserved, UInt16 identifier, FHPrRtAdvOptions fHPrRtAdvOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in ProxyRouterAdvertisementMsg */ type set FHPrRtAdvOptions { //Imported SrcLinkLayerAddress fHSrcLinkLayerAddr optional, //Not imported NewLinkLayerAddress fHNewAPLinkLayerAddress optional, NewLinkLayerAddress fHNewRouterLinkLayerAddress optional, IpAddress fHNewRouterIpAddress optional, NewRouterPrefixInfo fHNewRouterPrefixInfo optional, IpAddress fHNewCareOfAddress optional } /* * @desc Derived from RFC4068, clause 6.2.1 */ type record HandoverInitiateMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeHoInit), UInt1 sFlag, UInt1 uFlag, UInt6 reserved, UInt16 identifier, FHHoInitOptions fHHoInitOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in HandoverInitiateMsg */ type set FHHoInitOptions { //Not imported NewLinkLayerAddress fHMNLinkLayerAddress optional, IpAddress fHPreviousCareOfAddress optional, IpAddress fHNewCareOfAddress optional } /* * @desc Derived from RFC4068, clause 6.1.2 */ type record HandoverAcknowledgeMsg { UInt8 icmpType(c_fHTypeId), UInt8 icmpCode, Oct2 checksum, UInt8 subtype(c_fHSubtypeHoAck), UInt8 reserved, UInt16 identifier, FHHoAckOptions fHHoAckOptions optional } //TODO // with { // encode ""; // } /* * @desc Possible options in HandoverAcknowledgeMsg */ type set FHHoAckOptions { //Not imported IpAddress fHNewCareOfAddress optional } } //end rfc4068HastHandovers_messages group rfc4068HastHandovers_options { /* * @desc Derived from RFC4068, clause 6.4.1 */ type record IpAddress { UInt8 icmpType(c_fhIpAddress), UInt8 optionLength, UInt8 optionCode, UInt8 prefixLength, UInt32 reserved, Ipv6Address ipv6Address } /* * @desc Derived from RFC4068, clause 6.4.2 */ type record NewRouterPrefixInfo { UInt8 icmpType(c_fhNewRouterPrefixInfo), UInt8 optionLength, UInt8 optionCode, UInt8 prefixLength, UInt32 reserved, Ipv6Address addrPrefix } /* * @desc Derived from RFC4068, clause 6.4.3 */ type record NewLinkLayerAddress { UInt8 icmpType(c_fhNewLinkLayerAddress), UInt8 optionLength, UInt8 optionCode, Oct6to15 linkLayerAddr } /* * @desc Derived from RFC4068, clause 6.4.5 */ type record NeighborAdvertisementAcknowledgment { UInt8 icmpType(c_fhNeighborAdvertisementAcknowledgment), UInt8 optionLength, UInt8 optionCode, UInt8 status, UInt32 reserved, Ipv6Address newCoA optional } } // end rfc4068HastHandovers_options } // end module LibIpv6_Rfc4068FastHandovers_TypesAndValues