Changeset 745 for trunk/server/source3/librpc/rpc/dcerpc.h
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/librpc/rpc/dcerpc.h
r414 r745 24 24 * the so version number. */ 25 25 26 #ifndef _ _DCERPC_H__27 #define _ _DCERPC_H__26 #ifndef _S3_DCERPC_H__ 27 #define _S3_DCERPC_H__ 28 28 29 #include " includes.h"30 #include " librpc/rpc/dcerpc.h"31 #include " librpc/gen_ndr/epmapper.h"29 #include "librpc/gen_ndr/dcerpc.h" 30 #include "../librpc/ndr/libndr.h" 31 #include "../librpc/rpc/rpc_common.h" 32 32 33 struct loadparm_context; 34 struct cli_credentials; 33 #define SMB_RPC_INTERFACE_VERSION 1 35 34 36 /** 37 * Connection to a particular DCE/RPC interface. 38 */ 39 struct dcerpc_pipe { 40 const struct ndr_interface_table *table; 35 struct NL_AUTH_MESSAGE; 41 36 42 /** SMB context used when transport is ncacn_np. */ 43 struct cli_state *cli; 37 /* auth state for all bind types. */ 44 38 45 /** Samba 3 DCE/RPC client context. */ 46 struct rpc_pipe_client *rpc_cli; 39 struct pipe_auth_data { 40 enum dcerpc_AuthType auth_type; 41 enum dcerpc_AuthLevel auth_level; 42 43 void *auth_ctx; 44 45 /* Only the client code uses these 3 for now */ 46 char *domain; 47 char *user_name; 48 DATA_BLOB user_session_key; 47 49 }; 48 50 49 struct rpc_request { 50 const struct ndr_interface_call *call; 51 prs_struct q_ps; 52 uint32_t opnum; 53 struct dcerpc_pipe *pipe; 54 void *r; 55 }; 51 /* The following definitions come from librpc/rpc/dcerpc_helpers.c */ 52 NTSTATUS dcerpc_push_ncacn_packet(TALLOC_CTX *mem_ctx, 53 enum dcerpc_pkt_type ptype, 54 uint8_t pfc_flags, 55 uint16_t auth_length, 56 uint32_t call_id, 57 union dcerpc_payload *u, 58 DATA_BLOB *blob); 59 NTSTATUS dcerpc_pull_ncacn_packet(TALLOC_CTX *mem_ctx, 60 const DATA_BLOB *blob, 61 struct ncacn_packet *r, 62 bool bigendian); 63 NTSTATUS dcerpc_push_schannel_bind(TALLOC_CTX *mem_ctx, 64 struct NL_AUTH_MESSAGE *r, 65 DATA_BLOB *blob); 66 NTSTATUS dcerpc_push_dcerpc_auth(TALLOC_CTX *mem_ctx, 67 enum dcerpc_AuthType auth_type, 68 enum dcerpc_AuthLevel auth_level, 69 uint8_t auth_pad_length, 70 uint32_t auth_context_id, 71 const DATA_BLOB *credentials, 72 DATA_BLOB *blob); 73 NTSTATUS dcerpc_pull_dcerpc_auth(TALLOC_CTX *mem_ctx, 74 const DATA_BLOB *blob, 75 struct dcerpc_auth *r, 76 bool bigendian); 77 NTSTATUS dcerpc_guess_sizes(struct pipe_auth_data *auth, 78 size_t header_len, size_t data_left, 79 size_t max_xmit_frag, size_t pad_alignment, 80 size_t *data_to_send, size_t *frag_len, 81 size_t *auth_len, size_t *pad_len); 82 NTSTATUS dcerpc_add_auth_footer(struct pipe_auth_data *auth, 83 size_t pad_len, DATA_BLOB *rpc_out); 84 NTSTATUS dcerpc_check_auth(struct pipe_auth_data *auth, 85 struct ncacn_packet *pkt, 86 DATA_BLOB *pkt_trailer, 87 size_t header_size, 88 DATA_BLOB *raw_pkt, 89 size_t *pad_len); 56 90 57 enum dcerpc_transport_t { 58 NCA_UNKNOWN, NCACN_NP, NCACN_IP_TCP, NCACN_IP_UDP, NCACN_VNS_IPC, 59 NCACN_VNS_SPP, NCACN_AT_DSP, NCADG_AT_DDP, NCALRPC, NCACN_UNIX_STREAM, 60 NCADG_UNIX_DGRAM, NCACN_HTTP, NCADG_IPX, NCACN_SPX, NCACN_INTERNAL }; 91 /* The following definitions come from librpc/rpc/rpc_common.c */ 61 92 93 bool smb_register_ndr_interface(const struct ndr_interface_table *interface); 94 const struct ndr_interface_table *get_iface_from_syntax( 95 const struct ndr_syntax_id *syntax); 96 const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, 97 const struct ndr_syntax_id *syntax); 62 98 63 /** this describes a binding to a particular transport/pipe */ 64 struct dcerpc_binding { 65 enum dcerpc_transport_t transport; 66 struct ndr_syntax_id object; 67 const char *host; 68 const char *target_hostname; 69 const char *endpoint; 70 const char **options; 71 uint32_t flags; 72 uint32_t assoc_group_id; 73 }; 74 75 76 /* dcerpc pipe flags */ 77 #define DCERPC_DEBUG_PRINT_IN (1<<0) 78 #define DCERPC_DEBUG_PRINT_OUT (1<<1) 79 #define DCERPC_DEBUG_PRINT_BOTH (DCERPC_DEBUG_PRINT_IN | DCERPC_DEBUG_PRINT_OUT) 80 81 #define DCERPC_DEBUG_VALIDATE_IN (1<<2) 82 #define DCERPC_DEBUG_VALIDATE_OUT (1<<3) 83 #define DCERPC_DEBUG_VALIDATE_BOTH (DCERPC_DEBUG_VALIDATE_IN | DCERPC_DEBUG_VALIDATE_OUT) 84 85 #define DCERPC_CONNECT (1<<4) 86 #define DCERPC_SIGN (1<<5) 87 #define DCERPC_SEAL (1<<6) 88 89 #define DCERPC_PUSH_BIGENDIAN (1<<7) 90 #define DCERPC_PULL_BIGENDIAN (1<<8) 91 92 #define DCERPC_SCHANNEL (1<<9) 93 94 /* use a 128 bit session key */ 95 #define DCERPC_SCHANNEL_128 (1<<12) 96 97 /* check incoming pad bytes */ 98 #define DCERPC_DEBUG_PAD_CHECK (1<<13) 99 100 /* set LIBNDR_FLAG_REF_ALLOC flag when decoding NDR */ 101 #define DCERPC_NDR_REF_ALLOC (1<<14) 102 103 #define DCERPC_AUTH_OPTIONS (DCERPC_SEAL|DCERPC_SIGN|DCERPC_SCHANNEL|DCERPC_AUTH_SPNEGO|DCERPC_AUTH_KRB5|DCERPC_AUTH_NTLM) 104 105 /* select spnego auth */ 106 #define DCERPC_AUTH_SPNEGO (1<<15) 107 108 /* select krb5 auth */ 109 #define DCERPC_AUTH_KRB5 (1<<16) 110 111 #define DCERPC_SMB2 (1<<17) 112 113 /* select NTLM auth */ 114 #define DCERPC_AUTH_NTLM (1<<18) 115 116 /* this triggers the DCERPC_PFC_FLAG_CONC_MPX flag in the bind request */ 117 #define DCERPC_CONCURRENT_MULTIPLEX (1<<19) 118 119 /* this triggers the DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN flag in the bind request */ 120 #define DCERPC_HEADER_SIGNING (1<<20) 121 122 /* use NDR64 transport */ 123 #define DCERPC_NDR64 (1<<21) 124 125 126 #endif /* __DCERPC_H__ */ 99 #endif /* __S3_DCERPC_H__ */
Note:
See TracChangeset
for help on using the changeset viewer.