dcerpc ...
authorStefan Metzmacher <metze@samba.org>
Tue, 15 Sep 2009 18:29:35 +0000 (20:29 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 22 Apr 2013 09:27:13 +0000 (11:27 +0200)
source4/librpc/rpc/dcerpc.h

index ef830865e8bfc55604f75feac385b8f3228ea025..635fa26518273fc941c848fe632409611723c758 100644 (file)
@@ -138,6 +138,119 @@ struct dcerpc_pipe {
 #define DCERPC_REQUEST_TIMEOUT 60
 
 
+/* dcerpc pipe flags */
+#define DCERPC_DEBUG_PRINT_IN          (1<<0)
+#define DCERPC_DEBUG_PRINT_OUT         (1<<1)
+#define DCERPC_DEBUG_PRINT_BOTH (DCERPC_DEBUG_PRINT_IN | DCERPC_DEBUG_PRINT_OUT)
+
+#define DCERPC_DEBUG_VALIDATE_IN       (1<<2)
+#define DCERPC_DEBUG_VALIDATE_OUT      (1<<3)
+#define DCERPC_DEBUG_VALIDATE_BOTH (DCERPC_DEBUG_VALIDATE_IN | DCERPC_DEBUG_VALIDATE_OUT)
+
+#define DCERPC_CONNECT                 (1<<4)
+#define DCERPC_SIGN                    (1<<5)
+#define DCERPC_SEAL                    (1<<6)
+
+#define DCERPC_PUSH_BIGENDIAN          (1<<7)
+#define DCERPC_PULL_BIGENDIAN          (1<<8)
+
+#define DCERPC_SCHANNEL                (1<<9)
+
+#define DCERPC_ANON_FALLBACK           (1<<10)
+
+/* use a 128 bit session key */
+#define DCERPC_SCHANNEL_128            (1<<12)
+
+/* check incoming pad bytes */
+#define DCERPC_DEBUG_PAD_CHECK         (1<<13)
+
+/* set LIBNDR_FLAG_REF_ALLOC flag when decoding NDR */
+#define DCERPC_NDR_REF_ALLOC           (1<<14)
+
+#define DCERPC_AUTH_OPTIONS    (DCERPC_SEAL|DCERPC_SIGN|DCERPC_SCHANNEL|DCERPC_AUTH_SPNEGO|DCERPC_AUTH_KRB5|DCERPC_AUTH_NTLM)
+
+/* select spnego auth */
+#define DCERPC_AUTH_SPNEGO             (1<<15)
+
+/* select krb5 auth */
+#define DCERPC_AUTH_KRB5               (1<<16)
+
+#define DCERPC_SMB2                    (1<<17)
+
+/* select NTLM auth */
+#define DCERPC_AUTH_NTLM               (1<<18)
+
+/* this triggers the DCERPC_PFC_FLAG_CONC_MPX flag in the bind request */
+#define DCERPC_CONCURRENT_MULTIPLEX     (1<<19)
+
+/* this triggers the DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN flag in the bind request */
+#define DCERPC_HEADER_SIGNING          (1<<20)
+
+/* use NDR64 transport */
+#define DCERPC_NDR64                   (1<<21)
+
+/* this describes a binding to a particular transport/pipe */
+struct dcerpc_binding {
+       enum dcerpc_transport_t transport;
+       struct ndr_syntax_id object;
+       const char *host;
+       const char *target_hostname;
+       const char *endpoint;
+       const char **options;
+       uint32_t flags;
+       uint32_t assoc_group_id;
+};
+#if 0
+struct dcerpc_pdu {
+       void *bla;
+};
+
+struct dcerpc_transport_connection {
+       enum dcerpc_transport_t transport;
+       struct tstream_context *stream;
+       uint32_t call_id;
+       uint32_t srv_max_xmit_frag;
+       uint32_t srv_max_recv_frag;
+       uint32_t flags;
+       struct smb_iconv_convenience *iconv_convenience;
+       struct tevent_queue *send_queue;
+};
+
+struct dcerpc_auth_context {
+       uint32_t context_id;
+       uint8_t auth_level;
+       struct gensec_context *gensec;
+};
+
+struct dcerpc_syntax_context {
+       uint32_t context_id;
+       struct ndr_syntax_id object;
+       struct ndr_syntax_id interface_id;
+       uint32_t ndr_flags;
+       struct ndr_table *table;
+};
+
+struct dcerpc_established_binding {
+       struct dcerpc_transport_connection *transport;
+       struct dcerpc_auth_context *auth;
+       struct dcerpc_syntax_context *syntax;
+};
+
+struct tevent_req *dcerpc_request_send(TALLOC_CTX *mem_ctx,
+                                      struct tevent_context *ev,
+                                      struct dcerpc_transport_connection *conn,
+                                      struct dcerpc_auth_context *auth,
+                                      struct dcerpc_syntax_context *syntax,
+                                      uint32_t opnum;
+                                      void *r);
+NTSTATUS dcerpc_request_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx);
+
+NTSTATUS dcerpc_foo(struct dcerpc_established_binding *binding,
+                   int param1, /* in */
+                   int *val, /* ref, out */
+                   WERROR *result);
+#endif
+
 struct dcerpc_pipe_connect {
        struct dcerpc_pipe *pipe;
        struct dcerpc_binding *binding;