From ccaf752e357833b8acc49b471d78b56ae90c8d0f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 1 Jul 2005 12:19:24 +0000 Subject: r8054: add OSVersion, OSVersionEx, DNSMachineName PrintServerData metze (This used to be commit 47781fccbc9a4fc3867e4c3959a17765c7e4dc71) --- source4/ntptr/simple_ldb/ntptr_simple_ldb.c | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'source4/ntptr/simple_ldb/ntptr_simple_ldb.c') 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; -- cgit