2004-11-02 07:18:24 +00:00
# ifndef _REQUEST_H
# define _REQUEST_H
2004-07-16 03:10:48 +00:00
/*
Unix SMB / CIFS implementation .
SMB parameters and setup
Copyright ( C ) Andrew Tridgell 2003
Copyright ( C ) James Myers 2003 < myersjj @ samba . org >
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
2007-07-10 02:07:03 +00:00
the Free Software Foundation ; either version 3 of the License , or
2004-07-16 03:10:48 +00:00
( 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
2007-07-10 02:07:03 +00:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2004-07-16 03:10:48 +00:00
*/
2006-01-09 21:44:30 +00:00
# include "libcli/raw/signing.h"
2004-11-02 07:18:24 +00:00
2008-02-14 12:30:31 +11:00
# define BUFINFO_FLAG_UNICODE 0x0001
# define BUFINFO_FLAG_SMB2 0x0002
2008-02-14 10:12:33 +11:00
/*
buffer limit structure used by both SMB and SMB2
*/
struct request_bufinfo {
TALLOC_CTX * mem_ctx ;
2008-02-14 12:30:31 +11:00
uint32_t flags ;
2008-02-14 10:12:33 +11:00
const uint8_t * align_base ;
const uint8_t * data ;
size_t data_size ;
} ;
2004-07-16 03:10:48 +00:00
/*
Shared state structure between client and server , representing the basic packet .
*/
2008-02-14 10:12:33 +11:00
struct smb_request_buffer {
2004-07-16 03:10:48 +00:00
/* the raw SMB buffer, including the 4 byte length header */
2004-12-04 13:56:25 +00:00
uint8_t * buffer ;
2004-07-16 03:10:48 +00:00
/* the size of the raw buffer, including 4 byte header */
2006-04-24 09:36:09 +00:00
size_t size ;
2004-07-16 03:10:48 +00:00
/* how much has been allocated - on reply the buffer is over-allocated to
prevent too many realloc ( ) calls
*/
2006-04-24 09:36:09 +00:00
size_t allocated ;
2004-07-16 03:10:48 +00:00
2004-07-16 03:57:04 +00:00
/* the start of the SMB header - this is always buffer+4 */
2004-12-04 13:56:25 +00:00
uint8_t * hdr ;
2004-07-16 03:10:48 +00:00
/* the command words and command word count. vwv points
into the raw buffer */
2004-12-04 13:56:25 +00:00
uint8_t * vwv ;
2010-01-05 09:42:54 -08:00
unsigned int wct ;
2004-07-16 03:10:48 +00:00
/* the data buffer and size. data points into the raw buffer */
2004-12-04 13:56:25 +00:00
uint8_t * data ;
2006-04-24 09:36:09 +00:00
size_t data_size ;
2004-07-16 03:10:48 +00:00
/* ptr is used as a moving pointer into the data area
* of the packet . The reason its here and not a local
* variable in each function is that when a realloc of
* a send packet is done we need to move this
* pointer */
2004-12-04 13:56:25 +00:00
uint8_t * ptr ;
2008-02-14 10:12:33 +11:00
/* this is used to range check and align strings and buffers */
struct request_bufinfo bufinfo ;
2004-07-16 03:57:04 +00:00
} ;
2004-07-16 03:10:48 +00:00
2004-11-02 07:18:24 +00:00
# endif