Beispiel #1
0
        // Here we will switch based on the router
        private void SetupAccessPoints()
        {
            bool bSameSSID = false;

            APConfigs = new List <APConfig>();

            APConfigs.Add(WlanAccessPointHelper.CreateWirelessAccessPoint(
                              m_AP1Config24GHz.Auth, m_AP1Config24GHz.Cipher, m_AP1Config24GHz.Phy, "TestPassphrase2",
                              m_AP1Config5GHz.Auth, m_AP1Config5GHz.Cipher, m_AP1Config5GHz.Phy, "TestPassphrase1"));

            if (m_ScanTestOptions.HasFlag(SCAN_TEST_OPTIONS.DuplicateSSIDs))
            {
                // Both APs should have same SSID
                APConfigs.Add(WlanAccessPointHelper.DuplicateAPForRoaming(APConfigs[0]));
                bSameSSID = true;
            }
            else
            {
                APConfigs.Add(WlanAccessPointHelper.CreateWirelessAccessPoint(
                                  m_AP2Config24GHz.Auth, m_AP2Config24GHz.Cipher, m_AP2Config24GHz.Phy, "TestPassphrase2",
                                  m_AP2Config5GHz.Auth, m_AP2Config5GHz.Cipher, m_AP2Config5GHz.Phy, "TestPassphrase1"));
            }

            APConfigs[1].BSSID_24GHZ = WlanAccessPointHelper.GenerateBSSID();
            APConfigs[1].BSSID_5GHZ  = WlanAccessPointHelper.GenerateBSSID();

            APConfigs[0].RadioChannel24Ghz = m_AP1Config24GHz.Channel;
            APConfigs[0].RadioChannel5Ghz  = m_AP1Config5GHz.Channel;

            APConfigs[1].RadioChannel24Ghz = m_AP2Config24GHz.Channel;
            APConfigs[1].RadioChannel5Ghz  = m_AP2Config5GHz.Channel;

            APConfigs[0].BeaconEnabled_24GHZ = !m_AP1Config24GHz.IsHidden;
            APConfigs[0].BeaconEnabled_5GHZ  = !m_AP1Config5GHz.IsHidden;
            APConfigs[1].BeaconEnabled_24GHZ = !m_AP2Config24GHz.IsHidden;
            APConfigs[1].BeaconEnabled_5GHZ  = !m_AP2Config5GHz.IsHidden;

            // For the same SSID case, we want the APs to be configured with the specific SSID
            if (bSameSSID)
            {
                APConfigs[0].SmartCompare = false;
                APConfigs[1].SmartCompare = false;
            }

            Guid[] routerList = new Guid[2];
            routerList[0] = routers[0];
            routerList[1] = routers[1];

            Collection <ConfiguredSSIDs> configuredSSIDs = new Collection <ConfiguredSSIDs>();

            LogMajor("Configuring Router0");
            LogMajor("Configuring Router1");

            APConfig[] apConfigArray = new APConfig[APConfigs.Count];
            for (int index = 0; index < APConfigs.Count; index++)
            {
                apConfigArray[index] = APConfigs[index];
            }

            AC.ApplyConfigurationParallel(routerList, apConfigArray, out configuredSSIDs);

            if (!bSameSSID)
            {
                APConfigs[0].SSID_24GHZ = configuredSSIDs[0].TwoPoint4GhzSSID;
                APConfigs[0].SSID_5GHZ  = configuredSSIDs[0].FiveghzSSID;
                APConfigs[1].SSID_24GHZ = configuredSSIDs[1].TwoPoint4GhzSSID;
                APConfigs[1].SSID_5GHZ  = configuredSSIDs[1].FiveghzSSID;
            }

            LogMajor("Configured Router0 SSID:" + APConfigs[0].SSID_24GHZ + "/" + APConfigs[0].SSID_5GHZ);
            LogMajor("Configured Router1 SSID:" + APConfigs[1].SSID_24GHZ + "/" + APConfigs[1].SSID_5GHZ);


            Log("Reading the BSSIDs configured on router for validation when connected");
            for (int i = 0; i < 2; i++)
            {
                APConfigs[i].BSSID_24GHZ = AC.GetAccessPointBSSID(routers[i], false);
                LogMajor("BSSID(" + APConfigs[i].SSID_24GHZ + ") = " + APConfigs[i].BSSID_24GHZ);
                LogMajor("Authentication(" + APConfigs[i].SSID_24GHZ + ") = " + APConfigs[i].Authentication_24GHZ.ProfileValue);
                LogMajor("Encryption(" + APConfigs[i].SSID_24GHZ + ") = " + APConfigs[i].Encryption_24GHZ.ProfileValue);
                LogMajor("Phy(" + APConfigs[i].SSID_24GHZ + ") = " + APConfigs[i].PhyType_24GHZ.ProfileValue);
                LogMajor("Channel(" + APConfigs[i].SSID_24GHZ + ") = " + APConfigs[i].RadioChannel24Ghz);
                LogMajor("Hidden(" + APConfigs[i].SSID_24GHZ + ") = " + ((APConfigs[i].BeaconEnabled_24GHZ == false) ? "Yes" : "No"));

                APConfigs[i].BSSID_5GHZ = AC.GetAccessPointBSSID(routers[i], true);
                LogMajor("BSSID(" + APConfigs[i].SSID_5GHZ + ")= " + APConfigs[i].BSSID_5GHZ);
                LogMajor("AuthenticationMethod(" + APConfigs[i].SSID_5GHZ + ") = " + APConfigs[i].Authentication_5GHZ.ProfileValue);
                LogMajor("Encryption(" + APConfigs[i].SSID_5GHZ + ") = " + APConfigs[i].Encryption_5GHZ.ProfileValue);
                LogMajor("Phy(" + APConfigs[i].SSID_5GHZ + ") = " + APConfigs[i].PhyType_5GHZ.ProfileValue);
                LogMajor("Channel(" + APConfigs[i].SSID_5GHZ + ") = " + APConfigs[i].RadioChannel5Ghz);
                LogMajor("Hidden(" + APConfigs[i].SSID_5GHZ + ") = " + ((APConfigs[i].BeaconEnabled_5GHZ == false) ? "Yes" : "No"));
            }
        }
Beispiel #2
0
        public void BasicAssociationTest()
        {
            string variationName        = "Basic Association test";
            string variationDescription = "Associate to first AP with manual profile - Turn Off Radio - Associate to second AP with manual profile";

            Helpers.LogVariationStart(variationName, variationDescription);

            Log("Deleting all wlan profiles");
            DeleteProfiles();

            Log("Starting Echo Services");
            CreateEchoServer();

            //Radios of all APs are turned on by the SetupRoutersIfNeeded();
            Log("Setting up Routers");
            SetupRoutersIfNeeded();

            string   Profile;
            APConfig ap1Config = m_APConfigs[0];
            APConfig ap2Config = m_APConfigs[1];
            string   ap1_ssid  = ap1Config.SSID_24GHZ;
            string   ap2_ssid  = (m_DeviceSupports5GHz) ? ap2Config.SSID_5GHZ : ap2Config.SSID_24GHZ;

            //In general the typical usage pattern of radio states for APs should be that they are only turned on when needed
            // as this best matches the scenario where the user moves from location A to location B.

            //Turn off AP1 5 GHz (never used)
            SetRadioState(0, false, true);

            //Turn off AP2 (both 2.4 and 5, will be used later)
            SetRadioState(1, false, false);
            SetRadioState(1, false, true);

            LogMajor("Associate with manual profile to " + ap1_ssid + " - Turn AP off - Associate with manual profile to " + ap2_ssid);

            // Create a 2.4 GHz profile for first router.
            Log("Creating a manual profile for SSID " + ap1_ssid);
            Profile = CreateProfile(0, ConnectionMode.Manual, false);

            LogMajor("Connecting to " + ap1_ssid);
            if (!ConnectToAP(ap1_ssid))
            {
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(0, false))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(0, false))
            {
                return;
            }
            //Turn off AP1 2.4 GHz (not needed anymore)
            SetRadioState(0, false, false);

            m_WlanApi.DeleteProfile(m_TestInterface.Id, ap1_ssid);

            //AP2 next

            //Turn on AP2
            SetRadioState(1, true, m_DeviceSupports5GHz);

            // Create a profile for second router.
            Log("Creating a manual profile for SSID " + ap2_ssid);
            Profile = CreateProfile(1, ConnectionMode.Manual, m_DeviceSupports5GHz);

            LogMajor("Connecting to " + ap2_ssid);
            if (!ConnectToAP(ap2_ssid))
            {
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(1, m_DeviceSupports5GHz))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(1, m_DeviceSupports5GHz))
            {
                return;
            }

            m_WlanApi.DeleteProfile(m_TestInterface.Id, ap2_ssid);

            Helpers.LogVariationStop(variationName);
        }
Beispiel #3
0
        private void AssociateDifferentAP(int firstRouterIndex, int secondRouterIndex, bool b5GhzFirstRouter, bool b5GhzSecondRouter, bool bHibernate)
        {
            Log("Deleting all wlan profiles");
            DeleteProfiles();

            Log("Starting Echo Services");
            CreateEchoServer();

            //Radios of all APs are turned on by the SetupRoutersIfNeeded();
            Log("Setting up Routers");
            SetupRoutersIfNeeded();

            string   Profile;
            APConfig ap1Config = m_APConfigs[firstRouterIndex];
            APConfig ap2Config = m_APConfigs[secondRouterIndex];
            string   ap1_ssid  = (b5GhzFirstRouter) ? ap1Config.SSID_5GHZ : ap1Config.SSID_24GHZ;
            string   ap2_ssid  = (b5GhzSecondRouter) ? ap2Config.SSID_5GHZ : ap2Config.SSID_24GHZ;
            string   ap2_bssid = (b5GhzSecondRouter) ? ap2Config.BSSID_5GHZ : ap2Config.BSSID_24GHZ;

            //Turn off all APs
            SetRadioState(0, false, false);
            SetRadioState(0, false, true);
            SetRadioState(1, false, false);
            SetRadioState(1, false, true);
            //Turn on AP used for this run
            SetRadioState(firstRouterIndex, true, b5GhzFirstRouter);

            LogMajor("Associate with manual profile to " + ap1_ssid + " - Enter lower powerstate turn off first AP and turn on second AP - Wake - Connect with manual profile to " + ap2_ssid);

            Log("Creating a manual profile for SSID " + ap1_ssid);
            Profile = CreateProfile(firstRouterIndex, ConnectionMode.Manual, b5GhzFirstRouter);

            LogMajor("Connecting to " + ap1_ssid);
            if (!ConnectToAP(ap1_ssid))
            {
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(firstRouterIndex, b5GhzFirstRouter))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(firstRouterIndex, b5GhzFirstRouter))
            {
                return;
            }

            int delayInSeconds = 30;
            int ScenarioToRun  = 1;

            //switch
            LogMajor("Putting machine into lower power state for 2 minutes. " + ap1_ssid + " will turn off and " + ap2_ssid + "will turn on");
            m_ApConfigClient.StartApScenarioAssoc(m_Routers[secondRouterIndex], m_Routers[firstRouterIndex], ScenarioToRun, delayInSeconds, b5GhzSecondRouter, b5GhzFirstRouter);

            m_ApConfigClient.Disconnect(); //must disconnect from ap controller before going to sleep
            if (bHibernate)
            {
                LogMajor("Entering hibernate");
                m_PowerManager.Sleep(120 * 1000, SleepState.S4);
            }
            else
            {
                LogMajor("Entering deepest supported sleep");
                m_PowerManager.DeepestSleep(120 * 1000);
            }
            LogMajor("Sleeping for 30 seconds after wake up");
            Wlan.Sleep(30 * 1000);      // 30s
            m_ApConfigClient.Connect(); //must reconnect to ap controller after waking up

            //scan for new AP
            Helpers.IssueScanWaitForSSIDToAppearInScanList(m_WlanApi, m_TestInterface, ap2_ssid, ap2_bssid, 60, 500);

            //connect to next AP.
            Log("Creating a manual profile for SSID " + ap2_ssid);
            Profile = CreateProfile(secondRouterIndex, ConnectionMode.Manual, b5GhzSecondRouter);

            LogMajor("Connecting to " + ap2_ssid);
            if (!ConnectToAP(ap2_ssid))
            {
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(secondRouterIndex, b5GhzSecondRouter))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(secondRouterIndex, b5GhzSecondRouter))
            {
                return;
            }

            m_WlanApi.DeleteAllProfiles(m_TestInterface.Id);
        }
Beispiel #4
0
        private void AssociateSameAP(int routerIndex, bool b5Ghz, bool bHibernate)
        {
            Log("Deleting all wlan profiles");
            DeleteProfiles();

            Log("Starting Echo Services");
            CreateEchoServer();

            //Radios of all APs are turned on by the SetupRoutersIfNeeded();
            Log("Setting up Routers");
            SetupRoutersIfNeeded();

            string   Profile;
            APConfig apConfig = m_APConfigs[routerIndex];
            string   ap_ssid  = (b5Ghz) ? apConfig.SSID_5GHZ : apConfig.SSID_24GHZ;

            //Turn off all APs
            SetRadioState(0, false, false);
            SetRadioState(0, false, true);
            SetRadioState(1, false, false);
            SetRadioState(1, false, true);
            //Turn on AP used for this run
            SetRadioState(routerIndex, true, b5Ghz);

            LogMajor("Associate with manual profile to " + ap_ssid + " - Enter lower powerstate - Wake - Verify connectivity to same AP");

            Log("Creating a manual profile for SSID " + ap_ssid);
            Profile = CreateProfile(routerIndex, ConnectionMode.Manual, b5Ghz);

            LogMajor("Connecting to " + ap_ssid);
            if (!ConnectToAP(ap_ssid))
            {
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(routerIndex, b5Ghz))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(routerIndex, b5Ghz))
            {
                return;
            }

            m_ApConfigClient.Disconnect(); //must disconnect from ap controller before going to sleep
            if (bHibernate)
            {
                LogMajor("Entering hibernate");
                m_PowerManager.Sleep(120 * 1000, SleepState.S4);
            }
            else
            {
                LogMajor("Entering deepest supported sleep");
                m_PowerManager.DeepestSleep(120 * 1000);
            }
            LogMajor("Sleeping for 30 seconds after wake up");
            Wlan.Sleep(30 * 1000);      // 30s
            m_ApConfigClient.Connect(); //must reconnect to ap controller after waking up

            if (!Helpers.IsConnected(m_WlanApi, m_TestInterface))
            {
                LogError("After resuming system not connected to " + ap_ssid);
                return;
            }

            LogMajor("Validating association bssid");
            if (!ValidateRadioAssociation(routerIndex, b5Ghz))
            {
                return;
            }
            LogMajor("Validating connection by connecting to echo services and performing echo");
            if (!PerformEcho(routerIndex, b5Ghz))
            {
                return;
            }

            m_WlanApi.DeleteAllProfiles(m_TestInterface.Id);
        }
Beispiel #5
0
        private void SetupAccessPoints()
        {
            Log(String.Format(CultureInfo.InvariantCulture, "ASSOCIATION_VARIATION: Setup {0}", m_AssocTestOptions.ToString()));

            m_APConfigs = new Collection <APConfig>();

            // FIPS mode only phys
            if (m_AssociationConfiguration.FIPSMode)
            {
                if (m_AssociationConfiguration.TestNFIPS)
                {
                    //If TestNFIPS is set then use n phy regardless of what it was before
                    m_AP1Config24GHz.Phy = PhyType.n;
                    m_AP1Config5GHz.Phy  = PhyType.n;

                    m_AP2Config24GHz.Phy = PhyType.n;
                    m_AP2Config24GHz.Phy = PhyType.n;
                }
                else
                {
                    //If TestNFIPS not set then need to downgrade any n phy.
                    if (m_AP1Config24GHz.Phy == PhyType.n)
                    {
                        m_AP1Config24GHz.Phy = PhyType.g;
                    }
                    if (m_AP1Config5GHz.Phy == PhyType.n)
                    {
                        m_AP1Config5GHz.Phy = PhyType.a;
                    }
                    if (m_AP2Config24GHz.Phy == PhyType.n)
                    {
                        m_AP2Config24GHz.Phy = PhyType.g;
                    }
                    if (m_AP2Config5GHz.Phy == PhyType.n)
                    {
                        m_AP2Config5GHz.Phy = PhyType.a;
                    }
                }
            }


            m_APConfigs.Add(WlanAccessPointHelper.CreateWirelessAccessPoint(
                                m_AP1Config24GHz.Auth, m_AP1Config24GHz.Cipher, m_AP1Config24GHz.Phy, "1234567890",
                                m_AP1Config5GHz.Auth, m_AP1Config5GHz.Cipher, m_AP1Config5GHz.Phy, "1234567890"));

            m_APConfigs[0].RadioChannel24Ghz = m_AP1Config24GHz.Channel;
            m_APConfigs[0].RadioChannel5Ghz  = m_AP1Config5GHz.Channel;

            m_APConfigs.Add(WlanAccessPointHelper.CreateWirelessAccessPoint(
                                m_AP2Config24GHz.Auth, m_AP2Config24GHz.Cipher, m_AP2Config24GHz.Phy, "1234567890",
                                m_AP2Config5GHz.Auth, m_AP2Config5GHz.Cipher, m_AP2Config5GHz.Phy, "1234567890"));

            m_APConfigs[1].RadioChannel24Ghz = m_AP2Config24GHz.Channel;
            m_APConfigs[1].RadioChannel5Ghz  = m_AP2Config5GHz.Channel;

            //set hidden.
            m_APConfigs[0].BeaconEnabled_24GHZ = !m_AP1Config24GHz.IsHidden;
            m_APConfigs[0].BeaconEnabled_5GHZ  = !m_AP1Config5GHz.IsHidden;
            m_APConfigs[1].BeaconEnabled_24GHZ = !m_AP2Config24GHz.IsHidden;
            m_APConfigs[1].BeaconEnabled_5GHZ  = !m_AP2Config5GHz.IsHidden;

            // We only use Enterprise on second router. Setting both
            m_Phase1Auth[0] = m_AP2Config24GHz.EapPhase1Type;
            m_Phase2Auth[0] = m_AP2Config24GHz.EapPhase2Type;

            m_Phase1Auth[1] = m_AP2Config24GHz.EapPhase1Type;
            m_Phase2Auth[1] = m_AP2Config24GHz.EapPhase2Type;

            m_APConfigs[0].RadiusIPAddress_24GHZ = m_AssociationConfiguration.ServiceAPChannelAddress;
            m_APConfigs[1].RadiusIPAddress_24GHZ = m_AssociationConfiguration.ServiceAPChannelAddress;
            m_APConfigs[0].RadiusIPAddress_5GHZ  = m_AssociationConfiguration.ServiceAPChannelAddress;
            m_APConfigs[1].RadiusIPAddress_5GHZ  = m_AssociationConfiguration.ServiceAPChannelAddress;

            m_APConfigs[0].RadiusSecretKey_24GHZ = m_EnterpriseRadiusSecret;
            m_APConfigs[1].RadiusSecretKey_24GHZ = m_EnterpriseRadiusSecret;
            m_APConfigs[0].RadiusSecretKey_5GHZ  = m_EnterpriseRadiusSecret;
            m_APConfigs[1].RadiusSecretKey_5GHZ  = m_EnterpriseRadiusSecret;


            Guid[] routerList = new Guid[2];
            routerList[0] = m_Routers[0];
            routerList[1] = m_Routers[1];

            Collection <ConfiguredSSIDs> configuredSSIDs = new Collection <ConfiguredSSIDs>();

            LogMajor("Configuring Router0");
            LogMajor("Configuring Router1");

            APConfig[] apConfigArray = new APConfig[m_APConfigs.Count];
            for (int index = 0; index < m_APConfigs.Count; index++)
            {
                apConfigArray[index] = m_APConfigs[index];
            }

            m_ApConfigClient.ApplyConfigurationParallel(routerList, apConfigArray, out configuredSSIDs);

            m_APConfigs[0].SSID_24GHZ = configuredSSIDs[0].TwoPoint4GhzSSID;
            m_APConfigs[0].SSID_5GHZ  = configuredSSIDs[0].FiveghzSSID;
            m_APConfigs[1].SSID_24GHZ = configuredSSIDs[1].TwoPoint4GhzSSID;
            m_APConfigs[1].SSID_5GHZ  = configuredSSIDs[1].FiveghzSSID;

            LogMajor("Configured Router0 SSID:" + m_APConfigs[0].SSID_24GHZ + "/" + m_APConfigs[0].SSID_5GHZ);
            LogMajor("Configured Router1 SSID:" + m_APConfigs[1].SSID_24GHZ + "/" + m_APConfigs[1].SSID_5GHZ);

            LogMajor("Taking the LAN ports down on both routers");
            m_ApConfigClient.SetLanPortsState(routerList[0], true);
            m_ApConfigClient.SetLanPortsState(routerList[1], true);

            Log("Reading the BSSIDs configured on router for validation when connected");
            for (int i = 0; i < 2; i++)
            {
                m_APConfigs[i].BSSID_24GHZ = m_ApConfigClient.GetAccessPointBSSID(m_Routers[i], false);
                LogMajor("BSSID(" + m_APConfigs[i].SSID_24GHZ + ")=" + m_APConfigs[i].BSSID_24GHZ);
                LogMajor("Authentication(" + m_APConfigs[i].SSID_24GHZ + ")=" + m_APConfigs[i].Authentication_24GHZ.ProfileValue);
                LogMajor("Encryption(" + m_APConfigs[i].SSID_24GHZ + ")=" + m_APConfigs[i].Encryption_24GHZ.ProfileValue);
                LogMajor("Phy(" + m_APConfigs[i].SSID_24GHZ + ")=" + m_APConfigs[i].PhyType_24GHZ.ProfileValue);
                LogMajor("Channel(" + m_APConfigs[i].SSID_24GHZ + ")=" + m_APConfigs[i].RadioChannel24Ghz);

                m_APConfigs[i].BSSID_5GHZ = m_ApConfigClient.GetAccessPointBSSID(m_Routers[i], true);
                LogMajor("BSSID(" + m_APConfigs[i].SSID_5GHZ + ")=" + m_APConfigs[i].BSSID_5GHZ);
                LogMajor("AuthenticationMethod(" + m_APConfigs[i].SSID_5GHZ + ")=" + m_APConfigs[i].Authentication_5GHZ.ProfileValue);
                LogMajor("Encryption(" + m_APConfigs[i].SSID_5GHZ + ")=" + m_APConfigs[i].Encryption_5GHZ.ProfileValue);
                LogMajor("Phy(" + m_APConfigs[i].SSID_5GHZ + ")=" + m_APConfigs[i].PhyType_5GHZ.ProfileValue);
                LogMajor("Channel(" + m_APConfigs[i].SSID_5GHZ + ")=" + m_APConfigs[i].RadioChannel5Ghz);
            }
        }
        // Here we will switch based on the router
        private void SetupAccessPoints()
        {
            bool bSetupRadius = false;

            APConfigs = new List <APConfig>();

            APConfigs.Add(WlanAccessPointHelper.CreateWirelessAccessPoint(
                              m_AP1Config24GHz.Auth, m_AP1Config24GHz.Cipher, m_AP1Config24GHz.Phy, "TestPassphrase2",
                              m_AP1Config5GHz.Auth, m_AP1Config5GHz.Cipher, m_AP1Config5GHz.Phy, "TestPassphrase1"));

            APConfigs[0].RadioChannel24Ghz = m_AP1Config24GHz.Channel;
            APConfigs[0].RadioChannel5Ghz  = m_AP1Config5GHz.Channel;

            // TODO: Make this nicer
            if (m_AP1Config24GHz.Auth == AuthenticationMethod.WPA2Enterprise)
            {
                phase1Auth   = m_AP1Config24GHz.EapPhase1Type;
                phase2Auth   = m_AP1Config24GHz.EapPhase2Type;
                bSetupRadius = true;
            }
            else if (m_AP1Config5GHz.Auth == AuthenticationMethod.WPA2Enterprise)
            {
                phase1Auth   = m_AP1Config5GHz.EapPhase1Type;
                phase2Auth   = m_AP1Config5GHz.EapPhase2Type;
                bSetupRadius = true;
            }
            else if (m_AP2Config24GHz.Auth == AuthenticationMethod.WPA2Enterprise)
            {
                phase1Auth   = m_AP2Config24GHz.EapPhase1Type;
                phase2Auth   = m_AP2Config24GHz.EapPhase2Type;
                bSetupRadius = true;
            }
            else if (m_AP2Config5GHz.Auth == AuthenticationMethod.WPA2Enterprise)
            {
                phase1Auth   = m_AP2Config5GHz.EapPhase1Type;
                phase2Auth   = m_AP2Config5GHz.EapPhase2Type;
                bSetupRadius = true;
            }

            if (bSetupRadius)
            {
                APConfigs[0].RadiusIPAddress_24GHZ = RoamingConfiguration.ServiceAPChannelAddress;
                APConfigs[0].RadiusIPAddress_5GHZ  = RoamingConfiguration.ServiceAPChannelAddress;

                APConfigs[0].RadiusSecretKey_24GHZ = EnterpriseRadiusSecret;
                APConfigs[0].RadiusSecretKey_5GHZ  = EnterpriseRadiusSecret;
            }

            // Both APs should have same SSID
            APConfigs.Add(WlanAccessPointHelper.DuplicateAPForRoaming(APConfigs[0]));

            // Update stuff for second AP
            APConfigs[1].BSSID_24GHZ = WlanAccessPointHelper.GenerateBSSID();
            APConfigs[1].BSSID_5GHZ  = WlanAccessPointHelper.GenerateBSSID();

            APConfigs[1].RadioChannel24Ghz = m_AP2Config24GHz.Channel;
            APConfigs[1].RadioChannel5Ghz  = m_AP2Config5GHz.Channel;

            APConfigs[0].DHCPServerEnabled = false;
            APConfigs[0].LocalIPAddress    = Helpers.RouterAlternateLocalIPAddress;
            APConfigs[0].NATEnabled        = false; // Need this with Static route configured on AP controller machine
            APConfigs[0].SmartCompare      = false; //Since the ap's NEED the same SSID this must be false

            APConfigs[1].DHCPServerEnabled = true;
            APConfigs[1].DHCPGateway       = Helpers.RouterAlternateLocalIPAddress;
            APConfigs[1].NATEnabled        = false; // Need this with Static route configured on AP controller machine
            APConfigs[1].SmartCompare      = false; //Since the ap's NEED the same SSID this must be false

            Guid[] routerList = new Guid[2];
            routerList[0] = routers[0];
            routerList[1] = routers[1];

            Collection <ConfiguredSSIDs> configuredSSIDs = new Collection <ConfiguredSSIDs>();

            LogMajor("Configuring Router0");
            LogMajor("Configuring Router1");

            APConfig[] apConfigArray = new APConfig[APConfigs.Count];
            for (int index = 0; index < APConfigs.Count; index++)
            {
                apConfigArray[index] = APConfigs[index];
            }

            AC.ApplyConfigurationParallel(routerList, apConfigArray, out configuredSSIDs);

            LogMajor("Configured Router0 SSID:" + APConfigs[0].SSID_24GHZ + "/" + APConfigs[0].SSID_5GHZ);
            LogMajor("Configured Router1 SSID:" + APConfigs[1].SSID_24GHZ + "/" + APConfigs[1].SSID_5GHZ);

            LogMajor("Bringing up the Lan ports on both the routers");
            AC.SetLanPortsState(routerList[0], false);
            AC.SetLanPortsState(routerList[1], false);
            LogMajor("Setting up static routes from AP server to router");
            AC.SetStaticRoute(routers[1]);

            Log("Reading the BSSIDs configured on router for validation when connected");
            for (int i = 0; i < 2; i++)
            {
                APConfigs[i].BSSID_24GHZ = AC.GetAccessPointBSSID(routers[i], false);
                LogMajor("BSSID(" + APConfigs[i].SSID_24GHZ + ")=" + APConfigs[i].BSSID_24GHZ);
                LogMajor("Authentication(" + APConfigs[i].SSID_24GHZ + ")=" + APConfigs[i].Authentication_24GHZ.ProfileValue);
                LogMajor("Encryption(" + APConfigs[i].SSID_24GHZ + ")=" + APConfigs[i].Encryption_24GHZ.ProfileValue);
                LogMajor("Phy(" + APConfigs[i].SSID_24GHZ + ")=" + APConfigs[i].PhyType_24GHZ.ProfileValue);
                LogMajor("Channel(" + APConfigs[i].SSID_24GHZ + ")=" + APConfigs[i].RadioChannel24Ghz);

                APConfigs[i].BSSID_5GHZ = AC.GetAccessPointBSSID(routers[i], true);
                LogMajor("BSSID(" + APConfigs[i].SSID_5GHZ + ")=" + APConfigs[i].BSSID_5GHZ);
                LogMajor("AuthenticationMethod(" + APConfigs[i].SSID_5GHZ + ")=" + APConfigs[i].Authentication_5GHZ.ProfileValue);
                LogMajor("Encryption(" + APConfigs[i].SSID_5GHZ + ")=" + APConfigs[i].Encryption_5GHZ.ProfileValue);
                LogMajor("Phy(" + APConfigs[i].SSID_5GHZ + ")=" + APConfigs[i].PhyType_5GHZ.ProfileValue);
                LogMajor("Channel(" + APConfigs[i].SSID_5GHZ + ")=" + APConfigs[i].RadioChannel5Ghz);
            }
        }