diff options
-rw-r--r-- | source4/include/dcerpc_interfaces.h | 93 | ||||
-rw-r--r-- | source4/include/smb.h | 1 |
2 files changed, 94 insertions, 0 deletions
diff --git a/source4/include/dcerpc_interfaces.h b/source4/include/dcerpc_interfaces.h new file mode 100644 index 0000000000..831e19c1e3 --- /dev/null +++ b/source4/include/dcerpc_interfaces.h @@ -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; +}; diff --git a/source4/include/smb.h b/source4/include/smb.h index b791182aa6..d0a8e43e81 100644 --- a/source4/include/smb.h +++ b/source4/include/smb.h @@ -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 |