From e34ba447ec8a54db744f0103d91ec05f7cfd60ce Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 15 Feb 2011 17:37:03 +0100 Subject: s3-librpc: move server_id marshalling to own helper file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (in preparation of merging struct server_id). Guenther Autobuild-User: Günther Deschner Autobuild-Date: Wed Feb 16 00:02:33 CET 2011 on sn-devel-104 --- source3/Makefile.in | 1 + source3/librpc/idl/messaging.idl | 2 +- source3/librpc/idl/notify.idl | 2 +- source3/librpc/ndr/ndr_server_id.c | 66 ++++++++++++++++++++++++++++++++++++++ source3/librpc/ndr/ndr_server_id.h | 6 ++++ source3/librpc/ndr/util.c | 43 ------------------------- source3/librpc/ndr/util.h | 3 -- source3/librpc/wscript_build | 9 ++++-- 8 files changed, 82 insertions(+), 50 deletions(-) create mode 100644 source3/librpc/ndr/ndr_server_id.c create mode 100644 source3/librpc/ndr/ndr_server_id.h diff --git a/source3/Makefile.in b/source3/Makefile.in index b632d5d0be..7dbb012b6d 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -318,6 +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_dcerpc.o LIBNDR_GEN_OBJ0 = librpc/gen_ndr/ndr_samr.o \ diff --git a/source3/librpc/idl/messaging.idl b/source3/librpc/idl/messaging.idl index 22c34297e4..0ac7220995 100644 --- a/source3/librpc/idl/messaging.idl +++ b/source3/librpc/idl/messaging.idl @@ -5,7 +5,7 @@ */ [ - helper("../librpc/ndr/util.h"), + 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 592af19eeb..d65e8c5f86 100644 --- a/source3/librpc/idl/notify.idl +++ b/source3/librpc/idl/notify.idl @@ -10,7 +10,7 @@ import "file_id.idl"; */ [ - helper("../librpc/ndr/util.h"), + helper("../librpc/ndr/ndr_server_id.h"), pointer_default(unique) ] interface notify diff --git a/source3/librpc/ndr/ndr_server_id.c b/source3/librpc/ndr/ndr_server_id.c new file mode 100644 index 0000000000..a6152d755e --- /dev/null +++ b/source3/librpc/ndr/ndr_server_id.c @@ -0,0 +1,66 @@ +/* + 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 new file mode 100644 index 0000000000..5975abc1f5 --- /dev/null +++ b/source3/librpc/ndr/ndr_server_id.h @@ -0,0 +1,6 @@ + +/* 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/ndr/util.c b/source3/librpc/ndr/util.c index d4e06df574..a026ecc9ed 100644 --- a/source3/librpc/ndr/util.c +++ b/source3/librpc/ndr/util.c @@ -22,49 +22,6 @@ #include "includes.h" #include "librpc/ndr/util.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--; -} - _PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss) { char addr[INET6_ADDRSTRLEN]; diff --git a/source3/librpc/ndr/util.h b/source3/librpc/ndr/util.h index 3f7be6bbaf..3bf9c0eb43 100644 --- a/source3/librpc/ndr/util.h +++ b/source3/librpc/ndr/util.h @@ -1,7 +1,4 @@ /* The following definitions come from librpc/ndr/util.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); _PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss); diff --git a/source3/librpc/wscript_build b/source3/librpc/wscript_build index ae43531f39..a07d4bcee8 100644 --- a/source3/librpc/wscript_build +++ b/source3/librpc/wscript_build @@ -10,14 +10,19 @@ bld.SAMBA_SUBSYSTEM('NDR_LIBNET_JOIN', public_deps='ndr' ) +bld.SAMBA_SUBSYSTEM('NDR_SERVER_ID', + source='ndr/ndr_server_id.c', + public_deps='ndr' + ) + bld.SAMBA_SUBSYSTEM('NDR_MESSAGING', source='gen_ndr/ndr_messaging.c', - public_deps='ndr' + public_deps='ndr NDR_SERVER_ID' ) bld.SAMBA_SUBSYSTEM('NDR_NOTIFY', source='gen_ndr/ndr_notify.c', - public_deps='ndr NDR_FILE_ID' + public_deps='ndr NDR_FILE_ID NDR_SERVER_ID' ) bld.SAMBA_SUBSYSTEM('NDR_SECRETS', -- cgit