void write_to_log (char *, int);
void build_linked_list (char *, int, struct DHCP_MESSAGE *);
void print_linked_list_contents (struct DHCP_MESSAGE *);
float generate_rand (void);
int calculate_initial_delay (void);
float calculate_retransmission_timeout (float, float);
int check_for_option (int, struct DHCP_MESSAGE *);
int check_for_status (struct DHCP_MESSAGE *);
int check_message (struct DHCP_MESSAGE *, int, int);
struct DHCP_MESSAGE ** wait_until_response (int, int, float, float, int, int, int, char *, int, int *);
u_int8_t convert_character_to_hex (char);
void generate_trans_id (u_int32_t *);
int store_in_buffer (struct DHCP_MESSAGE *, char *);
void read_option (char *, int, int, struct OPTIONS *);
void free_message_mem (struct DHCP_MESSAGE *);
u_int8_t get_preference_value (struct DHCP_MESSAGE *);
u_int8_t * get_pref_ipv6_address (struct DHCP_MESSAGE *);
u_int32_t get_pref_lifetime (struct DHCP_MESSAGE *);
struct DHCP_MESSAGE * select_server (struct DHCP_MESSAGE **, int, char *);
struct DHCP_MESSAGE ** purge_message (struct DHCP_MESSAGE **, struct DHCP_MESSAGE *, int *);
struct OPTIONS * get_options_ptr (struct DHCP_MESSAGE *, int);
int check_address_in_use (struct OPTIONS *);
void set_ipv6_address (struct OPTIONS *, char *);
void unset_ipv6_address (struct OPTIONS *, char *);
struct OPTIONS * copy_message_option (struct DHCP_MESSAGE *, int);
void get_timers (struct DHCP_MESSAGE *, u_int32_t *, u_int32_t *, u_int32_t *);
int check_reply_message (struct DHCP_MESSAGE *, int);
char ** get_all_interfaces (char *, int *);
void copy_duid1 (struct DUID1 *, struct DUID1 *);
void copy_duid2 (struct DUID2 *, struct DUID2 *);
void copy_duid3 (struct DUID3 *, struct DUID3 *);
int check_for_duid_match (struct OPTIONS *);
int check_duid1 (struct DUID1 *, struct DUID1 *);
int check_duid2 (struct DUID2 *, struct DUID2 *);
int check_duid3 (struct DUID3 *, struct DUID3 *);
