Dear all,
OK, let's go ahead and throw in AtsCommon:
#!/bin/bash
ln -s ../EtsiLibrary/LibCommon/LibCommon_AbstractData.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_BasicTypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_DataStrings.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_SyncExamples.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Sync.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_TextStrings.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Time.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_VerdictControl.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_CodecTests.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Codec.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Functions.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Interface.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Templates.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_TypesAndValues.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Common_Functions.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Defaults.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_ModuleParameters.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Postambles.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Preambles.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration_TypesAndValues.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestSystem.ttcn .
and the errors:
1. Component type compatibility
AtsIpv6_Postambles.ttcn:375.3-476.5: In function definition `f_commonTestCleanup':
AtsIpv6_Postambles.ttcn:386.3-392.51: In variable assignment:
AtsIpv6_Postambles.ttcn:386.12-392.51: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Node' cannot call function `@LibIpv6_Rfc2461NeighborDiscovery_Functions.f_sendNbrAdv', which runs on `@LibIpv6_Interface_TypesAndValues.LibIpv6Node'
the definitions in AtsIpv6_TestSystem:
type component Ipv6Node {
// definitions required for LibIpv6COmp type compatibility
port Ipv4Port ipv4Port;
port Ipv6Port ipPort;
port ArpPort arpPort;
port CfPort cfPort;
timer tc_ac:= PX_TAC;
timer tc_noAc:= PX_TNOAC;
timer tc_wait:= PX_TWAIT;
timer tc_loop := PX_LOOP ;
// parts needed for Client,SelfSyncComp type compatibility
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
var Ipv6NodeVars vc_ipv6NodeVars := {
replyToNbrSol := true
};
var MipSec vc_mobileSec;
var Sad vc_sad;
var IkeSad vc_ikeSad;
var CleanupLevel vc_cleanup := e_cleanGla;
}
type component LibIpv6Node extends SelfSyncComp {
port Ipv4Port ipv4Port;
port Ipv6Port ipPort;
port ArpPort arpPort;
timer tc_ac:= PX_TAC;
timer tc_noAc:= PX_TNOAC;
timer tc_wait:= PX_TWAIT;
var MipSec vc_mobileSec;
var Sad vc_sad;
var IkeSad vc_ikeSad;
timer tc_loop := PX_LOOP ;
/* var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
*/}
so Ipv6Node has to be defined as below to get around the problem:
type component Ipv6Node extends LibIpv6Node {
// definitions required for LibIpv6COmp type compatibility
/* port Ipv4Port ipv4Port;
port Ipv6Port ipPort;
port ArpPort arpPort; */
port CfPort cfPort;
/* timer tc_ac:= PX_TAC;
timer tc_noAc:= PX_TNOAC;
timer tc_wait:= PX_TWAIT;
timer tc_loop := PX_LOOP ; */
// parts needed for Client,SelfSyncComp type compatibility
/* var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT; */
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
var Ipv6NodeVars vc_ipv6NodeVars := {
replyToNbrSol := true
};
/* var MipSec vc_mobileSec;
var Sad vc_sad;
var IkeSad vc_ikeSad; */
var CleanupLevel vc_cleanup := e_cleanGla;
}
2. Wrong template
AtsIpv6_Defaults.ttcn: In TTCN-3 module `AtsIpv6_Defaults':
AtsIpv6_Defaults.ttcn:384.2-432.2: In altstep definition `a_mobile':
AtsIpv6_Defaults.ttcn:395.5-415.61: In function instance:
AtsIpv6_Defaults.ttcn:395.23-415.61: In actual parameter list of function `@LibIpv6_Rfc3775Mipv6_Functions.f_sendMipPrefixAdv':
AtsIpv6_Defaults.ttcn:395.24-415.60: In parameter #1 for `p_mobilePrefixAdv':
AtsIpv6_Defaults.ttcn:395.41-415.60: In actual parameter list of template `@LibIpv6_Rfc3775Mipv6_Templates.m_mobilePrefixAdv':
AtsIpv6_Defaults.ttcn:407.11-415.59: In parameter #6 for `p_mobilePrefixInfoList':
AtsIpv6_Defaults.ttcn:407.11-415.59: error: Type mismatch: a value or template of type `@LibIpv6_Rfc3775Mipv6_TypesAndValues.MipPrefixInfoList' was expected instead of `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.PrefixInfoList'
in AtsIpv6_Defaults.ttcn the m_mobilePrefixInfoList_1Elem is wrongly used, this has to be investigated but for teh moment I have replaced it with a ?
[] ipPort.receive(mw_mobilePrefixSol(?, ?)) -> value v_mobilePrefixSol {
f_sendMipPrefixAdv(m_mobilePrefixAdv(
c_routeHdr,
v_mobilePrefixSol.ipv6Hdr.destinationAddress,
v_mobilePrefixSol.ipv6Hdr.sourceAddress,
m_extHdrList_1Elem(
m_extHdr_routingHeader(
c_icmpHdr,
c_routeHdrLen2,
c_routeHdrType2,
c_routeHdrSegmentsLeft1,
m_routingHeaderData_homeAddress(p_paramsIut.mnHoa))),
v_mobilePrefixSol.ipv6Payload.mobilePrefixSolMsg.identifier,
m_mobilePrefixInfoList_1Elem(
m_mobilePrefixInfo(
p_paramsTn.prefixLength,
c_lFlag1,
c_aFlag1,
c_rtAddrFlag1,
c_infinitePrefixLifetime,
c_infinitePrefixLifetime,
v_mobilePrefixSol.ipv6Hdr.destinationAddress ))));
changed to
[] ipPort.receive(mw_mobilePrefixSol(?, ?)) -> value v_mobilePrefixSol {
f_sendMipPrefixAdv(m_mobilePrefixAdv(
c_routeHdr,
v_mobilePrefixSol.ipv6Hdr.destinationAddress,
v_mobilePrefixSol.ipv6Hdr.sourceAddress,
m_extHdrList_1Elem(
m_extHdr_routingHeader(
c_icmpHdr,
c_routeHdrLen2,
c_routeHdrType2,
c_routeHdrSegmentsLeft1,
m_routingHeaderData_homeAddress(p_paramsIut.mnHoa))),
v_mobilePrefixSol.ipv6Payload.mobilePrefixSolMsg.identifier,
/* m_mobilePrefixInfoList_1Elem(
m_mobilePrefixInfo(
p_paramsTn.prefixLength,
c_lFlag1,
c_aFlag1,
c_rtAddrFlag1,
c_infinitePrefixLifetime,
c_infinitePrefixLifetime,
v_mobilePrefixSol.ipv6Hdr.destinationAddress )) */ ? )); //FIXME!!!
3. Component type compatibility again
AtsIpv6_Preambles.ttcn:185.2-190.2: In function definition `f_PR_ut_uta_init':
AtsIpv6_Preambles.ttcn:188.3-39: In variable assignment:
AtsIpv6_Preambles.ttcn:188.12-39: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Utc' cannot call function `@LibScop_Functions.f_requestIutInit', which runs on `@LibScop_Interface.ScopComp'
type component Ipv6Utc {
// definitions required for ScopComp type compatibility
port ScopPort scopPort;
port EncodedScopPort escopPort;
timer tc_ac:= PX_TAC;
timer tc_noAc:= PX_TNOAC;
timer tc_wait:= PX_TWAIT;
// parts needed for Client/SelfSyncComp type compatibility
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
type component ScopComp {
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncPort;
port ScopPort scopPort;
port EncodedScopPort escopPort;
timer tc_ac := PX_TAC;
timer tc_noAc := PX_TNOAC;
timer tc_wait := PX_TWAIT;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
Ipv6Utc declaration changed to :
type component Ipv6Utc extends ScopComp {
// definitions required for ScopComp type compatibility
// port ScopPort scopPort;
// port EncodedScopPort escopPort;
// timer tc_ac:= PX_TAC;
// timer tc_noAc:= PX_TNOAC;
// timer tc_wait:= PX_TWAIT;
// parts needed for Client/SelfSyncComp type compatibility
// var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
// port SyncPort syncPort;
// timer tc_sync := PX_TSYNC_TIME_LIMIT;
// timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
4. Component type compatibility once more
AtsIpv6_Preambles.ttcn:185.2-190.2: In function definition `f_PR_ut_uta_init':
AtsIpv6_Preambles.ttcn:189.3-51: In function instance:
AtsIpv6_Preambles.ttcn:189.3-51: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Utc' cannot call function `@LibCommon_Sync.f_clientSyncAndVerdictPreamble', which runs on `@LibCommon_Sync.ClientSyncComp'
type component ClientSyncComp {
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
}
type component ScopComp {
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncPort;
port ScopPort scopPort;
port EncodedScopPort escopPort;
timer tc_ac := PX_TAC;
timer tc_noAc := PX_TNOAC;
timer tc_wait := PX_TWAIT;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
ScompComp redeclared as
type component ScopComp extends ClientSyncComp {
//var StringStack v_stateStack:= c_initStringStack;
//port SyncPort syncPort;
port ScopPort scopPort;
port EncodedScopPort escopPort;
timer tc_ac := PX_TAC;
timer tc_noAc := PX_TNOAC;
timer tc_wait := PX_TWAIT;
// timer tc_sync := PX_TSYNC_TIME_LIMIT;
timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
fixes it
5. Missing test port
In file included from AtsIpv6_TestSystem.hh:21:0,
from AtsIpv6_Common_Functions.hh:22,
from AtsIpv6_Common_Functions.cc:11:
AtsIpv6_TestConfiguration_TypesAndValues.hh:956:21: fatal error: CfPort.hh: No such file or directory
compilation terminated.
the referred port declared as internal:
type port CfPort message {
inout
CfMessage
} with {extension "internal"}
Now the mix compiles. Let's go ahead and add AtsCore:
#!/bin/bash
ln -s ../EtsiLibrary/LibCommon/LibCommon_AbstractData.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_BasicTypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_DataStrings.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_SyncExamples.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Sync.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_TextStrings.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Time.ttcn .
ln -s ../EtsiLibrary/LibCommon/LibCommon_VerdictControl.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_CodecTests.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Codec.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Functions.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Interface.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_Templates.ttcn .
ln -s ../EtsiLibrary/LibScop/LibScop_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_Templates.ttcn .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_TypesAndValues.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Common_Functions.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Defaults.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_ModuleParameters.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Postambles.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Preambles.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration_TypesAndValues.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestSystem.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Core_TestControl.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Core_Tp_Functions.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_GenerateIpv6Packets_Testcases.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Icmpv6Functions_Testcases.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Initialize_Testcases.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Jumbograms_Testcases.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_NeighborDiscovery_Testcases.ttcn .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_ProcessIpv6Packets_Testcases.ttcn .
and the errors:
1. Wrong template
AtsIpv6_Core_Tp_Functions.ttcn: In TTCN-3 module `AtsIpv6_Core_Tp_Functions':
AtsIpv6_Core_Tp_Functions.ttcn:13541.2-13581.2: In function definition `f_TP_processRouterSolicitation_unspecSrcAddr':
AtsIpv6_Core_Tp_Functions.ttcn:13554.3-13557.47: In variable assignment:
AtsIpv6_Core_Tp_Functions.ttcn:13554.24-13557.47: In actual parameter list of function `@LibIpv6_Rfc2461NeighborDiscovery_Functions.f_sendRtSol':
AtsIpv6_Core_Tp_Functions.ttcn:13554.26-13557.45: In parameter #1 for `p_rtrSol':
AtsIpv6_Core_Tp_Functions.ttcn:13554.43-13557.45: In actual parameter list of template `@LibIpv6_Rfc2461NeighborDiscovery_Templates.m_rtSol_noExtHdr':
AtsIpv6_Core_Tp_Functions.ttcn:13557.4-43: In parameter #3 for `p_rtSolOptions':
AtsIpv6_Core_Tp_Functions.ttcn:13557.4-43: error: Type mismatch: a value or template of type `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.RtSolOptions' was expected instead of `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.NbrSolOptions'
in AtsIpv6_Core_Tp_Functions.ttcn the following code:
v_ret := f_sendRtSol ( m_rtSol_noExtHdr (
c_unspecifiedAdd,
p_paramsIut.lla,
m_nbrSolOpt_sllaOpt(p_paramsRt01.macUca) ) );
changed to:
v_ret := f_sendRtSol ( m_rtSol_noExtHdr (
c_unspecifiedAdd,
p_paramsIut.lla,
/*m_nbrSolOpt_sllaOpt(p_paramsRt01.macUca)*/ ? ) ); //FIXME!!!
2. Component type compatibility yet again
AtsIpv6_Icmpv6Functions_Testcases.ttcn: In TTCN-3 module `AtsIpv6_Icmpv6Functions_Testcases':
AtsIpv6_Icmpv6Functions_Testcases.ttcn:235.7-253.7: In testcase definition `TC_COR_1468_01':
AtsIpv6_Icmpv6Functions_Testcases.ttcn:242.8-66: In function instance:
AtsIpv6_Icmpv6Functions_Testcases.ttcn:242.8-66: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Node' cannot call function `@AtsIpv6_TestConfiguration.f_cfCore01WithUpperTesterUp', which runs on `@LibCommon_Sync.ServerSyncComp'
type component ClientSyncComp {
var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT;
}
changed to:
type component ClientSyncComp extends ServerSyncComp {
var StringStack v_stateStack:= c_initStringStack;
//port SyncPort syncPort;
//timer tc_sync := PX_TSYNC_TIME_LIMIT;
}
3. And some side-effects of the same compatibility
LibScop_Interface.ttcn: In TTCN-3 module `LibScop_Interface':
LibScop_Interface.ttcn:46.9-56.3: In type definition `ScopComp':
LibScop_Interface.ttcn:46.14-56.3: While checking uniqueness of inherited component element definitions:
LibScop_Interface.ttcn:55.10-48: error: Local definition `tc_shutDown' collides with definition inherited from component type `@LibCommon_Sync.ServerSyncComp'
LibCommon_Sync.ttcn:84.12-50: note: Inherited definition of `tc_shutDown' is here
AtsIpv6_TestSystem.ttcn: In TTCN-3 module `AtsIpv6_TestSystem':
AtsIpv6_TestSystem.ttcn:53.3-76.2: In type definition `Ipv6Node':
AtsIpv6_TestSystem.ttcn:53.8-76.2: While checking uniqueness of inherited component element definitions:
AtsIpv6_TestSystem.ttcn:68.9-47: error: Local definition `tc_shutDown' collides with definition inherited from component type `@LibCommon_Sync.ServerSyncComp'
LibCommon_Sync.ttcn:84.12-50: note: Inherited definition of `tc_shutDown' is here
remove tc_shutDown from the ScopComp and Ipv6Node declarations, as it is already inherited from parents:
type component ScopComp extends ClientSyncComp {
//var StringStack v_stateStack:= c_initStringStack;
//port SyncPort syncPort;
port ScopPort scopPort;
port EncodedScopPort escopPort;
timer tc_ac := PX_TAC;
timer tc_noAc := PX_TNOAC;
timer tc_wait := PX_TWAIT;
// timer tc_sync := PX_TSYNC_TIME_LIMIT;
// timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
}
type component Ipv6Node extends LibIpv6Node {
// definitions required for LibIpv6COmp type compatibility
/* port Ipv4Port ipv4Port;
port Ipv6Port ipPort;
port ArpPort arpPort; */
port CfPort cfPort;
/* timer tc_ac:= PX_TAC;
timer tc_noAc:= PX_TNOAC;
timer tc_wait:= PX_TWAIT;
timer tc_loop := PX_LOOP ; */
// parts needed for Client,SelfSyncComp type compatibility
/* var StringStack v_stateStack:= c_initStringStack;
port SyncPort syncSendPort;
port SyncPort syncPort;
timer tc_sync := PX_TSYNC_TIME_LIMIT; */
// timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
var Ipv6NodeVars vc_ipv6NodeVars := {
replyToNbrSol := true
};
/* var MipSec vc_mobileSec;
var Sad vc_sad;
var IkeSad vc_ikeSad; */
var CleanupLevel vc_cleanup := e_cleanGla;
}
with this, everything should compile.
OK, so let's summarize now:
- the original code can be downloaded from http://www.ttcn-3.org/index.php/downloads/publicts/publicts-etsi/25-publicts-ipv6
- the "Titanized" , compileable code is attached to the first episode in the series:
https://www.eclipse.org/forums/index.php/t/1092000/
- we have seen three categories of errors that stopped compilation:
1. Errors connected to non-standardized parts (test ports, external functions, codecs)
2. Errors related to Titan non-conformities
If I'm not mistaken , there were two such categories : first , Titan does not acknowledge implicit type compatibility of components; compatibility
has to be obtained with aliases or extensions; second, Titan does not acknowledge aliases in port declarations.
3. Other, various faults in the original TTCN-3 code.
All right , we managed to compile, but that's only halfway: we need a code that can be executed; what's next?
The following things are outstanding and if someone wishes to use the test suite, will have to invest some energy into it:
- external functions will have to be written in C/C++ ; I think this is rather straightforward;
- code of IPv6 and IPv4 ports will have to be added; the associated port declarations will have to be redeclared external (by removing the "internal" declaration, d'oh )
I believe here the LANL2 port with appropriate translation to IPv6, IPV4 packets will fit nicely; It will take some experimentation though.
Also there's some internal coordination port that needs to be looked at.
- and the hardest part: the RAW codec instructions will have to be added and validated; I see here a quite large volume of work;
-to crown you efforts, a sensible config file will have to be assembled with all relevant test port parameters etc.
so anyone who thought will just lift the code off the shelf and just run it will be disappointed, but hey, I did not promise any freebies.
Anyhow, compared to the alternative of writing everything from scratch in some other language perhaps, a reasonable investment in the above
should appear attractive. But then again, it's your call.
I should mention here a useless fun fact: IPV6 conformance testing was one of the first applications of Titan, some fifteen plus years ago.
With that, I declare this issue closed. Thank you for your patience in joining me in this long and boring journey.
Best regards
Elemer