Commit 9aac5898 authored by garciay's avatar garciay
Browse files

Finalise implementation of TC_DSLITE_AFTR_BF_BV_001

parent c34d776c
Loading
Loading
Loading
Loading
+25 −7
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ module AtsDSLite_Pixits {
     * @desc Defines a list of IPv4 host services
     * @see TC_DSLITE_B4_BF_BV_001
     */
    modulepar HostV4Descriptions PX_HOST_V4_LIST := {
    modulepar HostV4Descriptions PX_HOST_V4_LIST_B4 := {
        {
            srcAddress  := '91fea0ed'O, // Containing source address indicating a private IPv4 address
            srcPort     := 3372,
@@ -43,24 +43,42 @@ module AtsDSLite_Pixits {
            }
        }, // Host #0
        {
            srcAddress  := '91fea0ed'O,  // Containing source address indicating a private IPv4 address
            srcAddress  := '91fea0ee'O,  // Containing source address indicating a private IPv4 address
            srcPort     := 3372,
            dstAddress  := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts
            dstAddress  := '41d0e4e0'O, // Containing destination address indicating a public IPv4 address from multiple hosts
            dstPort     := 80,
            payload     := {
                rawPayload := 'CAFEDECA'O // TODO To be enhanced
            }
        } // Host #1
        // TODO Could be extended 
    } // End of modulepar PX_HOST_V4_LIST
    } // End of modulepar PX_HOST_V4_LIST_B4
    
    /**
     * @desc Defines a list of IPv4 host services
     * @see TC_DSLITE_B4_BF_BV_001
     * @see TC_DSLITE_AFTR_BF_BV_001
     */
    modulepar HostV6Descriptions PX_HOST_V6_LIST := {
    modulepar HostV4Descriptions PX_HOST_V4_LIST_AFTR := {
        {
            srcAddress  := '91fea0fd'O, // Containing source address indicating a private IPv4 address
            srcPort     := 3372,
            dstAddress  := '41d0e4ef'O, // Containing destination address indicating a public IPv4 address from multiple hosts
            dstPort     := 80,
            payload     := {
                rawPayload := 'DEADBEEF'O // TODO To be enhanced
            }
        }, // Host #0
        {
            srcAddress  := '91fea0dd'O, // Containing source address indicating a private IPv4 address
            srcPort     := 3372,
            dstAddress  := '41d0e4cf'O, // containing destination address indicating a public IPv4 address from multiple B4 devices
            dstPort     := 80,
            payload     := {
                rawPayload := 'DEADBEEF'O // TODO To be enhanced
            }
        } // Host #1
        // TODO Could be extended 
    } // End of modulepar PX_HOST_V6_LIST
    } // End of modulepar PX_HOST_V4_LIST_AFTR
    
    modulepar integer PX_DS_MTU := 1500;
    
+30 −27
Original line number Diff line number Diff line
@@ -538,7 +538,7 @@ module AtsDSLite_TestCases {
                testcase TC_DSLITE_B4_BF_BV_001() runs on DSLiteComponent system TestAdapter {
                    
                    // Local variables
                    var integer v_hostNum := lengthof(PX_HOST_V4_LIST); /** Expected number of IPv4 packets to be forwarded */
                    var integer v_hostNum := lengthof(PX_HOST_V4_LIST_B4);  /** Expected number of IPv4 packets to be forwarded */
                    var HostAftrDataMsgs v_hostAftrDataMsgs;                /** Expected of IPv4 packets to be forwarded */
                    var integer v_host;                                     /** 'for' statement counter */
                    
@@ -558,12 +558,12 @@ module AtsDSLite_TestCases {
                        v_hostAftrDataMsgs[v_host].hostId := v_host;
                        f_finalyzeIpv4Packet(
                            m_ipv4Packet_dummy(
                                PX_HOST_V4_LIST[v_host].srcAddress, // containing source address indicating a private IPv4 address
                                PX_HOST_V4_LIST[v_host].dstAddress, // containing destination address indicating a public IPv4 address from multiple hosts
                                PX_HOST_V4_LIST_B4[v_host].srcAddress, // containing source address indicating a private IPv4 address
                                PX_HOST_V4_LIST_B4[v_host].dstAddress, // containing destination address indicating a public IPv4 address from multiple hosts
                                m_tcp_packet(
                                    PX_HOST_V4_LIST[v_host].srcPort,
                                    PX_HOST_V4_LIST[v_host].dstPort,
                                    PX_HOST_V4_LIST[v_host].payload
                                    PX_HOST_V4_LIST_B4[v_host].srcPort,
                                    PX_HOST_V4_LIST_B4[v_host].dstPort,
                                    PX_HOST_V4_LIST_B4[v_host].payload
                                )
                            ),
                            v_hostAftrDataMsgs[v_host].payload.ipv4Packet
@@ -663,7 +663,7 @@ module AtsDSLite_TestCases {
                                        }
                                    }
                                } // End of 'for' statement 
                                if (lengthof(v_results) == v_hostNum) { 
                                if (lengthof(v_results) == v_hostNum) { // Check current result 
                                    log("*** " & __SCOPE__ & ": PASS: All encapsulated IPv4 packets were forwarded. ***");
                                } else {
                                    tc_ac.start;
@@ -737,7 +737,7 @@ module AtsDSLite_TestCases {
                    // Local variables
                    var integer v_host := 0;
                    var template (value) TcpPacket v_tcpMsg := m_tcp_packet(50000, 80, { httpPayload := int2oct(0, PX_DS_MTU) }); //TODO adapt values
                    var template(value) Ipv4Packet  v_ipv4Packet := m_ipv4Packet_df(0, PX_HOST_V4_LIST[v_host].srcAddress, PX_HOST_V4_LIST[v_host].dstAddress, v_tcpMsg);
                    var template(value) Ipv4Packet  v_ipv4Packet := m_ipv4Packet_df(0, PX_HOST_V4_LIST_B4[v_host].srcAddress, PX_HOST_V4_LIST_B4[v_host].dstAddress, v_tcpMsg);
                    var octetstring v_encTcpMsg := v_ipv4Packet.ipv4Payload.rawPacket;
                    
                    // Test control
@@ -981,7 +981,7 @@ module AtsDSLite_TestCases {
                testcase TC_DSLITE_AFTR_BF_BV_001() runs on DSLiteComponent system TestAdapter {
                    
                    // Local variables
                    var integer v_hostNum := lengthof(PX_HOST_V6_LIST); /** Expected number of IPv6 packets to be forwarded */
                    var integer v_hostNum := lengthof(PX_HOST_V4_LIST_AFTR); /** Expected number of IPv6 packets to be forwarded */
                    var HostAftrDataMsgs v_hostAftrDataMsgs;            /** Expected of IPv6 packets to be forwarded */
                    var Ipv4Packet v_ipv4Packet;                        /** IPv4 packets to be encapsulated into IPv6 */
                    var integer v_host;                                 /** 'for' statement counter */
@@ -1001,12 +1001,12 @@ module AtsDSLite_TestCases {
                    for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) {
                        f_finalyzeIpv4Packet(
                            m_ipv4Packet_dummy(
                                PX_HOST_V4_LIST[v_host].srcAddress,
                                PX_HOST_V4_LIST[v_host].dstAddress,
                                PX_HOST_V4_LIST_AFTR[v_host].srcAddress,
                                PX_HOST_V4_LIST_AFTR[v_host].dstAddress,
                                m_tcp_packet(
                                    PX_HOST_V4_LIST[v_host].srcPort,
                                    PX_HOST_V4_LIST[v_host].dstPort,
                                    PX_HOST_V4_LIST[v_host].payload
                                    PX_HOST_V4_LIST_AFTR[v_host].srcPort,
                                    PX_HOST_V4_LIST_AFTR[v_host].dstPort,
                                    PX_HOST_V4_LIST_AFTR[v_host].payload
                                )
                            ),
                            v_ipv4Packet
@@ -1100,23 +1100,26 @@ module AtsDSLite_TestCases {
                            [] aftrPort.receive(
                                mdw_generalIpv6_extHdr_dst_ipv6Payload(
                                    c_ipip,
                                    PX_AFTR_GW_ADDRESS,                     // containing destination address indicating IPv6 AFTR GW address
                                    PX_AFTR_B4_ADDRESS,                     // containing destination address indicating IPv6 B4 address
                                    ?,
                                    ?                                       // containing unchanged IPv4 packet
                            )) -> value v_ipv6Packet { 
                                tc_ac.stop;
                                for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) {
//                                    var template (value) Ipv4Packet v_ipv4Packet;
//                                    if (decvalue(oct2bit(v_ipv6Packet.ipv6Payload.octetstringMsg), v_ipv4Packet) == 0) {
//                                        if (match(v_ipv4Packet, p_hostAftrDataMsgs[v_host].payload.ipv4Packet) == true) {
//                                            log("*** " & __SCOPE__ & ": INFO: Receives encapsulated IPv4 packet #", v_host, ". ***");
//                                            v_results[v_host] := true;
//                                            break;
//                                        }
//                                    }
                                    var template (value) Ipv4Packet v_ipv4Packet;
                                    if (decvalue(oct2bit(v_ipv6Packet.ipv6Payload.octetstringMsg), v_ipv4Packet) == 0) {
                                        if (
                                            (v_ipv4Packet.ipv4Hdr.sourceAddress == PX_HOST_V4_LIST_AFTR[v_host].srcAddress) and 
                                            (v_ipv4Packet.ipv4Hdr.destinationAddress != PX_HOST_V4_LIST_AFTR[v_host].dstAddress)
                                        ) {
                                            log("*** " & __SCOPE__ & ": INFO: Receives IPv6 packet #", v_host, ". ***");
                                            v_results[v_host] := true;
                                            break;
                                        }
                                    }
                                } // End of 'for' statement 
                                if (lengthof(v_results) == v_hostNum) { 
                                    log("*** " & __SCOPE__ & ": PASS: All encapsulated IPv6 packets were forwarded. ***");
                                if (lengthof(v_results) == v_hostNum) { // Check current result
                                    log("*** " & __SCOPE__ & ": PASS: All IPv6 packets were forwarded. ***");
                                } else {
                                    tc_ac.start;
                                    repeat;