1
0
mirror of https://github.com/altlinux/admc.git synced 2024-10-26 08:55:21 +03:00

Bandaid for samba 4.20.0 compatibility

Re_generated ndr_misc.h and ndr_misc.c for samba 4.20
compatibility. Actual ndr_misc files are used according
to samba version.
This commit is contained in:
Semyon Knyazev 2024-04-12 19:17:15 +04:00
parent 17791d752a
commit 6ca131ab4a
6 changed files with 943 additions and 1 deletions

4
.gitignore vendored
View File

@ -1,4 +1,6 @@
build/
output/
*.ini
*.qm
*.qm
src/adldap/samba/ndr_misc.c
src/adldap/samba/ndr_misc.h

View File

@ -34,6 +34,29 @@ set(ADLDAP_SOURCES
)
prefix_clangformat_setup(adldap ${ADLDAP_SOURCES})
# Bandaid to provide compatibility for Samba 4.20+ versions.
set(VERSION_H "/usr/include/samba-4.0/samba/version.h")
if (EXISTS ${VERSION_H})
file(READ ${VERSION_H} VERSION_HEADER_CONTENT)
string(REGEX MATCH "#define SAMBA_VERSION_MINOR [0-9]+" M_VERSION_LINE "${VERSION_HEADER_CONTENT}")
string(REGEX MATCH "[0-9]+" VERSION_SMB_MINOR "${M_VERSION_LINE}")
set(SMB_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/samba)
if (VERSION_SMB_MINOR)
file(REMOVE ${SMB_SRC_PATH}/ndr_misc.c ${SMB_SRC_PATH}/ndr_misc.h)
endif(VERSION_SMB_MINOR)
if (VERSION_SMB_MINOR GREATER_EQUAL 20)
file(COPY ${SMB_SRC_PATH}/src_4_20/ndr_misc.h ${SMB_SRC_PATH}/src_4_20/ndr_misc.c
DESTINATION ${SMB_SRC_PATH})
else()
file(COPY ${SMB_SRC_PATH}/src_older/ndr_misc.h ${SMB_SRC_PATH}/src_older/ndr_misc.c
DESTINATION ${SMB_SRC_PATH})
endif(VERSION_SMB_MINOR GREATER_EQUAL 20)
else()
message(WARNING "Failed to find Samba version. If its version is 20 or greater, update ndr_misc.* files.")
endif(EXISTS ${VERSION_H})
set(ADLDAP_SAMBA_SOURCES
samba/gp_manage.c

View File

@ -0,0 +1,872 @@
/* parser auto-generated by pidl */
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdarg.h>
#include <string.h>
#include "samba/ndr_misc.h"
_PUBLIC_ enum ndr_err_code ndr_push_GUID(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct GUID *r)
{
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_low));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->time_mid));
NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->time_hi_and_version));
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->clock_seq, 2));
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->node, 6));
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_GUID(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct GUID *r)
{
uint32_t size_clock_seq_0 = 0;
uint32_t size_node_0 = 0;
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_low));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->time_mid));
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->time_hi_and_version));
size_clock_seq_0 = 2;
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->clock_seq, size_clock_seq_0));
size_node_0 = 6;
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->node, size_node_0));
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
static void ndr_print_flags_GUID(struct ndr_print *ndr, const char *name, ndr_flags_type unused, const struct GUID *r)
{
ndr_print_GUID(ndr, name, r);
}
_PUBLIC_ size_t ndr_size_GUID(const struct GUID *r, libndr_flags flags)
{
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_GUID);
}
_PUBLIC_ enum ndr_err_code ndr_push_ndr_syntax_id(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct ndr_syntax_id *r)
{
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->uuid));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->if_version));
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_ndr_syntax_id(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct ndr_syntax_id *r)
{
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->uuid));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->if_version));
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
static void ndr_print_flags_ndr_syntax_id(struct ndr_print *ndr, const char *name, ndr_flags_type unused, const struct ndr_syntax_id *r)
{
ndr_print_ndr_syntax_id(ndr, name, r);
}
_PUBLIC_ void ndr_print_ndr_syntax_id(struct ndr_print *ndr, const char *name, const struct ndr_syntax_id *r)
{
ndr_print_struct(ndr, name, "ndr_syntax_id");
if (r == NULL) { ndr_print_null(ndr); return; }
ndr->depth++;
ndr_print_GUID(ndr, "uuid", &r->uuid);
ndr_print_uint32(ndr, "if_version", r->if_version);
ndr->depth--;
}
_PUBLIC_ enum ndr_err_code ndr_push_policy_handle(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct policy_handle *r)
{
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->handle_type));
NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->uuid));
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_policy_handle(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct policy_handle *r)
{
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->handle_type));
NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->uuid));
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
static void ndr_print_flags_policy_handle(struct ndr_print *ndr, const char *name, ndr_flags_type unused, const struct policy_handle *r)
{
ndr_print_policy_handle(ndr, name, r);
}
_PUBLIC_ void ndr_print_policy_handle(struct ndr_print *ndr, const char *name, const struct policy_handle *r)
{
ndr_print_struct(ndr, name, "policy_handle");
if (r == NULL) { ndr_print_null(ndr); return; }
ndr->depth++;
ndr_print_uint32(ndr, "handle_type", r->handle_type);
ndr_print_GUID(ndr, "uuid", &r->uuid);
ndr->depth--;
}
_PUBLIC_ enum ndr_err_code ndr_push_netr_SchannelType(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum netr_SchannelType r)
{
NDR_CHECK(ndr_push_enum_uint1632(ndr, NDR_SCALARS, r));
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_netr_SchannelType(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum netr_SchannelType *r)
{
uint16_t v;
NDR_CHECK(ndr_pull_enum_uint1632(ndr, NDR_SCALARS, &v));
*r = v;
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_netr_SchannelType(struct ndr_print *ndr, const char *name, enum netr_SchannelType r)
{
const char *val = NULL;
switch (r) {
case SEC_CHAN_NULL: val = "SEC_CHAN_NULL"; break;
case SEC_CHAN_LOCAL: val = "SEC_CHAN_LOCAL"; break;
case SEC_CHAN_WKSTA: val = "SEC_CHAN_WKSTA"; break;
case SEC_CHAN_DNS_DOMAIN: val = "SEC_CHAN_DNS_DOMAIN"; break;
case SEC_CHAN_DOMAIN: val = "SEC_CHAN_DOMAIN"; break;
case SEC_CHAN_LANMAN: val = "SEC_CHAN_LANMAN"; break;
case SEC_CHAN_BDC: val = "SEC_CHAN_BDC"; break;
case SEC_CHAN_RODC: val = "SEC_CHAN_RODC"; break;
}
ndr_print_enum(ndr, name, "ENUM", val, r);
}
_PUBLIC_ enum ndr_err_code ndr_push_KRB5_EDATA_NTSTATUS(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct KRB5_EDATA_NTSTATUS *r)
{
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->ntstatus));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_KRB5_EDATA_NTSTATUS(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct KRB5_EDATA_NTSTATUS *r)
{
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->ntstatus));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
}
return NDR_ERR_SUCCESS;
}
static void ndr_print_flags_KRB5_EDATA_NTSTATUS(struct ndr_print *ndr, const char *name, ndr_flags_type unused, const struct KRB5_EDATA_NTSTATUS *r)
{
ndr_print_KRB5_EDATA_NTSTATUS(ndr, name, r);
}
_PUBLIC_ void ndr_print_KRB5_EDATA_NTSTATUS(struct ndr_print *ndr, const char *name, const struct KRB5_EDATA_NTSTATUS *r)
{
ndr_print_struct(ndr, name, "KRB5_EDATA_NTSTATUS");
if (r == NULL) { ndr_print_null(ndr); return; }
ndr->depth++;
ndr_print_NTSTATUS(ndr, "ntstatus", r->ntstatus);
ndr_print_uint32(ndr, "unknown1", r->unknown1);
ndr_print_uint32(ndr, "unknown2", r->unknown2);
ndr->depth--;
}
_PUBLIC_ enum ndr_err_code ndr_push_winreg_Type(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum winreg_Type r)
{
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_winreg_Type(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum winreg_Type *r)
{
uint32_t v;
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
*r = v;
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r)
{
const char *val = NULL;
switch (r) {
case REG_NONE: val = "REG_NONE"; break;
case REG_SZ: val = "REG_SZ"; break;
case REG_EXPAND_SZ: val = "REG_EXPAND_SZ"; break;
case REG_BINARY: val = "REG_BINARY"; break;
case REG_DWORD: val = "REG_DWORD"; break;
case REG_DWORD_BIG_ENDIAN: val = "REG_DWORD_BIG_ENDIAN"; break;
case REG_LINK: val = "REG_LINK"; break;
case REG_MULTI_SZ: val = "REG_MULTI_SZ"; break;
case REG_RESOURCE_LIST: val = "REG_RESOURCE_LIST"; break;
case REG_FULL_RESOURCE_DESCRIPTOR: val = "REG_FULL_RESOURCE_DESCRIPTOR"; break;
case REG_RESOURCE_REQUIREMENTS_LIST: val = "REG_RESOURCE_REQUIREMENTS_LIST"; break;
case REG_QWORD: val = "REG_QWORD"; break;
}
ndr_print_enum(ndr, name, "ENUM", val, r);
}
_PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, ndr_flags_type ndr_flags, const union winreg_Data *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
/* This token is not used again (except perhaps below in the NDR_BUFFERS case) */
NDR_CHECK(ndr_push_steal_switch_value(ndr, r, &level));
NDR_CHECK(ndr_push_union_align(ndr, 8));
switch (level) {
case REG_NONE: {
break; }
case REG_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_EXPAND_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_BINARY: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
case REG_DWORD: {
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
break; }
case REG_DWORD_BIG_ENDIAN: {
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
ndr->flags = _flags_save_uint32;
}
break; }
case REG_MULTI_SZ: {
{
libndr_flags _flags_save_string_array = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
ndr->flags = _flags_save_string_array;
}
break; }
case REG_QWORD: {
NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->qword));
break; }
default: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
}
}
ndr->flags = _flags_save_UNION;
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, ndr_flags_type ndr_flags, union winreg_Data *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
/* This token is not used again (except perhaps below in the NDR_BUFFERS case) */
NDR_CHECK(ndr_pull_steal_switch_value(ndr, r, &level));
NDR_CHECK(ndr_pull_union_align(ndr, 8));
switch (level) {
case REG_NONE: {
break; }
case REG_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_EXPAND_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_BINARY: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
case REG_DWORD: {
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
break; }
case REG_DWORD_BIG_ENDIAN: {
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
ndr->flags = _flags_save_uint32;
}
break; }
case REG_MULTI_SZ: {
{
libndr_flags _flags_save_string_array = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
ndr->flags = _flags_save_string_array;
}
break; }
case REG_QWORD: {
NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->qword));
break; }
default: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
}
}
ndr->flags = _flags_save_UNION;
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
level = ndr_print_steal_switch_value(ndr, r);
ndr_print_union(ndr, name, level, "winreg_Data");
switch (level) {
case REG_NONE:
break;
case REG_SZ:
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
ndr_print_string(ndr, "string", r->string);
ndr->flags = _flags_save_string;
}
break;
case REG_EXPAND_SZ:
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
ndr_print_string(ndr, "string", r->string);
ndr->flags = _flags_save_string;
}
break;
case REG_BINARY:
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
ndr_print_DATA_BLOB(ndr, "binary", r->binary);
ndr->flags = _flags_save_DATA_BLOB;
}
break;
case REG_DWORD:
ndr_print_uint32(ndr, "value", r->value);
break;
case REG_DWORD_BIG_ENDIAN:
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
ndr_print_uint32(ndr, "value", r->value);
ndr->flags = _flags_save_uint32;
}
break;
case REG_MULTI_SZ:
{
libndr_flags _flags_save_string_array = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
ndr_print_string_array(ndr, "string_array", r->string_array);
ndr->flags = _flags_save_string_array;
}
break;
case REG_QWORD:
ndr_print_hyper(ndr, "qword", r->qword);
break;
default:
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
ndr_print_DATA_BLOB(ndr, "data", r->data);
ndr->flags = _flags_save_DATA_BLOB;
}
break;
}
ndr->flags = _flags_save_UNION;
}
}
_PUBLIC_ enum ndr_err_code ndr_push_winreg_Data_GPO(struct ndr_push *ndr, ndr_flags_type ndr_flags, const union winreg_Data_GPO *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
/* This token is not used again (except perhaps below in the NDR_BUFFERS case) */
NDR_CHECK(ndr_push_steal_switch_value(ndr, r, &level));
NDR_CHECK(ndr_push_union_align(ndr, 8));
switch (level) {
case REG_NONE: {
break; }
case REG_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_EXPAND_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_BINARY: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
case REG_DWORD: {
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
break; }
case REG_DWORD_BIG_ENDIAN: {
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
ndr->flags = _flags_save_uint32;
}
break; }
case REG_QWORD: {
NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->qword));
break; }
default: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
}
}
ndr->flags = _flags_save_UNION;
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data_GPO(struct ndr_pull *ndr, ndr_flags_type ndr_flags, union winreg_Data_GPO *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
if (ndr_flags & NDR_SCALARS) {
/* This token is not used again (except perhaps below in the NDR_BUFFERS case) */
NDR_CHECK(ndr_pull_steal_switch_value(ndr, r, &level));
NDR_CHECK(ndr_pull_union_align(ndr, 8));
switch (level) {
case REG_NONE: {
break; }
case REG_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_EXPAND_SZ: {
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
ndr->flags = _flags_save_string;
}
break; }
case REG_BINARY: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
case REG_DWORD: {
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
break; }
case REG_DWORD_BIG_ENDIAN: {
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
ndr->flags = _flags_save_uint32;
}
break; }
case REG_QWORD: {
NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->qword));
break; }
default: {
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
ndr->flags = _flags_save_DATA_BLOB;
}
break; }
}
}
ndr->flags = _flags_save_UNION;
}
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_winreg_Data_GPO(struct ndr_print *ndr, const char *name, const union winreg_Data_GPO *r)
{
uint32_t level;
{
libndr_flags _flags_save_UNION = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
level = ndr_print_steal_switch_value(ndr, r);
ndr_print_union(ndr, name, level, "winreg_Data_GPO");
switch (level) {
case REG_NONE:
break;
case REG_SZ:
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
ndr_print_string(ndr, "string", r->string);
ndr->flags = _flags_save_string;
}
break;
case REG_EXPAND_SZ:
{
libndr_flags _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
ndr_print_string(ndr, "string", r->string);
ndr->flags = _flags_save_string;
}
break;
case REG_BINARY:
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
ndr_print_DATA_BLOB(ndr, "binary", r->binary);
ndr->flags = _flags_save_DATA_BLOB;
}
break;
case REG_DWORD:
ndr_print_uint32(ndr, "value", r->value);
break;
case REG_DWORD_BIG_ENDIAN:
{
libndr_flags _flags_save_uint32 = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
ndr_print_uint32(ndr, "value", r->value);
ndr->flags = _flags_save_uint32;
}
break;
case REG_QWORD:
ndr_print_hyper(ndr, "qword", r->qword);
break;
default:
{
libndr_flags _flags_save_DATA_BLOB = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
ndr_print_DATA_BLOB(ndr, "data", r->data);
ndr->flags = _flags_save_DATA_BLOB;
}
break;
}
ndr->flags = _flags_save_UNION;
}
}
_PUBLIC_ size_t ndr_size_winreg_Data_GPO(const union winreg_Data_GPO *r, uint32_t level, libndr_flags flags)
{
flags |= LIBNDR_FLAG_LITTLE_ENDIAN;
return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_winreg_Data_GPO);
}
_PUBLIC_ enum ndr_err_code ndr_push_netr_SamDatabaseID(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum netr_SamDatabaseID r)
{
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_netr_SamDatabaseID(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum netr_SamDatabaseID *r)
{
uint32_t v;
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
*r = v;
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_netr_SamDatabaseID(struct ndr_print *ndr, const char *name, enum netr_SamDatabaseID r)
{
const char *val = NULL;
switch (r) {
case SAM_DATABASE_DOMAIN: val = "SAM_DATABASE_DOMAIN"; break;
case SAM_DATABASE_BUILTIN: val = "SAM_DATABASE_BUILTIN"; break;
case SAM_DATABASE_PRIVS: val = "SAM_DATABASE_PRIVS"; break;
}
ndr_print_enum(ndr, name, "ENUM", val, r);
}
_PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, ndr_flags_type ndr_flags, uint32_t r)
{
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
return NDR_ERR_SUCCESS;
}
_PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, ndr_flags_type ndr_flags, uint32_t *r)
{
uint32_t v;
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
*r = v;
return NDR_ERR_SUCCESS;
}
_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
{
ndr_print_uint32(ndr, name, r);
ndr->depth++;
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
ndr->depth--;
}
#ifndef SKIP_NDR_TABLE_misc
static const struct ndr_interface_public_struct misc_public_structs[] = {
{
.name = "GUID",
.struct_size = sizeof(struct GUID ),
.ndr_push = (ndr_push_flags_fn_t) ndr_push_GUID,
.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_GUID,
.ndr_print = (ndr_print_function_t) ndr_print_flags_GUID,
},
{
.name = "ndr_syntax_id",
.struct_size = sizeof(struct ndr_syntax_id ),
.ndr_push = (ndr_push_flags_fn_t) ndr_push_ndr_syntax_id,
.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_ndr_syntax_id,
.ndr_print = (ndr_print_function_t) ndr_print_flags_ndr_syntax_id,
},
{
.name = "policy_handle",
.struct_size = sizeof(struct policy_handle ),
.ndr_push = (ndr_push_flags_fn_t) ndr_push_policy_handle,
.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_policy_handle,
.ndr_print = (ndr_print_function_t) ndr_print_flags_policy_handle,
},
{
.name = "KRB5_EDATA_NTSTATUS",
.struct_size = sizeof(struct KRB5_EDATA_NTSTATUS ),
.ndr_push = (ndr_push_flags_fn_t) ndr_push_KRB5_EDATA_NTSTATUS,
.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_KRB5_EDATA_NTSTATUS,
.ndr_print = (ndr_print_function_t) ndr_print_flags_KRB5_EDATA_NTSTATUS,
},
{ .name = NULL }
};
static const struct ndr_interface_call misc_calls[] = {
{ .name = NULL }
};
static const char * const misc_endpoint_strings[] = {
"ncacn_np:[\\pipe\\misc]",
};
static const struct ndr_interface_string_array misc_endpoints = {
.count = 1,
.names = misc_endpoint_strings
};
static const char * const misc_authservice_strings[] = {
"host",
};
static const struct ndr_interface_string_array misc_authservices = {
.count = 1,
.names = misc_authservice_strings
};
const struct ndr_interface_table ndr_table_misc = {
.name = "misc",
.num_calls = 0,
.calls = misc_calls,
.num_public_structs = 4,
.public_structs = misc_public_structs,
.endpoints = &misc_endpoints,
.authservices = &misc_authservices
};
#endif /* SKIP_NDR_TABLE_misc */

View File

@ -0,0 +1,45 @@
/* header auto-generated by pidl */
#include <ndr.h>
#include <inttypes.h>
// #include "samba/misc.h"
#ifndef _HEADER_NDR_misc
#define _HEADER_NDR_misc
extern const struct ndr_interface_table ndr_table_misc;
#define NDR_MISC_CALL_COUNT (0)
enum ndr_err_code ndr_push_GUID(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct GUID *r);
enum ndr_err_code ndr_pull_GUID(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct GUID *r);
void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *r);
size_t ndr_size_GUID(const struct GUID *r, libndr_flags flags);
enum ndr_err_code ndr_push_ndr_syntax_id(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct ndr_syntax_id *r);
enum ndr_err_code ndr_pull_ndr_syntax_id(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct ndr_syntax_id *r);
void ndr_print_ndr_syntax_id(struct ndr_print *ndr, const char *name, const struct ndr_syntax_id *r);
enum ndr_err_code ndr_push_policy_handle(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct policy_handle *r);
enum ndr_err_code ndr_pull_policy_handle(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct policy_handle *r);
void ndr_print_policy_handle(struct ndr_print *ndr, const char *name, const struct policy_handle *r);
enum ndr_err_code ndr_push_netr_SchannelType(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum netr_SchannelType r);
enum ndr_err_code ndr_pull_netr_SchannelType(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum netr_SchannelType *r);
void ndr_print_netr_SchannelType(struct ndr_print *ndr, const char *name, enum netr_SchannelType r);
enum ndr_err_code ndr_push_KRB5_EDATA_NTSTATUS(struct ndr_push *ndr, ndr_flags_type ndr_flags, const struct KRB5_EDATA_NTSTATUS *r);
enum ndr_err_code ndr_pull_KRB5_EDATA_NTSTATUS(struct ndr_pull *ndr, ndr_flags_type ndr_flags, struct KRB5_EDATA_NTSTATUS *r);
void ndr_print_KRB5_EDATA_NTSTATUS(struct ndr_print *ndr, const char *name, const struct KRB5_EDATA_NTSTATUS *r);
enum ndr_err_code ndr_push_winreg_Type(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum winreg_Type r);
enum ndr_err_code ndr_pull_winreg_Type(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum winreg_Type *r);
void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r);
enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, ndr_flags_type ndr_flags, const union winreg_Data *r);
enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, ndr_flags_type ndr_flags, union winreg_Data *r);
void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r);
enum ndr_err_code ndr_push_winreg_Data_GPO(struct ndr_push *ndr, ndr_flags_type ndr_flags, const union winreg_Data_GPO *r);
enum ndr_err_code ndr_pull_winreg_Data_GPO(struct ndr_pull *ndr, ndr_flags_type ndr_flags, union winreg_Data_GPO *r);
void ndr_print_winreg_Data_GPO(struct ndr_print *ndr, const char *name, const union winreg_Data_GPO *r);
size_t ndr_size_winreg_Data_GPO(const union winreg_Data_GPO *r, uint32_t level, libndr_flags flags);
enum ndr_err_code ndr_push_netr_SamDatabaseID(struct ndr_push *ndr, ndr_flags_type ndr_flags, enum netr_SamDatabaseID r);
enum ndr_err_code ndr_pull_netr_SamDatabaseID(struct ndr_pull *ndr, ndr_flags_type ndr_flags, enum netr_SamDatabaseID *r);
void ndr_print_netr_SamDatabaseID(struct ndr_print *ndr, const char *name, enum netr_SamDatabaseID r);
enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, ndr_flags_type ndr_flags, uint32_t r);
enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, ndr_flags_type ndr_flags, uint32_t *r);
void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r);
#endif /* _HEADER_NDR_misc */