root/source4/libcli/smb_composite/smb_composite.h

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

INCLUDED FROM


   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    SMB composite request interfaces
   5 
   6    Copyright (C) Andrew Tridgell 2005
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 /*
  23   this defines the structures associated with "composite"
  24   requests. Composite requests are libcli requests that are internally
  25   implemented as multiple libcli/raw/ calls, but can be treated as a
  26   single call via these composite calls. The composite calls are
  27   particularly designed to be used in async applications
  28 */
  29 
  30 #include "libcli/raw/signing.h"
  31 #include "libcli/raw/libcliraw.h"
  32 #include "libcli/smb2/smb2.h"
  33 
  34 
  35 /*
  36   a composite open/read(s)/close request that loads a whole file
  37   into memory. Used as a demo of the composite system.
  38 */
  39 struct smb_composite_loadfile {
  40         struct {
  41                 const char *fname;
  42         } in;
  43         struct {
  44                 uint8_t *data;
  45                 uint32_t size;
  46         } out;
  47 };
  48 
  49 struct smb_composite_fetchfile {
  50         struct {
  51                 const char *dest_host;
  52                 const char **ports;
  53                 const char *called_name;
  54                 const char *service;
  55                 const char *service_type;
  56                 const char *socket_options;
  57                 struct cli_credentials *credentials;
  58                 const char *workgroup;
  59                 const char *filename;
  60                 struct smbcli_options options;
  61                 struct smbcli_session_options session_options;
  62                 struct resolve_context *resolve_ctx;
  63                 struct smb_iconv_convenience *iconv_convenience;
  64                 struct gensec_settings *gensec_settings;
  65         } in;
  66         struct {
  67                 uint8_t *data;
  68                 uint32_t size;
  69         } out;
  70 };
  71 
  72 /*
  73   a composite open/write(s)/close request that saves a whole file from
  74   memory. Used as a demo of the composite system.
  75 */
  76 struct smb_composite_savefile {
  77         struct {
  78                 const char *fname;
  79                 uint8_t *data;
  80                 uint32_t size;
  81         } in;
  82 };
  83 
  84 
  85 /*
  86   a composite request for a full connection to a remote server. Includes
  87 
  88     - socket establishment
  89     - session request
  90     - negprot
  91     - session setup (if credentials are not NULL)
  92     - tree connect (if service is not NULL)
  93 */
  94 struct smb_composite_connect {
  95         struct {
  96                 const char *dest_host;
  97                 const char **dest_ports;
  98                 const char *socket_options;
  99                 const char *called_name;
 100                 const char *service;
 101                 const char *service_type;
 102                 struct cli_credentials *credentials;
 103                 bool fallback_to_anonymous;
 104                 const char *workgroup;
 105                 struct smbcli_options options;
 106                 struct smbcli_session_options session_options;
 107                 struct smb_iconv_convenience *iconv_convenience;
 108                 struct gensec_settings *gensec_settings;
 109         } in;
 110         struct {
 111                 struct smbcli_tree *tree;
 112                 bool anonymous_fallback_done;
 113         } out;
 114 };
 115 
 116 
 117 /*
 118   generic session setup interface that takes care of which
 119   session setup varient to use
 120 */
 121 struct smb_composite_sesssetup {
 122         struct {
 123                 uint32_t sesskey;
 124                 uint32_t capabilities;
 125                 struct cli_credentials *credentials;
 126                 const char *workgroup;
 127                 struct gensec_settings *gensec_settings;
 128         } in;
 129         struct {
 130                 uint16_t vuid;
 131         } out;          
 132 };
 133 
 134 /*
 135   query file system info
 136 */
 137 struct smb_composite_fsinfo {
 138         struct {
 139                 const char *dest_host;
 140                 const char **dest_ports;
 141                 const char *socket_options;
 142                 const char *called_name;
 143                 const char *service;
 144                 const char *service_type;
 145                 struct cli_credentials *credentials;
 146                 const char *workgroup;
 147                 enum smb_fsinfo_level level;
 148                 struct smb_iconv_convenience *iconv_convenience;
 149                 struct gensec_settings *gensec_settings;
 150         } in;
 151         
 152         struct {
 153                 union smb_fsinfo *fsinfo;
 154         } out;
 155 };
 156 
 157 /*
 158   composite call for appending new acl to the file's security descriptor and get 
 159   new full acl
 160 */
 161 
 162 struct smb_composite_appendacl {
 163         struct {
 164                 const char *fname;
 165 
 166                 const struct security_descriptor *sd;
 167         } in;
 168         
 169         struct {
 170                 struct security_descriptor *sd;
 171         } out;
 172 };
 173 
 174 /*
 175   a composite API to fire connect() calls to multiple targets, picking the
 176   first one.
 177 */
 178 
 179 struct smb_composite_connectmulti {
 180         struct {
 181                 int num_dests;
 182                 const char **hostnames;
 183                 const char **addresses;
 184                 int *ports;     /* Either NULL for lp_smb_ports() per
 185                                  * destination or a list of explicit ports */
 186         } in;
 187         struct {
 188                 struct smbcli_socket *socket;
 189         } out;
 190 };
 191 
 192 struct smbcli_session;
 193 struct resolve_context;
 194 
 195 #include "libcli/smb_composite/proto.h"

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