diff options
author | Stefan Metzmacher <metze@samba.org> | 2005-07-01 12:19:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:19:03 -0500 |
commit | ccaf752e357833b8acc49b471d78b56ae90c8d0f (patch) | |
tree | a8934e765a069a548a846714dad0610b3a7f0674 /source4/ntptr | |
parent | 4354bebda7273169304ad41fea1aa5cadfa322cf (diff) | |
download | samba-ccaf752e357833b8acc49b471d78b56ae90c8d0f.tar.gz samba-ccaf752e357833b8acc49b471d78b56ae90c8d0f.tar.bz2 samba-ccaf752e357833b8acc49b471d78b56ae90c8d0f.zip |
r8054: add OSVersion, OSVersionEx, DNSMachineName PrintServerData
metze
(This used to be commit 47781fccbc9a4fc3867e4c3959a17765c7e4dc71)
Diffstat (limited to 'source4/ntptr')
-rw-r--r-- | source4/ntptr/simple_ldb/ntptr_simple_ldb.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/source4/ntptr/simple_ldb/ntptr_simple_ldb.c b/source4/ntptr/simple_ldb/ntptr_simple_ldb.c index c83cac4440..27c13346b0 100644 --- a/source4/ntptr/simple_ldb/ntptr_simple_ldb.c +++ b/source4/ntptr/simple_ldb/ntptr_simple_ldb.c @@ -160,6 +160,53 @@ static WERROR sptr_GetPrintServerData(struct ntptr_GenericHandle *server, TALLOC r->out.type = SPOOLSS_PRINTER_DATA_TYPE_UINT32; r->out.data.value = 1; return WERR_OK; + } else if (strcmp("OSVersion", r->in.value_name) == 0) { + DATA_BLOB blob; + NTSTATUS status; + struct spoolss_OSVersion os; + + os.major = dcesrv_common_get_version_major(mem_ctx, NULL); + os.minor = dcesrv_common_get_version_minor(mem_ctx, NULL); + os.build = dcesrv_common_get_version_build(mem_ctx, NULL); + os.extra_string = ""; + + status = ndr_push_struct_blob(&blob, mem_ctx, &os, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersion); + if (!NT_STATUS_IS_OK(status)) { + return WERR_GENERAL_FAILURE; + } + + r->out.type = SPOOLSS_PRINTER_DATA_TYPE_BINARY; + r->out.data.binary = blob; + return WERR_OK; + } else if (strcmp("OSVersionEx", r->in.value_name) == 0) { + DATA_BLOB blob; + NTSTATUS status; + struct spoolss_OSVersionEx os_ex; + + os_ex.major = dcesrv_common_get_version_major(mem_ctx, NULL); + os_ex.minor = dcesrv_common_get_version_minor(mem_ctx, NULL); + os_ex.build = dcesrv_common_get_version_build(mem_ctx, NULL); + os_ex.extra_string = ""; + os_ex.unknown2 = 0; + os_ex.unknown3 = 0; + + status = ndr_push_struct_blob(&blob, mem_ctx, &os_ex, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersionEx); + if (!NT_STATUS_IS_OK(status)) { + return WERR_GENERAL_FAILURE; + } + + r->out.type = SPOOLSS_PRINTER_DATA_TYPE_BINARY; + r->out.data.binary = blob; + return WERR_OK; + } else if (strcmp("DNSMachineName", r->in.value_name) == 0) { + if (!lp_realm()) return WERR_INVALID_PARAM; + + r->out.type = SPOOLSS_PRINTER_DATA_TYPE_STRING; + r->out.data.string = talloc_asprintf(mem_ctx, "%s.%s", + lp_netbios_name(), + lp_realm()); + W_ERROR_HAVE_NO_MEMORY(r->out.data.string); + return WERR_OK; } return WERR_INVALID_PARAM; |