wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp
changeset 39 3d23268b50f6
parent 27 debc621e0d58
equal deleted inserted replaced
36:1c425781161e 39:3d23268b50f6
    14 * Description:  Statemachine for roaming
    14 * Description:  Statemachine for roaming
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 76.1.3 %
    19 * %version: 78 %
    20 */
    20 */
    21 
    21 
    22 #include "core_operation_roam.h"
    22 #include "core_operation_roam.h"
    23 #include "core_server.h"
    23 #include "core_server.h"
    24 #include "core_tools.h"
    24 #include "core_tools.h"
   800 core_connect_status_e core_operation_roam_c::connect_status(
   800 core_connect_status_e core_operation_roam_c::connect_status(
   801     core_error_e request_status,
   801     core_error_e request_status,
   802     core_management_status_e management_status )
   802     core_management_status_e management_status )
   803     {
   803     {
   804     DEBUG( "core_operation_roam_c::connect_status()" );
   804     DEBUG( "core_operation_roam_c::connect_status()" );
   805     
   805 
   806     core_iap_data_c& iap_data( server_m->get_connection_data()->iap_data() );
   806     core_iap_data_c& iap_data( server_m->get_connection_data()->iap_data() );
   807 
       
   808     if ( management_status == core_management_status_assoc_denied_full_ap )
       
   809         {
       
   810         DEBUG( "core_operation_roam_c::connect_status() - AP full" );
       
   811         return core_connect_ap_full;
       
   812         }
       
   813 
   807 
   814     if ( request_status == core_error_eapol_auth_start_timeout )
   808     if ( request_status == core_error_eapol_auth_start_timeout )
   815         {
   809         {
   816         DEBUG( "core_operation_roam_c::connect_status() - EAPOL authentication timeout before authentication was started" );
   810         DEBUG( "core_operation_roam_c::connect_status() - EAPOL authentication timeout before authentication was started" );
   817         return core_connect_eapol_auth_start_timeout;
   811         return core_connect_eapol_auth_start_timeout;
       
   812         }
       
   813 
       
   814     if ( request_status == core_error_unsupported_config )
       
   815         {
       
   816         DEBUG( "core_operation_roam_c::connect_status() - AP has an unsupported configuration" );
       
   817         return core_connect_ap_unsupported_configuration;
   818         }
   818         }
   819 
   819 
   820     switch( iap_data.security_mode() )
   820     switch( iap_data.security_mode() )
   821         {
   821         {
   822         case core_security_mode_wep:
   822         case core_security_mode_wep:
   853             break;
   853             break;
   854             }
   854             }
   855         case core_security_mode_allow_unsecure:
   855         case core_security_mode_allow_unsecure:
   856             {
   856             {
   857             break;
   857             break;
   858             }            
   858             }   
       
   859         case core_security_mode_802dot1x_unencrypted:
       
   860             /** Falls through on purpose. */
   859         case core_security_mode_802dot1x:
   861         case core_security_mode_802dot1x:
   860             {
   862             {
   861             if ( request_status == core_error_eapol_total_failure ||
   863             if ( request_status == core_error_eapol_total_failure ||
   862                  request_status == core_error_eapol_failure )
   864                  request_status == core_error_eapol_failure )
   863                 {
   865                 {
   921 
   923 
   922         default:
   924         default:
   923             {
   925             {
   924             ASSERT( false_t );
   926             ASSERT( false_t );
   925             }
   927             }
       
   928         }
       
   929 
       
   930     if ( management_status == core_management_status_assoc_denied_full_ap )
       
   931         {
       
   932         DEBUG( "core_operation_roam_c::connect_status() - AP full" );
       
   933         return core_connect_ap_full;
       
   934         }
       
   935 
       
   936     if ( management_status == core_management_status_unsupported_capabilities ||
       
   937          management_status == core_management_status_assoc_unsup_basic_rates ||
       
   938          management_status == core_management_status_assoc_unsup_ht_features )
       
   939         {
       
   940         DEBUG( "core_operation_roam_c::connect_status() - AP has an unsupported configuration" );
       
   941         return core_connect_ap_unsupported_configuration;
   926         }
   942         }
   927 
   943 
   928     return core_connect_undefined;
   944     return core_connect_undefined;
   929     }
   945     }
   930 
   946 
   949         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, EAP failure" );
   965         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, EAP failure" );
   950         return core_ap_blacklist_reason_eapol_failure;
   966         return core_ap_blacklist_reason_eapol_failure;
   951         }
   967         }
   952 
   968 
   953     /**
   969     /**
       
   970      * Unsupported configuration is always fatal.
       
   971      */
       
   972     if( request_status == core_error_unsupported_config )
       
   973         {
       
   974         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, unsupported configuration" );
       
   975         return core_ap_blacklist_reason_association_status;
       
   976         }
       
   977 
       
   978     /**
   954      * Don't consider a failed (re-)association attempt as fatal since it's
   979      * Don't consider a failed (re-)association attempt as fatal since it's
   955      * possible AP just doesn't have our authentication cached any more.
   980      * possible AP just doesn't have our authentication cached any more.
   956      */
   981      */
   957     if ( is_cached_sa_used )
   982     if ( is_cached_sa_used )
   958         {
   983         {
   995         eap_type );
  1020         eap_type );
   996     DEBUG1( "core_operation_roam_c::eap_connect_status() - eap_error %u",
  1021     DEBUG1( "core_operation_roam_c::eap_connect_status() - eap_error %u",
   997         eap_error );
  1022         eap_error );
   998  
  1023  
   999     core_connect_status_e status( core_connect_wpa_eap_failure );
  1024     core_connect_status_e status( core_connect_wpa_eap_failure );
  1000     if ( security_mode == core_security_mode_802dot1x )
  1025     if ( security_mode == core_security_mode_802dot1x ||
       
  1026          security_mode == core_security_mode_802dot1x_unencrypted )
  1001         {
  1027         {
  1002         status = core_connect_802_1x_failure;
  1028         status = core_connect_802_1x_failure;
  1003         }
  1029         }
  1004  
  1030  
  1005     /** 
  1031     /**