#ifndef _S_SUPPLICANT_H
#define _S_SUPPLICANT_H
#include <CoreFoundation/CFDictionary.h>
#include <sys/types.h>
#include <net/if_dl.h>
#include "EAPClientTypes.h"
#include "SupplicantTypes.h"
#include "EAPOLControlTypes.h"
#include "EAPOLSocket.h"
#define BAD_IDENTIFIER (-1)
typedef struct Supplicant_s Supplicant, *SupplicantRef;
SupplicantRef
Supplicant_create(EAPOLSocketRef sock);
SupplicantRef
Supplicant_create_with_supplicant(EAPOLSocketRef sock, SupplicantRef main_supp);
void
Supplicant_free(SupplicantRef * supp_p);
void
Supplicant_start(SupplicantRef supp, int packet_identifier);
void
Supplicant_set_no_ui(SupplicantRef supp);
void
Supplicant_link_status_changed(SupplicantRef supp, bool active);
SupplicantState
Supplicant_get_state(SupplicantRef supp, EAPClientStatus * last_status);
bool
Supplicant_control(SupplicantRef supp,
EAPOLClientControlCommand command,
CFDictionaryRef control_dict);
bool
Supplicant_update_configuration(SupplicantRef supp,
CFDictionaryRef config_dict,
bool * should_stop);
void
Supplicant_stop(SupplicantRef supp);
void
Supplicant_simulate_success(SupplicantRef supp);
void
Supplicant_set_globals(SCPreferencesRef prefs);
#endif