Commit d17ad6aa authored by garciay's avatar garciay
Browse files

Terminated TC_DSLITE_B4_BF_BV_001

parent 5511efd0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -88,9 +88,9 @@ module AtsCommon_Interfaces {
            
            /**
             * @desc Message description for inter-component data exchanges
             * @member vc_aftrIPv6Address The AFTR IPv6 address
             * @member vc_aftrNameOption The AFTR-name option
             * @member vc_dnsIPv6AddressThe DNS IPv6 address
             * @member ipv6Address      The AFTR IPv6 address
             * @member aftrName         The AFTR-name option
             * @member domainSearchList DNS IPv6 address
             */
            type record InterCompDataMsg {
                Ipv6Address     ipv6Address,
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ module AtsCommon_Templates {
                windowSize       := ?,
                checksum        := ?,
                urgentPointer   := ?,
                options         := ?,
                options         := *,
                pad             := *,
                payload         := ?
            } // End of template mw_tcp_packet
+37 −39
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ module AtsDSLite_Functions {
            InterCompDataMsg;
    };
    import from AtsCommon_Functions all;
    import from AtsCommon_DNS_CommonRfcs_TypesAndValues all;
    
    // DSLite
    import from AtsDSLite_Interfaces {
@@ -46,7 +47,6 @@ module AtsDSLite_Functions {
            DSLiteComponent, 
            AFTRComponent, HostComponent;
    };
    import from AtsCommon_DNS_CommonRfcs_TypesAndValues all;
    
    group initialiseFunctions {
        
@@ -67,6 +67,7 @@ module AtsDSLite_Functions {
                for (v_host:=0; v_host<v_hosts; v_host:=v_host + 1) {
                    connect(vc_hostComponents[v_host]:ipv6Port, self:ipv6HostPort); 
                    connect(vc_hostComponents[v_host]:ipv4Port, self:ipv4HostPort); 
                    connect(vc_hostComponents[v_host]:dataPort, vc_aftrComponent:dataPort); 
                }
            } 
            if (vc_dhcpv6Component != null) { 
@@ -160,44 +161,6 @@ module AtsDSLite_Functions {
        
    } // End of group postambleFunctions
    
    group helpers {
        
        /**
         * @desc    This sends an Tcp packet from an dual stack IPv4/IPv6 node to 
         *          any NUT. Prior it modifies
         * @remark  The template passed in must NOT contain any matching expressions!
         * @param   p_ipv4Packet Ipv4 packet value or template with echo request to be sent
         * @return  execution status
        */
        function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet) 
        runs on HostComponent
        return FncRetCode {
            var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet);
            
            if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) {
                v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum (
                    v_ipPkt.ipv4Payload
                );
            }
            
            //Build IPv4 Packet
            //IHL is set in templates
            // Update the total length                  
            v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt);
            
            // Compute header checksum (HCS)
            v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs (
                v_ipPkt.ipv4Hdr
            );
            
            //send
            ipv4Port.send(v_ipPkt);
        
            return e_success;
        }   // End of function f_sendIpv4Packet
        
    } // End of group helpers
    
    group globalSteps {
        
        /**
@@ -319,6 +282,41 @@ module AtsDSLite_Functions {
            return e_error;
        }
        
        /**
         * @desc    This sends an Tcp packet from an dual stack IPv4/IPv6 node to 
         *          any NUT. Prior it modifies
         * @remark  The template passed in must NOT contain any matching expressions!
         * @param   p_ipv4Packet Ipv4 packet value or template with echo request to be sent
         * @return  execution status
        */
        function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet, out Ipv4Packet p_result) 
        runs on HostComponent
        return FncRetCode {
            var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet);
            
            if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) {
                v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum (
                    v_ipPkt.ipv4Payload
                );
            }
            
            //Build IPv4 Packet
            //IHL is set in templates
            // Update the total length                  
            v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt);
            
            // Compute header checksum (HCS)
            v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs (
                v_ipPkt.ipv4Hdr
            );
            
            //send
            p_result := v_ipPkt;
            ipv4Port.send(v_ipPkt);
        
            return e_success;
        }   // End of function f_sendIpv4Packet
        
    } // End of group auxiliary
    
} // End of module AtsDSLite_Functions
+28 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ module AtsDSLite_Interfaces {
    import from LibIpv6_Interface_TypesAndValues {
        type 
            LibIpv6Node,
            Ipv4Port, Ipv6Port 
            Ipv4Port, Ipv6Port, 
            Ipv4Packet 
    };
    import from LibIpv6_CommonRfcsDhcp_TypesAndValues {
        type 
@@ -84,6 +85,28 @@ module AtsDSLite_Interfaces {
    
    group componentDesc {
        
        group componentPorts {
            
            /**
             * @desc Port for inter-component data exchanges
             */
            type port HostAftrDataPort message {
                inout HostAftrDataMsg
            } // End of port HostAftrDataPort
            
            /**
             * @desc Message description for inter-component data exchanges
             * @member vc_aftrIPv6Address The AFTR IPv6 address
             * @member vc_aftrNameOption The AFTR-name option
             * @member vc_dnsIPv6AddressThe DNS IPv6 address
             */
            type record HostAftrDataMsg {
                int         hostId,
                Ipv4Packet  packet
            } // End of type HostAftrDataMsg
            
        } // End of group componentPorts
        
        /**
         * @desc 
         * @member ipv6Port
@@ -97,6 +120,8 @@ module AtsDSLite_Interfaces {
            port Ipv6Port ipv6Port;
            /** IPv4 message port */
            port Ipv4Port ipv4Port;
            /** Inter-component communication port */
            port HostAftrDataPort dataPort;
            /** Timer used for expected received message */
            timer tc_ac:= PX_TAC;
            /** Timer used for unexpected received message */
@@ -115,6 +140,8 @@ module AtsDSLite_Interfaces {
        type component AFTRComponent extends SelfSyncComp {
            /** IPv6 message port */
            port Ipv6Port aftrPort;
            /** Inter-component communication port */
            port HostAftrDataPort dataPort;
            /** Timer used for expected received message */
            timer tc_ac:= PX_TAC;
            /** Timer used for unexpected received message */
+23 −4
Original line number Diff line number Diff line
@@ -6,24 +6,43 @@
module AtsDSLite_Pixits {
    
    // LibCommon
    import from LibCommon_DataStrings {
        const c_16ZeroBytes
    };
    
    // LibIPv6
    import from LibIpv6_CommonRfcs_TypesAndValues {
        type Ipv6Address
    };
    
    // DSLite
    import from AtsDSLite_TypesAndValues all;
    
    /**
     * @desc Indicates the IPv6 address of the AFTR equipment
     */
    modulepar Ipv6Address PX_AFTR_GW_ADDRESS := c_16ZeroBytes;
    
    /**
     * @desc Defines a list of IPv4 host services
     * @see TC_DSLITE_B4_BF_BV_001
     */
    modulepar HostV4Descriptions PX_HOST_V4_LIST := {
        {
            srcAddress  := '91fea0ed'O, 
            srcAddress  := '91fea0ed'O, // Containing source address indicating a private IPv4 address
            
            srcPort     := 3372,
            dstAddress  := '41d0e4df'O,
            dstAddress  := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts
            
            dstPort     := 80,
            payload     := {
                rawPayload := 'CAFEDECA'O // TODO To be enhanced
            }
        }, // Host #0
        {
            srcAddress  := '91fea0ed'O, 
            srcAddress  := '91fea0ed'O,  // Containing source address indicating a private IPv4 address
            srcPort     := 3372,
            dstAddress  := '41d0e4df'O,
            dstAddress  := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts
            dstPort     := 80,
            payload     := {
                rawPayload := 'CAFEDECA'O // TODO To be enhanced
Loading