@@ -32,6 +32,7 @@ def __init__(self, src_mac, auth_mac, idle_time, retry_count,
3232 self .identity = None
3333 self .authentication_mac = auth_mac
3434 self .radius_state = None
35+ self .radius_access_reject = None
3536 self ._idle_time = idle_time
3637 self ._max_retry_count = retry_count
3738 self ._current_timeout = None
@@ -77,6 +78,7 @@ def received_radius_response(self, payload, radius_state, packet_type):
7778 """Received RADIUS access channel"""
7879 self .radius_state = radius_state
7980 if packet_type == 'RadiusAccessReject' :
81+ self .radius_access_reject = True
8082 self ._state_transition (self .FAIL , self .RADIUS )
8183 eap_message = FailureMessage (self .src_mac , 255 )
8284 self .auth_callback (self .src_mac , False )
@@ -141,6 +143,7 @@ class Authenticator:
141143 def __init__ (self , config_file ):
142144 self .state_machines = {}
143145 self .results = {}
146+ self .radius_access_reject = {}
144147 self .eap_module = None
145148 self .radius_module = None
146149 self .logger = utils .get_logger ('Authenticator' )
@@ -280,6 +283,8 @@ def process_test_result(self, src_mac, is_success):
280283 self .logger .info ('Authentication failed. Received no EAPOL packets.' )
281284 if src_mac :
282285 self .results [src_mac ] = is_success
286+ if self .state_machines [src_mac ].radius_access_reject :
287+ self .radius_access_reject [src_mac ] = True
283288 self .state_machines .pop (src_mac )
284289 # TODO: We currently finalize results as soon as we get a result for a src_mac.
285290 # Needs to be changed if we support multiple devices.
@@ -290,17 +295,23 @@ def run_authentication_test(self):
290295 result_str = ""
291296 test_result = ""
292297 if not self .results :
293- result_str = "Authentication failed. No EAPOL messages received."
298+ result_str = "Authentication failed. No EAPOL messages received." \
299+ " Check 802.1x is enabled"
294300 test_result = "skip"
295301 else :
296302 test_result = "pass"
297303 for src_mac , is_success in self .results .items ():
304+ additional = ''
298305 if is_success :
299306 result = 'succeeded'
300307 else :
301308 result = 'failed'
302309 test_result = "fail"
303- result_str += "Authentication for %s %s." % (src_mac , result )
310+ if src_mac in self .radius_access_reject :
311+ additional = ' Incorrect credentials provided.'
312+ else :
313+ additional = ' Error encountered.'
314+ result_str += "Authentication %s.%s" % (result , additional )
304315 return result_str , test_result
305316
306317 def handle_sm_timeout (self ):
0 commit comments