Add context for libcli_resolve.
[samba-svnmirror.git] / source / librpc / rpc / dcerpc.h
index c6dbc3547780decbc4ea691754eb38e9347542b1..9936ebe0018be74002649071915b5540e398bb3f 100644 (file)
@@ -8,7 +8,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #ifndef __DCERPC_H__
 #define __DCERPC_H__
 
-#include "core.h"
+#include "lib/util/data_blob.h"
 #include "librpc/gen_ndr/dcerpc.h"
 #include "librpc/ndr/libndr.h"
 
 enum dcerpc_transport_t {
-       NCACN_NP, NCACN_IP_TCP, NCACN_IP_UDP, NCACN_VNS_IPC, NCACN_VNS_SPP
-       NCACN_AT_DSP, NCADG_AT_DDP, NCALRPC, NCACN_UNIX_STREAM, NCADG_UNIX_DGRAM,
-       NCACN_HTTP, NCADG_IPX, NCACN_SPX };
+       NCA_UNKNOWN, NCACN_NP, NCACN_IP_TCP, NCACN_IP_UDP, NCACN_VNS_IPC
+       NCACN_VNS_SPP, NCACN_AT_DSP, NCADG_AT_DDP, NCALRPC, NCACN_UNIX_STREAM, 
+       NCADG_UNIX_DGRAM, NCACN_HTTP, NCADG_IPX, NCACN_SPX };
 
 /*
   this defines a generic security context for signed/sealed dcerpc pipes.
@@ -62,7 +61,7 @@ struct dcerpc_connection {
 
        struct dcerpc_transport {
                enum dcerpc_transport_t transport;
-               void *private;
+               void *private_data;
 
                NTSTATUS (*shutdown_pipe)(struct dcerpc_connection *, NTSTATUS status);
 
@@ -71,7 +70,7 @@ struct dcerpc_connection {
                const char *(*target_hostname)(struct dcerpc_connection *);
 
                /* send a request to the server */
-               NTSTATUS (*send_request)(struct dcerpc_connection *, DATA_BLOB *, BOOL trigger_read);
+               NTSTATUS (*send_request)(struct dcerpc_connection *, DATA_BLOB *, bool trigger_read);
 
                /* send a read request to the server */
                NTSTATUS (*send_read)(struct dcerpc_connection *);
@@ -99,8 +98,8 @@ struct dcerpc_pipe {
 
        uint32_t assoc_group_id;
 
-       struct dcerpc_syntax_id syntax;
-       struct dcerpc_syntax_id transfer_syntax;
+       struct ndr_syntax_id syntax;
+       struct ndr_syntax_id transfer_syntax;
 
        struct dcerpc_connection *conn;
        struct dcerpc_binding *binding;
@@ -159,47 +158,10 @@ struct dcerpc_pipe {
 /* this triggers the DCERPC_PFC_FLAG_CONC_MPX flag in the bind request */
 #define DCERPC_CONCURRENT_MULTIPLEX     (1<<19)
 
-/*
-  this is used to find pointers to calls
-*/
-struct dcerpc_interface_call {
-       const char *name;
-       size_t struct_size;
-       ndr_push_flags_fn_t ndr_push;
-       ndr_pull_flags_fn_t ndr_pull;
-       ndr_print_function_t ndr_print;
-       BOOL async;
-};
-
-struct dcerpc_endpoint_list {
-       uint32_t count;
-       const char * const *names;
-};
-
-struct dcerpc_authservice_list {
-       uint32_t count;
-       const char * const *names;
-};
-
-struct dcerpc_interface_table {
-       const char *name;
-       struct dcerpc_syntax_id syntax_id;
-       const char *helpstring;
-       uint32_t num_calls;
-       const struct dcerpc_interface_call *calls;
-       const struct dcerpc_endpoint_list *endpoints;
-       const struct dcerpc_authservice_list *authservices;
-};
-
-struct dcerpc_interface_list {
-       struct dcerpc_interface_list *prev, *next;
-       const struct dcerpc_interface_table *table;
-};
-
 /* this describes a binding to a particular transport/pipe */
 struct dcerpc_binding {
        enum dcerpc_transport_t transport;
-       struct dcerpc_syntax_id object;
+       struct ndr_syntax_id object;
        const char *host;
        const char *target_hostname;
        const char *endpoint;
@@ -213,8 +175,9 @@ struct dcerpc_pipe_connect {
        struct dcerpc_pipe *pipe;
        struct dcerpc_binding *binding;
        const char *pipe_name;
-       const struct dcerpc_interface_table *interface;
+       const struct ndr_interface_table *interface;
        struct cli_credentials *creds;
+       struct resolve_context *resolve_ctx;
 };
 
 
@@ -245,11 +208,12 @@ struct rpc_request {
        const struct GUID *object;
        uint16_t opnum;
        DATA_BLOB request_data;
-       BOOL async_call;
+       bool async_call;
+       bool ignore_timeout;
 
        /* use by the ndr level async recv call */
        struct {
-               const struct dcerpc_interface_table *table;
+               const struct ndr_interface_table *table;
                uint32_t opnum;
                void *struct_ptr;
                TALLOC_CTX *mem_ctx;
@@ -257,7 +221,7 @@ struct rpc_request {
 
        struct {
                void (*callback)(struct rpc_request *);
-               void *private;
+               void *private_data;
        } async;
 };