#ifndef _ADS_DSGETDC_H
#define _ADS_DSGETDC_H
#include <sys/types.h>
#include <sys/uuid.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DS_FORCE_REDISCOVERY 0x00000001
#define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010
#define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020
#define DS_GC_SERVER_REQUIRED 0x00000040
#define DS_PDC_REQUIRED 0x00000080
#define DS_BACKGROUND_ONLY 0x00000100
#define DS_IP_REQUIRED 0x00000200
#define DS_KDC_REQUIRED 0x00000400
#define DS_TIMESERV_REQUIRED 0x00000800
#define DS_WRITABLE_REQUIRED 0x00001000
#define DS_GOOD_TIMESERV_PREFERRED 0x00002000
#define DS_AVOID_SELF 0x00004000
#define DS_ONLY_LDAP_NEEDED 0x00008000
#define DS_IS_FLAT_NAME 0x00010000
#define DS_IS_DNS_NAME 0x00020000
#define DS_RETURN_DNS_NAME 0x40000000
#define DS_RETURN_FLAT_NAME 0x80000000
typedef struct _DOMAIN_CONTROLLER_INFO {
char *DomainControllerName;
char *DomainControllerAddress;
uint32_t DomainControllerAddressType;
uuid_t DomainGuid;
char *DomainName;
char *DnsForestName;
uint32_t Flags;
char *DcSiteName;
char *ClientSiteName;
uint8_t _sockaddr[256];
} DOMAIN_CONTROLLER_INFO, *PDOMAIN_CONTROLLER_INFO;
#define DS_INET_ADDRESS 1
#define DS_NETBIOS_ADDRESS 2
#define DS_PDC_FLAG 0x00000001
#define DS_GC_FLAG 0x00000004
#define DS_LDAP_FLAG 0x00000008
#define DS_DS_FLAG 0x00000010
#define DS_KDC_FLAG 0x00000020
#define DS_TIMESERV_FLAG 0x00000040
#define DS_CLOSEST_FLAG 0x00000080
#define DS_WRITABLE_FLAG 0x00000100
#define DS_GOOD_TIMESERV_FLAG 0x00000200
#define DS_NDNC_FLAG 0x00000400
#define DS_PING_FLAGS 0x0000FFFF
#define DS_DNS_CONTROLLER_FLAG 0x20000000
#define DS_DNS_DOMAIN_FLAG 0x40000000
#define DS_DNS_FOREST_FLAG 0x80000000
extern int
DsGetDcName(const char *ComputerName,
const char *DomainName, const struct uuid *DomainGuid,
const char *SiteName, uint32_t Flags,
DOMAIN_CONTROLLER_INFO **dcinfo);
extern uint32_t
_DsGetDcName(const char *ComputerName,
const char *DomainName, const struct uuid *DomainGuid,
const char *SiteName, uint32_t Flags,
DOMAIN_CONTROLLER_INFO **dcinfo);
extern int
DsGetSiteName(
const char *ComputerName,
char **SiteName);
extern void
DsFreeDcInfo(DOMAIN_CONTROLLER_INFO *);
extern int
_DsForceRediscovery(char *domain, int flags);
#ifdef __cplusplus
}
#endif
#endif