Commit 189f6bc2 authored by tepelmann's avatar tepelmann
Browse files

Activate default for DHCPv6 to ignore other messages, e.g. Solicit, Advertise.

Added initial auxiliary functions - to be filled.
Minor changes.
parent b6723fd4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@
    
  } // end data
  
  group auxilary {
  group auxiliary {
    
    /**
     * @desc A unsigned 32bit timestamp
@@ -199,6 +199,6 @@
     */
    type charstring DomainName;
    
  } // end auxilary
  } // end auxiliary
  
} // end AtsCommon_DNS_CommonRfcs_TypesAndValues
+64 −4
Original line number Diff line number Diff line
@@ -13,6 +13,10 @@ module AtsDSLite_Functions {
        const 
            c_prDone, c_tbDone, c_poDone;
    };
    import from LibCommon_VerdictControl {
        type
            FncRetCode;
    };
    
    // LibIpv6
    import from LibIpv6_Interface_Templates all;
@@ -27,7 +31,8 @@ module AtsDSLite_Functions {
        type 
            DSLiteComponent, TestAdapter, 
            AFTRComponent, HostComponent, 
    	    DHCPv6Component, DNSComponent;
            DHCPv6Component, DNSComponent,
            InterCompDataMsg;
    };
    import from AtsCommon_DNS_CommonRfcs_TypesAndValues all;
    
@@ -124,6 +129,8 @@ module AtsDSLite_Functions {
            // Connect synchronisation ports
            f_connect4SelfOrClientSync();
            
            activate(a_dhcpDefault());
            
        } // End of function f_preamble_dhcpv6
        
        /**
@@ -286,6 +293,59 @@ module AtsDSLite_Functions {
            }
        } // End of altstep a_default 
        
        altstep a_dhcpDefault() runs on DHCPv6Component {
            [] dhcpv6Port.receive(DHCPv6Msg:?) { // Ignore these DHCPv6 messages
                if (tc_ac.running) {
                    tc_ac.stop;
                    tc_ac.start;
                }
                repeat;
            }
        } // End of altstep a_dhcpDefault
        
    } // End of group globalSteps
    
    group auxiliary {
        
        function f_getDHCPv6RetrievedIpv6Address(DHCPv6Msg p_dhcpv6Msg, out InterCompDataMsg.ipv6Address p_ipv6Address)
        return FncRetCode {
            var FncRetCode v_result := e_error;
            var integer i;
            var integer v_optionsLength := lengthof(p_dhcpv6Msg.options);
            
            for (i:=0; i<v_optionsLength; i:=i + 1) {
                //TODO
            }
            
            return v_result;
        }
        
        function f_getDHCPv6RetrievedAftrName(DHCPv6Msg p_dhcpv6Msg, out InterCompDataMsg.aftrName p_aftrName)
        return FncRetCode {
            var FncRetCode v_result := e_error;
            var integer i;
            var integer v_optionsLength := lengthof(p_dhcpv6Msg.options);
            
            for (i:=0; i<v_optionsLength; i:=i + 1) {
                //TODO
            }
            
            return v_result;
        }
        
        function f_getDHCPv6RetrievedDomainSearchList(DHCPv6Msg p_dhcpv6Msg, out InterCompDataMsg.domainSearchList p_dsl)
        return FncRetCode {
            var FncRetCode v_result := e_error;
            var integer i;
            var integer v_optionsLength := lengthof(p_dhcpv6Msg.options);
            
            for (i:=0; i<v_optionsLength; i:=i + 1) {
                //TODO
            }
            
            return v_result;
        }
        
    } // End of group auxiliary
    
} // End of module AtsDSLite_Functions
+8 −8
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ module AtsDSLite_Interfaces {
    };
    import from LibIpv6_CommonRfcsDhcp_TypesAndValues {
        type 
            DHCPv6Msg 
            DHCPv6Msg, DomainName, DomainNameList 
    };
    import from LibIpv6_Rfc6334Dhcp_TypesAndValues {
        type AFTRNameOption
@@ -65,7 +65,7 @@ module AtsDSLite_Interfaces {
            /** DHCPv6 port for DHCPv6Msg message exchanges */
            port DHCPv6Port dhcpv6Port;
            /** DNSv4 port for DNSv4Msg message exchanges */
            port DNSv4Port dnsPort;
            port DNSPort dnsPort;
            /** AFTR port */
            port Ipv6Port aftrPort;
            /** Host IPv6 port to simulate IPv6 client */
@@ -96,9 +96,9 @@ module AtsDSLite_Interfaces {
        /**
         * @desc 
         */
        type port DNSv4Port message {
        type port DNSPort message {
            inout DnsMsg
        } // End of port DNSv4Port
        } // End of port DNSPort
        
        /**
         * @desc Port for inter-component data exchanges
@@ -114,9 +114,9 @@ module AtsDSLite_Interfaces {
         * @member vc_dnsIPv6AddressThe DNS IPv6 address
         */
        type record InterCompDataMsg {
            Ipv6Address     aftrIPv6Address,
            AFTRNameOption  aftrNameOption,
            Ipv6Address     dnsIPv6Address
            Ipv6Address     ipv6Address,
            DomainName      aftrName,
            DomainNameList  domainSearchList
        } // End of type InterCompDataMsg
        
        /**
@@ -188,7 +188,7 @@ module AtsDSLite_Interfaces {
         */
        type component DNSComponent extends SelfSyncComp {
            /** IPv4 message port */
            port DNSv4Port dnsPort;
            port DNSPort dnsPort;
            
            port InterCompDataPort dataPort;
            
+18 −17
Original line number Diff line number Diff line
@@ -13,6 +13,10 @@ module AtsDSLite_Templates {
        type
            OptionRequestOption 
    };
    import from LibIpv6_Rfc3646Dhcp_TypesAndValues {
        type
            DomainSearchListOption 
    };
    import from LibIpv6_Rfc6334Dhcp_TypesAndValues {
        type AFTRNameOption
    };
@@ -50,11 +54,11 @@ module AtsDSLite_Templates {
            } // End of template mw_dhcpv6_dummy
            
            /**
             * @desc Genercic receive DHCP Client/Sollicit message
             * @desc Genercic receive DHCP Client/Request message
             * @reference http://tools.ietf.org/html/rfc3315#section-6
             */  
            template (present) DHCPv6Msg mdw_dhcpv6_Sollicit_dummy modifies mw_dhcpv6_dummy := {
                msgType     := e_SOLICIT
            template (present) DHCPv6Msg mdw_dhcpv6_Request_dummy modifies mw_dhcpv6_dummy := {
                msgType     := e_REQUEST
            } // End of template mdw_dhcpv6_Sollicit_dummy
            
            /**
@@ -75,7 +79,7 @@ module AtsDSLite_Templates {
             */  
            template (present) DHCPv6Options mw_dhcpv6_options_dummy := {
                {
                    ia_address      := ?
                    ia_na           := ?
                },
                {
                    optionRequest   := ?
@@ -111,13 +115,13 @@ module AtsDSLite_Templates {
        group dhcpv6MessagesRecvTemplates {
            
            /**
             * @desc Receive DHCP Client/Sollicit message to check DHCPv6 options values
             * @desc Receive DHCP Client/Request message to check DHCPv6 options values
             * @param p_options Expected DHCPv6 options
             * @reference http://tools.ietf.org/html/rfc3315#section-6
             */  
            template (present) DHCPv6Msg mdw_dhcpv6_Sollicit_options(
            template (present) DHCPv6Msg mdw_dhcpv6_Request_options(
                                                                      in template (present) DHCPv6Options p_options
            ) modifies mw_dhcpv6_dummy := {
            ) modifies mdw_dhcpv6_Request_dummy := {
                options := p_options
            } // End of template mdw_dhcpv6_Sollicit_options
            
@@ -127,7 +131,7 @@ module AtsDSLite_Templates {
             */  
            template (present) DHCPv6Msg mdw_dhcpv6_reply_ipv6Address(
                                                                      in template (present) DHCPv6Options p_options
            ) modifies mw_dhcpv6_dummy := {
            ) modifies mdw_dhcpv6_reply_dummy := {
                options := p_options
            } // End of template mdw_dhcpv6_reply_dummy
            
@@ -152,27 +156,24 @@ module AtsDSLite_Templates {
            /**
             * @desc Genercic receive DHCPv6 AFTR-name option
             */  
            template (present) OptionRequestOption mw_dhcpv6_optionRequestOption_aftrName 
            template (present) OptionRequestOption mdw_dhcpv6_optionRequestOption_aftrName 
            modifies mw_dhcpv6_optionRequestOption_dummy := {
                requestedOptionCodes    := superset(e_OPTION_AFTR_NAME)
            } // End of template mw_dhcpv6_optionRequestOption_aftrName
            
            /**
             * @desc Receive template for DHCPv6 options 'ORO'
             * @param p_optionRequest
             * @desc Receive template including at least the DHCPv6 options 'e_OPTION_AFTR_NAME' and 'OPTION_DOMAIN_LIST'
             * @param p_domainSearchListOption
             * @reference 
             */
            template (present) DHCPv6Options mdw_dhcpv6_reply_options(
                                                                      in template (present) DHCPv6OptionRaw p_rawOption
            template (present) DHCPv6Options mw_dhcpv6_aftr_dsl_options(
                                                                      in template (present) DomainSearchListOption p_domainSearchListOption
            ) := {
                {
                    ia_address      := ?
                },
                {
                    aftrName        := ?
                },
                {
                    raw := p_rawOption
                    domainSearchList := p_domainSearchListOption
                },
                *
            } // End of template mdw_dhcpv6_options_optionRequest
+27 −24
Original line number Diff line number Diff line
@@ -106,16 +106,16 @@ module AtsDSLite_TestCases {
                        // Clause 'Initial conditions'
                        f_preamble_dhcpv6();
                        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                        log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                        
                        // Test Body
                        // Clause 'when': the IUT sends a DHCPv6 Request to DHCPv6 Server
                        tc_ac.start;
                        alt {
                            [] dhcpv6Port.receive(
                                mdw_dhcpv6_Sollicit_options(                    // Await Sollicit DHCPv6 Request to DHCPv6 Server
                                mdw_dhcpv6_Request_options(                    // Await Sollicit DHCPv6 Request to DHCPv6 Server
                                    mdw_dhcpv6_options_optionRequest(           //     containing the Option field
                                        mw_dhcpv6_optionRequestOption_aftrName  //         indicating the AFTR-name DHCPv6 Option (value 64)
                                        mdw_dhcpv6_optionRequestOption_aftrName  //         indicating the AFTR-name DHCPv6 Option (value 64)
                            ))) { 
                                tc_ac.stop;
                                // Nothing to do
@@ -180,14 +180,14 @@ module AtsDSLite_TestCases {
                    vc_dhcpv6Component.start(f_TC_DSLITE_B4_GWA_BV_002_dhcpv6());
                    vc_dnsComponent.start(f_TC_DSLITE_B4_GWA_BV_002_dns());
                    
                    f_serverSyncNClientsAndStop(2, { c_prDone, c_tbDone, c_poDone });
                    
                    // Test Body
                    // Clause 'when': 
                    action("the IUT goes online");
                    
                    // Clause 'then': Nothing to do, refer to a_default
                    
                    f_serverSyncNClientsAndStop(2, { c_prDone, c_tbDone, c_poDone });
                    
                    // Postamble
                    f_cf01Down_B4();
                    
@@ -211,18 +211,18 @@ module AtsDSLite_TestCases {
                        tc_ac.start;
                        alt {
                            [] dhcpv6Port.receive(
                                mdw_dhcpv6_Sollicit_options(                    // Await Sollicit DHCPv6 Request to DHCPv6 Server
                                mdw_dhcpv6_Request_options(                    // Await DHCPv6 Request to DHCPv6 Server
                                    mdw_dhcpv6_options_optionRequest(           //     containing the Option field
                                        mw_dhcpv6_optionRequestOption_aftrName  //         indicating the AFTR-name DHCPv6 Option (value 64)
                                        mdw_dhcpv6_optionRequestOption_aftrName  //         indicating the AFTR-name DHCPv6 Option (value 64)
                            ))) { 
                                tc_ac.stop;
                                // Nothing to do
                                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                                log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                            }
                            [] tc_ac.timeout {
                                f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
                                log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                                log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***");
                            }
                        } // End of 'altstep' statement
                        
@@ -232,25 +232,28 @@ module AtsDSLite_TestCases {
                        alt {
                            [] dhcpv6Port.receive(                              // Await Reply DHCPv6 message to store IPv6 addresses
                                mdw_dhcpv6_reply_ipv6Address(
                                    mdw_dhcpv6_reply_options(? // TODO
                                    mw_dhcpv6_aftr_dsl_options(? // TODO
                            ))) -> value v_dhcpMsg {
                                tc_ac.stop;
                                // Prepare data to be sent to the DSN component
                                v_data.aftrIPv6Address := v_dhcpMsg.options[0].ia_address.ipv6Address; // FIXME To be checke
                                v_data.aftrNameOption := v_dhcpMsg.options[0].aftrName;
                                // TODO v_data.dnsIPv6Address := 
                                // Send data to the DSN component
                                dataPort.send(v_data);
                                // Prepare data to be sent to the DNS component
                                if (f_getDHCPv6RetrievedIpv6Address(v_dhcpMsg, v_data.ipv6Address)==e_error) {
	                                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
	                                log("*** " & __SCOPE__ & ": FAIL: Message was not received in time. ***");
                                }
                            [] dhcpv6Port.receive(DHCPv6Msg:?) { // Ingmore these DHCPv6 messages
                                repeat;
                                f_getDHCPv6RetrievedAftrName(v_dhcpMsg, v_data.aftrName);
                                f_getDHCPv6RetrievedDomainSearchList(v_dhcpMsg, v_data.domainSearchList);
                                // Send data to the DNS component
                                dataPort.send(v_data);
                            }
                            [] tc_ac.timeout {
                                f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                                log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                                log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***");
                            }
                        } // End of 'altstep' statement
                        
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        log("*** " & __SCOPE__ & ": PASS: Successfully received DHCPv6 Reply from the DHCPv6 Server. ***");
                        
                        // Postamble
                        f_postamble_dhcpv6();
                        f_selfOrClientSyncAndVerdict(c_poDone, e_success);
@@ -273,7 +276,7 @@ module AtsDSLite_TestCases {
                        // Clause 'Initial conditions'
                        f_preamble_dns();
                        f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                        log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                        log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                        
                        // Test Body
                        // Clause 'then': the IUT sends a DNS query
@@ -380,7 +383,7 @@ module AtsDSLite_TestCases {
                                tc_ac.stop;
                                // TODO
                                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                                log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                            }
                            [] tc_ac.timeout {
                                f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);