root/source4/libcli/raw/request.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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  */
  31 struct 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 
  43 struct 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

/* [<][>][^][v][top][bottom][index][help] */