1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

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
This commit is contained in:
Günther Deschner 2011-02-16 00:39:55 +01:00
parent aa3f749575
commit 6840549123
9 changed files with 34 additions and 87 deletions

View File

@ -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" \

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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')

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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--;
}

View File

@ -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);

View File

@ -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'
)