[SCM] Samba Shared Repository - branch v3-6-test updated
Günther Deschner
gd at samba.org
Mon Sep 20 11:52:58 MDT 2010
The branch, v3-6-test has been updated
via 671211c s4-smbtorture: add test_SetServiceObjectSecurity() to RPC-SVCCTL.
via d1413e8 s4-smbtorture: add LOCAL-NDR-NTLMSSP.
via 114d174 s3-nltest: add dsregdns command to nltest.
via 1bcc9e5 s3-libnetapi: support NETLOGON_CONTROL_FORCE_DNS_REG in I_NetLogonControl().
via 4904ea1 libnetapi: deal with NULL data in I_NetLogonControl2().
via 761c5d8 testprogs: skip two tests in spoolss tester.
via 9ba8811 s3-nltest: add dsgetdc command.
via fd905e7 s3-libnetapi: try using netr_DsRGetDCNameEx() in DsGetDcName().
via f36ca53 s3-libnetapi: add DS request flags to public header.
via fdbf08c s3-libnetapi: add DS_X_FLAGs to public header.
via 36839ae libnetapi: add DOMAIN_CONTROLLER_INFO_FLAGS.
via c87dd06 s3-nltest: convert server input argument into --server.
via 1bda5a0 s3-nltest: rename print_result to print_netlogon_info_result.
from 5ada1b9 s4-smbtorture: try to fix spoolss winreg Form tests on bigendian machines.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test
- Log -----------------------------------------------------------------
commit 671211c539767af5a64508ad4cf8776c27345a54
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 24 13:44:54 2009 +0200
s4-smbtorture: add test_SetServiceObjectSecurity() to RPC-SVCCTL.
Guenther
(cherry picked from commit f12756b5acac3fad4178f009865f8bcc5b6934a2)
commit d1413e8877bfed6d0a2b2c21621d8ef6cf0e225e
Author: Günther Deschner <gd at samba.org>
Date: Tue Sep 14 17:27:55 2010 +0200
s4-smbtorture: add LOCAL-NDR-NTLMSSP.
Guenther
(cherry picked from commit 55f465576c4602e74a6bc5c194adb27231c520f8)
commit 114d17415cf124e2a36bc47ebd76680362e3563c
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 17 13:16:26 2010 +0200
s3-nltest: add dsregdns command to nltest.
Guenther
(cherry picked from commit 1d8094172c69ec8d64701b70a87ddf31b0d8f4f9)
commit 1bcc9e5329dfde5ec484ae24695a0cbb58ff9f57
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 17 13:15:35 2010 +0200
s3-libnetapi: support NETLOGON_CONTROL_FORCE_DNS_REG in I_NetLogonControl().
Guenther
(cherry picked from commit 8e73826b3c2323c6e81a285f49c6b9d606cb7a53)
commit 4904ea1f3da8c9bfa5572b6970ccd76c5f454472
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 17 13:14:50 2010 +0200
libnetapi: deal with NULL data in I_NetLogonControl2().
Guenther
(cherry picked from commit 47a7a5830c145dd12e200fa12fec41bc745046d3)
commit 761c5d88ca9eee89bb9c9c08de1c5a6b87e2ad90
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 17 10:06:16 2010 +0200
testprogs: skip two tests in spoolss tester.
Guenther
(cherry picked from commit b772f4cdffda7f7e1bd0a7951bec0304102606d2)
commit 9ba8811dbabfab63c874b953df813ddea707bf2e
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 10 09:56:36 2010 +0200
s3-nltest: add dsgetdc command.
Guenther
(cherry picked from commit c35629cbb2e5f7c6743c8c15e0b3bb424e611931)
commit fd905e7dc8366c4f9dc832df31c82ca4474efc08
Author: Günther Deschner <gd at samba.org>
Date: Wed Sep 15 10:11:38 2010 +0200
s3-libnetapi: try using netr_DsRGetDCNameEx() in DsGetDcName().
Guenther
(cherry picked from commit bbdbb0cbcc3de9a3188b77c2d34cf46a33bbe980)
commit f36ca53e911e57bfa4d1c631d56a512b760f1ea8
Author: Günther Deschner <gd at samba.org>
Date: Sat Sep 11 01:23:01 2010 +0200
s3-libnetapi: add DS request flags to public header.
Guenther
(cherry picked from commit 3fe966d28003f8a09a29c9a9051672e0e066e7b6)
commit fdbf08c56771d05a3a8e89933390306df0cbbcf5
Author: Günther Deschner <gd at samba.org>
Date: Sat Sep 11 01:19:07 2010 +0200
s3-libnetapi: add DS_X_FLAGs to public header.
Guenther
(cherry picked from commit 26672e228a6eb327f5810ee1b6adb8b4bb39d5ec)
commit 36839aec7f7a13fb0866e570811e5eab340830b6
Author: Günther Deschner <gd at samba.org>
Date: Sat Sep 11 01:18:04 2010 +0200
libnetapi: add DOMAIN_CONTROLLER_INFO_FLAGS.
Guenther
(cherry picked from commit 45d772e0e616186cd8b45c81d7c775e07ab0d7ae)
commit c87dd0604050033f511d973c0709b0761922a0e3
Author: Günther Deschner <gd at samba.org>
Date: Tue Sep 14 17:39:45 2010 +0200
s3-nltest: convert server input argument into --server.
Guenther
(cherry picked from commit 5901e81acff9b6da965782276e457069bf2be55d)
commit 1bda5a0f921dc78d191fbeb39e86d6cfe1a535a4
Author: Günther Deschner <gd at samba.org>
Date: Fri Sep 10 09:56:02 2010 +0200
s3-nltest: rename print_result to print_netlogon_info_result.
Guenther
(cherry picked from commit a609c03956843b11d335b7f3b0f8d5a330588711)
-----------------------------------------------------------------------
Summary of changes:
source3/lib/netapi/examples/netlogon/nltest.c | 268 ++++++++++++++++++++++---
source3/lib/netapi/getdc.c | 13 ++
source3/lib/netapi/netapi.h | 37 ++++
source3/lib/netapi/netlogon.c | 4 +
source3/librpc/idl/libnetapi.idl | 22 ++-
source4/torture/config.mk | 2 +-
source4/torture/ndr/ndr.c | 1 +
source4/torture/ndr/ntlmssp.c | 119 +++++++++++
source4/torture/rpc/svcctl.c | 63 ++++++-
source4/torture/wscript_build | 2 +-
testprogs/win32/spoolss/testspoolss.c | 4 +
11 files changed, 499 insertions(+), 36 deletions(-)
create mode 100644 source4/torture/ndr/ntlmssp.c
Changeset truncated at 500 lines:
diff --git a/source3/lib/netapi/examples/netlogon/nltest.c b/source3/lib/netapi/examples/netlogon/nltest.c
index 9dc70da..0c393ea 100644
--- a/source3/lib/netapi/examples/netlogon/nltest.c
+++ b/source3/lib/netapi/examples/netlogon/nltest.c
@@ -30,18 +30,43 @@
#include "common.h"
enum {
- OPT_DBFLAG = 1,
+ OPT_SERVER = 1,
+ OPT_DBFLAG,
OPT_SC_QUERY,
OPT_SC_RESET,
OPT_SC_VERIFY,
- OPT_SC_CHANGE_PWD
+ OPT_SC_CHANGE_PWD,
+ OPT_DSGETDC,
+ OPT_PDC,
+ OPT_DS,
+ OPT_DSP,
+ OPT_GC,
+ OPT_KDC,
+ OPT_TIMESERV,
+ OPT_GTIMESERV,
+ OPT_WS,
+ OPT_NETBIOS,
+ OPT_DNS,
+ OPT_IP,
+ OPT_FORCE,
+ OPT_WRITABLE,
+ OPT_AVOIDSELF,
+ OPT_LDAPONLY,
+ OPT_BACKG,
+ OPT_DS_6,
+ OPT_TRY_NEXT_CLOSEST_SITE,
+ OPT_SITE,
+ OPT_ACCOUNT,
+ OPT_RET_DNS,
+ OPT_RET_NETBIOS,
+ OPT_DSREGDNS
};
/****************************************************************
****************************************************************/
-static void print_result(uint32_t level,
- uint8_t *buffer)
+static void print_netlogon_info_result(uint32_t level,
+ uint8_t *buffer)
{
struct NETLOGON_INFO_1 *i1 = NULL;
struct NETLOGON_INFO_2 *i2 = NULL;
@@ -100,25 +125,128 @@ static void print_result(uint32_t level,
/****************************************************************
****************************************************************/
+static void print_dc_info_flags(uint32_t flags)
+{
+ if (flags & DS_PDC_FLAG)
+ printf("PDC ");
+ if (flags & DS_GC_FLAG)
+ printf("GC ");
+ if (flags & DS_DS_FLAG)
+ printf("DS ");
+ if (flags & DS_LDAP_FLAG)
+ printf("LDAP ");
+ if (flags & DS_KDC_FLAG)
+ printf("KDC ");
+ if (flags & DS_TIMESERV_FLAG)
+ printf("TIMESERV ");
+ if (flags & DS_GOOD_TIMESERV_FLAG)
+ printf("GTIMESERV ");
+ if (flags & DS_WRITABLE_FLAG)
+ printf("WRITABLE ");
+ if (flags & DS_DNS_FOREST_FLAG)
+ printf("DNS_FOREST ");
+ if (flags & DS_CLOSEST_FLAG)
+ printf("CLOSE_SITE ");
+ if (flags & DS_FULL_SECRET_DOMAIN_6_FLAG)
+ printf("FULL_SECRET ");
+ /* "WS" */
+ printf("\n");
+}
+
+/****************************************************************
+****************************************************************/
+
+static void print_dc_info(struct DOMAIN_CONTROLLER_INFO *dc_info)
+{
+ if (dc_info->flags) {
+ printf(" DC: %s\n", dc_info->domain_controller_name);
+ printf(" Address: %s\n", dc_info->domain_controller_address);
+/* printf(" Dom Guid: %s\n", X(domain_guid)); */
+ printf(" Dom Name: %s\n", dc_info->domain_name);
+ printf(" Forest Name: %s\n", dc_info->dns_forest_name);
+ printf(" Dc Site Name: %s\n", dc_info->dc_site_name);
+ printf("Our Site Name: %s\n", dc_info->client_site_name);
+ printf(" Flags: ");
+ print_dc_info_flags(dc_info->flags);
+ } else {
+ printf(" DC: %s\n", dc_info->domain_controller_name);
+ printf(" Address: %s\n", dc_info->domain_controller_address);
+ printf(" Dom Name: %s\n", dc_info->domain_name);
+ }
+}
+
+/****************************************************************
+****************************************************************/
+
int main(int argc, const char **argv)
{
int opt;
NET_API_STATUS status;
struct libnetapi_ctx *ctx = NULL;
- const char *server_name = NULL;
+ char *opt_server = NULL;
char *opt_domain = NULL;
int opt_dbflag = 0;
+ int opt_pdc = 0;
+ int opt_ds = 0;
+ int opt_dsp = 0;
+ int opt_gc = 0;
+ int opt_kdc = 0;
+ int opt_timeserv = 0;
+ int opt_gtimeserv = 0;
+ int opt_ws = 0;
+ int opt_netbios = 0;
+ int opt_dns = 0;
+ int opt_ip = 0;
+ int opt_force = 0;
+ int opt_writable = 0;
+ int opt_avoidself = 0;
+ int opt_ldaponly = 0;
+ int opt_backg = 0;
+ int opt_ds_6 = 0;
+ int opt_try_next_closest_site = 0;
+ char *opt_site = NULL;
+ char *opt_account = NULL;
+ int opt_ret_dns = 0;
+ int opt_ret_netbios = 0;
+ int opt_dsregdns = 0;
uint32_t query_level = 0;
uint8_t *buffer = NULL;
+ uint32_t flags = 0;
+ struct DOMAIN_CONTROLLER_INFO *dc_info = NULL;
poptContext pc;
struct poptOption long_options[] = {
POPT_AUTOHELP
+ {"server", 0, POPT_ARG_STRING, &opt_server, OPT_SERVER, "Servername", "SERVER"},
{"dbflag", 0, POPT_ARG_INT, &opt_dbflag, OPT_DBFLAG, "New Debug Flag", "HEXFLAGS"},
{"sc_query", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_QUERY, "Query secure channel for domain on server", "DOMAIN"},
{"sc_reset", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_RESET, "Reset secure channel for domain on server to dcname", "DOMAIN"},
{"sc_verify", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_VERIFY, "Verify secure channel for domain on server", "DOMAIN"},
{"sc_change_pwd", 0, POPT_ARG_STRING, &opt_domain, OPT_SC_CHANGE_PWD, "Change a secure channel password for domain on server", "DOMAIN"},
+ {"dsgetdc", 0, POPT_ARG_STRING, &opt_domain, OPT_DSGETDC, "Call DsGetDcName", "DOMAIN"},
+ {"pdc", 0, POPT_ARG_NONE, &opt_pdc, OPT_PDC, NULL},
+ {"ds", 0, POPT_ARG_NONE, &opt_ds, OPT_DS, NULL},
+ {"dsp", 0, POPT_ARG_NONE, &opt_dsp, OPT_DSP, NULL},
+ {"gc", 0, POPT_ARG_NONE, &opt_gc, OPT_GC, NULL},
+ {"kdc", 0, POPT_ARG_NONE, &opt_kdc, OPT_KDC, NULL},
+ {"timeserv", 0, POPT_ARG_NONE, &opt_timeserv, OPT_TIMESERV, NULL},
+ {"gtimeserv", 0, POPT_ARG_NONE, &opt_gtimeserv, OPT_GTIMESERV, NULL},
+ {"ws", 0, POPT_ARG_NONE, &opt_ws, OPT_WS, NULL},
+ {"netbios", 0, POPT_ARG_NONE, &opt_netbios, OPT_NETBIOS, NULL},
+ {"dns", 0, POPT_ARG_NONE, &opt_dns, OPT_DNS, NULL},
+ {"ip", 0, POPT_ARG_NONE, &opt_ip, OPT_IP, NULL},
+ {"force", 0, POPT_ARG_NONE, &opt_force, OPT_FORCE, NULL},
+ {"writable", 0, POPT_ARG_NONE, &opt_writable, OPT_WRITABLE, NULL},
+ {"avoidself", 0, POPT_ARG_NONE, &opt_avoidself, OPT_AVOIDSELF, NULL},
+ {"ldaponly", 0, POPT_ARG_NONE, &opt_ldaponly, OPT_LDAPONLY, NULL},
+ {"backg", 0, POPT_ARG_NONE, &opt_backg, OPT_BACKG, NULL},
+ {"ds_6", 0, POPT_ARG_NONE, &opt_ds_6, OPT_DS_6, NULL},
+ {"try_next_closest_site", 0, POPT_ARG_NONE, &opt_try_next_closest_site, OPT_TRY_NEXT_CLOSEST_SITE, NULL},
+ {"site", 0, POPT_ARG_STRING, &opt_site, OPT_SITE, "SITE"},
+ {"account", 0, POPT_ARG_STRING, &opt_account, OPT_ACCOUNT, "ACCOUNT"},
+ {"ret_dns", 0, POPT_ARG_NONE, &opt_ret_dns, OPT_RET_DNS, NULL},
+ {"ret_netbios", 0, POPT_ARG_NONE, &opt_ret_netbios, OPT_RET_NETBIOS, NULL},
+ {"dsregdns", 0, POPT_ARG_NONE, &opt_dsregdns, OPT_DSREGDNS, "Force registration of all DC-specific DNS records"},
POPT_COMMON_LIBNETAPI_EXAMPLES
POPT_TABLEEND
};
@@ -130,39 +258,32 @@ int main(int argc, const char **argv)
pc = poptGetContext("nltest", argc, argv, long_options, 0);
- poptSetOtherOptionHelp(pc, "server_name");
+ poptSetOtherOptionHelp(pc, "<options>");
while((opt = poptGetNextOpt(pc)) != -1) {
}
- if (!poptPeekArg(pc)) {
- poptPrintHelp(pc, stderr, 0);
- goto done;
- }
- server_name = poptGetArg(pc);
-
if (argc == 1) {
poptPrintHelp(pc, stderr, 0);
goto done;
}
- if (!server_name || poptGetArg(pc)) {
- poptPrintHelp(pc, stderr, 0);
- goto done;
- }
-
- if ((server_name[0] == '/' && server_name[1] == '/') ||
- (server_name[0] == '\\' && server_name[1] == '\\')) {
- server_name += 2;
- }
-
poptResetContext(pc);
while ((opt = poptGetNextOpt(pc)) != -1) {
switch (opt) {
+ case OPT_SERVER:
+
+ if ((opt_server[0] == '/' && opt_server[1] == '/') ||
+ (opt_server[0] == '\\' && opt_server[1] == '\\')) {
+ opt_server += 2;
+ }
+
+ break;
+
case OPT_DBFLAG:
query_level = 1;
- status = I_NetLogonControl2(server_name,
+ status = I_NetLogonControl2(opt_server,
NETLOGON_CONTROL_SET_DBFLAG,
query_level,
(uint8_t *)opt_dbflag,
@@ -173,10 +294,13 @@ int main(int argc, const char **argv)
libnetapi_get_error_string(ctx, status));
goto done;
}
+
+ print_netlogon_info_result(query_level, buffer);
+
break;
case OPT_SC_QUERY:
query_level = 2;
- status = I_NetLogonControl2(server_name,
+ status = I_NetLogonControl2(opt_server,
NETLOGON_CONTROL_TC_QUERY,
query_level,
(uint8_t *)opt_domain,
@@ -187,10 +311,13 @@ int main(int argc, const char **argv)
libnetapi_get_error_string(ctx, status));
goto done;
}
+
+ print_netlogon_info_result(query_level, buffer);
+
break;
case OPT_SC_VERIFY:
query_level = 2;
- status = I_NetLogonControl2(server_name,
+ status = I_NetLogonControl2(opt_server,
NETLOGON_CONTROL_TC_VERIFY,
query_level,
(uint8_t *)opt_domain,
@@ -201,10 +328,13 @@ int main(int argc, const char **argv)
libnetapi_get_error_string(ctx, status));
goto done;
}
+
+ print_netlogon_info_result(query_level, buffer);
+
break;
case OPT_SC_RESET:
query_level = 2;
- status = I_NetLogonControl2(server_name,
+ status = I_NetLogonControl2(opt_server,
NETLOGON_CONTROL_REDISCOVER,
query_level,
(uint8_t *)opt_domain,
@@ -215,10 +345,13 @@ int main(int argc, const char **argv)
libnetapi_get_error_string(ctx, status));
goto done;
}
+
+ print_netlogon_info_result(query_level, buffer);
+
break;
case OPT_SC_CHANGE_PWD:
query_level = 1;
- status = I_NetLogonControl2(server_name,
+ status = I_NetLogonControl2(opt_server,
NETLOGON_CONTROL_CHANGE_PASSWORD,
query_level,
(uint8_t *)opt_domain,
@@ -229,15 +362,88 @@ int main(int argc, const char **argv)
libnetapi_get_error_string(ctx, status));
goto done;
}
+
+ print_netlogon_info_result(query_level, buffer);
+
+ break;
+ case OPT_DSREGDNS:
+ query_level = 1;
+ status = I_NetLogonControl2(opt_server,
+ NETLOGON_CONTROL_FORCE_DNS_REG,
+ query_level,
+ NULL,
+ &buffer);
+ if (status != 0) {
+ fprintf(stderr, "I_NetlogonControl failed: Status = %d 0x%x %s\n",
+ status, status,
+ libnetapi_get_error_string(ctx, status));
+ goto done;
+ }
+
+ print_netlogon_info_result(query_level, buffer);
+
+ break;
+ case OPT_DSGETDC:
+ if (opt_pdc)
+ flags |= DS_PDC_REQUIRED;
+ if (opt_ds)
+ flags |= DS_DIRECTORY_SERVICE_REQUIRED;
+ if (opt_dsp)
+ flags |= DS_DIRECTORY_SERVICE_PREFERRED;
+ if (opt_kdc)
+ flags |= DS_KDC_REQUIRED;
+ if (opt_timeserv)
+ flags |= DS_TIMESERV_REQUIRED;
+ if (opt_gtimeserv)
+ flags |= DS_GOOD_TIMESERV_PREFERRED;
+ if (opt_ws)
+ flags |= DS_WEB_SERVICE_REQUIRED;
+ if (opt_netbios)
+ flags |= DS_IS_FLAT_NAME;
+ if (opt_dns)
+ flags |= DS_IS_DNS_NAME;
+ if (opt_ip)
+ flags |= DS_IP_REQUIRED;
+ if (opt_force)
+ flags |= DS_FORCE_REDISCOVERY;
+ if (opt_writable)
+ flags |= DS_WRITABLE_REQUIRED;
+ if (opt_avoidself)
+ flags |= DS_AVOID_SELF;
+ if (opt_ldaponly)
+ flags |= DS_ONLY_LDAP_NEEDED;
+ if (opt_backg)
+ flags |= DS_BACKGROUND_ONLY;
+ if (opt_ds_6)
+ flags |= DS_DIRECTORY_SERVICE_6_REQUIRED;
+ if (opt_try_next_closest_site)
+ flags |= DS_TRY_NEXTCLOSEST_SITE;
+ if (opt_ret_dns)
+ flags |= DS_RETURN_DNS_NAME;
+ if (opt_ret_netbios)
+ flags |= DS_RETURN_FLAT_NAME;
+
+ status = DsGetDcName(opt_server,
+ opt_domain,
+ NULL, /* domain_guid */
+ opt_site,
+ flags,
+ &dc_info);
+ if (status != 0) {
+ fprintf(stderr, "DsGetDcName failed: Status = %d 0x%x %s\n",
+ status, status,
+ libnetapi_get_error_string(ctx, status));
+ goto done;
+ }
+
+ print_dc_info(dc_info);
+
break;
default:
- poptPrintHelp(pc, stderr, 0);
- goto done;
+ continue;
}
}
- print_result(query_level, buffer);
-
printf("The command completed successfully\n");
status = 0;
diff --git a/source3/lib/netapi/getdc.c b/source3/lib/netapi/getdc.c
index 787b258..565ccbc 100644
--- a/source3/lib/netapi/getdc.c
+++ b/source3/lib/netapi/getdc.c
@@ -146,6 +146,19 @@ WERROR DsGetDcName_r(struct libnetapi_ctx *ctx,
goto done;
}
+ status = rpccli_netr_DsRGetDCNameEx(pipe_cli,
+ ctx,
+ r->in.server_name,
+ r->in.domain_name,
+ r->in.domain_guid,
+ r->in.site_name,
+ r->in.flags,
+ (struct netr_DsRGetDCNameInfo **)r->out.dc_info,
+ &werr);
+ if (NT_STATUS_IS_OK(status)) {
+ goto done;
+ }
+
status = rpccli_netr_DsRGetDCName(pipe_cli,
ctx,
r->in.server_name,
diff --git a/source3/lib/netapi/netapi.h b/source3/lib/netapi/netapi.h
index 8976ebd..9e1549d 100644
--- a/source3/lib/netapi/netapi.h
+++ b/source3/lib/netapi/netapi.h
@@ -1284,6 +1284,22 @@ struct NETLOGON_INFO_4 {
const char * netlog4_trusted_domain_name;
};
+#define DS_PDC_FLAG ( 0x00000001 )
+#define DS_GC_FLAG ( 0x00000004 )
+#define DS_LDAP_FLAG ( 0x00000008 )
+#define DS_DS_FLAG ( 0x00000010 )
+#define DS_KDC_FLAG ( 0x00000020 )
+#define DS_TIMESERV_FLAG ( 0x00000040 )
+#define DS_CLOSEST_FLAG ( 0x00000080 )
+#define DS_WRITABLE_FLAG ( 0x00000100 )
+#define DS_GOOD_TIMESERV_FLAG ( 0x00000200 )
+#define DS_NDNC_FLAG ( 0x00000400 )
+#define DS_SELECT_SECRET_DOMAIN_6_FLAG ( 0x00000800 )
+#define DS_FULL_SECRET_DOMAIN_6_FLAG ( 0x00001000 )
+#define DS_DNS_CONTROLLER_FLAG ( 0x20000000 )
+#define DS_DNS_DOMAIN_FLAG ( 0x40000000 )
+#define DS_DNS_FOREST_FLAG ( 0x80000000 )
+
#endif /* _HEADER_libnetapi */
#ifndef _HEADER_netlogon
@@ -1305,6 +1321,27 @@ struct NETLOGON_INFO_4 {
#define NETLOGON_CONTROL_SET_DBFLAG ( 0x0000FFFE )
#define NETLOGON_CONTROL_BREAKPOINT ( 0x0000FFFF )
+#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_TRY_NEXTCLOSEST_SITE ( 0x00040000 )
+#define DS_DIRECTORY_SERVICE_6_REQUIRED ( 0x00080000 )
+#define DS_WEB_SERVICE_REQUIRED ( 0x00100000 )
+#define DS_RETURN_DNS_NAME ( 0x40000000 )
+#define DS_RETURN_FLAT_NAME ( 0x80000000 )
+
#endif /* _HEADER_netlogon */
/****************************************************************
diff --git a/source3/lib/netapi/netlogon.c b/source3/lib/netapi/netlogon.c
index d58b7cc..932ab8b 100644
--- a/source3/lib/netapi/netlogon.c
+++ b/source3/lib/netapi/netlogon.c
@@ -43,6 +43,9 @@ static WERROR construct_data(enum netr_LogonControlCode function_code,
case NETLOGON_CONTROL_SET_DBFLAG:
data_out->debug_level = atoi((const char *)data_in);
break;
+ case NETLOGON_CONTROL_FORCE_DNS_REG:
+ ZERO_STRUCTP(data_out);
+ break;
default:
return WERR_INVALID_PARAM;
}
@@ -193,6 +196,7 @@ WERROR I_NetLogonControl2_r(struct libnetapi_ctx *ctx,
switch (r->in.function_code) {
case NETLOGON_CONTROL_TC_VERIFY:
case NETLOGON_CONTROL_SET_DBFLAG:
+ case NETLOGON_CONTROL_FORCE_DNS_REG:
status = rpccli_netr_LogonControl2Ex(pipe_cli, ctx,
r->in.server_name,
r->in.function_code,
diff --git a/source3/librpc/idl/libnetapi.idl b/source3/librpc/idl/libnetapi.idl
index c57048d..935256a 100644
--- a/source3/librpc/idl/libnetapi.idl
+++ b/source3/librpc/idl/libnetapi.idl
@@ -800,6 +800,24 @@ interface libnetapi
/* DsGetDcName */
/*******************************************/
+ [public] typedef [v1_enum] enum {
+ DS_PDC_FLAG = 0x00000001,
+ DS_GC_FLAG = 0x00000004,
+ DS_LDAP_FLAG = 0x00000008,
+ DS_DS_FLAG = 0x00000010,
--
Samba Shared Repository
More information about the samba-cvs
mailing list