From 6840549123c9152a9fbe614a2f9d0de758318660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Wed, 16 Feb 2011 00:39:55 +0100 Subject: [PATCH] s3: add server_id.idl and use only autogenerated code. Volker, Tridge and other clustering gurus, please check. It is ok to get rid of ifdef CLUSTER_SUPPORT here, right ? Why was unique_id not marshalled at all ? Guenther --- source3/Makefile.in | 5 ++- source3/include/messages.h | 9 +--- source3/librpc/idl/messaging.idl | 3 +- source3/librpc/idl/notify.idl | 3 +- source3/librpc/idl/server_id.idl | 25 +++++++++++ source3/librpc/idl/wscript_build | 2 +- source3/librpc/ndr/ndr_server_id.c | 66 ------------------------------ source3/librpc/ndr/ndr_server_id.h | 6 --- source3/librpc/wscript_build | 2 +- 9 files changed, 34 insertions(+), 87 deletions(-) create mode 100644 source3/librpc/idl/server_id.idl delete mode 100644 source3/librpc/ndr/ndr_server_id.c delete mode 100644 source3/librpc/ndr/ndr_server_id.h diff --git a/source3/Makefile.in b/source3/Makefile.in index 8140f0aa218..8e338fd82f2 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -318,7 +318,7 @@ LIBNDR_OBJ = ../librpc/ndr/ndr_basic.o \ ../librpc/ndr/ndr_string.o \ ../librpc/ndr/uuid.o \ librpc/ndr/util.o \ - librpc/ndr/ndr_server_id.o \ + librpc/gen_ndr/ndr_server_id.o \ librpc/gen_ndr/ndr_dcerpc.o LIBNDR_GEN_OBJ0 = librpc/gen_ndr/ndr_samr.o \ @@ -1578,7 +1578,8 @@ IDL_FILES = librpc/idl/messaging.idl \ librpc/idl/wbint.idl \ librpc/idl/perfcount.idl \ librpc/idl/secrets.idl \ - librpc/idl/libnet_join.idl + librpc/idl/libnet_join.idl \ + librpc/idl/server_id.idl samba3-idl:: @PIDL_OUTPUTDIR="librpc/gen_ndr" PIDL_ARGS="$(PIDL_ARGS)" CPP="$(CPP)" PIDL="../pidl/pidl" \ diff --git a/source3/include/messages.h b/source3/include/messages.h index d4f7d2081b8..226c7c61b13 100644 --- a/source3/include/messages.h +++ b/source3/include/messages.h @@ -66,14 +66,7 @@ #define MSG_SRVID_SAMBA 0x0000000100000000LL - -struct server_id { - pid_t pid; -#ifdef CLUSTER_SUPPORT - uint32 vnn; -#endif - uint64_t unique_id; -}; +#include "librpc/gen_ndr/server_id.h" #ifdef CLUSTER_SUPPORT #define MSG_BROADCAST_PID_STR "0:0" diff --git a/source3/librpc/idl/messaging.idl b/source3/librpc/idl/messaging.idl index 0ac7220995b..36f064f23de 100644 --- a/source3/librpc/idl/messaging.idl +++ b/source3/librpc/idl/messaging.idl @@ -1,11 +1,12 @@ #include "idl_types.h" +import "server_id.idl"; + /* IDL structures for messaging code */ [ - helper("../librpc/ndr/ndr_server_id.h"), pointer_default(unique) ] interface messaging diff --git a/source3/librpc/idl/notify.idl b/source3/librpc/idl/notify.idl index d65e8c5f86c..0776ed107cc 100644 --- a/source3/librpc/idl/notify.idl +++ b/source3/librpc/idl/notify.idl @@ -1,6 +1,6 @@ #include "idl_types.h" -import "file_id.idl"; +import "file_id.idl", "server_id.idl"; /* IDL structures for notify change code @@ -10,7 +10,6 @@ import "file_id.idl"; */ [ - helper("../librpc/ndr/ndr_server_id.h"), pointer_default(unique) ] interface notify diff --git a/source3/librpc/idl/server_id.idl b/source3/librpc/idl/server_id.idl new file mode 100644 index 00000000000..ed727881c73 --- /dev/null +++ b/source3/librpc/idl/server_id.idl @@ -0,0 +1,25 @@ +[ + pointer_default(unique) +] +interface server_id +{ + + /* used to look like the following, note that unique_id was not + * marshalled at all... + + struct server_id { + pid_t pid; + #ifdef CLUSTER_SUPPORT + uint32 vnn; + #endif + uint64_t unique_id; + }; + + */ + + typedef [public] struct { + uint32 pid; + uint32 vnn; + udlong unique_id; + } server_id; +} diff --git a/source3/librpc/idl/wscript_build b/source3/librpc/idl/wscript_build index a337f4f39ad..e24475b5431 100644 --- a/source3/librpc/idl/wscript_build +++ b/source3/librpc/idl/wscript_build @@ -2,7 +2,7 @@ bld.SAMBA_PIDL_LIST('PIDL', '''messaging.idl libnetapi.idl notify.idl - perfcount.idl secrets.idl libnet_join.idl''', + perfcount.idl secrets.idl libnet_join.idl server_id.idl''', options='--includedir=../librpc/idl --header --ndr-parser', output_dir='../gen_ndr') diff --git a/source3/librpc/ndr/ndr_server_id.c b/source3/librpc/ndr/ndr_server_id.c deleted file mode 100644 index a6152d755e8..00000000000 --- a/source3/librpc/ndr/ndr_server_id.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - libndr interface - - Copyright (C) Andrew Tridgell 2003 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "includes.h" -#include "librpc/ndr/ndr_server_id.h" - -enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 4)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, - (uint32_t)r->pid)); -#ifdef CLUSTER_SUPPORT - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, - (uint32_t)r->vnn)); -#endif - } - if (ndr_flags & NDR_BUFFERS) { - } - return NDR_ERR_SUCCESS; -} - -enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r) -{ - if (ndr_flags & NDR_SCALARS) { - uint32_t pid; - NDR_CHECK(ndr_pull_align(ndr, 4)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &pid)); -#ifdef CLUSTER_SUPPORT - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->vnn)); -#endif - r->pid = (pid_t)pid; - } - if (ndr_flags & NDR_BUFFERS) { - } - return NDR_ERR_SUCCESS; -} - -void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r) -{ - ndr_print_struct(ndr, name, "server_id"); - ndr->depth++; - ndr_print_uint32(ndr, "id", (uint32_t)r->pid); -#ifdef CLUSTER_SUPPORT - ndr_print_uint32(ndr, "vnn", (uint32_t)r->vnn); -#endif - ndr->depth--; -} diff --git a/source3/librpc/ndr/ndr_server_id.h b/source3/librpc/ndr/ndr_server_id.h deleted file mode 100644 index 5975abc1f5e..00000000000 --- a/source3/librpc/ndr/ndr_server_id.h +++ /dev/null @@ -1,6 +0,0 @@ - -/* The following definitions come from librpc/ndr/ndr_server_id.c */ - -enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r); -enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r); -void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r); diff --git a/source3/librpc/wscript_build b/source3/librpc/wscript_build index a07d4bcee88..4cd98a74b9d 100644 --- a/source3/librpc/wscript_build +++ b/source3/librpc/wscript_build @@ -11,7 +11,7 @@ bld.SAMBA_SUBSYSTEM('NDR_LIBNET_JOIN', ) bld.SAMBA_SUBSYSTEM('NDR_SERVER_ID', - source='ndr/ndr_server_id.c', + source='gen_ndr/ndr_server_id.c', public_deps='ndr' )