#ifndef _ADINFO_H
#define _ADINFO_H
#include <sys/socket.h>
#include <sys/uuid.h>
#include "libadutils.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MAXSTRSID 185
#define MAXDOMAINNAME 256
#define AD_DISC_MAXHOSTNAME 256
typedef struct ad_disc *ad_disc_t;
typedef struct ad_disc_domains_in_forest {
char domain[MAXDOMAINNAME];
char sid[MAXSTRSID];
int trusted;
} ad_disc_domainsinforest_t;
typedef struct ad_disc_trusted_domains {
char domain[MAXDOMAINNAME];
int direction;
} ad_disc_trusteddomains_t;
enum ad_disc_req {
AD_DISC_PREFER_SITE = 0,
AD_DISC_SITE_SPECIFIC,
AD_DISC_GLOBAL
};
typedef struct ad_disc_ds {
int port;
int priority;
int weight;
char host[AD_DISC_MAXHOSTNAME];
char site[AD_DISC_MAXHOSTNAME];
struct sockaddr_storage addr;
uint32_t flags;
uint32_t ttl;
} ad_disc_ds_t;
ad_disc_t ad_disc_init(void);
void ad_disc_fini(ad_disc_t);
char *
ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered);
uchar_t *
ad_disc_get_DomainGUID(ad_disc_t ctx, boolean_t *auto_discovered);
ad_disc_ds_t *
ad_disc_get_DomainController(ad_disc_t ctx,
enum ad_disc_req req, boolean_t *auto_discovered);
ad_disc_ds_t *
ad_disc_get_PreferredDC(ad_disc_t ctx, boolean_t *auto_discovered);
char *
ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered);
char *
ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered);
ad_disc_ds_t *
ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req,
boolean_t *auto_discovered);
ad_disc_trusteddomains_t *
ad_disc_get_TrustedDomains(ad_disc_t ctx, boolean_t *auto_discovered);
ad_disc_domainsinforest_t *
ad_disc_get_DomainsInForest(ad_disc_t ctx, boolean_t *auto_discovered);
int
ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName);
int
ad_disc_set_DomainGUID(ad_disc_t ctx, uchar_t *u);
int
ad_disc_set_DomainController(ad_disc_t ctx,
const ad_disc_ds_t *domainController);
int
ad_disc_set_PreferredDC(ad_disc_t ctx, const ad_disc_ds_t *dc);
int
ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName);
int
ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName);
int
ad_disc_set_GlobalCatalog(ad_disc_t ctx,
const ad_disc_ds_t *globalCatalog);
void
ad_disc_set_StatusFP(ad_disc_t ctx, struct __FILE_TAG *);
int
ad_disc_getnameinfo(char *, int, struct sockaddr_storage *);
void ad_disc_refresh(ad_disc_t);
void ad_disc_done(ad_disc_t);
int ad_disc_unset(ad_disc_t ctx);
boolean_t ad_disc_SubnetChanged(ad_disc_t);
int ad_disc_get_TTL(ad_disc_t);
int ad_disc_compare_uuid(uuid_t *u1, uuid_t *u2);
int ad_disc_compare_ds(ad_disc_ds_t *ds1, ad_disc_ds_t *ds2);
int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1,
ad_disc_trusteddomains_t *td2);
int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1,
ad_disc_domainsinforest_t *td2);
#ifdef __cplusplus
}
#endif
#endif