1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-07 20:23:50 +03:00

r4650: - make more use of bitmap and enum's

- move some structs out of misc.idl

metze
This commit is contained in:
Stefan Metzmacher
2005-01-10 17:28:36 +00:00
committed by Gerald (Jerry) Carter
parent fa798fe1f0
commit b6543a6e30
10 changed files with 67 additions and 59 deletions

View File

@@ -837,11 +837,11 @@ int samdb_msg_add_uint64(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg
add a samr_Password element to a message add a samr_Password element to a message
*/ */
int samdb_msg_add_hash(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg, int samdb_msg_add_hash(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg,
const char *attr_name, struct samr_Password hash) const char *attr_name, struct samr_Password *hash)
{ {
struct ldb_wrap *sam_ctx = ctx; struct ldb_wrap *sam_ctx = ctx;
struct ldb_val val; struct ldb_val val;
val.data = talloc_memdup(mem_ctx, hash.hash, 16); val.data = talloc_memdup(mem_ctx, hash->hash, 16);
if (!val.data) { if (!val.data) {
return -1; return -1;
} }

View File

@@ -42,10 +42,12 @@ struct samr_ChangePasswordUser;
struct samr_OemChangePasswordUser2; struct samr_OemChangePasswordUser2;
struct samr_ChangePasswordUser3; struct samr_ChangePasswordUser3;
struct samr_ChangePasswordUser2; struct samr_ChangePasswordUser2;
struct samr_Password;
struct samr_CryptPassword; struct samr_CryptPassword;
struct samr_CryptPasswordEx; struct samr_CryptPasswordEx;
struct samr_LogonHours; struct samr_LogonHours;
struct netr_Credential;
struct netr_Authenticator; struct netr_Authenticator;
union netr_Validation; union netr_Validation;

View File

@@ -20,6 +20,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#include "librpc/gen_ndr/ndr_netlogon.h"
struct creds_CredentialState { struct creds_CredentialState {
uint32_t negotiate_flags; uint32_t negotiate_flags;
uint8_t session_key[16]; uint8_t session_key[16];
@@ -32,8 +34,6 @@ struct creds_CredentialState {
char *account_name; char *account_name;
}; };
/* for the timebeing, use the same neg flags as Samba3. */ /* for the timebeing, use the same neg flags as Samba3. */
/* The 7 here seems to be required to get Win2k not to downgrade us /* The 7 here seems to be required to get Win2k not to downgrade us
to NT4. Actually, anything other than 1ff would seem to do... */ to NT4. Actually, anything other than 1ff would seem to do... */

View File

@@ -20,6 +20,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#include "librpc/gen_ndr/ndr_samr.h"
/* NTLMSSP mode */ /* NTLMSSP mode */
enum ntlmssp_role enum ntlmssp_role
{ {

View File

@@ -6,15 +6,6 @@
interface misc interface misc
{ {
/* server roles */
typedef enum {
ROLE_STANDALONE = 0,
ROLE_DOMAIN_MEMBER = 1,
ROLE_DOMAIN_BDC = 2,
ROLE_DOMAIN_PDC = 3
} samr_Role;
typedef [public,noprint,gensize] struct { typedef [public,noprint,gensize] struct {
uint32 time_low; uint32 time_low;
uint16 time_mid; uint16 time_mid;
@@ -27,18 +18,4 @@ interface misc
uint32 handle_type; uint32 handle_type;
GUID uuid; GUID uuid;
} policy_handle; } policy_handle;
typedef [public, flag(NDR_PAHEX)] struct {
uint8 hash[16];
} samr_Password;
typedef [public, flag(NDR_PAHEX)] struct {
uint8 data[8];
} netr_Credential;
typedef [public] struct {
netr_Credential cred;
time_t timestamp;
} netr_Authenticator;
} }

View File

@@ -216,6 +216,15 @@ interface netlogon
[case(6)] netr_SamInfo6 *sam6; [case(6)] netr_SamInfo6 *sam6;
} netr_Validation; } netr_Validation;
typedef [public, flag(NDR_PAHEX)] struct {
uint8 data[8];
} netr_Credential;
typedef [public] struct {
netr_Credential cred;
time_t timestamp;
} netr_Authenticator;
NTSTATUS netr_LogonSamLogon( NTSTATUS netr_LogonSamLogon(
[in] unistr *server_name, [in] unistr *server_name,
[in] unistr *workstation, [in] unistr *workstation,
@@ -259,14 +268,16 @@ interface netlogon
/* secure channel types */ /* secure channel types */
/* Only SEC_CHAN_WKSTA can forward requests to other domains. */ /* Only SEC_CHAN_WKSTA can forward requests to other domains. */
const int SEC_CHAN_WKSTA = 2; typedef enum {
const int SEC_CHAN_DOMAIN = 4; SEC_CHAN_WKSTA = 2,
const int SEC_CHAN_BDC = 6; SEC_CHAN_DOMAIN = 4,
SEC_CHAN_BDC = 6
} netr_SchannelType;
NTSTATUS netr_ServerAuthenticate( NTSTATUS netr_ServerAuthenticate(
[in] unistr *server_name, [in] unistr *server_name,
[in] unistr account_name, [in] unistr account_name,
[in] uint16 secure_channel_type, [in] netr_SchannelType secure_channel_type,
[in] unistr computer_name, [in] unistr computer_name,
[in,out,ref] netr_Credential *credentials [in,out,ref] netr_Credential *credentials
); );
@@ -278,7 +289,7 @@ interface netlogon
NTSTATUS netr_ServerPasswordSet( NTSTATUS netr_ServerPasswordSet(
[in] unistr *server_name, [in] unistr *server_name,
[in] unistr account_name, [in] unistr account_name,
[in] uint16 secure_channel_type, [in] netr_SchannelType secure_channel_type,
[in] unistr computer_name, [in] unistr computer_name,
[in] netr_Authenticator credential, [in] netr_Authenticator credential,
[in] samr_Password new_password, [in] samr_Password new_password,
@@ -290,9 +301,11 @@ interface netlogon
/* Function 0x07 */ /* Function 0x07 */
/* SAM database types */ /* SAM database types */
const int SAM_DATABASE_DOMAIN = 0x00; /* Domain users and groups */ typedef [v1_enum] enum {
const int SAM_DATABASE_BUILTIN = 0x01; /* BUILTIN users and groups */ SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
const int SAM_DATABASE_PRIVS = 0x02; /* Privileges */ SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
SAM_DATABASE_PRIVS = 2 /* Privileges */
} netr_SamDatabaseID;
typedef struct { typedef struct {
unistr *account_name; unistr *account_name;
@@ -656,7 +669,7 @@ interface netlogon
[in] unistr computername, [in] unistr computername,
[in] netr_Authenticator credential, [in] netr_Authenticator credential,
[in,out] netr_Authenticator return_authenticator, [in,out] netr_Authenticator return_authenticator,
[in] uint32 database_id, [in] netr_SamDatabaseID database_id,
[in,out] uint64 sequence_num, [in,out] uint64 sequence_num,
[in] uint32 preferredmaximumlength, [in] uint32 preferredmaximumlength,
[out] netr_DELTA_ENUM_ARRAY *delta_enum_array [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
@@ -671,7 +684,7 @@ interface netlogon
[in] unistr computername, [in] unistr computername,
[in] netr_Authenticator credential, [in] netr_Authenticator credential,
[in,out] netr_Authenticator return_authenticator, [in,out] netr_Authenticator return_authenticator,
[in] uint32 database_id, [in] netr_SamDatabaseID database_id,
[in,out] uint32 sync_context, [in,out] uint32 sync_context,
[in] uint32 preferredmaximumlength, [in] uint32 preferredmaximumlength,
[out] netr_DELTA_ENUM_ARRAY *delta_enum_array [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
@@ -737,8 +750,6 @@ interface netlogon
[out] unistr *dcname [out] unistr *dcname
); );
/*****************/ /*****************/
/* Function 0x0C */ /* Function 0x0C */
@@ -771,14 +782,16 @@ interface netlogon
} netr_CONTROL_QUERY_INFORMATION; } netr_CONTROL_QUERY_INFORMATION;
/* function_code values */ /* function_code values */
const int NETLOGON_CONTROL_REDISCOVER = 5; typedef [v1_enum] enum {
const int NETLOGON_CONTROL_TC_QUERY = 6; NETLOGON_CONTROL_REDISCOVER = 5,
const int NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7; NETLOGON_CONTROL_TC_QUERY = 6,
const int NETLOGON_CONTROL_SET_DBFLAG = 65534; NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7,
NETLOGON_CONTROL_SET_DBFLAG = 65534
} netr_LogonControlCode;
WERROR netr_LogonControl( WERROR netr_LogonControl(
[in] unistr *logon_server, [in] unistr *logon_server,
[in] uint32 function_code, [in] netr_LogonControlCode function_code,
[in] uint32 level, [in] uint32 level,
[out,switch_is(level)] netr_CONTROL_QUERY_INFORMATION info [out,switch_is(level)] netr_CONTROL_QUERY_INFORMATION info
); );
@@ -826,7 +839,7 @@ interface netlogon
NTSTATUS netr_ServerAuthenticate2( NTSTATUS netr_ServerAuthenticate2(
[in] unistr *server_name, [in] unistr *server_name,
[in] unistr account_name, [in] unistr account_name,
[in] uint16 secure_channel_type, [in] netr_SchannelType secure_channel_type,
[in] unistr computer_name, [in] unistr computer_name,
[in,out,ref] netr_Credential *credentials, [in,out,ref] netr_Credential *credentials,
[in,out,ref] uint32 *negotiate_flags [in,out,ref] uint32 *negotiate_flags
@@ -841,7 +854,7 @@ interface netlogon
[in] unistr computername, [in] unistr computername,
[in] netr_Authenticator credential, [in] netr_Authenticator credential,
[in,out] netr_Authenticator return_authenticator, [in,out] netr_Authenticator return_authenticator,
[in] uint32 database_id, [in] netr_SamDatabaseID database_id,
[in] uint16 restart_state, [in] uint16 restart_state,
[in,out] uint32 sync_context, [in,out] uint32 sync_context,
[in] uint32 preferredmaximumlength, [in] uint32 preferredmaximumlength,
@@ -909,7 +922,7 @@ interface netlogon
NTSTATUS netr_ServerAuthenticate3( NTSTATUS netr_ServerAuthenticate3(
[in] unistr *server_name, [in] unistr *server_name,
[in] unistr account_name, [in] unistr account_name,
[in] uint16 secure_channel_type, [in] netr_SchannelType secure_channel_type,
[in] unistr computer_name, [in] unistr computer_name,
[in,out,ref] netr_Credential *credentials, [in,out,ref] netr_Credential *credentials,
[in,out,ref] uint32 *negotiate_flags, [in,out,ref] uint32 *negotiate_flags,
@@ -1064,17 +1077,19 @@ interface netlogon
/****************/ /****************/
/* Function 0x28 */ /* Function 0x28 */
const int NETR_TRUST_FLAG_IN_FOREST = 0x01; typedef bitmap {
const int NETR_TRUST_FLAG_OUTBOUND = 0x02; NETR_TRUST_FLAG_IN_FOREST = 0x00000001,
const int NETR_TRUST_FLAG_TREEROOT = 0x04; NETR_TRUST_FLAG_OUTBOUND = 0x00000002,
const int NETR_TRUST_FLAG_PRIMARY = 0x08; NETR_TRUST_FLAG_TREEROOT = 0x00000004,
const int NETR_TRUST_FLAG_NATIVE = 0x10; NETR_TRUST_FLAG_PRIMARY = 0x00000008,
const int NETR_TRUST_FLAG_INBOUND = 0x20; NETR_TRUST_FLAG_NATIVE = 0x00000010,
NETR_TRUST_FLAG_INBOUND = 0x00000020
} netr_TrustFlags;
typedef struct { typedef struct {
unistr *netbios_name; unistr *netbios_name;
unistr *dns_name; unistr *dns_name;
uint32 trust_flags; netr_TrustFlags trust_flags;
uint32 parent_index; uint32 parent_index;
uint32 trust_type; uint32 trust_type;
uint32 trust_attributes; uint32 trust_attributes;

View File

@@ -122,6 +122,13 @@
/************************/ /************************/
/* Function 0x08 */ /* Function 0x08 */
/* server roles */
typedef [v1_enum] enum {
ROLE_STANDALONE = 0,
ROLE_DOMAIN_MEMBER = 1,
ROLE_DOMAIN_BDC = 2,
ROLE_DOMAIN_PDC = 3
} samr_Role;
typedef struct { typedef struct {
uint16 min_password_length; uint16 min_password_length;
@@ -139,7 +146,7 @@
samr_String primary; /* PDC name if this is a BDC */ samr_String primary; /* PDC name if this is a BDC */
uint64 sequence_num; uint64 sequence_num;
uint32 unknown2; uint32 unknown2;
uint32 role; samr_Role role;
uint32 unknown3; uint32 unknown3;
uint32 num_users; uint32 num_users;
uint32 num_groups; uint32 num_groups;
@@ -163,7 +170,7 @@
} samr_DomInfo6; } samr_DomInfo6;
typedef struct { typedef struct {
uint32 role; samr_Role role;
} samr_DomInfo7; } samr_DomInfo7;
typedef struct { typedef struct {
@@ -780,7 +787,10 @@
/************************/ /************************/
/* Function 0x26 */ /* Function 0x26 */
typedef [public, flag(NDR_PAHEX)] struct {
uint8 hash[16];
} samr_Password;
/* /*
this is a password change interface that doesn't give this is a password change interface that doesn't give
the server the plaintext password. Depricated. the server the plaintext password. Depricated.

View File

@@ -59,6 +59,7 @@
#include "system/network.h" #include "system/network.h"
#include "system/printing.h" #include "system/printing.h"
#include "librpc/gen_ndr/ndr_svcctl.h" #include "librpc/gen_ndr/ndr_svcctl.h"
#include "librpc/gen_ndr/ndr_samr.h"
#include "dlinklist.h" #include "dlinklist.h"
BOOL in_client = False; /* Not in the client by default */ BOOL in_client = False; /* Not in the client by default */

View File

@@ -22,6 +22,7 @@
#include "includes.h" #include "includes.h"
#include "rpc_server/dcerpc_server.h" #include "rpc_server/dcerpc_server.h"
#include "librpc/gen_ndr/ndr_samr.h"
#include "librpc/gen_ndr/ndr_dssetup.h" #include "librpc/gen_ndr/ndr_dssetup.h"
#include "rpc_server/common/common.h" #include "rpc_server/common/common.h"

View File

@@ -648,13 +648,13 @@ NTSTATUS samdb_set_password(void *ctx, TALLOC_CTX *mem_ctx,
/* the password is acceptable. Start forming the new fields */ /* the password is acceptable. Start forming the new fields */
if (lmNewHash) { if (lmNewHash) {
CHECK_RET(samdb_msg_add_hash(ctx, mem_ctx, mod, "lmPwdHash", *lmNewHash)); CHECK_RET(samdb_msg_add_hash(ctx, mem_ctx, mod, "lmPwdHash", lmNewHash));
} else { } else {
CHECK_RET(samdb_msg_add_delete(ctx, mem_ctx, mod, "lmPwdHash")); CHECK_RET(samdb_msg_add_delete(ctx, mem_ctx, mod, "lmPwdHash"));
} }
if (ntNewHash) { if (ntNewHash) {
CHECK_RET(samdb_msg_add_hash(ctx, mem_ctx, mod, "ntPwdHash", *ntNewHash)); CHECK_RET(samdb_msg_add_hash(ctx, mem_ctx, mod, "ntPwdHash", ntNewHash));
} else { } else {
CHECK_RET(samdb_msg_add_delete(ctx, mem_ctx, mod, "ntPwdHash")); CHECK_RET(samdb_msg_add_delete(ctx, mem_ctx, mod, "ntPwdHash"));
} }