/* Editor Settings: expandtabs and use 4 spaces for indentation
* ex: set softtabstop=4 tabstop=8 expandtab shiftwidth=4: *
*/
/*
* Copyright Likewise Software
* All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the license, or (at
* your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy
* of the GNU Lesser General Public License along with this program. If
* not, see .
*
* LIKEWISE SOFTWARE MAKES THIS SOFTWARE AVAILABLE UNDER OTHER LICENSING
* TERMS AS WELL. IF YOU HAVE ENTERED INTO A SEPARATE LICENSE AGREEMENT
* WITH LIKEWISE SOFTWARE, THEN YOU MAY ELECT TO USE THE SOFTWARE UNDER THE
* TERMS OF THAT SOFTWARE LICENSE AGREEMENT INSTEAD OF THE TERMS OF THE GNU
* LESSER GENERAL PUBLIC LICENSE, NOTWITHSTANDING THE ABOVE NOTICE. IF YOU
* HAVE QUESTIONS, OR WISH TO REQUEST A COPY OF THE ALTERNATE LICENSING
* TERMS OFFERED BY LIKEWISE SOFTWARE, PLEASE CONTACT LIKEWISE SOFTWARE AT
* license@likewisesoftware.com
*/
/*
* Abstract: Lsa interface definitions (rpc client library)
*
* Authors: Rafal Szczesniak (rafal@likewisesoftware.com)
*/
#ifndef _LSADEFS_H_
#define _LSADEFS_H_
#include
#include
#define LSA_LOOKUP_NAMES_ALL 1
#define LSA_LOOKUP_NAMES_DOMAINS_ONLY 2
#define LSA_LOOKUP_NAMES_PRIMARY_DOMAIN_ONLY 3
#define LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY 4
#define LSA_LOOKUP_NAMES_FOREST_TRUSTS 5
#define LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY2 6
#define LSA_ACCESS_LOOKUP_NAMES_SIDS 0x00000800
#define LSA_ACCESS_ENABLE_LSA 0x00000400
#define LSA_ACCESS_ADMIN_AUDIT_LOG_ATTRS 0x00000200
#define LSA_ACCESS_CHANGE_SYS_AUDIT_REQS 0x00000100
#define LSA_ACCESS_SET_DEFAULT_QUOTA 0x00000080
#define LSA_ACCESS_CREATE_PRIVILEGE 0x00000040
#define LSA_ACCESS_CREATE_SECRET_OBJECT 0x00000020
#define LSA_ACCESS_CREATE_SPECIAL_ACCOUNTS 0x00000010
#define LSA_ACCESS_CHANGE_DOMTRUST_RELATION 0x00000008
#define LSA_ACCESS_GET_SENSITIVE_POLICY_INFO 0x00000004
#define LSA_ACCESS_VIEW_SYS_AUDIT_REQS 0x00000002
#define LSA_ACCESS_VIEW_POLICY_INFO 0x00000001
typedef struct _object_attribute {
ULONG len;
PBYTE root_dir;
#ifdef _DCE_IDL_
[string]
#endif
PWSTR object_name;
ULONG attributes;
PBYTE sec_desc;
PSECURITY_QUALITY_OF_SERVICE sec_qos;
} ObjectAttribute;
typedef struct audit_log_info {
UINT32 percent_full;
UINT32 log_size;
NtTime retention_time;
UINT8 shutdown_in_progress;
NtTime time_to_shutdown;
UINT32 next_audit_record;
UINT32 unknown;
} AuditLogInfo;
typedef struct audit_events_info {
UINT32 auditing_mode;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
UINT32 *settings;
UINT32 count;
} AuditEventsInfo;
typedef struct lsa_domain_info {
UnicodeStringEx name;
PSID sid;
} LsaDomainInfo;
typedef struct pd_account_info {
UnicodeString name;
} PDAccountInfo;
typedef struct server_role {
UINT16 unknown;
UINT16 role;
} ServerRole;
typedef struct replica_source_info {
UnicodeString source;
UnicodeString account;
} ReplicaSourceInfo;
typedef struct default_quota_info {
UINT32 paged_pool;
UINT32 non_paged_pool;
UINT32 min_wss;
UINT32 max_wss;
UINT32 pagefile;
UINT64 unknown;
} DefaultQuotaInfo;
typedef struct modification_info {
UINT64 modified_id;
NtTime db_create_time;
} ModificationInfo;
typedef struct audit_full_set_info {
UINT8 shutdown_on_full;
} AuditFullSetInfo;
typedef struct audit_full_query_info {
UINT16 unknown;
UINT8 shutdown_on_full;
UINT8 log_is_full;
} AuditFullQueryInfo;
typedef struct _guid {
UINT32 time_low;
UINT16 time_mid;
UINT16 time_hi_and_version;
UINT8 clock_seq[2];
UINT8 node[6];
} Guid;
typedef struct dns_domain_info {
UnicodeStringEx name;
UnicodeStringEx dns_domain;
UnicodeStringEx dns_forest;
Guid domain_guid;
PSID sid;
} DnsDomainInfo;
#define LSA_POLICY_INFO_AUDIT_LOG 1
#define LSA_POLICY_INFO_AUDIT_EVENTS 2
#define LSA_POLICY_INFO_DOMAIN 3
#define LSA_POLICY_INFO_PD 4
#define LSA_POLICY_INFO_ACCOUNT_DOMAIN 5
#define LSA_POLICY_INFO_ROLE 6
#define LSA_POLICY_INFO_REPLICA 7
#define LSA_POLICY_INFO_QUOTA 8
#define LSA_POLICY_INFO_DB 9
#define LSA_POLICY_INFO_AUDIT_FULL_SET 10
#define LSA_POLICY_INFO_AUDIT_FULL_QUERY 11
#define LSA_POLICY_INFO_DNS 12
#ifndef _DCE_IDL_
typedef union lsa_policy_information {
AuditLogInfo audit_log;
AuditEventsInfo audit_events;
LsaDomainInfo domain;
PDAccountInfo pd;
LsaDomainInfo account_domain;
ServerRole role;
ReplicaSourceInfo replica;
DefaultQuotaInfo quota;
ModificationInfo db;
AuditFullSetInfo audit_set;
AuditFullQueryInfo audit_query;
DnsDomainInfo dns;
} LsaPolicyInformation;
#endif
typedef UINT16 LsaSidType;
#define SID_TYPE_USE_NONE 0
#define SID_TYPE_USER 1
#define SID_TYPE_DOM_GRP 2
#define SID_TYPE_DOMAIN 3
#define SID_TYPE_ALIAS 4
#define SID_TYPE_WKN_GRP 5
#define SID_TYPE_DELETED 6
#define SID_TYPE_INVALID 7
#define SID_TYPE_UNKNOWN 8
#define SID_TYPE_COMPUTER 9
#define SID_TYPE_LABEL 10
typedef struct ref_domain_list {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
LsaDomainInfo *domains;
UINT32 max_size;
} RefDomainList;
typedef struct translated_sid {
UINT16 type; /* SID_TYPE_ */
UINT32 rid;
UINT32 index;
} TranslatedSid;
typedef struct translated_sid_array {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
TranslatedSid *sids;
} TranslatedSidArray;
typedef struct translated_sid2 {
UINT16 type; /* SID_TYPE_ */
UINT32 rid;
UINT32 index;
UINT32 unknown1;
} TranslatedSid2;
typedef struct translated_sid_array2 {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
TranslatedSid2 *sids;
} TranslatedSidArray2;
typedef struct translated_sid3 {
UINT16 type; /* SID_TYPE_ */
PSID sid;
UINT32 index;
UINT32 unknown1;
} TranslatedSid3;
typedef struct translated_sid_array3 {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
TranslatedSid3 *sids;
} TranslatedSidArray3;
typedef struct translated_name {
UINT16 type; /* SID_TYPE_ */
UnicodeString name;
UINT32 sid_index;
} TranslatedName;
typedef struct translated_name_array {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
TranslatedName *names;
} TranslatedNameArray;
typedef struct translated_name2 {
UINT16 type; /* SID_TYPE_ */
UnicodeString name;
UINT32 sid_index;
UINT32 unknown1;
} TranslatedName2;
typedef struct translated_name_array2 {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
UINT32 count;
#ifdef _DCE_IDL_
[size_is(count)]
#endif
TranslatedName2 *names;
} TranslatedNameArray2;
typedef struct _sid_ptr {
PSID sid;
} SidPtr;
typedef struct _sid_array {
#ifdef _DCE_IDL_
[range(0,1000)]
#endif
ULONG num_sids;
#ifdef _DCE_IDL_
[size_is(num_sids)]
#endif
SidPtr* sids;
} SidArray;
typedef
#ifdef _DCE_IDL_
[context_handle]
#endif
void* POLICY_HANDLE;
#endif /* _LSADEFS_H_ */
/*
local variables:
mode: c
c-basic-offset: 4
indent-tabs-mode: nil
tab-width: 4
end:
*/