#ifndef OS_FRAME_FUNCS_H #define OS_FRAME_FUNCS_H #include /// These are all of the functions that need to be defined in order to create /// an OS specific driver for the program. // Different Types of EAPOL Messages we might need. #define EAPOL_PACKET 0 #define EAPOL_START 1 #define EAPOL_LOGOFF 2 #define EAPOL_KEY 3 #define EAPOL_ASF_ALERT 4 // Different EAPOL codes #define CODE_REQUEST 1 #define CODE_RESPONSE 2 #define CODE_SUCCESS 3 #define CODE_FAILURE 4 // The EAPOL Type code for the Ethernet Header #define EAPOL_TYPE_CODE 0x888e // The structs below are to be used to overlay on a complete frame in order // to read/edit specific fields in the frame. struct frame_data { u_char dest[6]; u_char src[6]; u_char type[2]; }; struct my_eapol_header { u_char ether_header[14]; u_char eapol_version; u_char eapol_type; uint16_t eapol_length; }; struct my_eapol_packet { uint8_t ether_header[14]; uint8_t eapol_header_data[4]; uint8_t code; uint8_t identifier; uint16_t length; uint8_t type; }; char *get_frame(int); // Return a pointer to a frame. char *initalize_frame_funcs(char *, int, int); u_char *get_src_mac(); char *send_frame(u_char *, int); char *get_dev_name(); char *get_working_frame(); int shutdown_frame_funcs(); void done_with_current_frame(); int more_frames(); void allow_sleep(int); #endif