mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
Use tables in Samba 3 ndrdump.
This commit is contained in:
parent
29838debb3
commit
e0905c3090
@ -24,6 +24,7 @@
|
||||
#include "../lib/util/dlinklist.h"
|
||||
#include "librpc/ndr/libndr.h"
|
||||
#include "librpc/ndr/ndr_table.h"
|
||||
#undef strcasecmp
|
||||
|
||||
static struct ndr_interface_list *ndr_interfaces;
|
||||
|
13
librpc/ndr/ndr_table.h
Normal file
13
librpc/ndr/ndr_table.h
Normal file
@ -0,0 +1,13 @@
|
||||
#ifndef _NDR_TABLE_PROTO_H_
|
||||
#define _NDR_TABLE_PROTO_H_
|
||||
|
||||
NTSTATUS ndr_table_register(const struct ndr_interface_table *table);
|
||||
const char *ndr_interface_name(const struct GUID *uuid, uint32_t if_version);
|
||||
int ndr_interface_num_calls(const struct GUID *uuid, uint32_t if_version);
|
||||
const struct ndr_interface_table *ndr_table_by_name(const char *name);
|
||||
const struct ndr_interface_table *ndr_table_by_uuid(const struct GUID *uuid);
|
||||
const struct ndr_interface_list *ndr_table_list(void);
|
||||
NTSTATUS ndr_table_init(void);
|
||||
|
||||
#endif /* _NDR_TABLE_PROTO_H_ */
|
||||
|
@ -19,12 +19,12 @@
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
#include "lib/cmdline/popt_common.h"
|
||||
#include "system/filesys.h"
|
||||
#include "system/locale.h"
|
||||
#include "librpc/ndr/libndr.h"
|
||||
#include "librpc/ndr/ndr_table.h"
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
#include "lib/cmdline/popt_common.h"
|
||||
#include "param/param.h"
|
||||
#endif
|
||||
|
||||
@ -49,8 +49,6 @@ static const struct ndr_interface_call *find_function(
|
||||
return &p->calls[i];
|
||||
}
|
||||
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
|
||||
_NORETURN_ static void show_pipes(void)
|
||||
{
|
||||
const struct ndr_interface_list *l;
|
||||
@ -66,8 +64,6 @@ _NORETURN_ static void show_pipes(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
_NORETURN_ static void show_functions(const struct ndr_interface_table *p)
|
||||
{
|
||||
int i;
|
||||
@ -174,9 +170,8 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
ndr_table_init();
|
||||
#else
|
||||
#if (_SAMBA_BUILD_ >= 3)
|
||||
/* Initialise samba stuff */
|
||||
load_case_tables();
|
||||
|
||||
@ -213,21 +208,13 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
|
||||
|
||||
if (!pipe_name) {
|
||||
poptPrintUsage(pc, stderr, 0);
|
||||
#if (_SAMBA_BUILD_ >= 4)
|
||||
show_pipes();
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (plugin != NULL) {
|
||||
p = load_iface_from_plugin(plugin, pipe_name);
|
||||
}
|
||||
#if (_SAMBA_BUILD_ <= 3)
|
||||
else {
|
||||
fprintf(stderr, "Only loading from DSO's supported in Samba 3\n");
|
||||
exit(1);
|
||||
}
|
||||
#else
|
||||
if (!p) {
|
||||
p = ndr_table_by_name(pipe_name);
|
||||
}
|
||||
@ -241,7 +228,6 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
|
||||
p = ndr_table_by_uuid(&uuid);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!p) {
|
||||
printf("Unknown pipe or UUID '%s'\n", pipe_name);
|
||||
|
@ -984,7 +984,11 @@ REPLACETORT_OBJ = @libreplacedir@/test/testsuite.o \
|
||||
NDRDUMP_OBJ = ../librpc/tools/ndrdump.o \
|
||||
$(PARAM_OBJ) $(LIBNDR_GEN_OBJ) \
|
||||
$(LIBSAMBA_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \
|
||||
librpc/gen_ndr/ndr_svcctl.o
|
||||
$(LIBNDR_DRSUAPI_OBJ) $(COMPRESSION_OBJ) \
|
||||
librpc/gen_ndr/ndr_svcctl.o \
|
||||
librpc/gen_ndr/tables.o ../librpc/ndr/ndr_table.o \
|
||||
../librpc/ndr/ndr_krb5pac.o \
|
||||
librpc/gen_ndr/ndr_krb5pac.o
|
||||
|
||||
DEBUG2HTML_OBJ = utils/debug2html.o utils/debugparse.o
|
||||
|
||||
@ -1217,6 +1221,10 @@ samba3-idl::
|
||||
../librpc/idl/ntsvcs.idl librpc/idl/libnetapi.idl ../librpc/idl/drsuapi.idl \
|
||||
../librpc/idl/drsblobs.idl ../librpc/idl/nbt.idl
|
||||
|
||||
librpc/gen_ndr/tables.c:: librpc/gen_ndr/*.h
|
||||
@echo "Generating $@"
|
||||
@$(PERL) ../librpc/tables.pl $^ > $@
|
||||
|
||||
#####################################################################
|
||||
|
||||
|
||||
@ -1539,7 +1547,7 @@ bin/locktest2@EXEEXT@: $(BINARY_PREREQS) $(LOCKTEST2_OBJ) @BUILD_POPT@ @LIBTALLO
|
||||
bin/ndrdump@EXEEXT@: $(BINARY_PREREQS) $(NDRDUMP_OBJ) @BUILD_POPT@ @LIBTALLOC_SHARED@ @LIBTDB_SHARED@
|
||||
@echo Linking $@
|
||||
@$(CC) $(FLAGS) -o $@ $(NDRDUMP_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) \
|
||||
$(POPT_LIBS) $(LDAP_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS)
|
||||
$(POPT_LIBS) $(LDAP_LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
|
||||
|
||||
bin/debug2html@EXEEXT@: $(BINARY_PREREQS) $(DEBUG2HTML_OBJ) @BUILD_POPT@ @LIBTALLOC_SHARED@
|
||||
@echo Linking $@
|
||||
|
83
source3/librpc/gen_ndr/tables.c
Normal file
83
source3/librpc/gen_ndr/tables.c
Normal file
@ -0,0 +1,83 @@
|
||||
|
||||
/* Automatically generated by tables.pl. DO NOT EDIT */
|
||||
|
||||
#include "includes.h"
|
||||
#include "librpc/ndr/libndr.h"
|
||||
#include "librpc/ndr/ndr_table.h"
|
||||
#include "librpc/gen_ndr/ndr_dfs.h"
|
||||
#include "librpc/gen_ndr/ndr_drsblobs.h"
|
||||
#include "librpc/gen_ndr/ndr_drsuapi.h"
|
||||
#include "librpc/gen_ndr/ndr_dssetup.h"
|
||||
#include "librpc/gen_ndr/ndr_echo.h"
|
||||
#include "librpc/gen_ndr/ndr_epmapper.h"
|
||||
#include "librpc/gen_ndr/ndr_eventlog.h"
|
||||
#include "librpc/gen_ndr/ndr_initshutdown.h"
|
||||
#include "librpc/gen_ndr/ndr_krb5pac.h"
|
||||
#include "librpc/gen_ndr/ndr_lsa.h"
|
||||
#include "librpc/gen_ndr/ndr_netlogon.h"
|
||||
#include "librpc/gen_ndr/ndr_ntsvcs.h"
|
||||
#include "librpc/gen_ndr/ndr_samr.h"
|
||||
#include "librpc/gen_ndr/ndr_srvsvc.h"
|
||||
#include "librpc/gen_ndr/ndr_svcctl.h"
|
||||
#include "librpc/gen_ndr/ndr_winreg.h"
|
||||
#include "librpc/gen_ndr/ndr_wkssvc.h"
|
||||
|
||||
NTSTATUS ndr_table_register_builtin_tables(void)
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_netdfs);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_drsblobs);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_drsuapi);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_dssetup);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_rpcecho);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_epmapper);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_eventlog);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_initshutdown);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_krb5pac);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_lsarpc);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_netlogon);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_ntsvcs);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_samr);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_srvsvc);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_svcctl);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_winreg);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
status = ndr_table_register(&ndr_table_wkssvc);
|
||||
if (NT_STATUS_IS_ERR(status)) return status;
|
||||
|
||||
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
@ -373,7 +373,7 @@ clean::
|
||||
|
||||
$(gen_ndrsrcdir)/tables.c: $(IDL_NDR_PARSE_H_FILES)
|
||||
@echo Generating $@
|
||||
@$(PERL) $(librpcsrcdir)/tables.pl --output=$@ $^ > $(gen_ndrsrcdir)/tables.x
|
||||
@$(PERL) ../librpc/tables.pl --output=$@ $^ > $(gen_ndrsrcdir)/tables.x
|
||||
@mv $(gen_ndrsrcdir)/tables.x $@
|
||||
|
||||
[SUBSYSTEM::NDR_TABLE]
|
||||
@ -390,9 +390,7 @@ PUBLIC_DEPENDENCIES = \
|
||||
NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI NDR_NFS4ACL NDR_NTP_SIGND \
|
||||
NDR_DCOM NDR_WMI
|
||||
|
||||
NDR_TABLE_OBJ_FILES = $(ndrsrcdir)/ndr_table.o $(gen_ndrsrcdir)/tables.o
|
||||
|
||||
$(eval $(call proto_header_template,$(ndrsrcdir)/ndr_table.h,$(NDR_TABLE_OBJ_FILES:.o=.c)))
|
||||
NDR_TABLE_OBJ_FILES = ../librpc/ndr/ndr_table.o $(gen_ndrsrcdir)/tables.o
|
||||
|
||||
[SUBSYSTEM::RPC_NDR_ROT]
|
||||
PUBLIC_DEPENDENCIES = NDR_ROT dcerpc
|
||||
|
Loading…
x
Reference in New Issue
Block a user