diff options
author | Tim Potter <tpot@samba.org> | 2003-10-28 10:21:36 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2003-10-28 10:21:36 +0000 |
commit | 06d58f8086f409fcdafb584d6b130adbb0918c19 (patch) | |
tree | 32f4e64c16667cbb8e4eba6b28429733a8ef2a4f /source4/include/dcerpc_interfaces.h | |
parent | 931dc553909c4ee345f7c16ca79f56f84ae39ff6 (diff) | |
download | samba-06d58f8086f409fcdafb584d6b130adbb0918c19.tar.gz samba-06d58f8086f409fcdafb584d6b130adbb0918c19.tar.bz2 samba-06d58f8086f409fcdafb584d6b130adbb0918c19.zip |
Add data structures for initial dcerpc support.
(This used to be commit 35ee9fdeababea8fd00f69d7d8f9d55eef57994c)
Diffstat (limited to 'source4/include/dcerpc_interfaces.h')
-rw-r--r-- | source4/include/dcerpc_interfaces.h | 93 |
1 files changed, 93 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; +}; |