Grid Community Toolkit  6.2.1629922860 (tag: v6.2.20210826)
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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_DENIED,
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 // For compatibility with old mispelled name - deprecated
89 #define GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_ACCESS_DENINED \
90  GLOBUS_GRIDFTP_SERVER_CONTROL_RESPONSE_ACCESS_DENIED
91 
92 #ifdef __GNUC__
93 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name __attribute__((__unused__)) = #func
94 #else
95 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name = #func
96 #endif
97 
98 #define _FSCSL(s) globus_common_i18n_get_string( \
99  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
100  s)
101 
102 #define _FSMSL(s) globus_common_i18n_get_string_by_key( \
103  NULL, \
104  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE->module_name, \
105  s)
106 
107 
108 #define GlobusGridFTPServerErrorParameter(param_name) \
109  globus_error_put( \
110  globus_error_construct_error( \
111  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
112  GLOBUS_NULL, \
113  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PARAMETER, \
114  __FILE__, \
115  _gridftp_server_name, \
116  __LINE__, \
117  "Bad parameter, %s", \
118  (param_name)))
119 
120 #define GlobusGridFTPServerControlErrorSyntax() \
121  globus_error_put( \
122  globus_error_construct_error( \
123  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
124  GLOBUS_NULL, \
125  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYNTAX, \
126  __FILE__, \
127  _gridftp_server_name, \
128  __LINE__, \
129  "Syntax error"))
130 
131 #define GlobusGridFTPServerControlErrorPanic() \
132  globus_error_put( \
133  globus_error_construct_error( \
134  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
135  GLOBUS_NULL, \
136  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PANIC, \
137  __FILE__, \
138  _gridftp_server_name, \
139  __LINE__, \
140  "Panic error"))
141 
142 #define GlobusGridFTPServerControlErrorSystem() \
143  globus_error_put( \
144  globus_error_construct_error( \
145  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
146  GLOBUS_NULL, \
147  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYSTEM_RESOURCE, \
148  __FILE__, \
149  _gridftp_server_name, \
150  __LINE__, \
151  "System resource error"))
152 
153 // For compatibility with old mispelled macro - deprecated
154 #define GlobusGridFTPServerControlErrorSytem() \
155  GlobusGridFTPServerControlErrorSystem()
156 
157 #define GlobusGridFTPServerControlErrorAuthentication() \
158  globus_error_put( \
159  globus_error_construct_error( \
160  GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \
161  GLOBUS_NULL, \
162  GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_AUTHENTICATION, \
163  __FILE__, \
164  _gridftp_server_name, \
165  __LINE__, \
166  "Authentication error"))
167 
168 
169 /*
170  * globus_gridftp_server_control_security_type_t
171  * ---------------------------------------------
172  * The allowed security modes. Can be a mask of more than 1 selection.
173  */
174 typedef enum globus_gsc_security_type_e
175 {
176  GLOBUS_GRIDFTP_SERVER_LIBRARY_NONE = 0x01,
177  GLOBUS_GRIDFTP_SERVER_LIBRARY_GSSAPI = 0x02,
178  GLOBUS_GRIDFTP_SERVER_LIBRARY_TLS = 0x04
179 } globus_gridftp_server_control_security_type_t;
180 
181 typedef enum globus_gsc_layout_e
182 {
183  GLOBUS_GSC_LAYOUT_TYPE_NONE = 0,
184  GLOBUS_GSC_LAYOUT_TYPE_PARTITIONED,
185  GLOBUS_GSC_LAYOUT_TYPE_BLOCKED
186 } globus_gsc_layout_t;
187 
188 typedef enum globus_gridftp_server_control_stat_error_e
189 {
190  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_SUCCESS = 0,
191  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_OPENFAILED,
192  GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_INVALIDLINK,
193 } globus_gridftp_server_control_stat_error_t;
194 
195 typedef enum globus_gfs_traversal_options_e {
196  GLOBUS_GFS_TRAVERSAL_CONTINUE = 1,
197  GLOBUS_GFS_TRAVERSAL_FOLLOW_SYMLINKS = 2
198 } globus_gfs_traversal_options_t;
199 
200 
210 {
211  int mode;
212  int nlink;
213  char * name;
214  char * symlink_target;
215  uid_t uid;
216  gid_t gid;
217  globus_off_t size;
218  globus_time_t atime;
219  globus_time_t ctime;
220  globus_time_t mtime;
221  int dev;
222  int ino;
223  int link_mode;
224  globus_gridftp_server_control_stat_error_t error;
226 
234 typedef enum globus_gridftp_server_control_network_protocol_e
235 {
236  GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV4 = 1,
237  GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV6
238 } globus_gridftp_server_control_network_protocol_t;
239 
250 typedef enum globus_i_gsc_data_dir_e
251 {
252  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_RECV = 0x01,
253  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_SEND = 0x02,
254  GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_BI = 0x03
255 } globus_gridftp_server_control_data_dir_t;
256 
264 typedef enum globus_gridftp_server_control_event_type_e
265 {
266  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_PERF = 0x01,
267  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_RESTART = 0x02,
268  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_ABORT = 0x04,
269  GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_TRANSFER_COMPLETE = 0x08
270 } globus_gridftp_server_control_event_type_t;
271 
281 typedef void
282 (*globus_gridftp_server_control_auth_cb_t)(
283  globus_gridftp_server_control_op_t op,
284  globus_gridftp_server_control_security_type_t secure_type,
285  gss_ctx_id_t context,
286  const char * subject,
287  const char * user_name,
288  const char * pw,
289  void * user_arg);
290 
298 globus_gridftp_server_control_finished_auth(
299  globus_gridftp_server_control_op_t op,
300  const char * username,
301  globus_gridftp_server_control_response_t response_code,
302  const char * msg);
303 
312 typedef enum globus_gridftp_server_control_resource_mask_e
313 {
314  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_DIRECTORY_LIST = 1,
315  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_FILE_ONLY = 2,
316  GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_USER_DEFINED = 3
317 } globus_gridftp_server_control_resource_mask_t;
318 
324 typedef void
325 (*globus_gridftp_server_control_cb_t)(
326  globus_gridftp_server_control_t server,
327  globus_result_t res,
328  void * user_arg);
329 
340 typedef void
341 (*globus_gridftp_server_control_resource_cb_t)(
342  globus_gridftp_server_control_op_t op,
343  const char * path,
344  globus_gridftp_server_control_resource_mask_t mask,
345  void * user_arg);
346 
347 /*
348  * this function is called to tell the user that a data transfer
349  * has been requested by the client.
350  */
351 typedef void
352 (*globus_gridftp_server_control_transfer_cb_t)(
353  globus_gridftp_server_control_op_t op,
354  void * data_handle,
355  const char * local_target,
356  const char * mod_name,
357  const char * mod_parms,
358  globus_range_list_t range_list,
359  void * user_arg);
360 
361 typedef void
362 (*globus_gridftp_server_control_list_cb_t)(
363  globus_gridftp_server_control_op_t op,
364  void * data_handle,
365  const char * path,
366  const char * fact_str,
367  int depth,
368  int traversal_options,
369  void * user_arg);
370 
372 globus_gridftp_server_control_list_buffer_alloc(
373  const char * fact_str,
374  uid_t uid,
375  const char * base_path,
376  globus_gridftp_server_control_stat_t * stat_info_array,
377  int stat_count,
378  globus_byte_t ** out_buf,
379  globus_size_t * out_size);
380 
381 void
382 globus_gridftp_server_control_list_buffer_free(
383  globus_byte_t * buffer);
384 
393 enum
394 {
395  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SECURITY = 0x0001,
396  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER = 0x0004,
397  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER_STATE = 0x0008,
398  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_FILE_COMMANDS = 0x0010,
399  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ERROR = 0x0020,
400  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SITE = 0x0040,
401  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_LIST = 0x0080,
402  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_OTHER = 0x0100,
403  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_REPLY = 0x0400,
404  GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ALL = 0xFFFF
405 };
406 
407 typedef void
408 (*globus_gridftp_server_control_log_cb_t)(
409  globus_gridftp_server_control_t server_handle,
410  const char * full_command,
411  int cls,
412  void * user_arg);
413 
426 typedef void
427 (*globus_gridftp_server_control_passive_connect_cb_t)(
428  globus_gridftp_server_control_op_t op,
429  globus_gridftp_server_control_network_protocol_t net_prt,
430  int max,
431  const char * pathname,
432  void * user_arg);
433 
446 typedef void
447 (*globus_gridftp_server_control_active_connect_cb_t)(
448  globus_gridftp_server_control_op_t op,
449  globus_gridftp_server_control_network_protocol_t net_prt,
450  const char ** cs,
451  int cs_count,
452  void * user_arg);
453 
462 typedef void
463 (*globus_gridftp_server_control_data_destroy_cb_t)(
464  void * user_data_handle,
465  void * user_arg);
466 
467 typedef void
468 (*globus_gridftp_server_control_event_cb_t)(
469  globus_gridftp_server_control_op_t op,
470  int event_type,
471  void * user_arg);
472 
474 globus_gridftp_server_control_events_enable(
475  globus_gridftp_server_control_op_t op,
476  int event_mask,
477  globus_gridftp_server_control_event_cb_t event_cb,
478  void * user_arg);
479 
480 /*
481 globus_result_t
482 globus_gridftp_server_control_events_disable(
483  globus_gridftp_server_control_op_t op);
484 */
485 
494 globus_gridftp_server_control_finished_resource(
495  globus_gridftp_server_control_op_t op,
496  globus_gridftp_server_control_stat_t * stat_info_array,
497  int stat_count,
498  int uid,
499  int gid_count,
500  int * gid_array,
501  globus_gridftp_server_control_response_t response_code,
502  const char * msg);
503 
504 /**************************************************************************
505  * attr functions.
506  *
507  * self explaintory for now
508  *************************************************************************/
510 globus_gridftp_server_control_attr_init(
511  globus_gridftp_server_control_attr_t * in_attr);
512 
514 globus_gridftp_server_control_attr_destroy(
515  globus_gridftp_server_control_attr_t in_attr);
516 
518 globus_gridftp_server_control_attr_copy(
519  globus_gridftp_server_control_attr_t * dst,
520  globus_gridftp_server_control_attr_t src);
521 
523 globus_gridftp_server_control_attr_set_resource(
524  globus_gridftp_server_control_attr_t in_attr,
525  globus_gridftp_server_control_resource_cb_t resource_cb,
526  void * user_arg);
527 
529 globus_gridftp_server_control_attr_set_auth(
530  globus_gridftp_server_control_attr_t in_attr,
531  globus_gridftp_server_control_auth_cb_t auth_cb,
532  void * user_arg);
533 
535 globus_gridftp_server_control_attr_set_list(
536  globus_gridftp_server_control_attr_t in_attr,
537  globus_gridftp_server_control_list_cb_t list_cb,
538  void * user_arg);
539 
541 globus_gridftp_server_control_attr_set_banner(
542  globus_gridftp_server_control_attr_t in_attr,
543  char * banner);
544 
546 globus_gridftp_server_control_attr_set_message(
547  globus_gridftp_server_control_attr_t in_attr,
548  char * message);
549 
551 globus_gridftp_server_control_attr_set_security(
552  globus_gridftp_server_control_attr_t in_attr,
553  globus_gridftp_server_control_security_type_t sec);
554 
556 globus_gridftp_server_control_attr_set_idle_time(
557  globus_gridftp_server_control_attr_t in_attr,
558  int idle_timeout,
559  int preauth_timeout);
560 
562 globus_gridftp_server_control_attr_set_epsv_ip(
563  globus_gridftp_server_control_attr_t in_attr,
564  globus_bool_t epsv_ip);
565 
567 globus_gridftp_server_control_attr_set_ipv6(
568  globus_gridftp_server_control_attr_t in_attr,
569  globus_bool_t ipv6);
570 
571 /*
572  * if module name is NULL then it is the default handler
573  */
575 globus_gridftp_server_control_attr_add_recv(
576  globus_gridftp_server_control_attr_t in_attr,
577  const char * module_name,
578  globus_gridftp_server_control_transfer_cb_t recv_func,
579  void * user_arg);
580 
582 globus_gridftp_server_control_attr_add_send(
583  globus_gridftp_server_control_attr_t in_attr,
584  const char * module_name,
585  globus_gridftp_server_control_transfer_cb_t send_func,
586  void * user_arg);
587 
589 globus_gridftp_server_control_attr_data_functions(
590  globus_gridftp_server_control_attr_t server_attr,
591  globus_gridftp_server_control_active_connect_cb_t active_cb,
592  void * active_arg,
593  globus_gridftp_server_control_passive_connect_cb_t passive_cb,
594  void * passive_arg,
595  globus_gridftp_server_control_data_destroy_cb_t destroy_cb,
596  void * destroy_arg);
597 
599 globus_gridftp_server_control_attr_set_log(
600  globus_gridftp_server_control_attr_t server_attr,
601  globus_gridftp_server_control_log_cb_t log_func,
602  int log_mask,
603  void * user_arg);
604 
613 globus_gridftp_server_control_init(
614  globus_gridftp_server_control_t * server);
615 
623 globus_gridftp_server_control_destroy(
624  globus_gridftp_server_control_t server);
625 
638 globus_gridftp_server_control_start(
639  globus_gridftp_server_control_t server,
640  globus_gridftp_server_control_attr_t attr,
641  globus_xio_system_socket_t system_handle,
642  globus_gridftp_server_control_cb_t done_cb,
643  void * user_arg);
644 
654 globus_gridftp_server_control_stop(
655  globus_gridftp_server_control_t server);
656 
657 /*
658  * setters and getters
659  */
661 globus_gridftp_server_control_get_allocated(
662  globus_gridftp_server_control_op_t op,
663  globus_off_t * out_allo);
664 
666 globus_gridftp_server_control_get_layout(
667  globus_gridftp_server_control_op_t op,
668  globus_gsc_layout_t * layout_type,
669  globus_size_t * block_size);
670 
672 globus_gridftp_server_control_get_buffer_size(
673  globus_gridftp_server_control_op_t op,
674  globus_size_t * out_recv_bs,
675  globus_size_t * out_send_bs);
676 
678 globus_gridftp_server_control_get_parallelism(
679  globus_gridftp_server_control_op_t op,
680  int * out_parallelism);
681 
683 globus_gridftp_server_control_get_mode(
684  globus_gridftp_server_control_op_t op,
685  char * out_mode);
686 
688 globus_gridftp_server_control_get_type(
689  globus_gridftp_server_control_op_t op,
690  char * out_type);
691 
693 globus_gridftp_server_control_get_cwd(
694  globus_gridftp_server_control_t server,
695  char ** cwd_string);
696 
698 globus_gridftp_server_control_set_cwd(
699  globus_gridftp_server_control_t server,
700  const char * cwd_string);
701 
703 globus_gridftp_server_control_get_data_auth(
704  globus_gridftp_server_control_op_t op,
705  char ** subject,
706  char * dcau,
707  char * prot,
708  gss_cred_id_t * del_cred);
709 
711 globus_gridftp_server_control_authenticated(
712  globus_gridftp_server_control_t server);
713 
714 char *
715 globus_gridftp_server_control_get_cmd_string(
716  globus_gridftp_server_control_op_t op);
717 
718 /***************************************************************************
719  * data object
720  *
721  * The server uses the following interface functions for communication
722  * with the user data connection needs. The user is responisible for
723  * bringing up the data connection. This library will manage when a new
724  * data connection must be created, but it relies on the user to actually
725  * make the connection.
726  **************************************************************************/
727 
740 globus_gridftp_server_control_finished_active_connect(
741  globus_gridftp_server_control_op_t op,
742  void * user_data_handle,
743  globus_gridftp_server_control_data_dir_t data_dir,
744  globus_gridftp_server_control_response_t response_code,
745  const char * msg);
746 
759 globus_gridftp_server_control_finished_passive_connect(
760  globus_gridftp_server_control_op_t op,
761  void * user_data_handle,
762  globus_gridftp_server_control_data_dir_t data_dir,
763  const char ** cs,
764  int cs_count,
765  globus_gridftp_server_control_response_t response_code,
766  const char * msg);
767 
778 globus_gridftp_server_control_disconnected(
779  globus_gridftp_server_control_t server,
780  void * user_data_handle);
781 
794 globus_gridftp_server_control_begin_transfer(
795  globus_gridftp_server_control_op_t op);
796 
805 globus_gridftp_server_control_finished_transfer(
806  globus_gridftp_server_control_op_t op,
807  globus_gridftp_server_control_response_t response_code,
808  const char * msg);
809 
811 globus_gridftp_server_control_set_paths(
812  globus_gridftp_server_control_op_t op,
813  const char * absolute_path,
814  const char * resolved_path);
815 
817 globus_gridftp_server_control_add_feature(
818  globus_gridftp_server_control_t server,
819  const char * feature);
820 
821 
822 /* use with care, not *external* external */
823 typedef enum globus_gsc_959_command_desc_e
824 {
825  GLOBUS_GSC_COMMAND_POST_AUTH = 0x01,
826  GLOBUS_GSC_COMMAND_PRE_AUTH = 0x02
827 } globus_gsc_959_command_desc_t;
828 
829 char *
830 globus_gsc_string_to_959(
831  int code,
832  const char * in_str,
833  const char * preline);
834 
835 typedef void
836 (*globus_gsc_959_command_cb_t)(
837  globus_gsc_959_op_t op,
838  const char * full_command,
839  char ** cmd_array,
840  int argc,
841  void * user_arg);
842 
844 globus_gsc_959_command_add(
845  globus_gridftp_server_control_t server,
846  const char * command_name,
847  globus_gsc_959_command_cb_t command_cb,
848  globus_gsc_959_command_desc_t desc,
849  int min_argc,
850  int max_argc,
851  const char * help,
852  void * user_arg);
853 
855 globus_gsc_959_command_remove(
856  globus_gridftp_server_control_t server,
857  const char * command_name);
858 
859 void
860 globus_gsc_959_finished_command(
861  globus_gsc_959_op_t op,
862  char * reply_msg);
863 
865 globus_gridftp_server_control_event_send_perf(
866  globus_gridftp_server_control_op_t op,
867  int stripe_ndx,
868  globus_off_t nbytes);
869 
871 globus_gridftp_server_control_event_send_restart(
872  globus_gridftp_server_control_op_t op,
873  globus_range_list_t restart);
874 
875 
876 void
877 globus_gridftp_server_control_421_end(
878  globus_gridftp_server_control_t server,
879  char * reply_msg);
880 
881 extern globus_module_descriptor_t globus_i_gsc_module;
882 
883 #define GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE (&globus_i_gsc_module)
884 
885 #endif
int globus_bool_t
Boolean type.
Definition: globus_types.h:93
GSS Assist Header.
Definition: globus_gridftp_server_control.h:209
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:71