Commit a16a3dda authored by tepelmann's avatar tepelmann
Browse files

Updated GN6 testcases.

parent 7971094e
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -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
+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
@@ -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 {
@@ -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(
                    ?,
                    ?,
@@ -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; 
            }
            }
            
            
@@ -151,7 +155,6 @@ module LibItsIpv6OverGeoNetworking_Functions {
        
        
    } // end ipv6OverGeoNwAltsteps
    } // end ipv6OverGeoNwAltsteps
    
    
    
    group preambles {
    group preambles {
        
        
        /**
        /**
@@ -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;
@@ -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);
            }
            }
@@ -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);
                }
                }
            }
            }
@@ -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
//                            )
                            )
//                        )
                        )
                    )
                    )
                )
                )
            );
            );
@@ -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);
            }
            }
            
            
@@ -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;
            }
            }
            
            
@@ -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;
            }
            }
            
            
@@ -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);
            }
            }
            
            
@@ -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);
            }
            }
            
            
@@ -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;
+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
+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
@@ -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),
@@ -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 := ?,
@@ -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 (
+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
@@ -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;
@@ -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;