• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/samba-3.5.8/source4/libcli/raw/
1#ifndef _REQUEST_H
2#define _REQUEST_H
3/*
4   Unix SMB/CIFS implementation.
5   SMB parameters and setup
6   Copyright (C) Andrew Tridgell 2003
7   Copyright (C) James Myers 2003 <myersjj@samba.org>
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; either version 3 of the License, or
12   (at your option) any later version.
13
14   This program is distributed in the hope that it will be useful,
15   but WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   GNU General Public License for more details.
18
19   You should have received a copy of the GNU General Public License
20   along with this program.  If not, see <http://www.gnu.org/licenses/>.
21*/
22
23#include "libcli/raw/signing.h"
24
25#define BUFINFO_FLAG_UNICODE 0x0001
26#define BUFINFO_FLAG_SMB2    0x0002
27
28/*
29  buffer limit structure used by both SMB and SMB2
30 */
31struct request_bufinfo {
32	TALLOC_CTX *mem_ctx;
33	uint32_t flags;
34	const uint8_t *align_base;
35	const uint8_t *data;
36	size_t data_size;
37};
38
39/*
40  Shared state structure between client and server, representing the basic packet.
41*/
42
43struct smb_request_buffer {
44	/* the raw SMB buffer, including the 4 byte length header */
45	uint8_t *buffer;
46
47	/* the size of the raw buffer, including 4 byte header */
48	size_t size;
49
50	/* how much has been allocated - on reply the buffer is over-allocated to
51	   prevent too many realloc() calls
52	*/
53	size_t allocated;
54
55	/* the start of the SMB header - this is always buffer+4 */
56	uint8_t *hdr;
57
58	/* the command words and command word count. vwv points
59	   into the raw buffer */
60	uint8_t *vwv;
61	uint_t wct;
62
63	/* the data buffer and size. data points into the raw buffer */
64	uint8_t *data;
65	size_t data_size;
66
67	/* ptr is used as a moving pointer into the data area
68	 * of the packet. The reason its here and not a local
69	 * variable in each function is that when a realloc of
70	 * a send packet is done we need to move this
71	 * pointer */
72	uint8_t *ptr;
73
74	/* this is used to range check and align strings and buffers */
75	struct request_bufinfo bufinfo;
76};
77
78#endif
79