1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

build: moved librpc/rpc/*.c into a rpccommon library

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

Autobuild-User: Andrew Tridgell <tridge@samba.org>
Autobuild-Date: Thu Feb 24 02:42:37 CET 2011 on sn-devel-104
This commit is contained in:
Andrew Tridgell 2011-02-24 11:55:45 +11:00
parent 52fe20c310
commit 5ec284d152
17 changed files with 126 additions and 14 deletions

View File

@ -27,6 +27,8 @@
#include "librpc/gen_ndr/ndr_epmapper.h"
#include "librpc/gen_ndr/ndr_misc.h"
#include "librpc/rpc/dcerpc.h"
#include "rpc_common.h"
#undef strcasecmp
#undef strncasecmp

View File

@ -23,6 +23,7 @@
#include <tevent.h>
#include "../lib/util/tevent_ntstatus.h"
#include "librpc/rpc/dcerpc.h"
#include "rpc_common.h"
struct dcerpc_binding_handle {
void *private_data;

View File

@ -21,6 +21,7 @@
#include "includes.h"
#include "librpc/rpc/dcerpc.h"
#include "rpc_common.h"
struct dcerpc_fault_table {
const char *errstr;

View File

@ -26,6 +26,7 @@
#include "lib/util/tevent_ntstatus.h"
#include "librpc/rpc/dcerpc.h"
#include "librpc/gen_ndr/ndr_dcerpc.h"
#include "rpc_common.h"
/* we need to be able to get/set the fragment length without doing a full
decode */

101
librpc/rpc/rpc_common.h Normal file
View File

@ -0,0 +1,101 @@
#ifndef __DEFAULT_LIBRPC_RPCCOMMON_H__
#define __DEFAULT_LIBRPC_RPCCOMMON_H__
/* The following definitions come from ../librpc/rpc/dcerpc_error.c */
/* The following definitions come from ../librpc/rpc/binding.c */
const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot);
/* The following definitions come from ../librpc/rpc/dcerpc_util.c */
void dcerpc_set_frag_length(DATA_BLOB *blob, uint16_t v);
uint16_t dcerpc_get_frag_length(const DATA_BLOB *blob);
void dcerpc_set_auth_length(DATA_BLOB *blob, uint16_t v);
uint8_t dcerpc_get_endian_flag(DATA_BLOB *blob);
/**
* @brief Pull a dcerpc_auth structure, taking account of any auth
* padding in the blob. For request/response packets we pass
* the whole data blob, so auth_data_only must be set to false
* as the blob contains data+pad+auth and no just pad+auth.
*
* @param pkt - The ncacn_packet strcuture
* @param mem_ctx - The mem_ctx used to allocate dcerpc_auth elements
* @param pkt_trailer - The packet trailer data, usually the trailing
* auth_info blob, but in the request/response case
* this is the stub_and_verifier blob.
* @param auth - A preallocated dcerpc_auth *empty* structure
* @param auth_length - The length of the auth trail, sum of auth header
* lenght and pkt->auth_length
* @param auth_data_only - Whether the pkt_trailer includes only the auth_blob
* (+ padding) or also other data.
*
* @return - A NTSTATUS error code.
*/
NTSTATUS dcerpc_pull_auth_trailer(struct ncacn_packet *pkt,
TALLOC_CTX *mem_ctx,
DATA_BLOB *pkt_trailer,
struct dcerpc_auth *auth,
uint32_t *auth_length,
bool auth_data_only);
struct tevent_req *dcerpc_read_ncacn_packet_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct tstream_context *stream);
NTSTATUS dcerpc_read_ncacn_packet_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
struct ncacn_packet **pkt,
DATA_BLOB *buffer);
/* The following definitions come from ../librpc/rpc/binding_handle.c */
struct dcerpc_binding_handle *_dcerpc_binding_handle_create(TALLOC_CTX *mem_ctx,
const struct dcerpc_binding_handle_ops *ops,
const struct GUID *object,
const struct ndr_interface_table *table,
void *pstate,
size_t psize,
const char *type,
const char *location);
void *_dcerpc_binding_handle_data(struct dcerpc_binding_handle *h);
void dcerpc_binding_handle_set_sync_ev(struct dcerpc_binding_handle *h,
struct tevent_context *ev);
bool dcerpc_binding_handle_is_connected(struct dcerpc_binding_handle *h);
uint32_t dcerpc_binding_handle_set_timeout(struct dcerpc_binding_handle *h,
uint32_t timeout);
struct tevent_req *dcerpc_binding_handle_raw_call_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct dcerpc_binding_handle *h,
const struct GUID *object,
uint32_t opnum,
uint32_t in_flags,
const uint8_t *in_data,
size_t in_length);
NTSTATUS dcerpc_binding_handle_raw_call_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
uint8_t **out_data,
size_t *out_length,
uint32_t *out_flags);
struct tevent_req *dcerpc_binding_handle_disconnect_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct dcerpc_binding_handle *h);
NTSTATUS dcerpc_binding_handle_disconnect_recv(struct tevent_req *req);
struct tevent_req *dcerpc_binding_handle_call_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct dcerpc_binding_handle *h,
const struct GUID *object,
const struct ndr_interface_table *table,
uint32_t opnum,
TALLOC_CTX *r_mem,
void *r_ptr);
NTSTATUS dcerpc_binding_handle_call_recv(struct tevent_req *req);
NTSTATUS dcerpc_binding_handle_call(struct dcerpc_binding_handle *h,
const struct GUID *object,
const struct ndr_interface_table *table,
uint32_t opnum,
TALLOC_CTX *r_mem,
void *r_ptr);
#endif /* __DEFAULT_LIBRPC_RPCCOMMON_H__ */

View File

@ -565,3 +565,8 @@ bld.SAMBA_LIBRARY('ndr',
depends_on='PIDL_MISC',
vnum='0.0.1'
)
bld.SAMBA_LIBRARY('rpccommon',
source='rpc/dcerpc_error.c rpc/binding.c rpc/dcerpc_util.c rpc/binding_handle.c',
deps='ndr tevent NDR_DCERPC LIBTSOCKET',
private_library=True)

View File

@ -122,10 +122,6 @@ LIBNMB_SRC = '''libsmb/unexpected.c libsmb/namecache.c libsmb/nmblib.c
libsmb/namequery.c libsmb/conncache.c
libads/dns.c libads/sitename_cache.c'''
DCE_RPC_ERR_SRC = '../librpc/rpc/dcerpc_error.c'
LIBSMB_ERR_SRC = '''${DCE_RPC_ERR_SRC}'''
LIBNTLMSSP_SRC = '''
libsmb/ntlmssp.c
libsmb/ntlmssp_wrap.c'''
@ -152,10 +148,8 @@ LIBMSRPC_SRC = '''
rpc_client/rpc_transport_np.c
rpc_client/rpc_transport_sock.c
rpc_client/rpc_transport_tstream.c
../librpc/rpc/binding.c
../librpc/rpc/dcerpc_util.c
librpc/rpc/dcerpc_helpers.c
../librpc/rpc/binding_handle.c'''
'''
#
# registry-related objects
@ -684,7 +678,7 @@ bld.SAMBA3_SUBSYSTEM('msrpc3',
source='${LIBMSRPC_SRC}',
deps='''ndr ndr-util NDR_SECURITY NDR_DCERPC NDR_SCHANNEL
RPC_NDR_EPMAPPER COMMON_SCHANNEL LIBCLI_AUTH
LIBTSOCKET krb5''',
LIBTSOCKET krb5 rpccommon''',
vars=locals())
bld.SAMBA3_SUBSYSTEM('LIBMSRPC_GEN',
@ -773,8 +767,8 @@ bld.SAMBA3_SUBSYSTEM('LIB_NONSMBD',
vars=locals())
bld.SAMBA3_SUBSYSTEM('LIBSMB_ERR',
source=LIBSMB_ERR_SRC,
deps='errors3 SECRETS3 ldap lber MSRPC_PARSE LIBCLI_AUTH',
source='',
deps='errors3 SECRETS3 ldap lber MSRPC_PARSE LIBCLI_AUTH rpccommon',
vars=locals())
bld.SAMBA3_SUBSYSTEM('LIBNTLMSSP',

View File

@ -31,6 +31,7 @@
#include "auth/gensec/gensec.h"
#include "param/param.h"
#include "lib/util/tevent_ntstatus.h"
#include "librpc/rpc/rpc_common.h"
_PUBLIC_ NTSTATUS dcerpc_init(struct loadparm_context *lp_ctx)
{

View File

@ -25,6 +25,7 @@
#include "libcli/composite/composite.h"
#include "librpc/rpc/dcerpc.h"
#include "librpc/rpc/dcerpc_proto.h"
#include "librpc/rpc/rpc_common.h"
/* transport private information used by SMB pipe transport */
struct smb_private {

View File

@ -27,6 +27,7 @@
#include "libcli/raw/ioctl.h"
#include "librpc/rpc/dcerpc.h"
#include "librpc/rpc/dcerpc_proto.h"
#include "librpc/rpc/rpc_common.h"
/* transport private information used by SMB2 pipe transport */
struct smb2_private {

View File

@ -29,6 +29,7 @@
#include "librpc/rpc/dcerpc.h"
#include "librpc/rpc/dcerpc_proto.h"
#include "libcli/resolve/resolve.h"
#include "librpc/rpc/rpc_common.h"
/* transport private information used by general socket pipe transports */
struct sock_private {

View File

@ -31,6 +31,7 @@
#include "librpc/rpc/dcerpc_proto.h"
#include "auth/credentials/credentials.h"
#include "param/param.h"
#include "librpc/rpc/rpc_common.h"
/*
find a dcerpc call on an interface by name

View File

@ -154,11 +154,9 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_WINSIF',
bld.SAMBA_LIBRARY('dcerpc',
source='''rpc/dcerpc.c rpc/dcerpc_auth.c rpc/dcerpc_schannel.c
rpc/dcerpc_util.c rpc/dcerpc_smb.c rpc/dcerpc_smb2.c rpc/dcerpc_sock.c
rpc/dcerpc_connect.c rpc/dcerpc_secondary.c ../../librpc/rpc/binding.c
../../librpc/rpc/dcerpc_error.c ../../librpc/rpc/dcerpc_util.c
../../librpc/rpc/binding_handle.c''',
rpc/dcerpc_connect.c rpc/dcerpc_secondary.c''',
pc_files='dcerpc.pc',
deps='samba_socket LIBCLI_RESOLVE LIBCLI_SMB LIBCLI_SMB2 ndr NDR_DCERPC RPC_NDR_EPMAPPER NDR_SCHANNEL RPC_NDR_NETLOGON RPC_NDR_MGMT gensec LIBCLI_AUTH LIBCLI_RAW LP_RESOLVE UTIL_TEVENT',
deps='samba_socket LIBCLI_RESOLVE LIBCLI_SMB LIBCLI_SMB2 ndr NDR_DCERPC RPC_NDR_EPMAPPER NDR_SCHANNEL RPC_NDR_NETLOGON RPC_NDR_MGMT gensec LIBCLI_AUTH LIBCLI_RAW LP_RESOLVE UTIL_TEVENT rpccommon',
autoproto='rpc/dcerpc_proto.h',
public_deps='credentials tevent talloc',
public_headers='rpc/dcerpc.h ../../librpc/gen_ndr/mgmt.h ../../librpc/gen_ndr/ndr_mgmt.h ../../librpc/gen_ndr/ndr_mgmt_c.h ../../librpc/gen_ndr/epmapper.h ../../librpc/gen_ndr/ndr_epmapper.h ../../librpc/gen_ndr/ndr_epmapper_c.h',

View File

@ -38,6 +38,7 @@
#include "lib/socket/socket.h"
#include "smbd/process_model.h"
#include "lib/messaging/irpc.h"
#include "librpc/rpc/rpc_common.h"
/*

View File

@ -38,6 +38,7 @@
#include "lib/socket/socket.h"
#include "smbd/process_model.h"
#include "lib/messaging/irpc.h"
#include "librpc/rpc/rpc_common.h"
/* this is only used when the client asks for an unknown interface */
#define DUMMY_ASSOC_GROUP 0x0FFFFFFF

View File

@ -30,6 +30,7 @@
#include "auth/gensec/gensec.h"
#include "auth/auth.h"
#include "param/param.h"
#include "librpc/rpc/rpc_common.h"
/*
parse any auth information from a dcerpc bind request

View File

@ -24,6 +24,7 @@
#include "librpc/rpc/dcerpc_proto.h"
#include "torture/rpc/torture_rpc.h"
#include "lib/util/util_net.h"
#include "librpc/rpc/rpc_common.h"
/*
display any protocol tower