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_LIBRARY_TLS = 0x04
175 } globus_gridftp_server_control_security_type_t;
177 typedef enum globus_gsc_layout_e
179 GLOBUS_GSC_LAYOUT_TYPE_NONE = 0,
180 GLOBUS_GSC_LAYOUT_TYPE_PARTITIONED,
181 GLOBUS_GSC_LAYOUT_TYPE_BLOCKED
182 } globus_gsc_layout_t;
184 typedef enum globus_gridftp_server_control_stat_error_e
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;
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;
210 char * symlink_target;
220 globus_gridftp_server_control_stat_error_t error;
230 typedef enum globus_gridftp_server_control_network_protocol_e
232 GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV4 = 1,
233 GLOBUS_GRIDFTP_SERVER_CONTROL_PROTOCOL_IPV6
234 } globus_gridftp_server_control_network_protocol_t;
246 typedef enum globus_i_gsc_data_dir_e
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;
260 typedef enum globus_gridftp_server_control_event_type_e
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;
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,
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,
308 typedef enum globus_gridftp_server_control_resource_mask_e
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;
321 (*globus_gridftp_server_control_cb_t)(
322 globus_gridftp_server_control_t server,
337 (*globus_gridftp_server_control_resource_cb_t)(
338 globus_gridftp_server_control_op_t op,
340 globus_gridftp_server_control_resource_mask_t mask,
348 (*globus_gridftp_server_control_transfer_cb_t)(
349 globus_gridftp_server_control_op_t op,
351 const char * local_target,
352 const char * mod_name,
353 const char * mod_parms,
354 globus_range_list_t range_list,
358 (*globus_gridftp_server_control_list_cb_t)(
359 globus_gridftp_server_control_op_t op,
362 const char * fact_str,
364 int traversal_options,
368 globus_gridftp_server_control_list_buffer_alloc(
369 const char * fact_str,
371 const char * base_path,
378 globus_gridftp_server_control_list_buffer_free(
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
404 (*globus_gridftp_server_control_log_cb_t)(
405 globus_gridftp_server_control_t server_handle,
406 const char * full_command,
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,
427 const char * pathname,
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,
459 (*globus_gridftp_server_control_data_destroy_cb_t)(
460 void * user_data_handle,
464 (*globus_gridftp_server_control_event_cb_t)(
465 globus_gridftp_server_control_op_t op,
470 globus_gridftp_server_control_events_enable(
471 globus_gridftp_server_control_op_t op,
473 globus_gridftp_server_control_event_cb_t event_cb,
490 globus_gridftp_server_control_finished_resource(
491 globus_gridftp_server_control_op_t op,
497 globus_gridftp_server_control_response_t response_code,
506 globus_gridftp_server_control_attr_init(
507 globus_gridftp_server_control_attr_t * in_attr);
510 globus_gridftp_server_control_attr_destroy(
511 globus_gridftp_server_control_attr_t in_attr);
514 globus_gridftp_server_control_attr_copy(
515 globus_gridftp_server_control_attr_t * dst,
516 globus_gridftp_server_control_attr_t src);
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,
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,
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,
537 globus_gridftp_server_control_attr_set_banner(
538 globus_gridftp_server_control_attr_t in_attr,
542 globus_gridftp_server_control_attr_set_message(
543 globus_gridftp_server_control_attr_t in_attr,
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);
552 globus_gridftp_server_control_attr_set_idle_time(
553 globus_gridftp_server_control_attr_t in_attr,
555 int preauth_timeout);
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,
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,
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,
579 globus_gridftp_server_control_passive_connect_cb_t passive_cb,
581 globus_gridftp_server_control_data_destroy_cb_t destroy_cb,
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,
599 globus_gridftp_server_control_init(
600 globus_gridftp_server_control_t * server);
609 globus_gridftp_server_control_destroy(
610 globus_gridftp_server_control_t server);
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,
640 globus_gridftp_server_control_stop(
641 globus_gridftp_server_control_t server);
647 globus_gridftp_server_control_get_allocated(
648 globus_gridftp_server_control_op_t op,
649 globus_off_t * out_allo);
652 globus_gridftp_server_control_get_layout(
653 globus_gridftp_server_control_op_t op,
654 globus_gsc_layout_t * layout_type,
658 globus_gridftp_server_control_get_buffer_size(
659 globus_gridftp_server_control_op_t op,
664 globus_gridftp_server_control_get_parallelism(
665 globus_gridftp_server_control_op_t op,
666 int * out_parallelism);
669 globus_gridftp_server_control_get_mode(
670 globus_gridftp_server_control_op_t op,
674 globus_gridftp_server_control_get_type(
675 globus_gridftp_server_control_op_t op,
679 globus_gridftp_server_control_get_cwd(
680 globus_gridftp_server_control_t server,
684 globus_gridftp_server_control_set_cwd(
685 globus_gridftp_server_control_t server,
686 const char * cwd_string);
689 globus_gridftp_server_control_get_data_auth(
690 globus_gridftp_server_control_op_t op,
694 gss_cred_id_t * del_cred);
697 globus_gridftp_server_control_authenticated(
698 globus_gridftp_server_control_t server);
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,
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,
747 globus_gridftp_server_control_response_t response_code,
760 globus_gridftp_server_control_disconnected(
761 globus_gridftp_server_control_t server,
762 void * user_data_handle);
776 globus_gridftp_server_control_begin_transfer(
777 globus_gridftp_server_control_op_t op);
787 globus_gridftp_server_control_finished_transfer(
788 globus_gridftp_server_control_op_t op,
789 globus_gridftp_server_control_response_t response_code,
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);
799 globus_gridftp_server_control_add_feature(
800 globus_gridftp_server_control_t server,
801 const char * feature);
805 typedef enum globus_gsc_959_command_desc_e
807 GLOBUS_GSC_COMMAND_POST_AUTH = 0x01,
808 GLOBUS_GSC_COMMAND_PRE_AUTH = 0x02
809 } globus_gsc_959_command_desc_t;
812 globus_gsc_string_to_959(
815 const char * preline);
818 (*globus_gsc_959_command_cb_t)(
819 globus_gsc_959_op_t op,
820 const char * full_command,
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,
837 globus_gsc_959_command_remove(
838 globus_gridftp_server_control_t server,
839 const char * command_name);
842 globus_gsc_959_finished_command(
843 globus_gsc_959_op_t op,
847 globus_gridftp_server_control_event_send_perf(
848 globus_gridftp_server_control_op_t op,
850 globus_off_t nbytes);
853 globus_gridftp_server_control_event_send_restart(
854 globus_gridftp_server_control_op_t op,
855 globus_range_list_t restart);
859 globus_gridftp_server_control_421_end(
860 globus_gridftp_server_control_t server,
865 #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: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