#ifndef __REPLICAFILEDEFS__
#define __REPLICAFILEDEFS__
#include <arpa/nameser.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <CoreFoundation/CoreFoundation.h>
#include "AuthFile.h"
#define kPWReplicaFile "/var/db/authserver/authserverreplicas"
#define kPWReplicaFileTemp "/var/db/authserver/authserverreplicas.temp"
#define kPWReplicaRemoteFilePrefix "/var/db/authserver/authserverreplicas.remote."
#define kPWReplicaParentKey "Parent"
#define kPWReplicaReplicaKey "Replicas"
#define kPWReplicaDecommissionedListKey "DecommissionedReplicas"
#define kPWReplicaIDKey "ID"
#define kPWReplicaCurrentServerForLDAPKey "CurrentServerForLDAP"
#define kPWReplicaIPKey "IP"
#define kPWReplicaDNSKey "DNS"
#define kPWReplicaNameKey "ReplicaName"
#define kPWReplicaPolicyKey "ReplicaPolicy"
#define kPWReplicaStatusKey "ReplicaStatus"
#define kPWReplicaNameValuePrefix "Replica"
#define kPWReplicaSyncDateKey "LastSyncDate"
#define kPWReplicaSyncServerKey "LastSyncServer"
#define kPWReplicaSyncTIDKey "LastSyncTID"
#define kPWReplicaStatusAllow "AllowReplication"
#define kPWReplicaStatusUseACL "UseACL"
#define kPWReplicaIDRangeBeginKey "IDRangeBegin"
#define kPWReplicaIDRangeEndKey "IDRangeEnd"
#define kPWReplicaSyncAttemptKey "LastSyncFailedAttempt"
#define kPWReplicaIncompletePullKey "PullStatus"
#define kPWReplicaPullDeferred "PullDeferred"
#define kPWReplicaEntryModDateKey "EntryModDate"
#define kPWReplicaPolicyDefaultKey "SyncDefault"
#define kPWReplicaPolicyNeverKey "SyncNever"
#define kPWReplicaPolicyOnlyIfDesperateKey "SyncOnlyIfDesperate"
#define kPWReplicaPolicyOnScheduleKey "SyncOnSchedule"
#define kPWReplicaPolicyOnDirtyKey "SyncOnDirty"
#define kPWReplicaPolicyAnytimeKey "SyncAnytime"
#define kPWReplicaStatusActiveValue "Active"
#define kPWReplicaStatusPermDenyValue "PermissionDenied"
#define kPWReplicaStatusNotFoundValue "NotFound"
#define kPWReplicaMaxIPCount 32
typedef UInt8 ReplicaPolicy;
enum {
kReplicaNone,
kReplicaAllowAll,
kReplicaUseACL
};
typedef UInt8 ReplicaSyncPolicy;
enum {
kReplicaSyncDefault,
kReplicaSyncNever,
kReplicaSyncOnlyIfDesperate,
kReplicaSyncOnSchedule,
kReplicaSyncOnDirty,
kReplicaSyncAnytime,
kReplicaSyncInvalid
};
typedef UInt8 ReplicaStatus;
enum {
kReplicaActive,
kReplicaPermissionDenied,
kReplicaNotFound
};
typedef enum ReplicaRole {
kReplicaRoleUnset,
kReplicaRoleParent,
kReplicaRoleRelay,
kReplicaRoleTierOneReplica,
kReplicaRoleTierTwoReplica
} ReplicaRole;
typedef enum ReplicaChangeStatus {
kReplicaChangeNone = 0x00,
kReplicaChangeGeneral = 0x01,
kReplicaChangeInterface = 0x02,
kReplicaChangeAll = (kReplicaChangeGeneral | kReplicaChangeInterface)
} ReplicaChangeStatus;
typedef struct PWSReplicaEntry {
int ipCount;
char ip[kPWReplicaMaxIPCount][INET6_ADDRSTRLEN];
char dns[NS_MAXDNAME];
char name[kPWFileMaxReplicaName];
ReplicaPolicy policy;
ReplicaSyncPolicy syncPolicy;
ReplicaStatus status;
bool allowReplication;
UInt32 idRangeBegin;
UInt32 idRangeEnd;
SInt64 lastSyncTID;
uint32_t lastSyncDate;
uint32_t lastSyncFailedAttempt;
uint32_t pullIncompleteDate;
uint32_t pullDeferredDate;
uint32_t entryModDate;
bool peer;
} PWSReplicaEntry;
#ifdef __cplusplus
extern "C" {
#endif
bool ConvertBinaryToHex( const unsigned char *inData, long len, char *outHexStr );
CFStringRef pwsf_GetReplicaStatusString( ReplicaStatus replicaStatus );
void pwsf_CalcServerUniqueID( const char *inRSAPublicKey, char *outHexHash );
char *pwsf_ReplicaFilePath( void );
#ifdef __cplusplus
};
#endif
#endif