wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp
branchRCL_3
changeset 34 13838cf40350
parent 12 4e2a442f3e66
child 40 5fb7af913dfd
equal deleted inserted replaced
21:af3fb27c7511 34:13838cf40350
    14 * Description:  Statemachine for roaming
    14 * Description:  Statemachine for roaming
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 76.1.2 %
    19 * %version: 76.1.5 %
    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"
   431 
   431 
   432                     DEBUG6( "core_operation_roam_c::next_state() - EAPOL disassociation from BSSID %02X:%02X:%02X:%02X:%02X:%02X",
   432                     DEBUG6( "core_operation_roam_c::next_state() - EAPOL disassociation from BSSID %02X:%02X:%02X:%02X:%02X:%02X",
   433                         bssid.addr[0], bssid.addr[1], bssid.addr[2],
   433                         bssid.addr[0], bssid.addr[1], bssid.addr[2],
   434                         bssid.addr[3], bssid.addr[4], bssid.addr[5] );
   434                         bssid.addr[3], bssid.addr[4], bssid.addr[5] );
   435 
   435 
       
   436                     /**
       
   437                      * is_eapol_disconnecting is not updated here because this disassociation
       
   438                      * is for the previous AP and thus we don't really care when this
       
   439                      * request gets completed.
       
   440                      */
       
   441 
   436                     server_m->get_eapol_instance().disassociation( &network );
   442                     server_m->get_eapol_instance().disassociation( &network );
   437                     }
   443                     }
   438                 }
   444                 }
   439 
   445 
   440             server_m->get_connection_data()->set_current_ap_data(
   446             server_m->get_connection_data()->set_current_ap_data(
   794 core_connect_status_e core_operation_roam_c::connect_status(
   800 core_connect_status_e core_operation_roam_c::connect_status(
   795     core_error_e request_status,
   801     core_error_e request_status,
   796     core_management_status_e management_status )
   802     core_management_status_e management_status )
   797     {
   803     {
   798     DEBUG( "core_operation_roam_c::connect_status()" );
   804     DEBUG( "core_operation_roam_c::connect_status()" );
   799     
   805 
   800     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() );
   801 
       
   802     if ( management_status == core_management_status_assoc_denied_full_ap )
       
   803         {
       
   804         DEBUG( "core_operation_roam_c::connect_status() - AP full" );
       
   805         return core_connect_ap_full;
       
   806         }
       
   807 
   807 
   808     if ( request_status == core_error_eapol_auth_start_timeout )
   808     if ( request_status == core_error_eapol_auth_start_timeout )
   809         {
   809         {
   810         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" );
   811         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;
   812         }
   818         }
   813 
   819 
   814     switch( iap_data.security_mode() )
   820     switch( iap_data.security_mode() )
   815         {
   821         {
   816         case core_security_mode_wep:
   822         case core_security_mode_wep:
   915 
   921 
   916         default:
   922         default:
   917             {
   923             {
   918             ASSERT( false_t );
   924             ASSERT( false_t );
   919             }
   925             }
       
   926         }
       
   927 
       
   928     if ( management_status == core_management_status_assoc_denied_full_ap )
       
   929         {
       
   930         DEBUG( "core_operation_roam_c::connect_status() - AP full" );
       
   931         return core_connect_ap_full;
       
   932         }
       
   933 
       
   934     if ( management_status == core_management_status_unsupported_capabilities ||
       
   935          management_status == core_management_status_assoc_unsup_basic_rates ||
       
   936          management_status == core_management_status_assoc_unsup_ht_features )
       
   937         {
       
   938         DEBUG( "core_operation_roam_c::connect_status() - AP has an unsupported configuration" );
       
   939         return core_connect_ap_unsupported_configuration;
   920         }
   940         }
   921 
   941 
   922     return core_connect_undefined;
   942     return core_connect_undefined;
   923     }
   943     }
   924 
   944 
   943         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, EAP failure" );
   963         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, EAP failure" );
   944         return core_ap_blacklist_reason_eapol_failure;
   964         return core_ap_blacklist_reason_eapol_failure;
   945         }
   965         }
   946 
   966 
   947     /**
   967     /**
       
   968      * Unsupported configuration is always fatal.
       
   969      */
       
   970     if( request_status == core_error_unsupported_config )
       
   971         {
       
   972         DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, unsupported configuration" );
       
   973         return core_ap_blacklist_reason_association_status;
       
   974         }
       
   975 
       
   976     /**
   948      * Don't consider a failed (re-)association attempt as fatal since it's
   977      * Don't consider a failed (re-)association attempt as fatal since it's
   949      * possible AP just doesn't have our authentication cached any more.
   978      * possible AP just doesn't have our authentication cached any more.
   950      */
   979      */
   951     if ( is_cached_sa_used )
   980     if ( is_cached_sa_used )
   952         {
   981         {