Globus Toolkit  6.0.1564512954
globus_gridftp_server_control.h
1 /*
2  * Copyright 1999-2006 University of Chicago
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #if !defined GLOBUS_GRIDFTP_SERVER_CONTROL_H
18 #define GLOBUS_GRIDFTP_SERVER_CONTROL_H
19 
20 #include "globus_xio.h"
21 #include "globus_common.h"
22 #include "globus_gss_assist.h"
23 #include "globus_xio_system.h"
24 
25 #ifndef TARGET_ARCH_WIN32
26 #include <grp.h>
27 
28 #else
29 typedef int gid_t;
30 
31 struct passwd
32 {
33  char *pw_name;
34  char *pw_passwd;
35  int pw_uid;
36  int pw_gid;
37  char *pw_comment;
38  char *pw_gecos;
39  char *pw_dir;
40  char *pw_shell;
41 };
42 
43 struct group
44 {
45  char *gr_name;
46  char *gr_passwd;
47  gid_t gr_gid;
48  char **gr_mem;
49 };
50 
51 #endif /* WIN32 */
52 
53 typedef struct globus_i_gsc_server_handle_s * globus_gridftp_server_control_t;
54 typedef struct globus_i_gsc_attr_s * globus_gridftp_server_control_attr_t;
55 typedef struct globus_i_gsc_op_s * globus_gridftp_server_control_op_t;
56 typedef struct globus_i_gsc_op_s * globus_gsc_959_op_t;
57 typedef time_t globus_time_t;
58 
59 /***********************************************************************
60  * error types
61  * -----------
62  **********************************************************************/
63 typedef enum globus_gsc_error_type_e
64 {
65  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PANIC,
66  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYSTEM_RESOURCE,
67  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_AUTHENTICATION,
68  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYNTAX
69 } globus_gridftp_server_control_error_type_t;
70 
71 typedef enum globus_gsc_response_e
72 {
73  /* user command errors */
74  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_SUCCESS,
75  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_ACTION_FAILED,
76  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_PATH_INVALID,
77  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_INVALID_FILE_TYPE,
78  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_ACCESS_DENINED,
79  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_DATA_CONN_TERMINATED,
80  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_DATA_CONN_FAILED,
81  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_DATA_CONN_AUTH,
82  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_PANIC,
83  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_PARTIAL_SUCCESS,
84  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_MIN_FTP_ERROR = 400,
85  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_MAX_FTP_ERROR = 599
86 } globus_gridftp_server_control_response_t;
87 
88 #ifdef __GNUC__
89 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name __attribute__((__unused__)) = #func
90 #else
91 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name = #func
92 #endif
93 
94 #define _FSCSL(s) globus_common_i18n_get_string( \
95  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
96  s)
97 
98 #define _FSMSL(s) globus_common_i18n_get_string_by_key( \
99  NULL, \
100  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE->module_name, \
101  s)
102 
103 
104 #define GlobusGridFTPServerErrorParameter(param_name) \
105  globus_error_put( \
106  globus_error_construct_error( \
107  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
108  GLOBUS_NULL, \
109  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PARAMETER, \
110  __FILE__, \
111  _gridftp_server_name, \
112  __LINE__, \
113  "Bad parameter, %s", \
114  (param_name)))
115 
116 #define GlobusGridFTPServerControlErrorSyntax() \
117  globus_error_put( \
118  globus_error_construct_error( \
119  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
120  GLOBUS_NULL, \
121  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYNTAX, \
122  __FILE__, \
123  _gridftp_server_name, \
124  __LINE__, \
125  "Syntax error"))
126 
127 #define GlobusGridFTPServerControlErrorPanic() \
128  globus_error_put( \
129  globus_error_construct_error( \
130  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
131  GLOBUS_NULL, \
132  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PANIC, \
133  __FILE__, \
134  _gridftp_server_name, \
135  __LINE__, \
136  "Panic error"))
137 
138 #define GlobusGridFTPServerControlErrorSystem() \
139  globus_error_put( \
140  globus_error_construct_error( \
141  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
142  GLOBUS_NULL, \
143  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYSTEM_RESOURCE, \
144  __FILE__, \
145  _gridftp_server_name, \
146  __LINE__, \
147  "System resource error"))
148 
149 // For compatibility with old mispelled macro - deprecated
150 #define GlobusGridFTPServerControlErrorSytem() \
151  GlobusGridFTPServerControlErrorSystem()
152 
153 #define GlobusGridFTPServerControlErrorAuthentication() \
154  globus_error_put( \
155  globus_error_construct_error( \
156  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
157  GLOBUS_NULL, \
158  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_AUTHENTICATION, \
159  __FILE__, \
160  _gridftp_server_name, \
161  __LINE__, \
162  "Authentication error"))
163 
164 
165 /*
166  * globus_gridftp_server_control_security_type_t
167  * ---------------------------------------------
168  * The allowed security modes. Can be a mask of more than 1 selection.
169  */
170 typedef enum globus_gsc_security_type_e
171 {
172  GLOBUS_GRIDFTP_SERVER_LIBRARY_NONE = 0x01,
173  GLOBUS_GRIDFTP_SERVER_LIBRARY_GSSAPI = 0x02,
174  GLOBUS_GRIDFTP_SERVER_LIBRARY_TLS = 0x04
175 } globus_gridftp_server_control_security_type_t;
176 
177 typedef enum globus_gsc_layout_e
178 {
179  GLOBUS_GSC_LAYOUT_TYPE_NONE = 0,
180  GLOBUS_GSC_LAYOUT_TYPE_PARTITIONED,
181  GLOBUS_GSC_LAYOUT_TYPE_BLOCKED
182 } globus_gsc_layout_t;
183 
184 typedef enum globus_gridftp_server_control_stat_error_e
185 {
186  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_SUCCESS = 0,
187  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_OPENFAILED,
188  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_INVALIDLINK,
189 } globus_gridftp_server_control_stat_error_t;
190 
191 typedef enum globus_gfs_traversal_options_e {
192  GLOBUS_GFS_TRAVERSAL_CONTINUE = 1,
193  GLOBUS_GFS_TRAVERSAL_FOLLOW_SYMLINKS = 2
194 } globus_gfs_traversal_options_t;
195 
196 
206 {
207  int mode;
208  int nlink;
209  char * name;
210  char * symlink_target;
211  uid_t uid;
212  gid_t gid;
213  globus_off_t size;
214  globus_time_t atime;
215  globus_time_t ctime;
216  globus_time_t mtime;
217  int dev;
218  int ino;
219  int link_mode;
220  globus_gridftp_server_control_stat_error_t error;
222 
230 typedef enum globus_gridftp_server_control_network_protocol_e
231 {
232  GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV4 = 1,
233  GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV6
234 } globus_gridftp_server_control_network_protocol_t;
235 
246 typedef enum globus_i_gsc_data_dir_e
247 {
248  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_RECV = 0x01,
249  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_SEND = 0x02,
250  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_BI = 0x03
251 } globus_gridftp_server_control_data_dir_t;
252 
260 typedef enum globus_gridftp_server_control_event_type_e
261 {
262  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_PERF = 0x01,
263  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_RESTART = 0x02,
264  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_ABORT = 0x04,
265  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_TRANSFER_COMPLETE = 0x08
266 } globus_gridftp_server_control_event_type_t;
267 
277 typedef void
278 (*globus_gridftp_server_control_auth_cb_t)(
279  globus_gridftp_server_control_op_t op,
280  globus_gridftp_server_control_security_type_t secure_type,
281  gss_ctx_id_t context,
282  const char * subject,
283  const char * user_name,
284  const char * pw,
285  void * user_arg);
286 
294 globus_gridftp_server_control_finished_auth(
295  globus_gridftp_server_control_op_t op,
296  const char * username,
297  globus_gridftp_server_control_response_t response_code,
298  const char * msg);
299 
308 typedef enum globus_gridftp_server_control_resource_mask_e
309 {
310  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_DIRECTORY_LIST = 1,
311  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_FILE_ONLY = 2,
312  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_USER_DEFINED = 3
313 } globus_gridftp_server_control_resource_mask_t;
314 
320 typedef void
321 (*globus_gridftp_server_control_cb_t)(
322  globus_gridftp_server_control_t server,
323  globus_result_t res,
324  void * user_arg);
325 
336 typedef void
337 (*globus_gridftp_server_control_resource_cb_t)(
338  globus_gridftp_server_control_op_t op,
339  const char * path,
340  globus_gridftp_server_control_resource_mask_t mask,
341  void * user_arg);
342 
343 /*
344  * this function is called to tell the user that a data transfer
345  * has been requested by the client.
346  */
347 typedef void
348 (*globus_gridftp_server_control_transfer_cb_t)(
349  globus_gridftp_server_control_op_t op,
350  void * data_handle,
351  const char * local_target,
352  const char * mod_name,
353  const char * mod_parms,
354  globus_range_list_t range_list,
355  void * user_arg);
356 
357 typedef void
358 (*globus_gridftp_server_control_list_cb_t)(
359  globus_gridftp_server_control_op_t op,
360  void * data_handle,
361  const char * path,
362  const char * fact_str,
363  int depth,
364  int traversal_options,
365  void * user_arg);
366 
368 globus_gridftp_server_control_list_buffer_alloc(
369  const char * fact_str,
370  uid_t uid,
371  const char * base_path,
372  globus_gridftp_server_control_stat_t * stat_info_array,
373  int stat_count,
374  globus_byte_t ** out_buf,
375  globus_size_t * out_size);
376 
377 void
378 globus_gridftp_server_control_list_buffer_free(
379  globus_byte_t * buffer);
380 
389 enum
390 {
391  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SECURITY = 0x0001,
392  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER = 0x0004,
393  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER_STATE = 0x0008,
394  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_FILE_COMMANDS = 0x0010,
395  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ERROR = 0x0020,
396  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SITE = 0x0040,
397  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_LIST = 0x0080,
398  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_OTHER = 0x0100,
399  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_REPLY = 0x0400,
400  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ALL = 0xFFFF
401 };
402 
403 typedef void
404 (*globus_gridftp_server_control_log_cb_t)(
405  globus_gridftp_server_control_t server_handle,
406  const char * full_command,
407  int cls,
408  void * user_arg);
409 
422 typedef void
423 (*globus_gridftp_server_control_passive_connect_cb_t)(
424  globus_gridftp_server_control_op_t op,
425  globus_gridftp_server_control_network_protocol_t net_prt,
426  int max,
427  const char * pathname,
428  void * user_arg);
429 
442 typedef void
443 (*globus_gridftp_server_control_active_connect_cb_t)(
444  globus_gridftp_server_control_op_t op,
445  globus_gridftp_server_control_network_protocol_t net_prt,
446  const char ** cs,
447  int cs_count,
448  void * user_arg);
449 
458 typedef void
459 (*globus_gridftp_server_control_data_destroy_cb_t)(
460  void * user_data_handle,
461  void * user_arg);
462 
463 typedef void
464 (*globus_gridftp_server_control_event_cb_t)(
465  globus_gridftp_server_control_op_t op,
466  int event_type,
467  void * user_arg);
468 
470 globus_gridftp_server_control_events_enable(
471  globus_gridftp_server_control_op_t op,
472  int event_mask,
473  globus_gridftp_server_control_event_cb_t event_cb,
474  void * user_arg);
475 
476 /*
477 globus_result_t
478 globus_gridftp_server_control_events_disable(
479  globus_gridftp_server_control_op_t op);
480 */
481 
490 globus_gridftp_server_control_finished_resource(
491  globus_gridftp_server_control_op_t op,
492  globus_gridftp_server_control_stat_t * stat_info_array,
493  int stat_count,
494  int uid,
495  int gid_count,
496  int * gid_array,
497  globus_gridftp_server_control_response_t response_code,
498  const char * msg);
499 
500 /**************************************************************************
501  * attr functions.
502  *
503  * self explaintory for now
504  *************************************************************************/
506 globus_gridftp_server_control_attr_init(
507  globus_gridftp_server_control_attr_t * in_attr);
508 
510 globus_gridftp_server_control_attr_destroy(
511  globus_gridftp_server_control_attr_t in_attr);
512 
514 globus_gridftp_server_control_attr_copy(
515  globus_gridftp_server_control_attr_t * dst,
516  globus_gridftp_server_control_attr_t src);
517 
519 globus_gridftp_server_control_attr_set_resource(
520  globus_gridftp_server_control_attr_t in_attr,
521  globus_gridftp_server_control_resource_cb_t resource_cb,
522  void * user_arg);
523 
525 globus_gridftp_server_control_attr_set_auth(
526  globus_gridftp_server_control_attr_t in_attr,
527  globus_gridftp_server_control_auth_cb_t auth_cb,
528  void * user_arg);
529 
531 globus_gridftp_server_control_attr_set_list(
532  globus_gridftp_server_control_attr_t in_attr,
533  globus_gridftp_server_control_list_cb_t list_cb,
534  void * user_arg);
535 
537 globus_gridftp_server_control_attr_set_banner(
538  globus_gridftp_server_control_attr_t in_attr,
539  char * banner);
540 
542 globus_gridftp_server_control_attr_set_message(
543  globus_gridftp_server_control_attr_t in_attr,
544  char * message);
545 
547 globus_gridftp_server_control_attr_set_security(
548  globus_gridftp_server_control_attr_t in_attr,
549  globus_gridftp_server_control_security_type_t sec);
550 
552 globus_gridftp_server_control_attr_set_idle_time(
553  globus_gridftp_server_control_attr_t in_attr,
554  int idle_timeout,
555  int preauth_timeout);
556 
557 /*
558  * if module name is NULL then it is the default handler
559  */
561 globus_gridftp_server_control_attr_add_recv(
562  globus_gridftp_server_control_attr_t in_attr,
563  const char * module_name,
564  globus_gridftp_server_control_transfer_cb_t recv_func,
565  void * user_arg);
566 
568 globus_gridftp_server_control_attr_add_send(
569  globus_gridftp_server_control_attr_t in_attr,
570  const char * module_name,
571  globus_gridftp_server_control_transfer_cb_t send_func,
572  void * user_arg);
573 
575 globus_gridftp_server_control_attr_data_functions(
576  globus_gridftp_server_control_attr_t server_attr,
577  globus_gridftp_server_control_active_connect_cb_t active_cb,
578  void * active_arg,
579  globus_gridftp_server_control_passive_connect_cb_t passive_cb,
580  void * passive_arg,
581  globus_gridftp_server_control_data_destroy_cb_t destroy_cb,
582  void * destroy_arg);
583 
585 globus_gridftp_server_control_attr_set_log(
586  globus_gridftp_server_control_attr_t server_attr,
587  globus_gridftp_server_control_log_cb_t log_func,
588  int log_mask,
589  void * user_arg);
590 
599 globus_gridftp_server_control_init(
600  globus_gridftp_server_control_t * server);
601 
609 globus_gridftp_server_control_destroy(
610  globus_gridftp_server_control_t server);
611 
624 globus_gridftp_server_control_start(
625  globus_gridftp_server_control_t server,
626  globus_gridftp_server_control_attr_t attr,
627  globus_xio_system_socket_t system_handle,
628  globus_gridftp_server_control_cb_t done_cb,
629  void * user_arg);
630 
640 globus_gridftp_server_control_stop(
641  globus_gridftp_server_control_t server);
642 
643 /*
644  * setters and getters
645  */
647 globus_gridftp_server_control_get_allocated(
648  globus_gridftp_server_control_op_t op,
649  globus_off_t * out_allo);
650 
652 globus_gridftp_server_control_get_layout(
653  globus_gridftp_server_control_op_t op,
654  globus_gsc_layout_t * layout_type,
655  globus_size_t * block_size);
656 
658 globus_gridftp_server_control_get_buffer_size(
659  globus_gridftp_server_control_op_t op,
660  globus_size_t * out_recv_bs,
661  globus_size_t * out_send_bs);
662 
664 globus_gridftp_server_control_get_parallelism(
665  globus_gridftp_server_control_op_t op,
666  int * out_parallelism);
667 
669 globus_gridftp_server_control_get_mode(
670  globus_gridftp_server_control_op_t op,
671  char * out_mode);
672 
674 globus_gridftp_server_control_get_type(
675  globus_gridftp_server_control_op_t op,
676  char * out_type);
677 
679 globus_gridftp_server_control_get_cwd(
680  globus_gridftp_server_control_t server,
681  char ** cwd_string);
682 
684 globus_gridftp_server_control_set_cwd(
685  globus_gridftp_server_control_t server,
686  const char * cwd_string);
687 
689 globus_gridftp_server_control_get_data_auth(
690  globus_gridftp_server_control_op_t op,
691  char ** subject,
692  char * dcau,
693  char * prot,
694  gss_cred_id_t * del_cred);
695 
697 globus_gridftp_server_control_authenticated(
698  globus_gridftp_server_control_t server);
699 
700 /***************************************************************************
701  * data object
702  *
703  * The server uses the following interface functions for communication
704  * with the user data connection needs. The user is responisible for
705  * bringing up the data connection. This library will manage when a new
706  * data connection must be created, but it relies on the user to actually
707  * make the connection.
708  **************************************************************************/
709 
722 globus_gridftp_server_control_finished_active_connect(
723  globus_gridftp_server_control_op_t op,
724  void * user_data_handle,
725  globus_gridftp_server_control_data_dir_t data_dir,
726  globus_gridftp_server_control_response_t response_code,
727  const char * msg);
728 
741 globus_gridftp_server_control_finished_passive_connect(
742  globus_gridftp_server_control_op_t op,
743  void * user_data_handle,
744  globus_gridftp_server_control_data_dir_t data_dir,
745  const char ** cs,
746  int cs_count,
747  globus_gridftp_server_control_response_t response_code,
748  const char * msg);
749 
760 globus_gridftp_server_control_disconnected(
761  globus_gridftp_server_control_t server,
762  void * user_data_handle);
763 
776 globus_gridftp_server_control_begin_transfer(
777  globus_gridftp_server_control_op_t op);
778 
787 globus_gridftp_server_control_finished_transfer(
788  globus_gridftp_server_control_op_t op,
789  globus_gridftp_server_control_response_t response_code,
790  const char * msg);
791 
793 globus_gridftp_server_control_set_paths(
794  globus_gridftp_server_control_op_t op,
795  const char * absolute_path,
796  const char * resolved_path);
797 
799 globus_gridftp_server_control_add_feature(
800  globus_gridftp_server_control_t server,
801  const char * feature);
802 
803 
804 /* use with care, not *external* external */
805 typedef enum globus_gsc_959_command_desc_e
806 {
807  GLOBUS_GSC_COMMAND_POST_AUTH = 0x01,
808  GLOBUS_GSC_COMMAND_PRE_AUTH = 0x02
809 } globus_gsc_959_command_desc_t;
810 
811 char *
812 globus_gsc_string_to_959(
813  int code,
814  const char * in_str,
815  const char * preline);
816 
817 typedef void
818 (*globus_gsc_959_command_cb_t)(
819  globus_gsc_959_op_t op,
820  const char * full_command,
821  char ** cmd_array,
822  int argc,
823  void * user_arg);
824 
826 globus_gsc_959_command_add(
827  globus_gridftp_server_control_t server,
828  const char * command_name,
829  globus_gsc_959_command_cb_t command_cb,
830  globus_gsc_959_command_desc_t desc,
831  int min_argc,
832  int max_argc,
833  const char * help,
834  void * user_arg);
835 
837 globus_gsc_959_command_remove(
838  globus_gridftp_server_control_t server,
839  const char * command_name);
840 
841 void
842 globus_gsc_959_finished_command(
843  globus_gsc_959_op_t op,
844  char * reply_msg);
845 
847 globus_gridftp_server_control_event_send_perf(
848  globus_gridftp_server_control_op_t op,
849  int stripe_ndx,
850  globus_off_t nbytes);
851 
853 globus_gridftp_server_control_event_send_restart(
854  globus_gridftp_server_control_op_t op,
855  globus_range_list_t restart);
856 
857 
858 void
859 globus_gridftp_server_control_421_end(
860  globus_gridftp_server_control_t server,
861  char * reply_msg);
862 
863 extern globus_module_descriptor_t globus_i_gsc_module;
864 
865 #define GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE (&globus_i_gsc_module)
866 
867 #endif
int globus_bool_t
Boolean type.
Definition: globus_types.h:93
GSS Assist Header.
Definition: globus_gridftp_server_control.h:205
size_t globus_size_t
Standard size of memory objectThe globus_size_t is the size of a memory object. It is identical to si...
Definition: globus_types.h:48
unsigned char globus_byte_t
Unsigned byte datatypeThis is used for byte-addressable arrays of arbitrary data which is not subject...
Definition: globus_types.h:85
Headers common to all of Globus.
uint32_t globus_result_t
Definition: globus_types.h:99
Module Descriptor.
Definition: globus_module.h:69