#ifndef __CAuditUtils_h__
#define __CAuditUtils_h__ 1
#define USE_BSM_AUDIT 1
#include <sys/ucred.h>
#include <bsm/audit.h>
#include <bsm/audit_uevents.h>
#include <sys/syscall.h>
#include <bsm/libbsm.h>
#define _SYS_AUDIT_H // disable sys/audit.h
#include <stdio.h>
#include <stdlib.h> // for malloc()
#include <stdbool.h>
#include "PrivateTypes.h"
#include "DirServicesConst.h"
#include "DirServicesTypes.h"
#define kAuditUnknownNameStr "unknown"
typedef enum
{
kATHChange,
kATHAdd,
kATHRemove
} AuditTypeHint;
#define kAuditAuthPasswordChangeConsts 8
#define kAuditAuthChangeConsts 15
#define kAuditAuthMethodConsts 33
enum {
kAuditCtlStrNewUser = 0,
kAuditCtlStrModifyUser1 = 1,
kAuditCtlStrModifyUser2 = 2,
kAuditCtlStrModifyPassword = 3,
kAuditCtlStrDeleteUser = 4,
kAuditCtlStrCreateGroup = 5,
kAuditCtlStrDeleteGroup = 6,
kAuditCtlStrModifyGroupMembership1 = 7,
kAuditCtlStrModifyGroupMembership2 = 8,
kAuditCtlStrAddToGroup = 9,
kAuditCtlStrRemoveFromGroup = 10,
kAuditCtlStrModifyGroupAttribute = 11,
kAuditCtlStrAuthenticateUser = 12,
kAuditControlStrConsts
};
#ifdef __cplusplus
extern "C" {
#endif
UInt32 AuditForThisEvent ( UInt32 inType, void *inData, char **outTextStr );
tDirStatus AuditUserOrGroupRecord ( tRecordReference inRecRef, char **outRecNameStr, char **outRecTypeStr, UInt32 *outEventCode );
tDirStatus AuditGetRecordRefInfo ( tRecordReference inRecRef, char **outRecNameStr, char **outRecTypeStr );
tDirStatus AuditGetNameFromAuthBuffer ( tDataNodePtr inAuthMethod, tDataBufferPtr inAuthBuffer, char **outUserNameStr );
#ifdef __cplusplus
}
#endif
#endif