17 #if !defined GLOBUS_GRIDFTP_SERVER_CONTROL_H 18 #define GLOBUS_GRIDFTP_SERVER_CONTROL_H 20 #include "globus_xio.h" 23 #include "globus_xio_system.h" 25 #ifndef TARGET_ARCH_WIN32 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;
63 typedef enum globus_gsc_error_type_e
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;
71 typedef enum globus_gsc_response_e
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;
89 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name __attribute__((__unused__)) = #func 91 #define GlobusGridFTPServerName(func) static const char * _gridftp_server_name = #func 94 #define _FSCSL(s) globus_common_i18n_get_string( \ 95 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 98 #define _FSMSL(s) globus_common_i18n_get_string_by_key( \ 100 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE->module_name, \ 104 #define GlobusGridFTPServerErrorParameter(param_name) \ 106 globus_error_construct_error( \ 107 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 109 GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PARAMETER, \ 111 _gridftp_server_name, \ 113 "Bad parameter, %s", \ 116 #define GlobusGridFTPServerControlErrorSyntax() \ 118 globus_error_construct_error( \ 119 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 121 GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYNTAX, \ 123 _gridftp_server_name, \ 127 #define GlobusGridFTPServerControlErrorPanic() \ 129 globus_error_construct_error( \ 130 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 132 GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_PANIC, \ 134 _gridftp_server_name, \ 138 #define GlobusGridFTPServerControlErrorSystem() \ 140 globus_error_construct_error( \ 141 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 143 GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_SYSTEM_RESOURCE, \ 145 _gridftp_server_name, \ 147 "System resource error")) 150 #define GlobusGridFTPServerControlErrorSytem() \ 151 GlobusGridFTPServerControlErrorSystem() 153 #define GlobusGridFTPServerControlErrorAuthentication() \ 155 globus_error_construct_error( \ 156 GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE, \ 158 GLOBUS_GRIDFTP_SERVER_CONTROL_ERROR_AUTHENTICATION, \ 160 _gridftp_server_name, \ 162 "Authentication error")) 170 typedef enum globus_gsc_security_type_e
172 GLOBUS_GRIDFTP_SERVER_LIBRARY_NONE = 0x01,
173 GLOBUS_GRIDFTP_SERVER_LIBRARY_GSSAPI = 0x02
174 } globus_gridftp_server_control_security_type_t;
176 typedef enum globus_gsc_layout_e
178 GLOBUS_GSC_LAYOUT_TYPE_NONE = 0,
179 GLOBUS_GSC_LAYOUT_TYPE_PARTITIONED,
180 GLOBUS_GSC_LAYOUT_TYPE_BLOCKED
181 } globus_gsc_layout_t;
183 typedef enum globus_gridftp_server_control_stat_error_e
185 GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_SUCCESS = 0,
186 GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_OPENFAILED,
187 GLOBUS_GRIDFTP_SERVER_CONTROL_STAT_INVALIDLINK,
188 } globus_gridftp_server_control_stat_error_t;
190 typedef enum globus_gfs_traversal_options_e {
191 GLOBUS_GFS_TRAVERSAL_CONTINUE = 1,
192 GLOBUS_GFS_TRAVERSAL_FOLLOW_SYMLINKS = 2
193 } globus_gfs_traversal_options_t;
209 char * symlink_target;
219 globus_gridftp_server_control_stat_error_t error;
229 typedef enum globus_gridftp_server_control_network_protocol_e
231 GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV4 = 1,
232 GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV6
233 } globus_gridftp_server_control_network_protocol_t;
245 typedef enum globus_i_gsc_data_dir_e
247 GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_RECV = 0x01,
248 GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_SEND = 0x02,
249 GLOBUS_GRIDFTP_SERVER_CONTROL_DATA_DIR_BI = 0x03
250 } globus_gridftp_server_control_data_dir_t;
259 typedef enum globus_gridftp_server_control_event_type_e
261 GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_PERF = 0x01,
262 GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_RESTART = 0x02,
263 GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_ABORT = 0x04,
264 GLOBUS_GRIDFTP_SERVER_CONTROL_EVENT_TRANSFER_COMPLETE = 0x08
265 } globus_gridftp_server_control_event_type_t;
277 (*globus_gridftp_server_control_auth_cb_t)(
278 globus_gridftp_server_control_op_t op,
279 globus_gridftp_server_control_security_type_t secure_type,
280 gss_ctx_id_t context,
281 const char * subject,
282 const char * user_name,
293 globus_gridftp_server_control_finished_auth(
294 globus_gridftp_server_control_op_t op,
295 const char * username,
296 globus_gridftp_server_control_response_t response_code,
307 typedef enum globus_gridftp_server_control_resource_mask_e
309 GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_DIRECTORY_LIST = 1,
310 GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_FILE_ONLY = 2,
311 GLOBUS_GRIDFTP_SERVER_CONTROL_RESOURCE_USER_DEFINED = 3
312 } globus_gridftp_server_control_resource_mask_t;
320 (*globus_gridftp_server_control_cb_t)(
321 globus_gridftp_server_control_t server,
336 (*globus_gridftp_server_control_resource_cb_t)(
337 globus_gridftp_server_control_op_t op,
339 globus_gridftp_server_control_resource_mask_t mask,
347 (*globus_gridftp_server_control_transfer_cb_t)(
348 globus_gridftp_server_control_op_t op,
350 const char * local_target,
351 const char * mod_name,
352 const char * mod_parms,
353 globus_range_list_t range_list,
357 (*globus_gridftp_server_control_list_cb_t)(
358 globus_gridftp_server_control_op_t op,
361 const char * fact_str,
363 int traversal_options,
367 globus_gridftp_server_control_list_buffer_alloc(
368 const char * fact_str,
370 const char * base_path,
377 globus_gridftp_server_control_list_buffer_free(
390 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SECURITY = 0x0001,
391 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER = 0x0004,
392 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_TRANSFER_STATE = 0x0008,
393 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_FILE_COMMANDS = 0x0010,
394 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ERROR = 0x0020,
395 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_SITE = 0x0040,
396 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_LIST = 0x0080,
397 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_OTHER = 0x0100,
398 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_REPLY = 0x0400,
399 GLOBUS_GRIDFTP_SERVER_CONTROL_LOG_ALL = 0xFFFF
403 (*globus_gridftp_server_control_log_cb_t)(
404 globus_gridftp_server_control_t server_handle,
405 const char * full_command,
422 (*globus_gridftp_server_control_passive_connect_cb_t)(
423 globus_gridftp_server_control_op_t op,
424 globus_gridftp_server_control_network_protocol_t net_prt,
426 const char * pathname,
442 (*globus_gridftp_server_control_active_connect_cb_t)(
443 globus_gridftp_server_control_op_t op,
444 globus_gridftp_server_control_network_protocol_t net_prt,
458 (*globus_gridftp_server_control_data_destroy_cb_t)(
459 void * user_data_handle,
463 (*globus_gridftp_server_control_event_cb_t)(
464 globus_gridftp_server_control_op_t op,
469 globus_gridftp_server_control_events_enable(
470 globus_gridftp_server_control_op_t op,
472 globus_gridftp_server_control_event_cb_t event_cb,
489 globus_gridftp_server_control_finished_resource(
490 globus_gridftp_server_control_op_t op,
496 globus_gridftp_server_control_response_t response_code,
505 globus_gridftp_server_control_attr_init(
506 globus_gridftp_server_control_attr_t * in_attr);
509 globus_gridftp_server_control_attr_destroy(
510 globus_gridftp_server_control_attr_t in_attr);
513 globus_gridftp_server_control_attr_copy(
514 globus_gridftp_server_control_attr_t * dst,
515 globus_gridftp_server_control_attr_t src);
518 globus_gridftp_server_control_attr_set_resource(
519 globus_gridftp_server_control_attr_t in_attr,
520 globus_gridftp_server_control_resource_cb_t resource_cb,
524 globus_gridftp_server_control_attr_set_auth(
525 globus_gridftp_server_control_attr_t in_attr,
526 globus_gridftp_server_control_auth_cb_t auth_cb,
530 globus_gridftp_server_control_attr_set_list(
531 globus_gridftp_server_control_attr_t in_attr,
532 globus_gridftp_server_control_list_cb_t list_cb,
536 globus_gridftp_server_control_attr_set_banner(
537 globus_gridftp_server_control_attr_t in_attr,
541 globus_gridftp_server_control_attr_set_message(
542 globus_gridftp_server_control_attr_t in_attr,
546 globus_gridftp_server_control_attr_set_security(
547 globus_gridftp_server_control_attr_t in_attr,
548 globus_gridftp_server_control_security_type_t sec);
551 globus_gridftp_server_control_attr_set_idle_time(
552 globus_gridftp_server_control_attr_t in_attr,
554 int preauth_timeout);
560 globus_gridftp_server_control_attr_add_recv(
561 globus_gridftp_server_control_attr_t in_attr,
562 const char * module_name,
563 globus_gridftp_server_control_transfer_cb_t recv_func,
567 globus_gridftp_server_control_attr_add_send(
568 globus_gridftp_server_control_attr_t in_attr,
569 const char * module_name,
570 globus_gridftp_server_control_transfer_cb_t send_func,
574 globus_gridftp_server_control_attr_data_functions(
575 globus_gridftp_server_control_attr_t server_attr,
576 globus_gridftp_server_control_active_connect_cb_t active_cb,
578 globus_gridftp_server_control_passive_connect_cb_t passive_cb,
580 globus_gridftp_server_control_data_destroy_cb_t destroy_cb,
584 globus_gridftp_server_control_attr_set_log(
585 globus_gridftp_server_control_attr_t server_attr,
586 globus_gridftp_server_control_log_cb_t log_func,
598 globus_gridftp_server_control_init(
599 globus_gridftp_server_control_t * server);
608 globus_gridftp_server_control_destroy(
609 globus_gridftp_server_control_t server);
623 globus_gridftp_server_control_start(
624 globus_gridftp_server_control_t server,
625 globus_gridftp_server_control_attr_t attr,
626 globus_xio_system_socket_t system_handle,
627 globus_gridftp_server_control_cb_t done_cb,
639 globus_gridftp_server_control_stop(
640 globus_gridftp_server_control_t server);
646 globus_gridftp_server_control_get_allocated(
647 globus_gridftp_server_control_op_t op,
648 globus_off_t * out_allo);
651 globus_gridftp_server_control_get_layout(
652 globus_gridftp_server_control_op_t op,
653 globus_gsc_layout_t * layout_type,
657 globus_gridftp_server_control_get_buffer_size(
658 globus_gridftp_server_control_op_t op,
663 globus_gridftp_server_control_get_parallelism(
664 globus_gridftp_server_control_op_t op,
665 int * out_parallelism);
668 globus_gridftp_server_control_get_mode(
669 globus_gridftp_server_control_op_t op,
673 globus_gridftp_server_control_get_type(
674 globus_gridftp_server_control_op_t op,
678 globus_gridftp_server_control_get_cwd(
679 globus_gridftp_server_control_t server,
683 globus_gridftp_server_control_set_cwd(
684 globus_gridftp_server_control_t server,
685 const char * cwd_string);
688 globus_gridftp_server_control_get_data_auth(
689 globus_gridftp_server_control_op_t op,
693 gss_cred_id_t * del_cred);
696 globus_gridftp_server_control_authenticated(
697 globus_gridftp_server_control_t server);
721 globus_gridftp_server_control_finished_active_connect(
722 globus_gridftp_server_control_op_t op,
723 void * user_data_handle,
724 globus_gridftp_server_control_data_dir_t data_dir,
725 globus_gridftp_server_control_response_t response_code,
740 globus_gridftp_server_control_finished_passive_connect(
741 globus_gridftp_server_control_op_t op,
742 void * user_data_handle,
743 globus_gridftp_server_control_data_dir_t data_dir,
746 globus_gridftp_server_control_response_t response_code,
759 globus_gridftp_server_control_disconnected(
760 globus_gridftp_server_control_t server,
761 void * user_data_handle);
775 globus_gridftp_server_control_begin_transfer(
776 globus_gridftp_server_control_op_t op);
786 globus_gridftp_server_control_finished_transfer(
787 globus_gridftp_server_control_op_t op,
788 globus_gridftp_server_control_response_t response_code,
792 globus_gridftp_server_control_add_feature(
793 globus_gridftp_server_control_t server,
794 const char * feature);
798 typedef enum globus_gsc_959_command_desc_e
800 GLOBUS_GSC_COMMAND_POST_AUTH = 0x01,
801 GLOBUS_GSC_COMMAND_PRE_AUTH = 0x02
802 } globus_gsc_959_command_desc_t;
805 globus_gsc_string_to_959(
808 const char * preline);
811 (*globus_gsc_959_command_cb_t)(
812 globus_gsc_959_op_t op,
813 const char * full_command,
819 globus_gsc_959_command_add(
820 globus_gridftp_server_control_t server,
821 const char * command_name,
822 globus_gsc_959_command_cb_t command_cb,
823 globus_gsc_959_command_desc_t desc,
830 globus_gsc_959_command_remove(
831 globus_gridftp_server_control_t server,
832 const char * command_name);
835 globus_gsc_959_finished_command(
836 globus_gsc_959_op_t op,
840 globus_gridftp_server_control_event_send_perf(
841 globus_gridftp_server_control_op_t op,
843 globus_off_t nbytes);
846 globus_gridftp_server_control_event_send_restart(
847 globus_gridftp_server_control_op_t op,
848 globus_range_list_t restart);
852 globus_gridftp_server_control_421_end(
853 globus_gridftp_server_control_t server,
858 #define GLOBUS_GRIDFTP_SERVER_CONTROL_MODULE (&globus_i_gsc_module) int globus_bool_t
Boolean type.
Definition: globus_types.h:93
Definition: globus_gridftp_server_control.h:204
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