#ifndef _S_DHCPV6CLIENT_H
#define _S_DHCPV6CLIENT_H
#include <stdint.h>
#include <stdbool.h>
#include "DHCPDUID.h"
#include "interfaces.h"
#include "ipconfigd_threads.h"
typedef struct DHCPv6Client * DHCPv6ClientRef;
typedef enum {
kDHCPv6ClientNotificationTypeStatusChanged = 1,
kDHCPv6ClientNotificationTypeGenerateSymptom = 2
} DHCPv6ClientNotificationType;
typedef void
(*DHCPv6ClientNotificationCallBack)(DHCPv6ClientRef client,
void * callback_arg,
DHCPv6ClientNotificationType type);
void
DHCPv6ClientSetRequestedOptions(uint16_t * requested_options,
int requested_options_count);
bool
DHCPv6ClientOptionIsOK(int option);
DHCPv6ClientRef
DHCPv6ClientCreate(interface_t * if_p);
void
DHCPv6ClientStart(DHCPv6ClientRef client, bool allocate_address);
void
DHCPv6ClientStop(DHCPv6ClientRef client, bool discard_information);
void
DHCPv6ClientRelease(DHCPv6ClientRef * client_p);
bool
DHCPv6ClientGetInfo(DHCPv6ClientRef client, dhcpv6_info_t * info_p);
void
DHCPv6ClientCopyAddresses(DHCPv6ClientRef client,
inet6_addrlist_t * addr_list_p);
void
DHCPv6ClientAddressChanged(DHCPv6ClientRef client,
inet6_addrlist_t * addr_list_p);
void
DHCPv6ClientSetNotificationCallBack(DHCPv6ClientRef client,
DHCPv6ClientNotificationCallBack callback,
void * callback_arg);
bool
DHCPv6ClientIsActive(DHCPv6ClientRef client);
bool
DHCPv6ClientHasDNS(DHCPv6ClientRef client, bool * search_available);
#endif