LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn 3.32 KB
Newer Older
/**
 *  @author   ETSI / STF405
 *  @version  $URL: svn+ssh://vcs.etsi.org/TTCN3/ATS/Its/trunk/ttcn/AtsIPv6OverGeoNetworking/ItsIpv6OverGeoNetworking_TestCases.ttcn $
 *            $Id: ItsIpv6OverGeoNetworking_TestCases.ttcn 169 2010-09-23 08:12:36Z berge $
 *  @desc     Types and values for IPv6 over GeoNetworking Protocol
 *
 */
module LibItsIpv6OverGeoNetworking_TypesAndValues {
    
    //LibCommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
    
    //LibIts
    
    group ipv6OverGeoConfigurationTypes {
        
        type record GvlTableEntry {
            octetstring prefix,
            integer prefixLength,
            charstring area,
            charstring interface
        }
        
        type record of GvlTableEntry GvlTable;
        
        type record MacTableEntry {
            charstring key,
            MacAddress macAddress
        }
        
        type record of MacTableEntry MacTable;
        
    } // end ipv6OverGeoConfigurationTypes

    group ethernet {
        
        /**
         * @desc Ethernet MAC address
         */
        type Oct6 MacAddress;
        
    } // end ethernet
    
    group ipv6 {
        
        /**
         * @desc PDU type derived from RFC2460
         */
        type record Ipv6Packet {
            Ipv6Header          ipv6Hdr,
            ExtensionHeaderList extHdrList optional,
            Ipv6Payload         ipv6Payload optional
        }
        
        /**
         * @desc Derived from RFC 2460 Section 3
         * @url http://www.ietf.org/rfc/rfc2460.txt
         */
        type record Ipv6Header  {
            UInt4       version,
            UInt8       trafficClass,
            UInt20      flowLabel, 
            UInt16      payloadLength,
            UInt8       nextHeader,
            UInt8       hopLimit,
            Ipv6Address sourceAddress,
            Ipv6Address destinationAddress
        }
        
        const UInt8 c_noNextHdr := 59;
        
        /**
         * @desc IPv6 extension header list
         */
        type octetstring ExtensionHeaderList;
        
        /**
         * @desc IPv6 payload
         */
        type union Ipv6Payload {
            RouterAdvertisementMsg  routerAdvMsg,
            octetstring             octetstringMsg
        }
        
        /**
         * @desc IPv6 Address
         */
        type Oct16 Ipv6Address;
        
        /**
         * @desc RouterAdvertisement message type
         */
        const UInt8   c_rtAdvMsg := 134;
        
        /**
         * @desc PDU type derived from RFC2461 clause 4.2
         */
        type record RouterAdvertisementMsg {
            UInt8         icmpType(c_rtAdvMsg),
            UInt8         icmpCode,
            Oct2          checksum,
            UInt8         curHopLimit,
            UInt1         managedConfigFlag,
            UInt1         otherConfigFlag,
            UInt1         homeAgentFlag,
            UInt5         reserved,
            UInt16        routerLifetime,
            UInt32        reachableTime,
            UInt32        retransTimer,
            RtAdvOptions  rtAdvOptions optional
        }
        
        /**
         * @desc RouterAdvertisement option list
         */
        type octetstring RtAdvOptions;
        
    } // end group ipv6
    
} // end LibItsIpv6OverGeoNetworking_TypesAndValues