Add data structures for initial dcerpc support.
authorTim Potter <tpot@samba.org>
Tue, 28 Oct 2003 10:21:36 +0000 (10:21 +0000)
committerTim Potter <tpot@samba.org>
Tue, 28 Oct 2003 10:21:36 +0000 (10:21 +0000)
source/include/dcerpc_interfaces.h [new file with mode: 0644]
source/include/smb.h

diff --git a/source/include/dcerpc_interfaces.h b/source/include/dcerpc_interfaces.h
new file mode 100644 (file)
index 0000000..831e19c
--- /dev/null
@@ -0,0 +1,93 @@
+/* 
+   Unix SMB/CIFS implementation.
+   DCERPC interface structures
+   Copyright (C) Tim Potter 2003
+   
+   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
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   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.
+*/
+
+struct dcerpc_hdr {
+       uint8 rpc_vers;         /* RPC version */
+       uint8 rpc_vers_minor;   /* Minor version */
+       uint8 ptype;            /* Packet type */
+       uint8 pfc_flags;        /* Fragmentation flags */
+       uint8 drep[4];          /* NDR data representation */
+       uint16 frag_len;        /* Total length of fragment */
+       uint32 call_id;         /* Call identifier */
+};
+
+struct dcerpc_uuid {
+       uint32 time_low;
+       uint16 time_mid;
+       uint16 time_hi_and_version;
+       uint8 remaining[8];
+};
+
+struct syntax_id {
+       struct dcerpc_uuid if_uuid;
+       uint32 if_version;
+};
+
+struct p_ctx_list {
+       uint16 cont_id;         /* Context id */
+       uint8 num_ts;           /* Number of transfer syntaxes */
+       struct syntax_id *as;   /* Abstract syntax */
+       struct syntax_id *ts;   /* Transfer syntaxes */
+};
+
+struct dcerpc_bind {
+       struct {
+               struct dcerpc_hdr hdr;    /* Header */
+               uint16 max_xmit_frag;     /* Max transmit frag size */
+               uint16 max_recv_frag;     /* Max receive frag size */
+               uint32 assoc_group_id;    /* Association group */
+               uint8 num_contexts;       /* Number of presentation contexts */
+               struct p_ctx_list *ctx_list; /* Presentation context list */
+               DATA_BLOB auth_verifier;
+       } in;
+       struct {
+               struct dcerpc_hdr hdr;    /* Header */
+               uint16 max_xmit_frag;     /* Max transmit frag size */
+               uint16 max_recv_frag;     /* Max receive frag size */
+               uint32 assoc_group_id;    /* Association group */
+               DATA_BLOB auth_verifier;
+       } out;
+};
+
+struct dcerpc_request {
+       struct {
+               struct dcerpc_hdr hdr;
+               uint32 alloc_hint; /* Allocation hint */
+               uint16 cont_id;    /* Context id */
+               uint16 opnum;      /* Operation number */
+               DATA_BLOB stub_data;
+               DATA_BLOB auth_verifier;
+       } in;
+       struct {
+               struct dcerpc_hdr hdr;
+               uint32 alloc_hint;  /* Allocation hint */
+               uint8 cancel_count; /* Context id */
+               DATA_BLOB stub_data;
+               DATA_BLOB auth_verifier;                
+       } out;
+};
+
+struct cli_dcerpc_pipe {
+       TALLOC_CTX *mem_ctx;
+       uint16 fnum;
+       int reference_count;
+       uint32 call_id;
+       struct cli_tree *tree;
+};
index b791182aa6c2e67c0de04b963c9f8d98ed5a9131..d0a8e43e813640ba5f221352f56b714b3d825d54 100644 (file)
@@ -430,6 +430,7 @@ struct vuid_cache {
 #include "events.h"
 #include "context.h"
 #include "smb_interfaces.h"
+#include "dcerpc_interfaces.h"
 #include "ntvfs.h"
 
 typedef struct smb_vfs_handle_struct