Commit dfc746ad authored by garciay's avatar garciay
Browse files

Terminate Packect Fragmentation for CPE role

parent 24f6321c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -91,11 +91,13 @@ module Ats6RD_Pixits {
        
        /**
         * @desc The host address
         * @remark This is a private IPv6 address
         */
        modulepar Ipv6Address PX_HTTP_CLIENT_IPV6_ADDRESS :=  c_16ZeroBytes; 
        
        /**
         * @desc The HTTP server address
         * @remark This is a public IPv6 address
         */
        modulepar Ipv6Address PX_WEB_SERVER_IPv6 :=  c_16ZeroBytes; 
        
+112 −54
Original line number Diff line number Diff line
@@ -738,6 +738,16 @@ module Ats6RD_TestCases {
                        var template(value) Ipv4Packet v_firstFragment;
                        var template(value) Ipv4Packet v_lastFragment;
                        
                        
                        // Preamble
                        // Clause 'Initial conditions'
                        f_preamble_br();
                        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                        
                        // Test Body
                        // Clause 'when': the IUT receives multiple HTML IPv4 packets...
                        for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) {
                            // Construct IPv4 fragments
                            f_finalyzeIpv4Packet(
                                m_ipv4Packet_df(
@@ -749,7 +759,7 @@ module Ats6RD_TestCases {
                                        PX_IUT_PORT,
                                        m_tcpHttpPayload(
                                            substr(
                                            p_hostBrDataMsgs.payload.ipv6Packet, 
                                                bit2oct(encvalue(p_hostBrDataMsgs[v_host].payload.ipv6Packet)), 
                                                0, 
                                                PX_6RD_MRD_MTU_SIZE - 20 /* IP header length */
                                            )
@@ -770,7 +780,7 @@ module Ats6RD_TestCases {
                                        PX_IUT_PORT,
                                        m_tcpHttpPayload(
                                            substr(
                                            p_hostBrDataMsgs.payload.ipv6Packet, 
                                                bit2oct(encvalue(p_hostBrDataMsgs[v_host].payload.ipv6Packet)), 
                                                v_firstFragment.ipv4Hdr.fragmentOffset, 
                                                20 /* IP header length */
                                            )
@@ -781,18 +791,10 @@ module Ats6RD_TestCases {
                                v_lastFragment
                            );
                            v_lastFragment.ipv4Hdr.moreFragsFlag := c_moreFragsFlag0;
                        
                        // Preamble
                        // Clause 'Initial conditions'
                        f_preamble_br();
                        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                        
                        // Test Body
                        // Clause 'when': the IUT receives multiple HTML IPv4 packets...
                            ipv4Port.send(v_firstFragment); // First fragment
                            f_sleep(0.5);
                            ipv4Port.send(v_lastFragment); // Second fragment
                        } // End of 'for' statement
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        
                        // Postamble
@@ -1716,12 +1718,12 @@ module Ats6RD_TestCases {
                 *              containing source address
                 *                  indicating a public IPv6 address 
                 *              containing destination address
                 *                  indicating a public IPv6 address
                 *                  indicating a private IPv6 address
                 *          from multiple hosting devices
                 *          with a packet size greater than the BR tunnel MTU
                 *      }
                 *      then {
                 *          the IUT fragments into IPv6 packets, and  
                 *          the IUT fragments that IPv6 packet, and  
                 *          the IUT forwards correctly formatted IPv4 through to the CPE
                 *      }
                 *  }
@@ -1753,11 +1755,16 @@ module Ats6RD_TestCases {
                    
                    // Start all components
                    vc_brComponent.start(f_TC_6RD_BR_PF_BV_001_br(v_noOfDataRequests));
                    vc_hostHttpComponents[0].start(f_TC_6RD_BR_PF_BV_001_host_http( // TODO Add support of multiple host
                        PX_HTTP_CLIENT_IPV6_ADDRESS,
                        PX_WEB_SERVER_IPv6,
                        v_noOfDataRequests
                    ));
                    
                    // TODO To be continued Monday
                    
                    
//                    vc_hostHttpComponents[0].start(f_TC_6RD_BR_PF_BV_001_host_http( // TODO Add support of multiple host
//                        PX_WEB_SERVER_IPv6,                                 // containing source address indicating a public IPv6 address 
//                        PX_HTTP_CLIENT_IPV6_ADDRESS,                        // containing destination address indicating a public private IPv6 address
//                        v_noOfDataRequests,
//                        true                                                // with a packet size greater than the BR tunnel MTU
//                    ));
                    
                    // Test Body
                    // Clause 'when': Nothing to do 
@@ -1780,7 +1787,58 @@ module Ats6RD_TestCases {
                     */
                    function f_TC_6RD_BR_PF_BV_001_br(in UInt p_noOfDataRequests) runs on BRComponent {
                        
                        // TODO
                        // Local variables
                        var FragmentationContexts v_fragmentationContexts;
                        var UInt v_ipv6MessageCounter := 0;
                        var Ipv4Packet v_ipv4Packet;
                        var Ipv6Packet v_ipv6Packet;
                        
                        // Preamble
                        // Clause 'Initial conditions'
                        f_preamble_br();
                        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                        
                        // Test Body
                        tc_ac.start;
                        alt {
                            [] ipv4Port.receive(
                                mw_ipv4Packet_df(
                                    PX_CPE_IPv4_ADDRESS, 
                                    PX_BR_GW_IPv4_ADDRESS
                            )) -> value v_ipv4Packet {
                                tc_ac.stop;
                                f_rebuildIpv6HttpMessages(v_ipv4Packet, v_fragmentationContexts, v_ipv6MessageCounter);
                                tc_ac.start;
                                repeat;
                            }
                            [] ipv4Port.receive(
                                mw_ipv4Packet_dummy(
                                    PX_CPE_IPv4_ADDRESS, 
                                    PX_BR_GW_IPv4_ADDRESS
                            )) -> value v_ipv4Packet {
                                if (f_rebuildIpv6HttpMessages(v_ipv4Packet, v_fragmentationContexts, v_ipv6MessageCounter) == e_success) {
                                    log("*** " & __SCOPE__ & ": The HTTP IPv6 packet was correctly rebuilt. ***");
                                    if (v_ipv6MessageCounter != p_noOfDataRequests) {
                                        tc_ac.start;
                                        repeat;
                                    } else {
                                        // TODO Need to check that TCP payload is a sent IPv6 message. Use an InterCompDataPort to transmit HTTP packet from HostHTTPv6Component to BRComponent
                                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                                        log("*** " & __SCOPE__ & ": PASS: The IUT had fragmented each HTTP IPv6 packet. ***");
                                    }
                                }
                            }
                            [] tc_ac.timeout {
                                f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                                log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                            }
                        } // End of 'altstep' statement
                        
                        // Postamble
                        f_postamble_br();
                        f_selfOrClientSyncAndVerdict(c_poDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                        
                    } // End of function f_TC_6RD_BR_PF_BV_001_br