Loading ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +16 −0 Original line number Original line Diff line number Diff line Loading @@ -835,6 +835,22 @@ module LibItsGeoNetworking_Templates { ) ) } } /** * @desc Receive template for GeoNetworking Broadcast Packet * @param p_sourceLongPosVec Long position vector of source * @param p_seqNumber Sequence number of GeoBroadcast packet * @param p_nextHeader Id of next header * @param p_payload payload */ template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeaderAndPayload( in template (present) LongPosVector p_sourceLongPosVec, in template (present) UInt16 p_seqNumber, in template (present) NextHeader p_nextHeader, in template (present) Payload p_payload ) modifies mw_geoNwBroadcastPacketWithNextHeader := { payload := p_payload } /** /** * @desc Receive template for GeoNetworking Broadcast Packet * @desc Receive template for GeoNetworking Broadcast Packet * @param p_sourceLongPosVec Long position vector of source * @param p_sourceLongPosVec Long position vector of source Loading ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +98 −83 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL: svn+ssh://vcs.etsi.org/TTCN3/LIB/LibIts/trunk/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ * @version $URL: svn+ssh://vcs.etsi.org/TTCN3/LIB/LibIts/trunk/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ * $Id: LibItsGeoNetworking_Functions.ttcn 168 2010-09-22 15:18:22Z berge $ * $Id: LibItsGeoNetworking_Functions.ttcn 168 2010-09-22 15:18:22Z berge $ * @desc Module containing functions for Ipv6OverGeoNetworking * @desc Module containing functions for Ipv6OverGeoNetworking Loading Loading @@ -90,32 +90,37 @@ module LibItsIpv6OverGeoNetworking_Functions { [] geoNetworkingPort.receive ( [] geoNetworkingPort.receive ( mw_geoNwInd( mw_geoNwInd( //TODO handle payload -> former mw_geoNwPduWithPayload mw_geoNwPdu( mw_geoNwPdu( mw_geoNwBroadcastPacketWithNextHeader(?, ?, e_ipv6)//, mw_geoNwBroadcastPacketWithNextHeaderAndPayload( // mw_ipv6Payload( ?, // mw_ipv6Packet( ?, // ?, e_ipv6, // ?, mw_ipv6Payload( // ?, mw_ipv6Packet( // mw_octetstringPayload(?) ?, // ) ?, // ) ?, mw_octetstringPayload(?) ) ) ) ) ) ) ) ) { ) { log("*** a_ipv6Default: INFO: Ignoring unsupported IPv6 packet ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring unsupported IPv6 packet ***"); repeat; repeat; } } [] geoNetworkingPort.receive ( [] geoNetworkingPort.receive ( mw_geoNwInd( mw_geoNwInd( //TODO handle payload -> former mw_geoNwPduWithPayload mw_geoNwPdu( mw_geoNwPdu( mw_geoNwBroadcastPacketWithNextHeader(?, ?, e_ipv6)//, mw_geoNwBroadcastPacketWithNextHeaderAndPayload( // mw_ipv6Payload( ?, // ? ?, // ) e_ipv6, mw_ipv6Payload( ? ) ) ) ) ) ) ) -> value v_geoNwInd { ) -> value v_geoNwInd { Loading @@ -126,15 +131,14 @@ module LibItsIpv6OverGeoNetworking_Functions { mw_longPosVectorPosition_withDelta(f_getPosition(c_compNodeB)) mw_longPosVectorPosition_withDelta(f_getPosition(c_compNodeB)) ) ) )) { )) { log("*** a_ipv6Default: INFO: Ignoring rebroadcasted IPv6 packet ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring rebroadcasted IPv6 packet ***"); repeat; repeat; } } else { else { log("*** a_ipv6Default: ERROR: Received an unexpected message ***"); log("*** " & __SCOPE__ & ": ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); f_selfOrClientSyncAndVerdict("error", e_error); } } } } [] ipv6OverGeoNetworkingPort.receive( [] ipv6OverGeoNetworkingPort.receive( mw_ipv6OverGeoNwInd( mw_ipv6OverGeoNwInd( ?, ?, Loading @@ -143,7 +147,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ? // TODO: rtAdv ? // TODO: rtAdv ) ) ) { ) { log("*** a_ipv6Default: INFO: Ignoring Router Advertisement ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring Router Advertisement ***"); repeat; repeat; } } Loading @@ -151,7 +155,6 @@ module LibItsIpv6OverGeoNetworking_Functions { } // end ipv6OverGeoNwAltsteps } // end ipv6OverGeoNwAltsteps group preambles { group preambles { /** /** Loading @@ -164,12 +167,17 @@ module LibItsIpv6OverGeoNetworking_Functions { /** /** * @desc Preamble to configure the GVLs, either manual or via RA * @desc Preamble to configure the GVLs, either manual or via RA * @param p_nbrOfGvls The number of Gvls to configure * @param p_gvls The GVLs to configure * @param p_validLifetimes The specific invalidation timer for the GVLs */ */ function f_prConfigureGVL(in GvlIdxList p_gvls) runs on ItsIpv6OverGeoNetworking function f_prConfigureGVL( in GvlIdxList p_gvls, in template (omit) UInt32List p_validLifetimes := omit ) runs on ItsIpv6OverGeoNetworking return FncRetCode { return FncRetCode { var integer i; var integer i; var charstring v_str := ""; var charstring v_str := ""; var UInt32 v_validLifetime := c_validLifetime30s; if (lengthof(vc_gvlTable)<lengthof(p_gvls)) { if (lengthof(vc_gvlTable)<lengthof(p_gvls)) { return e_error; return e_error; Loading @@ -179,13 +187,20 @@ module LibItsIpv6OverGeoNetworking_Functions { for (i:=0; i<lengthof(p_gvls); i:=i+1) { for (i:=0; i<lengthof(p_gvls); i:=i+1) { v_str := v_str & "Prefix=" & oct2str(vc_gvlTable[i].prefix) & "/" & int2str(vc_gvlTable[i].prefixLength) & " " v_str := v_str & "Prefix=" & oct2str(vc_gvlTable[i].prefix) & "/" & int2str(vc_gvlTable[i].prefixLength) & " " & "Area=" & vc_gvlTable[i].area & c_CRLF; & "Area=" & vc_gvlTable[i].area & c_CRLF; if (isvalue(p_validLifetimes) and lengthof(p_validLifetimes)>=(i+1)) { v_str := " Lifetime=" & v_str & int2str(p_validLifetimes[i]); } v_str := v_str & c_CRLF; } } action("Please configure manual SGVLs: " & c_CRLF & v_str & c_CRLF); action("Please configure manual SGVLs: " & c_CRLF & v_str & c_CRLF); f_sleep(PX_TWAIT); f_sleep(PX_TWAIT); } } else { else { for (i:=0; i<lengthof(p_gvls); i:=i+1) { for (i:=0; i<lengthof(p_gvls); i:=i+1) { f_sendGeoBroadcastWithRtAdv(vc_gvlTable[i], c_compNodeA); if (isvalue(p_validLifetimes) and lengthof(p_validLifetimes)>=(i+1)) { v_validLifetime := p_validLifetimes[i]; } f_sendGeoBroadcastWithRtAdv(vc_gvlTable[i], c_compNodeA, v_validLifetime); } } f_sleep(PX_T_BUILD_CONFIG); f_sleep(PX_T_BUILD_CONFIG); } } Loading Loading @@ -248,11 +263,11 @@ module LibItsIpv6OverGeoNetworking_Functions { } } [] acPort.receive { [] acPort.receive { tc_ac.stop; tc_ac.stop; log("*** f_acUpdateInterfaces: ERROR: Received unexpected message ***"); log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); f_selfOrClientSyncAndVerdict("error", e_error); } } [] tc_ac.timeout { [] tc_ac.timeout { log("*** f_acUpdateInterfaces: INCONC: Timeout while waiting for adapter control event result ***"); log("*** " & __SCOPE__ & ": INCONC: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); f_selfOrClientSyncAndVerdict("error", e_timeout); } } } } Loading @@ -269,38 +284,38 @@ module LibItsIpv6OverGeoNetworking_Functions { */ */ function f_sendGeoBroadcastWithRtAdv( function f_sendGeoBroadcastWithRtAdv( in template (value) GvlTableEntry p_gvl, in template (value) GvlTableEntry p_gvl, in charstring p_compName in charstring p_compName, in UInt32 p_validLifetime := c_validLifetime30s ) runs on ItsIpv6OverGeoNetworking { ) runs on ItsIpv6OverGeoNetworking { var AddressTableEntry v_nodeAddresses := f_getAddresses(p_compName); var AddressTableEntry v_nodeAddresses := f_getAddresses(p_compName); var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); f_sendGeoNetMessage( f_sendGeoNetMessageWithPayload( m_geoNwReq_linkLayerBroadcast( m_geoNwReq_linkLayerBroadcast( //TODO handle payload -> former m_geoNwPduWithPayload m_geoNwPdu( m_geoNwPdu( m_geoNwBroadcastPacket( m_geoNwBroadcastPacket( v_nodeLongPosVector, v_nodeLongPosVector, vc_localSeqNumber, vc_localSeqNumber, f_getGeoBroadcastArea(valueof(p_gvl.area)) f_getGeoBroadcastArea(valueof(p_gvl.area)) )//, ) // m_ipv6Payload( ) // m_ipv6Packet( ), // v_nodeAddresses.lla, m_ipv6Payload( // c_allNodesMca, m_ipv6Packet( // c_icmpHdr, v_nodeAddresses.lla, // m_rtAdvWithOptions( c_allNodesMca, // m_rtAdvOpt_prefixOpt( c_icmpHdr, // p_gvl.prefixLength, m_rtAdvWithOptions( // c_lFlag1, m_rtAdvOpt_prefixOpt( // c_aFlag1, p_gvl.prefixLength, // c_validLifetime30s, c_lFlag1, // c_preferredLifetime30s, c_aFlag1, // p_gvl.prefix p_validLifetime, // ) c_preferredLifetime30s, // ) p_gvl.prefix // ) ) // ) ) ) ) ) ) ); ); Loading Loading @@ -501,7 +516,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Bit64 v_prefixReadyBits := int2bit(0, 64); var Bit64 v_prefixReadyBits := int2bit(0, 64); if (p_prefixLen > 64) { if (p_prefixLen > 64) { log("*** f_computePrefix: ERROR: Wrong prefixLen (max 64 bits) ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen (max 64 bits) ***"); return int2oct(0, 8); return int2oct(0, 8); } } Loading @@ -528,7 +543,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct8 v_interfaceIdReady := int2oct(0,8); var Oct8 v_interfaceIdReady := int2oct(0,8); if (p_prefixLen > 64) { if (p_prefixLen > 64) { log("*** f_computeGlobalAddress: ERROR: Wrong prefixLen ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen ***"); return '00000000000000000000000000000000'O; return '00000000000000000000000000000000'O; } } Loading @@ -552,7 +567,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O; var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O; if (p_prefixLen != 64) { if (p_prefixLen != 64) { log("*** f_computeHomeAgentAnycastAddress: ERROR: Wrong prefixLen ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen ***"); return '00000000000000000000000000000000'O; return '00000000000000000000000000000000'O; } } Loading @@ -574,7 +589,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct3 v_leftPart := 'FF3E00'O; var Oct3 v_leftPart := 'FF3E00'O; if (p_prefixLen>64) { if (p_prefixLen>64) { log("*** f_computeGlobalScopedUnicastPrefixBasedMulticastIpv6Address: ERROR: Wrong prefixLen, max 64 bits allowed ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); return int2oct(0, 16); return int2oct(0, 16); } } Loading @@ -594,7 +609,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Bit64 v_interfaceIdentifierField := '11111101'B & int2bit(1, 49) & c_itsGn6aslGeoAnycastID; var Bit64 v_interfaceIdentifierField := '11111101'B & int2bit(1, 49) & c_itsGn6aslGeoAnycastID; if (p_prefixLen>64) { if (p_prefixLen>64) { log("*** f_computeGeographicAnycastIpv6Address: ERROR: Wrong prefixLen, max 64 bits allowed ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); return int2oct(0, 16); return int2oct(0, 16); } } Loading Loading @@ -693,7 +708,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ) return Oct2 { ) return Oct2 { var Oct2 v_checksum := 'FFFF'O; var Oct2 v_checksum := 'FFFF'O; log("*** f_computeIPv6CheckSum: INFO: calling fx_computeIPv6CheckSum() ***"); log("*** " & __SCOPE__ & ": INFO: calling fx_computeIPv6CheckSum() ***"); v_checksum := fx_computeIPv6CheckSum(p_sourceAddress, p_destinationAddress, p_payloadLength, p_payload, p_nextHdr); v_checksum := fx_computeIPv6CheckSum(p_sourceAddress, p_destinationAddress, p_payloadLength, p_payload, p_nextHdr); return v_checksum; return v_checksum; Loading ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pixits.ttcn +9 −9 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 /STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc Module parameters for IPv6 over GeoNetworking Protocol * @desc Module parameters for IPv6 over GeoNetworking Protocol Loading ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn +10 −10 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc IPv6 over GeoNetworking Protocol Templates * @desc IPv6 over GeoNetworking Protocol Templates Loading Loading @@ -105,9 +105,9 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_payload IPv6 payload * @param p_payload IPv6 payload */ */ template Ipv6Packet mw_ipv6Packet( template Ipv6Packet mw_ipv6Packet( in template Ipv6Address p_srcAddr, in template (present) Ipv6Address p_srcAddr, in template Ipv6Address p_dstAddr, in template (present) Ipv6Address p_dstAddr, in template UInt8 p_nextHdr, in template (present) UInt8 p_nextHdr, in template Ipv6Payload p_payload in template Ipv6Payload p_payload ) := { ) := { ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), Loading Loading @@ -143,9 +143,9 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_nextHdr IPv6's next header * @param p_nextHdr IPv6's next header */ */ template Ipv6Header mw_ipv6Header( template Ipv6Header mw_ipv6Header( in template Ipv6Address p_srcAddr, in template (present) Ipv6Address p_srcAddr, in template Ipv6Address p_dstAddr, in template (present) Ipv6Address p_dstAddr, in template UInt8 p_nextHdr in template (present) UInt8 p_nextHdr ) := { ) := { version := 6, version := 6, trafficClass := ?, trafficClass := ?, Loading Loading @@ -260,7 +260,7 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_lFlag Value for link flag. * @param p_lFlag Value for link flag. * @param p_aFlag Value for autoconfiguration flag. * @param p_aFlag Value for autoconfiguration flag. * @param p_validLifetime Value for valid life time duration. * @param p_validLifetime Value for valid life time duration. * @param p_preferredLifetime Value for preffered life time duration. * @param p_preferredLifetime Value for preferred life time duration. * @param p_prefix Address prefix to be used * @param p_prefix Address prefix to be used */ */ template PrefixInfo m_prefixInfo ( template PrefixInfo m_prefixInfo ( Loading ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn +4 −1 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc Types and values for IPv6 over GeoNetworking Protocol * @desc Types and values for IPv6 over GeoNetworking Protocol Loading Loading @@ -64,6 +64,8 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { type record of integer GvlIdxList; type record of integer GvlIdxList; type record of UInt32 UInt32List; const integer c_gvl1 := 0; const integer c_gvl1 := 0; const integer c_gvl2 := 1; const integer c_gvl2 := 1; const integer c_gvl3 := 2; const integer c_gvl3 := 2; Loading Loading @@ -249,6 +251,7 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { const UInt1 c_lFlag1 := 1; const UInt1 c_lFlag1 := 1; const UInt16 c_zeroLifetime := 0 ; const UInt16 c_zeroLifetime := 0 ; const UInt32 c_validLifetime20s := 20; const UInt32 c_validLifetime30s := 30; const UInt32 c_validLifetime30s := 30; const UInt32 c_preferredLifetime30s := 30; const UInt32 c_preferredLifetime30s := 30; Loading Loading
ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +16 −0 Original line number Original line Diff line number Diff line Loading @@ -835,6 +835,22 @@ module LibItsGeoNetworking_Templates { ) ) } } /** * @desc Receive template for GeoNetworking Broadcast Packet * @param p_sourceLongPosVec Long position vector of source * @param p_seqNumber Sequence number of GeoBroadcast packet * @param p_nextHeader Id of next header * @param p_payload payload */ template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeaderAndPayload( in template (present) LongPosVector p_sourceLongPosVec, in template (present) UInt16 p_seqNumber, in template (present) NextHeader p_nextHeader, in template (present) Payload p_payload ) modifies mw_geoNwBroadcastPacketWithNextHeader := { payload := p_payload } /** /** * @desc Receive template for GeoNetworking Broadcast Packet * @desc Receive template for GeoNetworking Broadcast Packet * @param p_sourceLongPosVec Long position vector of source * @param p_sourceLongPosVec Long position vector of source Loading
ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +98 −83 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL: svn+ssh://vcs.etsi.org/TTCN3/LIB/LibIts/trunk/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ * @version $URL: svn+ssh://vcs.etsi.org/TTCN3/LIB/LibIts/trunk/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ * $Id: LibItsGeoNetworking_Functions.ttcn 168 2010-09-22 15:18:22Z berge $ * $Id: LibItsGeoNetworking_Functions.ttcn 168 2010-09-22 15:18:22Z berge $ * @desc Module containing functions for Ipv6OverGeoNetworking * @desc Module containing functions for Ipv6OverGeoNetworking Loading Loading @@ -90,32 +90,37 @@ module LibItsIpv6OverGeoNetworking_Functions { [] geoNetworkingPort.receive ( [] geoNetworkingPort.receive ( mw_geoNwInd( mw_geoNwInd( //TODO handle payload -> former mw_geoNwPduWithPayload mw_geoNwPdu( mw_geoNwPdu( mw_geoNwBroadcastPacketWithNextHeader(?, ?, e_ipv6)//, mw_geoNwBroadcastPacketWithNextHeaderAndPayload( // mw_ipv6Payload( ?, // mw_ipv6Packet( ?, // ?, e_ipv6, // ?, mw_ipv6Payload( // ?, mw_ipv6Packet( // mw_octetstringPayload(?) ?, // ) ?, // ) ?, mw_octetstringPayload(?) ) ) ) ) ) ) ) ) { ) { log("*** a_ipv6Default: INFO: Ignoring unsupported IPv6 packet ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring unsupported IPv6 packet ***"); repeat; repeat; } } [] geoNetworkingPort.receive ( [] geoNetworkingPort.receive ( mw_geoNwInd( mw_geoNwInd( //TODO handle payload -> former mw_geoNwPduWithPayload mw_geoNwPdu( mw_geoNwPdu( mw_geoNwBroadcastPacketWithNextHeader(?, ?, e_ipv6)//, mw_geoNwBroadcastPacketWithNextHeaderAndPayload( // mw_ipv6Payload( ?, // ? ?, // ) e_ipv6, mw_ipv6Payload( ? ) ) ) ) ) ) ) -> value v_geoNwInd { ) -> value v_geoNwInd { Loading @@ -126,15 +131,14 @@ module LibItsIpv6OverGeoNetworking_Functions { mw_longPosVectorPosition_withDelta(f_getPosition(c_compNodeB)) mw_longPosVectorPosition_withDelta(f_getPosition(c_compNodeB)) ) ) )) { )) { log("*** a_ipv6Default: INFO: Ignoring rebroadcasted IPv6 packet ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring rebroadcasted IPv6 packet ***"); repeat; repeat; } } else { else { log("*** a_ipv6Default: ERROR: Received an unexpected message ***"); log("*** " & __SCOPE__ & ": ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); f_selfOrClientSyncAndVerdict("error", e_error); } } } } [] ipv6OverGeoNetworkingPort.receive( [] ipv6OverGeoNetworkingPort.receive( mw_ipv6OverGeoNwInd( mw_ipv6OverGeoNwInd( ?, ?, Loading @@ -143,7 +147,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ? // TODO: rtAdv ? // TODO: rtAdv ) ) ) { ) { log("*** a_ipv6Default: INFO: Ignoring Router Advertisement ***"); log("*** " & __SCOPE__ & ": INFO: Ignoring Router Advertisement ***"); repeat; repeat; } } Loading @@ -151,7 +155,6 @@ module LibItsIpv6OverGeoNetworking_Functions { } // end ipv6OverGeoNwAltsteps } // end ipv6OverGeoNwAltsteps group preambles { group preambles { /** /** Loading @@ -164,12 +167,17 @@ module LibItsIpv6OverGeoNetworking_Functions { /** /** * @desc Preamble to configure the GVLs, either manual or via RA * @desc Preamble to configure the GVLs, either manual or via RA * @param p_nbrOfGvls The number of Gvls to configure * @param p_gvls The GVLs to configure * @param p_validLifetimes The specific invalidation timer for the GVLs */ */ function f_prConfigureGVL(in GvlIdxList p_gvls) runs on ItsIpv6OverGeoNetworking function f_prConfigureGVL( in GvlIdxList p_gvls, in template (omit) UInt32List p_validLifetimes := omit ) runs on ItsIpv6OverGeoNetworking return FncRetCode { return FncRetCode { var integer i; var integer i; var charstring v_str := ""; var charstring v_str := ""; var UInt32 v_validLifetime := c_validLifetime30s; if (lengthof(vc_gvlTable)<lengthof(p_gvls)) { if (lengthof(vc_gvlTable)<lengthof(p_gvls)) { return e_error; return e_error; Loading @@ -179,13 +187,20 @@ module LibItsIpv6OverGeoNetworking_Functions { for (i:=0; i<lengthof(p_gvls); i:=i+1) { for (i:=0; i<lengthof(p_gvls); i:=i+1) { v_str := v_str & "Prefix=" & oct2str(vc_gvlTable[i].prefix) & "/" & int2str(vc_gvlTable[i].prefixLength) & " " v_str := v_str & "Prefix=" & oct2str(vc_gvlTable[i].prefix) & "/" & int2str(vc_gvlTable[i].prefixLength) & " " & "Area=" & vc_gvlTable[i].area & c_CRLF; & "Area=" & vc_gvlTable[i].area & c_CRLF; if (isvalue(p_validLifetimes) and lengthof(p_validLifetimes)>=(i+1)) { v_str := " Lifetime=" & v_str & int2str(p_validLifetimes[i]); } v_str := v_str & c_CRLF; } } action("Please configure manual SGVLs: " & c_CRLF & v_str & c_CRLF); action("Please configure manual SGVLs: " & c_CRLF & v_str & c_CRLF); f_sleep(PX_TWAIT); f_sleep(PX_TWAIT); } } else { else { for (i:=0; i<lengthof(p_gvls); i:=i+1) { for (i:=0; i<lengthof(p_gvls); i:=i+1) { f_sendGeoBroadcastWithRtAdv(vc_gvlTable[i], c_compNodeA); if (isvalue(p_validLifetimes) and lengthof(p_validLifetimes)>=(i+1)) { v_validLifetime := p_validLifetimes[i]; } f_sendGeoBroadcastWithRtAdv(vc_gvlTable[i], c_compNodeA, v_validLifetime); } } f_sleep(PX_T_BUILD_CONFIG); f_sleep(PX_T_BUILD_CONFIG); } } Loading Loading @@ -248,11 +263,11 @@ module LibItsIpv6OverGeoNetworking_Functions { } } [] acPort.receive { [] acPort.receive { tc_ac.stop; tc_ac.stop; log("*** f_acUpdateInterfaces: ERROR: Received unexpected message ***"); log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); f_selfOrClientSyncAndVerdict("error", e_error); } } [] tc_ac.timeout { [] tc_ac.timeout { log("*** f_acUpdateInterfaces: INCONC: Timeout while waiting for adapter control event result ***"); log("*** " & __SCOPE__ & ": INCONC: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); f_selfOrClientSyncAndVerdict("error", e_timeout); } } } } Loading @@ -269,38 +284,38 @@ module LibItsIpv6OverGeoNetworking_Functions { */ */ function f_sendGeoBroadcastWithRtAdv( function f_sendGeoBroadcastWithRtAdv( in template (value) GvlTableEntry p_gvl, in template (value) GvlTableEntry p_gvl, in charstring p_compName in charstring p_compName, in UInt32 p_validLifetime := c_validLifetime30s ) runs on ItsIpv6OverGeoNetworking { ) runs on ItsIpv6OverGeoNetworking { var AddressTableEntry v_nodeAddresses := f_getAddresses(p_compName); var AddressTableEntry v_nodeAddresses := f_getAddresses(p_compName); var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); f_sendGeoNetMessage( f_sendGeoNetMessageWithPayload( m_geoNwReq_linkLayerBroadcast( m_geoNwReq_linkLayerBroadcast( //TODO handle payload -> former m_geoNwPduWithPayload m_geoNwPdu( m_geoNwPdu( m_geoNwBroadcastPacket( m_geoNwBroadcastPacket( v_nodeLongPosVector, v_nodeLongPosVector, vc_localSeqNumber, vc_localSeqNumber, f_getGeoBroadcastArea(valueof(p_gvl.area)) f_getGeoBroadcastArea(valueof(p_gvl.area)) )//, ) // m_ipv6Payload( ) // m_ipv6Packet( ), // v_nodeAddresses.lla, m_ipv6Payload( // c_allNodesMca, m_ipv6Packet( // c_icmpHdr, v_nodeAddresses.lla, // m_rtAdvWithOptions( c_allNodesMca, // m_rtAdvOpt_prefixOpt( c_icmpHdr, // p_gvl.prefixLength, m_rtAdvWithOptions( // c_lFlag1, m_rtAdvOpt_prefixOpt( // c_aFlag1, p_gvl.prefixLength, // c_validLifetime30s, c_lFlag1, // c_preferredLifetime30s, c_aFlag1, // p_gvl.prefix p_validLifetime, // ) c_preferredLifetime30s, // ) p_gvl.prefix // ) ) // ) ) ) ) ) ) ); ); Loading Loading @@ -501,7 +516,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Bit64 v_prefixReadyBits := int2bit(0, 64); var Bit64 v_prefixReadyBits := int2bit(0, 64); if (p_prefixLen > 64) { if (p_prefixLen > 64) { log("*** f_computePrefix: ERROR: Wrong prefixLen (max 64 bits) ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen (max 64 bits) ***"); return int2oct(0, 8); return int2oct(0, 8); } } Loading @@ -528,7 +543,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct8 v_interfaceIdReady := int2oct(0,8); var Oct8 v_interfaceIdReady := int2oct(0,8); if (p_prefixLen > 64) { if (p_prefixLen > 64) { log("*** f_computeGlobalAddress: ERROR: Wrong prefixLen ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen ***"); return '00000000000000000000000000000000'O; return '00000000000000000000000000000000'O; } } Loading @@ -552,7 +567,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O; var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O; if (p_prefixLen != 64) { if (p_prefixLen != 64) { log("*** f_computeHomeAgentAnycastAddress: ERROR: Wrong prefixLen ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen ***"); return '00000000000000000000000000000000'O; return '00000000000000000000000000000000'O; } } Loading @@ -574,7 +589,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Oct3 v_leftPart := 'FF3E00'O; var Oct3 v_leftPart := 'FF3E00'O; if (p_prefixLen>64) { if (p_prefixLen>64) { log("*** f_computeGlobalScopedUnicastPrefixBasedMulticastIpv6Address: ERROR: Wrong prefixLen, max 64 bits allowed ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); return int2oct(0, 16); return int2oct(0, 16); } } Loading @@ -594,7 +609,7 @@ module LibItsIpv6OverGeoNetworking_Functions { var Bit64 v_interfaceIdentifierField := '11111101'B & int2bit(1, 49) & c_itsGn6aslGeoAnycastID; var Bit64 v_interfaceIdentifierField := '11111101'B & int2bit(1, 49) & c_itsGn6aslGeoAnycastID; if (p_prefixLen>64) { if (p_prefixLen>64) { log("*** f_computeGeographicAnycastIpv6Address: ERROR: Wrong prefixLen, max 64 bits allowed ***"); log("*** " & __SCOPE__ & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); return int2oct(0, 16); return int2oct(0, 16); } } Loading Loading @@ -693,7 +708,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ) return Oct2 { ) return Oct2 { var Oct2 v_checksum := 'FFFF'O; var Oct2 v_checksum := 'FFFF'O; log("*** f_computeIPv6CheckSum: INFO: calling fx_computeIPv6CheckSum() ***"); log("*** " & __SCOPE__ & ": INFO: calling fx_computeIPv6CheckSum() ***"); v_checksum := fx_computeIPv6CheckSum(p_sourceAddress, p_destinationAddress, p_payloadLength, p_payload, p_nextHdr); v_checksum := fx_computeIPv6CheckSum(p_sourceAddress, p_destinationAddress, p_payloadLength, p_payload, p_nextHdr); return v_checksum; return v_checksum; Loading
ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pixits.ttcn +9 −9 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 /STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc Module parameters for IPv6 over GeoNetworking Protocol * @desc Module parameters for IPv6 over GeoNetworking Protocol Loading
ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn +10 −10 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc IPv6 over GeoNetworking Protocol Templates * @desc IPv6 over GeoNetworking Protocol Templates Loading Loading @@ -105,9 +105,9 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_payload IPv6 payload * @param p_payload IPv6 payload */ */ template Ipv6Packet mw_ipv6Packet( template Ipv6Packet mw_ipv6Packet( in template Ipv6Address p_srcAddr, in template (present) Ipv6Address p_srcAddr, in template Ipv6Address p_dstAddr, in template (present) Ipv6Address p_dstAddr, in template UInt8 p_nextHdr, in template (present) UInt8 p_nextHdr, in template Ipv6Payload p_payload in template Ipv6Payload p_payload ) := { ) := { ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), Loading Loading @@ -143,9 +143,9 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_nextHdr IPv6's next header * @param p_nextHdr IPv6's next header */ */ template Ipv6Header mw_ipv6Header( template Ipv6Header mw_ipv6Header( in template Ipv6Address p_srcAddr, in template (present) Ipv6Address p_srcAddr, in template Ipv6Address p_dstAddr, in template (present) Ipv6Address p_dstAddr, in template UInt8 p_nextHdr in template (present) UInt8 p_nextHdr ) := { ) := { version := 6, version := 6, trafficClass := ?, trafficClass := ?, Loading Loading @@ -260,7 +260,7 @@ module LibItsIpv6OverGeoNetworking_Templates { * @param p_lFlag Value for link flag. * @param p_lFlag Value for link flag. * @param p_aFlag Value for autoconfiguration flag. * @param p_aFlag Value for autoconfiguration flag. * @param p_validLifetime Value for valid life time duration. * @param p_validLifetime Value for valid life time duration. * @param p_preferredLifetime Value for preffered life time duration. * @param p_preferredLifetime Value for preferred life time duration. * @param p_prefix Address prefix to be used * @param p_prefix Address prefix to be used */ */ template PrefixInfo m_prefixInfo ( template PrefixInfo m_prefixInfo ( Loading
ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn +4 −1 Original line number Original line Diff line number Diff line /** /** * @author ETSI / STF405 * @author ETSI / STF405 / STF449 * @version $URL$ * @version $URL$ * $Id$ * $Id$ * @desc Types and values for IPv6 over GeoNetworking Protocol * @desc Types and values for IPv6 over GeoNetworking Protocol Loading Loading @@ -64,6 +64,8 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { type record of integer GvlIdxList; type record of integer GvlIdxList; type record of UInt32 UInt32List; const integer c_gvl1 := 0; const integer c_gvl1 := 0; const integer c_gvl2 := 1; const integer c_gvl2 := 1; const integer c_gvl3 := 2; const integer c_gvl3 := 2; Loading Loading @@ -249,6 +251,7 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { const UInt1 c_lFlag1 := 1; const UInt1 c_lFlag1 := 1; const UInt16 c_zeroLifetime := 0 ; const UInt16 c_zeroLifetime := 0 ; const UInt32 c_validLifetime20s := 20; const UInt32 c_validLifetime30s := 30; const UInt32 c_validLifetime30s := 30; const UInt32 c_preferredLifetime30s := 30; const UInt32 c_preferredLifetime30s := 30; Loading