18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * IEEE 802.1X-2004 Authenticator - State dump 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "includes.h" 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "common.h" 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "eap_server/eap.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "eapol_auth_sm.h" 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "eapol_auth_sm_i.h" 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * port_type_txt(PortTypes pt) 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (pt) { 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case ForceUnauthorized: return "ForceUnauthorized"; 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case ForceAuthorized: return "ForceAuthorized"; 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case Auto: return "Auto"; 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * port_state_txt(PortState ps) 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (ps) { 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case Unauthorized: return "Unauthorized"; 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case Authorized: return "Authorized"; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * ctrl_dir_txt(ControlledDirection dir) 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (dir) { 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case Both: return "Both"; 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case In: return "In"; 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * auth_pae_state_txt(int s) 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_INITIALIZE: return "INITIALIZE"; 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_DISCONNECTED: return "DISCONNECTED"; 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_CONNECTING: return "CONNECTING"; 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_AUTHENTICATING: return "AUTHENTICATING"; 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_AUTHENTICATED: return "AUTHENTICATED"; 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_ABORTING: return "ABORTING"; 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_HELD: return "HELD"; 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_FORCE_AUTH: return "FORCE_AUTH"; 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_FORCE_UNAUTH: return "FORCE_UNAUTH"; 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_PAE_RESTART: return "RESTART"; 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * be_auth_state_txt(int s) 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_REQUEST: return "REQUEST"; 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_RESPONSE: return "RESPONSE"; 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_SUCCESS: return "SUCCESS"; 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_FAIL: return "FAIL"; 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_TIMEOUT: return "TIMEOUT"; 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_IDLE: return "IDLE"; 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_INITIALIZE: return "INITIALIZE"; 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case BE_AUTH_IGNORE: return "IGNORE"; 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * reauth_timer_state_txt(int s) 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case REAUTH_TIMER_INITIALIZE: return "INITIALIZE"; 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case REAUTH_TIMER_REAUTHENTICATE: return "REAUTHENTICATE"; 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * auth_key_tx_state_txt(int s) 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_KEY_TX_NO_KEY_TRANSMIT: return "NO_KEY_TRANSMIT"; 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case AUTH_KEY_TX_KEY_TRANSMIT: return "KEY_TRANSMIT"; 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * key_rx_state_txt(int s) 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case KEY_RX_NO_KEY_RECEIVE: return "NO_KEY_RECEIVE"; 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case KEY_RX_KEY_RECEIVE: return "KEY_RECEIVE"; 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline const char * ctrl_dir_state_txt(int s) 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt switch (s) { 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case CTRL_DIR_FORCE_BOTH: return "FORCE_BOTH"; 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt case CTRL_DIR_IN_OR_BOTH: return "IN_OR_BOTH"; 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt default: return "Unknown"; 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid eapol_auth_dump_state(FILE *f, const char *prefix, 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct eapol_state_machine *sm) 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%sEAPOL state machine:\n", prefix); 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s aWhile=%d quietWhile=%d reAuthWhen=%d\n", prefix, 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt sm->aWhile, sm->quietWhile, sm->reAuthWhen); 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define _SB(b) ((b) ? "TRUE" : "FALSE") 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAbort=%s authFail=%s authPortStatus=%s authStart=%s\n" 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authTimeout=%s authSuccess=%s eapFail=%s eapolEap=%s\n" 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s eapSuccess=%s eapTimeout=%s initialize=%s " 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "keyAvailable=%s\n" 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s keyDone=%s keyRun=%s keyTxEnabled=%s portControl=%s\n" 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s portEnabled=%s portValid=%s reAuthenticate=%s\n", 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->authAbort), _SB(sm->authFail), 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt port_state_txt(sm->authPortStatus), _SB(sm->authStart), 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->authTimeout), _SB(sm->authSuccess), 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->eap_if->eapFail), _SB(sm->eapolEap), 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->eap_if->eapSuccess), 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->eap_if->eapTimeout), 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->initialize), _SB(sm->eap_if->eapKeyAvailable), 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->keyDone), _SB(sm->keyRun), 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->keyTxEnabled), port_type_txt(sm->portControl), 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->eap_if->portEnabled), _SB(sm->portValid), 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->reAuthenticate)); 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Authenticator PAE:\n" 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n" 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s eapolLogoff=%s eapolStart=%s eapRestart=%s\n" 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s portMode=%s reAuthCount=%d\n" 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s quietPeriod=%d reAuthMax=%d\n" 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authEntersConnecting=%d\n" 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authEapLogoffsWhileConnecting=%d\n" 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authEntersAuthenticating=%d\n" 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthSuccessesWhileAuthenticating=%d\n" 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthTimeoutsWhileAuthenticating=%d\n" 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthFailWhileAuthenticating=%d\n" 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthEapStartsWhileAuthenticating=%d\n" 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthEapLogoffWhileAuthenticating=%d\n" 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthReauthsWhileAuthenticated=%d\n" 1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthEapStartsWhileAuthenticated=%d\n" 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s authAuthEapLogoffWhileAuthenticated=%d\n", 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, prefix, auth_pae_state_txt(sm->auth_pae_state), prefix, 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->eapolLogoff), _SB(sm->eapolStart), 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->eap_if->eapRestart), 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, port_type_txt(sm->portMode), sm->reAuthCount, 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->quietPeriod, sm->reAuthMax, 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authEntersConnecting, 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authEapLogoffsWhileConnecting, 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authEntersAuthenticating, 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthSuccessesWhileAuthenticating, 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthTimeoutsWhileAuthenticating, 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthFailWhileAuthenticating, 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthEapStartsWhileAuthenticating, 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthEapLogoffWhileAuthenticating, 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthReauthsWhileAuthenticated, 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthEapStartsWhileAuthenticated, 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->authAuthEapLogoffWhileAuthenticated); 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Backend Authentication:\n" 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n" 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s eapNoReq=%s eapReq=%s eapResp=%s\n" 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s serverTimeout=%d\n" 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s backendResponses=%d\n" 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s backendAccessChallenges=%d\n" 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s backendOtherRequestsToSupplicant=%d\n" 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s backendAuthSuccesses=%d\n" 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s backendAuthFails=%d\n", 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, prefix, 1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt be_auth_state_txt(sm->be_auth_state), 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->eap_if->eapNoReq), _SB(sm->eap_if->eapReq), 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt _SB(sm->eap_if->eapResp), 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->serverTimeout, 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->backendResponses, 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->backendAccessChallenges, 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->backendOtherRequestsToSupplicant, 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->backendAuthSuccesses, 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, sm->backendAuthFails); 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Reauthentication Timer:\n" 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n" 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s reAuthPeriod=%d reAuthEnabled=%s\n", prefix, prefix, 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt reauth_timer_state_txt(sm->reauth_timer_state), prefix, 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt sm->reAuthPeriod, _SB(sm->reAuthEnabled)); 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Authenticator Key Transmit:\n" 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n", prefix, prefix, 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt auth_key_tx_state_txt(sm->auth_key_tx_state)); 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Key Receive:\n" 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n" 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s rxKey=%s\n", prefix, prefix, 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt key_rx_state_txt(sm->key_rx_state), prefix, _SB(sm->rxKey)); 2148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt fprintf(f, "%s Controlled Directions:\n" 2168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s state=%s\n" 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s adminControlledDirections=%s " 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "operControlledDirections=%s\n" 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt "%s operEdge=%s\n", prefix, prefix, 2208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ctrl_dir_state_txt(sm->ctrl_dir_state), 2218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, ctrl_dir_txt(sm->adminControlledDirections), 2228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ctrl_dir_txt(sm->operControlledDirections), 2238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt prefix, _SB(sm->operEdge)); 2248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#undef _SB 2258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 226