From 37ae7f419702c563bcd0d9c27c02bde7efd34dd7 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 24 May 2007 23:11:11 +0000 Subject: r23127: Fill in some more netlogon dsgetdcname flavours (netr_DsRGetDCNameEx, netr_DsRGetDCNameEx2) and add new ds request and reply flags, also add some more WERROR codes. Guenther --- source/include/doserr.h | 3 ++ source/include/rpc_netlogon.h | 97 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) (limited to 'source/include') diff --git a/source/include/doserr.h b/source/include/doserr.h index 3c3978a5b9f..5073cd005c1 100644 --- a/source/include/doserr.h +++ b/source/include/doserr.h @@ -184,6 +184,7 @@ #define WERR_ALREADY_EXISTS W_ERROR(80) #define WERR_BAD_PASSWORD W_ERROR(86) #define WERR_INVALID_PARAM W_ERROR(87) +#define WERR_SEM_TIMEOUT W_ERROR(121) #define WERR_INSUFFICIENT_BUFFER W_ERROR(122) #define WERR_INVALID_NAME W_ERROR(123) #define WERR_UNKNOWN_LEVEL W_ERROR(124) @@ -193,6 +194,7 @@ #define WERR_INVALID_OWNER W_ERROR(1307) #define WERR_IO_PENDING W_ERROR(997) #define WERR_CAN_NOT_COMPLETE W_ERROR(1003) +#define WERR_INVALID_FLAGS W_ERROR(1004) #define WERR_REG_CORRUPT W_ERROR(1015) #define WERR_REG_IO_FAILURE W_ERROR(1016) #define WERR_REG_FILE_INVALID W_ERROR(1017) @@ -214,6 +216,7 @@ #define WERR_JOB_NOT_FOUND W_ERROR(2151) #define WERR_DEST_NOT_FOUND W_ERROR(2152) #define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320) +#define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453) #define WERR_STATUS_MORE_ENTRIES W_ERROR(0x0105) #define WERR_PRINTER_DRIVER_ALREADY_INSTALLED W_ERROR(ERRdriveralreadyinstalled) diff --git a/source/include/rpc_netlogon.h b/source/include/rpc_netlogon.h index 7bbd9cc1cbd..2583a5bd409 100644 --- a/source/include/rpc_netlogon.h +++ b/source/include/rpc_netlogon.h @@ -41,7 +41,9 @@ #define NET_TRUST_DOM_LIST 0x13 #define NET_DSR_GETDCNAME 0x14 #define NET_AUTH3 0x1a +#define NET_DSR_GETDCNAMEEX 0x1b #define NET_DSR_GETSITENAME 0x1c +#define NET_DSR_GETDCNAMEEX2 0x22 #define NET_SAMLOGON_EX 0x27 /* Returned delta types */ @@ -1043,7 +1045,63 @@ typedef struct net_r_sam_deltas_info { NTSTATUS status; } NET_R_SAM_DELTAS; -/* NET_Q_DSR_GETDCNAME - Ask a DC for a trusted DC name and its address */ +#define DS_FORCE_REDISCOVERY 0x00000001 +#define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010 +#define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020 +#define DS_GC_SERVER_REQUIRED 0x00000040 +#define DS_PDC_REQUIRED 0x00000080 +#define DS_BACKGROUND_ONLY 0x00000100 +#define DS_IP_REQUIRED 0x00000200 +#define DS_KDC_REQUIRED 0x00000400 +#define DS_TIMESERV_REQUIRED 0x00000800 +#define DS_WRITABLE_REQUIRED 0x00001000 +#define DS_GOOD_TIMESERV_PREFERRED 0x00002000 +#define DS_AVOID_SELF 0x00004000 +#define DS_ONLY_LDAP_NEEDED 0x00008000 + +#define DS_IS_FLAT_NAME 0x00010000 +#define DS_IS_DNS_NAME 0x00020000 + +#define DS_RETURN_DNS_NAME 0x40000000 +#define DS_RETURN_FLAT_NAME 0x80000000 + +#if 0 /* unknown yet */ +#define DS_IP_VERSION_AGNOSTIC +#define DS_TRY_NEXTCLOSEST_SITE +#endif + +#define DSGETDC_VALID_FLAGS ( \ + DS_FORCE_REDISCOVERY | \ + DS_DIRECTORY_SERVICE_REQUIRED | \ + DS_DIRECTORY_SERVICE_PREFERRED | \ + DS_GC_SERVER_REQUIRED | \ + DS_PDC_REQUIRED | \ + DS_BACKGROUND_ONLY | \ + DS_IP_REQUIRED | \ + DS_KDC_REQUIRED | \ + DS_TIMESERV_REQUIRED | \ + DS_WRITABLE_REQUIRED | \ + DS_GOOD_TIMESERV_PREFERRED | \ + DS_AVOID_SELF | \ + DS_ONLY_LDAP_NEEDED | \ + DS_IS_FLAT_NAME | \ + DS_IS_DNS_NAME | \ + DS_RETURN_FLAT_NAME | \ + DS_RETURN_DNS_NAME ) + +struct DS_DOMAIN_CONTROLLER_INFO { + const char *domain_controller_name; + const char *domain_controller_address; + int32 domain_controller_address_type; + struct GUID *domain_guid; + const char *domain_name; + const char *dns_forest_name; + uint32 flags; + const char *dc_site_name; + const char *client_site_name; +}; + +/* NET_Q_DSR_GETDCNAME */ typedef struct net_q_dsr_getdcname { uint32 ptr_server_unc; UNISTR2 uni_server_unc; @@ -1056,7 +1114,7 @@ typedef struct net_q_dsr_getdcname { uint32 flags; } NET_Q_DSR_GETDCNAME; -/* NET_R_DSR_GETDCNAME - Ask a DC for a trusted DC name and its address */ +/* NET_R_DSR_GETDCNAME */ typedef struct net_r_dsr_getdcname { uint32 ptr_dc_unc; UNISTR2 uni_dc_unc; @@ -1076,6 +1134,41 @@ typedef struct net_r_dsr_getdcname { WERROR result; } NET_R_DSR_GETDCNAME; +/* NET_Q_DSR_GETDCNAMEEX */ +typedef struct net_q_dsr_getdcnameex { + uint32 ptr_server_unc; + UNISTR2 uni_server_unc; + uint32 ptr_domain_name; + UNISTR2 uni_domain_name; + uint32 ptr_domain_guid; + struct GUID *domain_guid; + uint32 ptr_site_name; + UNISTR2 uni_site_name; + uint32 flags; +} NET_Q_DSR_GETDCNAMEEX; + +/* NET_R_DSR_GETDCNAMEEX */ +typedef struct NET_R_DSR_GETDCNAME NET_R_DSR_GETDCNAMEEX; + +/* NET_Q_DSR_GETDCNAMEEX2 */ +typedef struct net_q_dsr_getdcnameex2 { + uint32 ptr_server_unc; + UNISTR2 uni_server_unc; + uint32 ptr_client_account; + UNISTR2 uni_client_account; + uint32 mask; + uint32 ptr_domain_name; + UNISTR2 uni_domain_name; + uint32 ptr_domain_guid; + struct GUID *domain_guid; + uint32 ptr_site_name; + UNISTR2 uni_site_name; + uint32 flags; +} NET_Q_DSR_GETDCNAMEEX2; + +/* NET_R_DSR_GETDCNAMEEX */ +typedef struct NET_R_DSR_GETDCNAME NET_R_DSR_GETDCNAMEEX2; + /* NET_Q_DSR_GESITENAME */ typedef struct net_q_dsr_getsitename { uint32 ptr_computer_name; -- cgit