Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/librpc/rpc/dcerpc.h

    r414 r745  
    2424 * the so version number. */
    2525
    26 #ifndef __DCERPC_H__
    27 #define __DCERPC_H__
     26#ifndef _S3_DCERPC_H__
     27#define _S3_DCERPC_H__
    2828
    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"
    3232
    33 struct loadparm_context;
    34 struct cli_credentials;
     33#define SMB_RPC_INTERFACE_VERSION 1
    3534
    36 /**
    37  * Connection to a particular DCE/RPC interface.
    38  */
    39 struct dcerpc_pipe {
    40         const struct ndr_interface_table *table;
     35struct NL_AUTH_MESSAGE;
    4136
    42         /** SMB context used when transport is ncacn_np. */
    43         struct cli_state *cli;
     37/* auth state for all bind types. */
    4438
    45         /** Samba 3 DCE/RPC client context. */
    46         struct rpc_pipe_client *rpc_cli;
     39struct 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;
    4749};
    4850
    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  */
     52NTSTATUS 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);
     59NTSTATUS dcerpc_pull_ncacn_packet(TALLOC_CTX *mem_ctx,
     60                                  const DATA_BLOB *blob,
     61                                  struct ncacn_packet *r,
     62                                  bool bigendian);
     63NTSTATUS dcerpc_push_schannel_bind(TALLOC_CTX *mem_ctx,
     64                                   struct NL_AUTH_MESSAGE *r,
     65                                   DATA_BLOB *blob);
     66NTSTATUS 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);
     73NTSTATUS dcerpc_pull_dcerpc_auth(TALLOC_CTX *mem_ctx,
     74                                 const DATA_BLOB *blob,
     75                                 struct dcerpc_auth *r,
     76                                 bool bigendian);
     77NTSTATUS 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);
     82NTSTATUS dcerpc_add_auth_footer(struct pipe_auth_data *auth,
     83                                size_t pad_len, DATA_BLOB *rpc_out);
     84NTSTATUS 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);
    5690
    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  */
    6192
     93bool smb_register_ndr_interface(const struct ndr_interface_table *interface);
     94const struct ndr_interface_table *get_iface_from_syntax(
     95        const struct ndr_syntax_id *syntax);
     96const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx,
     97                                     const struct ndr_syntax_id *syntax);
    6298
    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.