19 #ifndef GLOBUS_GRIDFTP_SERVER_H
20 #define GLOBUS_GRIDFTP_SERVER_H
22 #include "globus_common.h"
23 #include "globus_gridftp_server_control.h"
25 #ifdef TARGET_ARCH_WIN32
31 #ifndef TARGET_ARCH_WIN32
35 #define GLOBUS_MAPPING_STRING ":globus-mapping:"
37 extern globus_module_descriptor_t globus_i_gfs_module;
38 #define GLOBUS_GRIDFTP_SERVER_MODULE (&globus_i_gfs_module)
40 extern globus_extension_registry_t globus_i_gfs_dsi_registry;
41 #define GLOBUS_GFS_DSI_REGISTRY &globus_i_gfs_dsi_registry
43 extern globus_extension_registry_t globus_i_gfs_acl_registry;
44 #define GLOBUS_GFS_ACL_REGISTRY &globus_i_gfs_acl_registry
50 typedef enum globus_gfs_error_type_e
52 GLOBUS_GFS_ERROR_MEMORY = 1,
53 GLOBUS_GFS_ERROR_PARAMETER,
54 GLOBUS_GFS_ERROR_SYSTEM_ERROR,
55 GLOBUS_GFS_ERROR_WRAPPED,
56 GLOBUS_GFS_ERROR_DATA,
57 GLOBUS_GFS_ERROR_GENERIC
58 } globus_gfs_error_type_t;
65 typedef enum globus_gfs_operation_type_e
67 GLOBUS_GFS_OP_FINAL_REPLY = 1,
68 GLOBUS_GFS_OP_EVENT_REPLY,
70 GLOBUS_GFS_OP_SESSION_START,
71 GLOBUS_GFS_OP_SESSION_STOP,
75 GLOBUS_GFS_OP_COMMAND,
76 GLOBUS_GFS_OP_PASSIVE,
78 GLOBUS_GFS_OP_DESTROY,
79 GLOBUS_GFS_OP_TRANSFER,
81 GLOBUS_GFS_OP_BUFFER_SEND,
82 GLOBUS_GFS_OP_HANDSHAKE,
83 GLOBUS_GFS_OP_SESSION_START_REPLY,
84 GLOBUS_GFS_OP_INTERMEDIATE_REPLY
85 } globus_gfs_operation_type_t;
87 #define GLOBUS_GFS_OP_STAT_PARTIAL GLOBUS_GFS_OP_INTERMEDIATE_REPLY
95 typedef enum globus_gfs_command_type_e
97 GLOBUS_GFS_CMD_MKD = 1,
100 GLOBUS_GFS_CMD_SITE_AUTHZ_ASSERT,
101 GLOBUS_GFS_CMD_SITE_RDEL,
105 GLOBUS_GFS_CMD_SITE_CHMOD,
106 GLOBUS_GFS_CMD_SITE_DSI,
107 GLOBUS_GFS_CMD_SITE_SETNETSTACK,
108 GLOBUS_GFS_CMD_SITE_SETDISKSTACK,
109 GLOBUS_GFS_CMD_SITE_CLIENTINFO,
111 GLOBUS_GFS_CMD_SITE_CHGRP,
112 GLOBUS_GFS_CMD_SITE_UTIME,
113 GLOBUS_GFS_CMD_SITE_SYMLINKFROM,
114 GLOBUS_GFS_CMD_SITE_SYMLINK,
115 GLOBUS_GFS_CMD_HTTP_PUT,
116 GLOBUS_GFS_CMD_HTTP_GET,
117 GLOBUS_GFS_CMD_HTTP_CONFIG,
119 GLOBUS_GFS_CMD_SITE_TASKID,
122 GLOBUS_GFS_CMD_SITE_RESTRICT = 3072,
123 GLOBUS_GFS_CMD_SITE_CHROOT,
124 GLOBUS_GFS_CMD_SITE_SHARING,
127 GLOBUS_GFS_CMD_STORATTR,
128 GLOBUS_GFS_CMD_WHOAMI,
130 GLOBUS_GFS_MIN_CUSTOM_CMD = 4096
131 } globus_gfs_command_type_t;
198 typedef enum globus_gfs_buffer_type_e
200 GLOBUS_GFS_BUFFER_EOF_INFO = 0x0001,
201 GLOBUS_GFS_BUFFER_SERVER_DEFINED = 0xFFFF
203 } globus_gfs_buffer_type_t;
210 typedef enum globus_gfs_layout_type_e
212 GLOBUS_GFS_LAYOUT_PARTITIONED = 1,
213 GLOBUS_GFS_LAYOUT_BLOCKED
214 } globus_gfs_layout_type_t;
240 typedef globus_gridftp_server_control_stat_t globus_gfs_stat_t;
249 typedef struct globus_i_gfs_op_info_s * globus_gfs_op_info_t;
257 typedef struct globus_gfs_data_finished_info_s
262 globus_bool_t bi_directional;
268 const char ** contact_strings;
269 } globus_gfs_data_finished_info_t;
276 typedef struct globus_gfs_cmd_finshed_info_s
279 globus_gfs_command_type_t command;
284 } globus_gfs_cmd_finshed_info_t;
291 typedef struct globus_gfs_stat_finished_info_s
302 globus_gfs_stat_t * stat_array;
303 } globus_gfs_stat_finished_info_t;
310 typedef struct globus_gfs_session_finished_info_s
318 } globus_gfs_session_finished_info_t;
325 typedef struct globus_gfs_transfer_finished_info_s
328 globus_off_t bytes_transferred;
330 } globus_gfs_transfer_finished_info_t;
337 typedef struct globus_gfs_finished_info_s
340 globus_gfs_operation_type_t type;
349 globus_result_t result;
353 globus_gfs_session_finished_info_t session;
354 globus_gfs_data_finished_info_t data;
355 globus_gfs_cmd_finshed_info_t command;
356 globus_gfs_stat_finished_info_t stat;
357 globus_gfs_transfer_finished_info_t transfer;
361 globus_gfs_op_info_t op_info;
362 } globus_gfs_finished_info_t;
369 typedef struct globus_gfs_event_info_s
386 globus_off_t recvd_bytes;
388 globus_range_list_t recvd_ranges;
399 globus_gfs_op_info_t op_info;
400 } globus_gfs_event_info_t;
407 typedef struct globus_gfs_transfer_info_s
418 globus_off_t partial_offset;
420 globus_off_t partial_length;
422 globus_range_list_t range_list;
424 globus_bool_t truncate;
438 globus_off_t alloc_size;
441 char * expected_checksum;
443 char * expected_checksum_alg;
448 int traversal_options;
451 globus_gfs_op_info_t op_info;
452 } globus_gfs_transfer_info_t;
458 #define rnfr_pathname from_pathname
465 typedef struct globus_gfs_command_info_s
468 globus_gfs_command_type_t command;
473 globus_off_t cksm_offset;
475 globus_off_t cksm_length;
484 char * from_pathname;
496 globus_gfs_op_info_t op_info;
497 } globus_gfs_command_info_t;
504 typedef struct globus_gfs_data_info_s
515 globus_size_t tcp_bufsize;
517 globus_size_t blocksize;
519 globus_size_t stripe_blocksize;
537 const char ** contact_strings;
543 gss_cred_id_t del_cred;
546 globus_gfs_op_info_t op_info;
547 } globus_gfs_data_info_t;
554 typedef struct globus_gfs_stat_info_s
557 globus_bool_t file_only;
559 globus_bool_t
internal;
563 globus_bool_t use_symlink_info;
565 globus_bool_t include_path_stat;
568 globus_gfs_op_info_t op_info;
569 } globus_gfs_stat_info_t;
571 typedef struct globus_gfs_session_info_s
573 gss_cred_id_t del_cred;
574 globus_bool_t free_cred;
575 globus_bool_t map_user;
583 globus_gfs_op_info_t op_info;
584 } globus_gfs_session_info_t;
586 typedef enum globus_gfs_brain_reason_e
588 GLOBUS_GFS_BRAIN_REASON_ERROR = 1,
589 GLOBUS_GFS_BRAIN_REASON_COMPLETE
590 } globus_gfs_brain_reason_t;
592 typedef struct globus_i_gfs_brain_node_s
598 int current_connection;
600 } globus_i_gfs_brain_node_t;
615 typedef struct globus_l_gfs_data_operation_s * globus_gfs_operation_t;
633 globus_gfs_operation_t op,
634 globus_gfs_session_info_t * session_info);
641 (*globus_gfs_storage_destroy_t)(
650 (*globus_gfs_storage_transfer_t)(
651 globus_gfs_operation_t op,
652 globus_gfs_transfer_info_t * transfer_info,
662 (*globus_gfs_storage_command_t)(
663 globus_gfs_operation_t op,
664 globus_gfs_command_info_t * command_info,
673 (*globus_gfs_storage_stat_t)(
674 globus_gfs_operation_t op,
675 globus_gfs_stat_info_t * stat_info,
685 (*globus_gfs_storage_data_t)(
686 globus_gfs_operation_t op,
687 globus_gfs_data_info_t * data_info,
698 (*globus_gfs_storage_data_destroy_t)(
710 (*globus_gfs_storage_trev_t)(
711 globus_gfs_event_info_t * event_info,
721 (*globus_gfs_storage_set_cred_t)(
722 gss_cred_id_t del_cred,
732 (*globus_gfs_storage_buffer_send_t)(
734 globus_byte_t * buffer,
735 globus_size_t buffer_len,
748 typedef globus_result_t
749 (*globus_gfs_storage_realpath_t)(
750 const char * in_path,
751 char ** out_realpath,
755 #define GLOBUS_GFS_DSI_DESCRIPTOR_SENDER (1 << 0)
756 #define GLOBUS_GFS_DSI_DESCRIPTOR_BLOCKING (1 << 1)
757 #define GLOBUS_GFS_DSI_DESCRIPTOR_HAS_REALPATH (1 << 2)
758 #define GLOBUS_GFS_DSI_DESCRIPTOR_REQUIRES_ORDERED_DATA (1 << 3)
759 #define GLOBUS_GFS_DSI_DESCRIPTOR_SETS_ERROR_RESPONSES (1 << 4)
760 #define GLOBUS_GFS_DSI_DESCRIPTOR_SAFE_RDEL (1 << 5)
761 #define GLOBUS_GFS_DSI_DESCRIPTOR_USERNAME_INCLUDES_DOMAIN (1 << 6)
770 typedef struct globus_gfs_storage_iface_s
776 globus_gfs_storage_destroy_t destroy_func;
779 globus_gfs_storage_transfer_t list_func;
780 globus_gfs_storage_transfer_t send_func;
781 globus_gfs_storage_transfer_t recv_func;
782 globus_gfs_storage_trev_t trev_func;
785 globus_gfs_storage_data_t active_func;
786 globus_gfs_storage_data_t passive_func;
787 globus_gfs_storage_data_destroy_t data_destroy_func;
789 globus_gfs_storage_command_t command_func;
790 globus_gfs_storage_stat_t stat_func;
792 globus_gfs_storage_set_cred_t set_cred_func;
793 globus_gfs_storage_buffer_send_t buffer_send_func;
794 globus_gfs_storage_realpath_t realpath_func;
795 } globus_gfs_storage_iface_t;
811 globus_gfs_operation_t op,
812 globus_result_t result,
813 globus_gfs_finished_info_t * finished_info);
823 globus_gridftp_server_operation_event(
824 globus_gfs_operation_t op,
825 globus_result_t result,
826 globus_gfs_event_info_t * event_info);
834 globus_gridftp_server_begin_transfer(
835 globus_gfs_operation_t op,
845 globus_gridftp_server_finished_transfer(
846 globus_gfs_operation_t op,
847 globus_result_t result);
856 globus_gridftp_server_finished_session_start(
857 globus_gfs_operation_t op,
858 globus_result_t result,
871 globus_gridftp_server_finished_command(
872 globus_gfs_operation_t op,
873 globus_result_t result,
874 char * command_response);
876 globus_gridftp_server_intermediate_command(
877 globus_gfs_operation_t op,
878 globus_result_t result,
879 char * command_response);
887 globus_gridftp_server_finished_stat(
888 globus_gfs_operation_t op,
889 globus_result_t result,
890 globus_gfs_stat_t * stat_array,
894 globus_gridftp_server_finished_stat_partial(
895 globus_gfs_operation_t op,
896 globus_result_t result,
897 globus_gfs_stat_t * stat_array,
901 globus_gridftp_server_finished_stat_custom_list(
902 globus_gfs_operation_t op,
903 globus_result_t result,
904 globus_byte_t * list_response,
905 globus_size_t list_response_len,
906 globus_bool_t free_buffer);
914 globus_gridftp_server_finished_active_data(
915 globus_gfs_operation_t op,
916 globus_result_t result,
918 globus_bool_t bi_directional);
926 globus_gridftp_server_finished_passive_data(
927 globus_gfs_operation_t op,
928 globus_result_t result,
930 globus_bool_t bi_directional,
931 const char ** contact_strings,
951 globus_gfs_operation_t op,
952 globus_result_t result,
953 globus_byte_t * buffer,
954 globus_size_t nbytes,
958 globus_gridftp_server_register_write(
959 globus_gfs_operation_t op,
960 globus_byte_t * buffer,
961 globus_size_t length,
977 (*globus_gridftp_server_read_cb_t)(
978 globus_gfs_operation_t op,
979 globus_result_t result,
980 globus_byte_t * buffer,
981 globus_size_t nbytes,
987 globus_gridftp_server_register_read(
988 globus_gfs_operation_t op,
989 globus_byte_t * buffer,
990 globus_size_t length,
991 globus_gridftp_server_read_cb_t callback,
1030 globus_gridftp_server_add_command(
1031 globus_gfs_operation_t op,
1032 const char * command_name,
1036 const char * help_string,
1037 globus_bool_t has_pathname,
1056 globus_gfs_operation_t op,
1057 const char * cksm_str);
1071 GLOBUS_GFS_OP_INFO_CMD_ARGS = 1
1081 globus_gridftp_server_query_op_info(
1082 globus_gfs_operation_t op,
1083 globus_gfs_op_info_t op_info,
1098 globus_gridftp_server_get_recv_attr_string(
1099 globus_gfs_operation_t op,
1100 const char * requested_attr,
1110 globus_gridftp_server_get_recv_modification_time(
1111 globus_gfs_operation_t op,
1125 globus_gridftp_server_update_bytes_written(
1126 globus_gfs_operation_t op,
1127 globus_off_t offset,
1128 globus_off_t length);
1141 globus_gridftp_server_update_bytes_recvd(
1142 globus_gfs_operation_t op,
1143 globus_off_t length);
1156 globus_gridftp_server_update_range_recvd(
1157 globus_gfs_operation_t op,
1158 globus_off_t offset,
1159 globus_off_t length);
1168 globus_gridftp_server_get_optimal_concurrency(
1169 globus_gfs_operation_t op,
1180 globus_gridftp_server_get_block_size(
1181 globus_gfs_operation_t op,
1182 globus_size_t * block_size);
1191 globus_gridftp_server_get_stripe_block_size(
1192 globus_gfs_operation_t op,
1193 globus_size_t * stripe_block_size);
1203 globus_gridftp_server_get_session_username(
1204 globus_gfs_operation_t op,
1216 globus_gridftp_server_get_delegated_cred(
1217 globus_gfs_operation_t op,
1218 gss_cred_id_t * del_cred);
1232 globus_gridftp_server_get_sec_context(
1233 globus_gfs_operation_t op,
1234 gss_ctx_id_t * context);
1253 globus_gridftp_server_set_ordered_data(
1254 globus_gfs_operation_t op,
1255 globus_bool_t ordered_data);
1258 globus_gridftp_server_get_ordered_data(
1259 globus_gfs_operation_t op,
1260 globus_bool_t * ordered_data);
1269 globus_gridftp_server_get_config_string(
1270 globus_gfs_operation_t op,
1271 char ** config_string);
1280 globus_gridftp_server_get_config_data(
1281 globus_gfs_operation_t op,
1283 char ** config_data);
1286 globus_gfs_data_get_file_stack_list(
1287 globus_gfs_operation_t in_op,
1288 globus_list_t ** out_list);
1291 globus_gridftp_server_get_update_interval(
1292 globus_gfs_operation_t op,
1302 globus_gridftp_server_get_task_id(
1303 globus_gfs_operation_t op,
1315 globus_gridftp_server_get_read_range(
1316 globus_gfs_operation_t op,
1317 globus_off_t * offset,
1318 globus_off_t * length);
1331 globus_gridftp_server_get_write_range(
1332 globus_gfs_operation_t op,
1333 globus_off_t * offset,
1334 globus_off_t * length);
1341 GLOBUS_GFS_LOG_ERR = 0x01,
1342 GLOBUS_GFS_LOG_WARN = 0x02,
1343 GLOBUS_GFS_LOG_TRANSFER = 0x04,
1344 GLOBUS_GFS_LOG_INFO = 0x08,
1345 GLOBUS_GFS_LOG_DUMP = 0x10,
1346 GLOBUS_GFS_LOG_ALL = 0xFF,
1347 GLOBUS_GFS_LOG_AUDIT = 0x100
1348 } globus_gfs_log_type_t;
1351 globus_gfs_log_message(
1352 globus_gfs_log_type_t type,
1353 const char * format,
1357 globus_gfs_log_result(
1358 globus_gfs_log_type_t type,
1360 globus_result_t result);
1365 GLOBUS_GFS_DEBUG_TRACE = 8,
1366 GLOBUS_GFS_DEBUG_INFO = 16,
1367 GLOBUS_GFS_DEBUG_STATE = 32
1371 #define GlobusGFSName(func) static const char * _gfs_name __attribute__((__unused__)) = #func
1373 #define GlobusGFSName(func) static const char * _gfs_name = #func
1376 GlobusDebugDeclare(GLOBUS_GRIDFTP_SERVER);
1378 #define GlobusGFSDebugPrintf(level, message) \
1379 GlobusDebugPrintf(GLOBUS_GRIDFTP_SERVER, level, message)
1381 #define GlobusGFSDebugInfo(_msg) \
1382 GlobusGFSDebugPrintf( \
1383 GLOBUS_GFS_DEBUG_INFO, \
1384 ("[%s] %s\n", __func__, _msg))
1386 #define GlobusGFSDebugEnter() \
1387 GlobusGFSDebugPrintf( \
1388 GLOBUS_GFS_DEBUG_TRACE, \
1389 ("[%s] Entering\n", __func__))
1391 #define GlobusGFSDebugExitResult(res) \
1392 GlobusGFSDebugPrintf( \
1393 GLOBUS_GFS_DEBUG_TRACE, \
1394 ("[%s] Exiting%s\n", \
1396 (res != GLOBUS_SUCCESS) ? " with error" : ""))
1398 #define GlobusGFSDebugExit() \
1399 GlobusGFSDebugPrintf( \
1400 GLOBUS_GFS_DEBUG_TRACE, \
1401 ("[%s] Exiting\n", __func__))
1403 #define GlobusGFSDebugState(_state) \
1404 GlobusGFSDebugPrintf( \
1405 GLOBUS_GFS_DEBUG_INFO, \
1406 ("[%s] State: %d\n", __func__, _state))
1408 #define GlobusGFSDebugExitWithError() \
1409 GlobusGFSDebugPrintf( \
1410 GLOBUS_GFS_DEBUG_TRACE, \
1411 ("[%s] Exiting with error\n", __func__))
1413 #define GlobusGFSErrorParameter(mem_name) \
1414 globus_error_put(GlobusGFSErrorObjParameter(mem_name))
1416 #define GlobusGFSErrorIPC() \
1417 globus_error_put(GlobusGFSErrorObjIPC())
1419 #define GlobusGFSErrorObjIPC() \
1420 globus_error_construct_error( \
1423 GLOBUS_GFS_ERROR_MEMORY, \
1427 "IPC Communication error.")
1429 #define GlobusGFSErrorObjParameter(param_name) \
1430 globus_error_construct_error( \
1433 GLOBUS_GFS_ERROR_PARAMETER, \
1437 "invalid parameter: %s", \
1440 #define GlobusGFSErrorSystemError(system_func, system_errno) \
1441 globus_error_put(GlobusGFSErrorObjSystemError(\
1442 (system_func), (system_errno)))
1443 #define GlobusGFSErrorObjSystemError(system_func, system_errno) \
1444 globus_i_gfs_error_system( \
1445 0, (system_errno), \
1446 "System error%s%s", \
1447 (system_func) != NULL ? " in " : "", \
1448 (system_func) != NULL ? (system_func) : "")
1450 #define GlobusGFSErrorWrapFailed(failed_func, result) \
1451 globus_error_put(GlobusGFSErrorObjWrapFailed(failed_func, result))
1453 #define GlobusGFSErrorObjWrapFailed(failed_func, result) \
1454 globus_error_construct_error( \
1456 globus_error_get((result)), \
1457 GLOBUS_GFS_ERROR_WRAPPED, \
1464 #define GlobusGFSErrorData(reason) \
1465 globus_error_put(GlobusGFSErrorObjData(reason))
1467 #define GlobusGFSErrorObjData(reason) \
1468 globus_error_construct_error( \
1471 GLOBUS_GFS_ERROR_DATA, \
1478 #define GlobusGFSErrorGeneric(reason) \
1479 globus_error_put(GlobusGFSErrorObjGeneric(reason))
1481 #define GlobusGFSErrorObjGeneric(reason) \
1482 globus_error_construct_error( \
1485 GLOBUS_GFS_ERROR_GENERIC, \
1494 globus_module_descriptor_t * base_source,
1495 globus_object_t * base_cause,
1497 const char *response_error_code,
1503 globus_object_t * error,
1504 globus_module_descriptor_t * base_source,
1505 globus_object_t * base_cause,
1507 const char * response_error_code,
1512 globus_object_t * error,
1513 globus_module_descriptor_t * base_source,
1514 globus_object_t * base_cause,
1516 const char * response_error_code,
1522 globus_object_t * error);
1526 globus_object_t * error);
1530 globus_object_t * error,
1531 const char * response_error_code);
1533 extern const globus_object_type_t
1536 #define GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE \
1537 (&GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION)
1540 #define GlobusGFSErrorFtpResponse(cause, code, response_error_code, ...) \
1541 globus_error_put(GlobusGFSErrorObjFtpResponse( \
1542 cause, code, response_error_code, __VA_ARGS__))
1544 #define GlobusGFSErrorObjFtpResponse(cause, code, response_error_code, ...) \
1545 globus_gfs_ftp_response_error_construct( \
1549 response_error_code, \
1555 #define GlobusGFSErrorMemory(mem) \
1556 globus_error_put(GlobusGFSErrorObjMemory(mem))
1557 #define GlobusGFSErrorObjMemory(mem) \
1558 GlobusGFSErrorObjSystemError("malloc", errno)
1560 #define GlobusGFSErrorObj(cause, response_code, ...) \
1561 GlobusGFSErrorObjFtpResponse(cause, response_code, __VA_ARGS__)
1563 #define GlobusGFSErrorPathNotFound(p) \
1564 globus_error_put(GlobusGFSErrorObjPathNotFound(NULL, p))
1565 #define GlobusGFSErrorObjPathNotFound(cause, p) \
1566 GlobusGFSErrorObj((cause), 550, "PATH_NOT_FOUND", \
1568 ((p) != NULL) ? "GridFTP-Path: \"" : "", \
1569 ((p) != NULL) ? (p) : "", \
1570 ((p) != NULL) ? "\"" : "")
1572 #define GlobusGFSErrorIncorrectChecksum(computed, expected) \
1573 globus_error_put(GlobusGFSErrorObjIncorrectChecksum( \
1574 NULL, computed, expected))
1575 #define GlobusGFSErrorObjIncorrectChecksum(cause, computed, expected) \
1576 GlobusGFSErrorObj( \
1579 "INCORRECT_CHECKSUM", \
1580 "GridFTP-Computed-Checksum: %s\n" \
1581 "GridFTP-Expected-Checksum: %s", (computed), (expected))
1583 #define GlobusGFSErrorMultipartUploadNotFound() \
1584 globus_error_put(GlobusGFSErrorObjMultipartUploadNotFound(NULL))
1585 #define GlobusGFSErrorObjMultipartUploadNotFound(cause) \
1586 GlobusGFSErrorObj(cause, 553, "MULTI_PART_UPLOAD_NOT_FOUND", NULL)
1588 #define GlobusGFSErrorAppendNotSupported() \
1589 globus_error_put(GlobusGFSErrorObjAppendNotSupported(NULL))
1590 #define GlobusGFSErrorObjAppendNotSupported(cause) \
1591 GlobusGFSErrorObj((cause), 553, "APPEND_NOT_SUPPORTED", NULL)
1593 #define GlobusGFSErrorAmbiguousPath(ambiguity) \
1594 globus_error_put(GlobusGFSErrorObjAmbiguousPath(NULL, ambiguity))
1595 #define GlobusGFSErrorObjAmbiguousPath(cause, ambiguity) \
1596 GlobusGFSErrorObj( \
1600 "GridFTP-Path: %s", \
1603 #define GlobusGFSErrorTooBusy() \
1604 globus_error_put(GlobusGFSErrorObjTooBusy(NULL))
1605 #define GlobusGFSErrorObjTooBusy(cause) \
1606 GlobusGFSErrorObj((cause), 451, "TOO_BUSY", NULL)
1608 #define GlobusGFSErrorDataChannelAuthenticationFailure() \
1609 globus_error_put(GlobusGFSErrorObjDataChannelAuthenticationFailure( \
1611 #define GlobusGFSErrorObjDataChannelAuthenticationFailure(cause) \
1612 GlobusGFSErrorObj((cause), 425, \
1613 "DATA_CHANNEL_AUTHENTICATION_FAILURE", NULL)
1615 #define GlobusGFSErrorDataChannelCommunicationFailure() \
1616 globus_error_put(GlobusGFSErrorObjDataChannelCommunicationFailure( \
1618 #define GlobusGFSErrorObjDataChannelCommunicationFailure(cause) \
1619 GlobusGFSErrorObj((cause), 425, \
1620 "DATA_CHANNEL_COMMUNICATION_FAILURE", NULL)
1622 #define GlobusGFSErrorLoginDenied() \
1623 globus_error_put(GlobusGFSErrorObjLoginDenied(NULL))
1624 #define GlobusGFSErrorObjLoginDenied(cause) \
1625 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", NULL)
1627 #define GlobusGFSErrorLoginDeniedJSON(message, json) \
1628 globus_error_put(GlobusGFSErrorObjLoginDeniedJSON(NULL, message, json))
1629 #define GlobusGFSErrorObjLoginDeniedJSON(cause, message, json) \
1630 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", \
1631 "GridFTP-Message: %s\n" \
1632 "GridFTP-JSON-Result: %s", \
1633 (message) ? (message) : "Message not available", (json))
1635 #define GlobusGFSErrorPermissionDenied() \
1636 globus_error_put(GlobusGFSErrorObjPermissionDenied(NULL))
1637 #define GlobusGFSErrorObjPermissionDenied(cause) \
1638 GlobusGFSErrorObj((cause), 550, "PERMISSION_DENIED", NULL)
1640 #define GlobusGFSErrorQuotaExceeded() \
1641 globus_error_put(GlobusGFSErrorObjQuotaExceeded(NULL))
1642 #define GlobusGFSErrorObjQuotaExceeded(cause) \
1643 GlobusGFSErrorObj((cause), 451, "QUOTA_EXCEEDED", NULL)
1645 #define GlobusGFSErrorNoSpaceLeft() \
1646 globus_error_put(GlobusGFSErrorObjNoSpaceLeft(NULL))
1647 #define GlobusGFSErrorObjNoSpaceLeft(cause) \
1648 GlobusGFSErrorObj((cause), 451, "NO_SPACE_LEFT", NULL)
1650 #define GlobusGFSErrorInvalidPathName(name) \
1651 globus_error_put(GlobusGFSErrorObjInvalidPathName(NULL, name))
1652 #define GlobusGFSErrorObjInvalidPathName(cause, name) \
1653 GlobusGFSErrorObj((cause), 553, "INVALID_PATH_NAME", \
1654 "GridFTP-Path: %s", name)
1656 #define GlobusGFSErrorPathExists(name) \
1657 globus_error_put(GlobusGFSErrorObjPathExists(NULL, name))
1658 #define GlobusGFSErrorObjPathExists(cause, name) \
1659 GlobusGFSErrorObj((cause), 553, "PATH_EXISTS", \
1660 "GridFTP-Path: %s", name)
1662 #define GlobusGFSErrorIsADirectory(name) \
1663 globus_error_put(GlobusGFSErrorObjIsADirectory(NULL, name))
1664 #define GlobusGFSErrorObjIsADirectory(cause, name) \
1665 GlobusGFSErrorObj((cause), 553, "IS_A_DIRECTORY", \
1666 "GridFTP-Path: %s", name)
1668 #define GlobusGFSErrorNotADirectory(name) \
1669 globus_error_put(GlobusGFSErrorObjNotADirectory(NULL, name))
1670 #define GlobusGFSErrorObjNotADirectory(cause, name) \
1671 GlobusGFSErrorObj((cause), 553, "NOT_A_DIRECTORY", \
1672 "GridFTP-Path: %s", name)
1674 #define GlobusGFSErrorCRLError() \
1675 globus_error_put(GlobusGFSErrorObjCRLError(NULL))
1676 #define GlobusGFSErrorObjCRLError(cause) \
1677 GlobusGFSErrorObj((cause), 530, "CRL_ERROR", NULL)
1679 #define GlobusGFSErrorInternalError(generic_string) \
1680 globus_error_put(GlobusGFSErrorObjInternalError( \
1681 NULL, (generic_string)))
1682 #define GlobusGFSErrorObjInternalError(cause, generic_string) \
1683 GlobusGFSErrorObj((cause), 500, "INTERNAL_ERROR", \
1685 ((generic_string) != NULL) ? "GridFTP-Error: " : "", \
1686 ((generic_string) != NULL) ? generic_string : "")
1688 #define GlobusGFSErrorNotImplemented() \
1689 globus_error_put(GlobusGFSErrorObjNotImplemented(NULL))
1690 #define GlobusGFSErrorObjNotImplemented(cause) \
1691 GlobusGFSErrorObj((cause), 500, "NOT_IMPLEMETED", NULL)
1693 #define GlobusGFSErrorNotImplementedFeature(feature) \
1694 globus_error_put(GlobusGFSErrorObjNotImplementedFeature(NULL, feature))
1695 #define GlobusGFSErrorObjNotImplementedFeature(cause, feature) \
1696 GlobusGFSErrorObj((cause), 500, \
1697 "NOT_IMPLEMETED", "GridFTP-Feature: %s", (feature))
1699 #define GlobusGFSErrorConfigurationError() \
1700 globus_error_put(GlobusGFSErrorObjConfigurationError(NULL))
1701 #define GlobusGFSErrorObjConfigurationError(cause) \
1702 GlobusGFSErrorObj((cause), 500, "CONFIGURATION_ERROR", NULL)
1709 typedef struct globus_i_gfs_ipc_handle_s * globus_gfs_ipc_handle_t;
1734 (*globus_gfs_ipc_callback_t)(
1735 globus_gfs_ipc_handle_t ipc_handle,
1736 globus_result_t result,
1737 globus_gfs_finished_info_t * reply,
1741 (*globus_gfs_ipc_event_callback_t)(
1742 globus_gfs_ipc_handle_t ipc_handle,
1743 globus_result_t result,
1744 globus_gfs_event_info_t * reply,
1748 (*globus_gfs_ipc_close_callback_t)(
1749 globus_gfs_ipc_handle_t ipc_handle,
1750 globus_result_t result,
1754 (*globus_gfs_ipc_open_callback_t)(
1755 globus_gfs_ipc_handle_t ipc_handle,
1756 globus_result_t result,
1757 globus_gfs_finished_info_t * reply,
1761 (*globus_gfs_ipc_error_callback_t)(
1762 globus_gfs_ipc_handle_t ipc_handle,
1763 globus_result_t result,
1767 globus_gfs_ipc_reply_finished(
1768 globus_gfs_ipc_handle_t ipc_handle,
1769 globus_gfs_finished_info_t * reply);
1772 globus_gfs_ipc_reply_event(
1773 globus_gfs_ipc_handle_t ipc_handle,
1774 globus_gfs_event_info_t * reply);
1777 globus_gfs_ipc_reply_session(
1778 globus_gfs_ipc_handle_t ipc_handle,
1779 globus_gfs_finished_info_t * reply);
1793 (*globus_i_gfs_ipc_data_callback_t)(
1794 globus_gfs_finished_info_t * reply,
1798 (*globus_i_gfs_ipc_data_event_callback_t)(
1799 globus_gfs_event_info_t * reply,
1803 (*globus_i_gfs_ipc_done_callback_t)(
1805 globus_result_t result);
1814 (*globus_gfs_ipc_iface_session_start_t)(
1815 globus_gfs_ipc_handle_t ipc_handle,
1816 const gss_ctx_id_t context,
1817 globus_gfs_session_info_t * session_info,
1818 globus_i_gfs_ipc_data_callback_t cb,
1822 globus_gfs_ipc_start_session(
1823 globus_gfs_ipc_handle_t ipc_handle,
1824 globus_gfs_session_info_t * session_info,
1825 globus_gfs_ipc_callback_t cb,
1830 (*globus_gfs_ipc_iface_session_stop_t)(
1831 globus_gfs_ipc_handle_t ipc_handle,
1832 void * session_handle);
1835 globus_gfs_ipc_iface_session_stop(
1836 globus_gfs_ipc_handle_t ipc_handle,
1837 void * session_handle);
1840 (*globus_gfs_ipc_iface_set_cred_t)(
1841 globus_gfs_ipc_handle_t ipc_handle,
1842 void * session_handle,
1843 gss_cred_id_t del_cred);
1846 globus_gfs_ipc_set_cred(
1847 globus_gfs_ipc_handle_t ipc_handle,
1848 gss_cred_id_t del_cred);
1851 (*globus_gfs_ipc_iface_buffer_send_t)(
1852 globus_gfs_ipc_handle_t ipc_handle,
1853 void * session_handle,
1854 globus_byte_t * buffer,
1856 globus_size_t buffer_len);
1859 globus_gfs_ipc_request_buffer_send(
1860 globus_gfs_ipc_handle_t ipc_handle,
1861 globus_byte_t * buffer,
1863 globus_size_t buffer_len);
1871 (*globus_gfs_ipc_iface_recv_t)(
1872 globus_gfs_ipc_handle_t ipc_handle,
1873 void * session_handle,
1875 globus_gfs_transfer_info_t * recv_info,
1876 globus_i_gfs_ipc_data_callback_t cb,
1877 globus_i_gfs_ipc_data_event_callback_t event_cb,
1881 globus_gfs_ipc_request_recv(
1882 globus_gfs_ipc_handle_t ipc_handle,
1883 globus_gfs_transfer_info_t * recv_info,
1884 globus_gfs_ipc_callback_t cb,
1885 globus_gfs_ipc_event_callback_t event_cb,
1894 (*globus_gfs_ipc_iface_send_t)(
1895 globus_gfs_ipc_handle_t ipc_handle,
1896 void * session_handle,
1898 globus_gfs_transfer_info_t * send_info,
1899 globus_i_gfs_ipc_data_callback_t cb,
1900 globus_i_gfs_ipc_data_event_callback_t event_cb,
1904 globus_gfs_ipc_request_send(
1905 globus_gfs_ipc_handle_t ipc_handle,
1906 globus_gfs_transfer_info_t * send_info,
1907 globus_gfs_ipc_callback_t cb,
1908 globus_gfs_ipc_event_callback_t event_cb,
1912 (*globus_gfs_ipc_iface_list_t)(
1913 globus_gfs_ipc_handle_t ipc_handle,
1914 void * session_handle,
1916 globus_gfs_transfer_info_t * list_info,
1917 globus_i_gfs_ipc_data_callback_t cb,
1918 globus_i_gfs_ipc_data_event_callback_t event_cb,
1922 globus_gfs_ipc_request_list(
1923 globus_gfs_ipc_handle_t ipc_handle,
1924 globus_gfs_transfer_info_t * data_info,
1925 globus_gfs_ipc_callback_t cb,
1926 globus_gfs_ipc_event_callback_t event_cb,
1935 (*globus_gfs_ipc_iface_command_t)(
1936 globus_gfs_ipc_handle_t ipc_handle,
1937 void * session_handle,
1939 globus_gfs_command_info_t * cmd_info,
1940 globus_i_gfs_ipc_data_callback_t cb,
1944 globus_gfs_ipc_request_command(
1945 globus_gfs_ipc_handle_t ipc_handle,
1946 globus_gfs_command_info_t * cmd_info,
1947 globus_gfs_ipc_callback_t cb,
1956 (*globus_gfs_ipc_iface_active_data_t)(
1957 globus_gfs_ipc_handle_t ipc_handle,
1958 void * session_handle,
1960 globus_gfs_data_info_t * data_info,
1961 globus_i_gfs_ipc_data_callback_t cb,
1965 globus_gfs_ipc_request_active_data(
1966 globus_gfs_ipc_handle_t ipc_handle,
1967 globus_gfs_data_info_t * data_info,
1968 globus_gfs_ipc_callback_t cb,
1977 (*globus_gfs_ipc_iface_passive_data_t)(
1978 globus_gfs_ipc_handle_t ipc_handle,
1979 void * session_handle,
1981 globus_gfs_data_info_t * data_info,
1982 globus_i_gfs_ipc_data_callback_t cb,
1986 globus_gfs_ipc_request_passive_data(
1987 globus_gfs_ipc_handle_t ipc_handle,
1988 globus_gfs_data_info_t * data_info,
1989 globus_gfs_ipc_callback_t cb,
1996 (*globus_gfs_ipc_iface_stat_t)(
1997 globus_gfs_ipc_handle_t ipc_handle,
1998 void * session_handle,
2000 globus_gfs_stat_info_t * stat_info,
2001 globus_i_gfs_ipc_data_callback_t cb,
2005 globus_gfs_ipc_request_stat(
2006 globus_gfs_ipc_handle_t ipc_handle,
2007 globus_gfs_stat_info_t * stat_info,
2008 globus_gfs_ipc_callback_t cb,
2015 (*globus_gfs_ipc_iface_transfer_event_t)(
2016 globus_gfs_ipc_handle_t ipc_handle,
2017 void * session_handle,
2018 globus_gfs_event_info_t * event_info);
2022 globus_gfs_ipc_request_transfer_event(
2023 globus_gfs_ipc_handle_t ipc_handle,
2024 globus_gfs_event_info_t * event_info);
2031 (*globus_gfs_ipc_iface_data_destroy_t)(
2032 globus_gfs_ipc_handle_t ipc_handle,
2033 void * session_handle,
2037 globus_gfs_ipc_request_data_destroy(
2038 globus_gfs_ipc_handle_t ipc_handle,
2041 typedef struct globus_i_gfs_ipc_iface_s
2043 globus_gfs_ipc_iface_session_start_t session_start_func;
2044 globus_gfs_ipc_iface_session_stop_t session_stop_func;
2045 globus_gfs_ipc_iface_recv_t recv_func;
2046 globus_gfs_ipc_iface_send_t send_func;
2047 globus_gfs_ipc_iface_command_t command_func;
2048 globus_gfs_ipc_iface_active_data_t active_func;
2049 globus_gfs_ipc_iface_passive_data_t passive_func;
2050 globus_gfs_ipc_iface_data_destroy_t data_destroy_func;
2051 globus_gfs_ipc_iface_stat_t stat_func;
2052 globus_gfs_ipc_iface_list_t list_func;
2053 globus_gfs_ipc_iface_transfer_event_t transfer_event_func;
2054 globus_gfs_ipc_iface_set_cred_t set_cred;
2055 globus_gfs_ipc_iface_buffer_send_t buffer_send;
2056 } globus_gfs_ipc_iface_t;
2067 globus_gfs_ipc_handle_create(
2068 globus_gfs_ipc_iface_t * iface,
2069 globus_xio_system_socket_t system_handle,
2070 globus_i_gfs_ipc_done_callback_t done_cb,
2077 globus_gfs_ipc_close(
2078 globus_gfs_ipc_handle_t ipc_handle,
2079 globus_gfs_ipc_close_callback_t cb,
2083 globus_gfs_ipc_reply_close(
2084 globus_gfs_ipc_handle_t ipc_handle);
2087 globus_gfs_ipc_session_stop(
2088 globus_gfs_ipc_handle_t ipc_handle);
2091 globus_gfs_ipc_handle_connect(
2092 globus_gfs_session_info_t * session_info,
2093 globus_gfs_ipc_open_callback_t cb,
2095 globus_gfs_ipc_error_callback_t error_cb,
2096 void * error_user_arg);
2099 globus_gfs_ipc_handle_connect_ex(
2100 globus_gfs_session_info_t * session_info,
2101 globus_gfs_ipc_open_callback_t cb,
2103 globus_gfs_ipc_error_callback_t error_cb,
2104 void * error_user_arg,
2105 globus_bool_t secure_ipc,
2107 const char *auth_mode,
2108 const char *subject,
2109 time_t connect_timeout,
2110 time_t idle_timeout,
2111 globus_bool_t inetd);
2114 globus_gfs_ipc_handle_obtain(
2115 globus_gfs_session_info_t * session_info,
2116 globus_gfs_ipc_iface_t * iface,
2117 globus_gfs_ipc_open_callback_t cb,
2119 globus_gfs_ipc_error_callback_t error_cb,
2120 void * error_user_arg);
2125 #define BRAIN_SYMBOL_NAME (void*)"gridftp_brain"
2126 extern globus_extension_registry_t brain_i_registry;
2128 typedef globus_result_t
2129 (*globus_i_gfs_brain_select_nodes_func_t)(
2130 globus_i_gfs_brain_node_t *** out_node_array,
2131 int * out_array_length,
2132 const char * repo_name,
2133 globus_off_t filesize,
2137 typedef globus_result_t
2138 (*globus_i_gfs_brain_release_node_func_t)(
2139 globus_i_gfs_brain_node_t * contact_node,
2140 globus_gfs_brain_reason_t reason);
2142 typedef globus_result_t
2143 (*globus_i_gfs_brain_init_func_t)();
2146 (*globus_i_gfs_brain_stop_func_t)();
2148 typedef globus_result_t
2149 (*globus_i_gfs_brain_get_available_func_t)(
2150 const char * user_id,
2151 const char * repo_name,
2155 typedef struct globus_i_gfs_brain_module_s
2157 globus_i_gfs_brain_init_func_t init_func;
2158 globus_i_gfs_brain_stop_func_t stop_func;
2159 globus_i_gfs_brain_select_nodes_func_t select_func;
2160 globus_i_gfs_brain_release_node_func_t release_func;
2161 globus_i_gfs_brain_get_available_func_t available_func;
2162 } globus_i_gfs_brain_module_t;
2164 extern globus_i_gfs_brain_module_t globus_i_gfs_default_brain;
2167 globus_gfs_brain_select_nodes(
2168 globus_i_gfs_brain_node_t *** out_node_array,
2169 int * out_array_length,
2170 const char * repo_name,
2171 globus_off_t filesize,
2176 globus_gfs_brain_release_node(
2177 globus_i_gfs_brain_node_t * contact_node,
2178 globus_gfs_brain_reason_t reason);
2181 globus_gfs_brain_get_available(
2182 const char * user_id,
2183 const char * repo_name,
2187 globus_gfs_ipc_handle_get_contact_string(
2188 globus_gfs_ipc_handle_t ipc_handle,
2189 char ** contact_string);
2192 globus_gfs_ipc_init(
2193 globus_bool_t requester);
2199 globus_gfs_ipc_add_server(
2200 globus_xio_server_t server_handle);
2202 extern globus_gfs_ipc_iface_t globus_gfs_ipc_default_iface;
2215 typedef struct globus_i_gfs_acl_handle_s * globus_gfs_acl_handle_t;
2220 typedef enum globus_gfs_acl_action_e
2223 GFS_ACL_ACTION_INIT = 1,
2225 GFS_ACL_ACTION_DELETE,
2227 GFS_ACL_ACTION_WRITE,
2229 GFS_ACL_ACTION_CREATE,
2231 GFS_ACL_ACTION_READ,
2233 GFS_ACL_ACTION_LOOKUP,
2237 GFS_ACL_ACTION_AUTHZ_ASSERT,
2240 GFS_ACL_ACTION_COMMIT,
2243 } globus_gfs_acl_action_t;
2247 typedef struct globus_gfs_acl_info_s
2254 gss_ctx_id_t context;
2255 } globus_gfs_acl_info_t;
2259 typedef struct globus_gfs_acl_object_desc_s
2277 globus_bool_t
final;
2280 globus_gfs_op_info_t op_info;
2281 } globus_gfs_acl_object_desc_t;
2284 typedef enum globus_gfs_acl_status_e
2287 GLOBUS_GFS_ACL_COMPLETE = 1,
2290 GLOBUS_GFS_ACL_WOULD_BLOCK
2291 } globus_gfs_acl_status_t;
2308 (*globus_gfs_acl_init_t)(
2310 globus_gfs_acl_info_t * acl_info,
2311 globus_gfs_acl_handle_t acl_handle,
2312 globus_result_t * out_res);
2324 (*globus_gfs_acl_authorize_t)(
2326 globus_gfs_acl_action_t action,
2327 globus_gfs_acl_object_desc_t * object,
2328 globus_gfs_acl_info_t * acl_info,
2329 globus_gfs_acl_handle_t acl_handle,
2330 globus_result_t * out_res);
2334 (*globus_gfs_acl_destroy_t)(
2340 (*globus_gfs_acl_audit_t)(
2342 globus_gfs_acl_action_t action,
2343 globus_gfs_acl_object_desc_t * object,
2344 const char * message);
2348 typedef struct globus_gfs_acl_module_s
2350 globus_gfs_acl_init_t init_func;
2351 globus_gfs_acl_authorize_t authorize_func;
2352 globus_gfs_acl_destroy_t destroy_func;
2353 globus_gfs_acl_audit_t audit_func;
2354 } globus_gfs_acl_module_t;
2360 globus_gfs_acl_authorized_finished(
2361 globus_gfs_acl_handle_t acl_handle,
2362 globus_result_t result);
2367 globus_gfs_acl_action_to_string(
2368 globus_gfs_acl_action_t action);
2377 (*globus_i_gfs_config_set_string_cb_t)(
2378 const char * option_name,
2384 (*globus_i_gfs_config_set_int_cb_t)(
2385 const char * option_name,
2392 globus_bool_t enabled;
2394 } globus_i_gfs_config_option_cb_ent_t;
2397 globus_gfs_config_enable_cb(
2398 globus_i_gfs_config_option_cb_ent_t * cb_handle,
2399 globus_bool_t enabled);
2402 globus_gfs_config_add_cb(
2403 globus_i_gfs_config_option_cb_ent_t ** cb_handle,
2409 globus_gfs_config_get_bool(
2410 const char * option_name);
2413 globus_gfs_config_get_string(
2414 const char * option_name);
2417 globus_gfs_config_get_list(
2418 const char * option_name);
2421 globus_gfs_config_get(
2422 const char * option_name);
2425 globus_gfs_config_get_int(
2426 const char * option_name);
2429 globus_gfs_config_set_int(
2434 globus_gfs_config_set_bool(
2439 globus_gfs_config_set_ptr(
2444 globus_gfs_config_inc_int(
const globus_object_type_t GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION
Definition: globus_i_gfs_ftp_response_error.c:609
globus_gfs_op_info_param_t
Definition: globus_gridftp_server.h:1064
void(* globus_gridftp_server_write_cb_t)(globus_gfs_operation_t op, globus_result_t result, globus_byte_t *buffer, globus_size_t nbytes, void *user_arg)
Definition: globus_gridftp_server.h:950
globus_object_t * globus_i_gfs_error_system(int ftp_code, int system_errno, const char *fmt,...)
Definition: globus_i_gfs_ftp_response_error.c:464
globus_object_t * globus_gfs_ftp_response_error_initialize(globus_object_t *error, globus_module_descriptor_t *base_source, globus_object_t *base_cause, int response_code, const char *response_error_code, const char *fmt,...)
Definition: globus_i_gfs_ftp_response_error.c:122
void globus_gridftp_server_operation_finished(globus_gfs_operation_t op, globus_result_t result, globus_gfs_finished_info_t *finished_info)
Definition: globus_i_gfs_data.c:14186
int globus_gfs_error_get_ftp_response_code(globus_object_t *error)
Definition: globus_i_gfs_ftp_response_error.c:252
globus_result_t globus_gridftp_server_set_checksum_support(globus_gfs_operation_t op, const char *cksm_str)
Definition: globus_i_gfs_data.c:14821
void(* globus_gfs_storage_init_t)(globus_gfs_operation_t op, globus_gfs_session_info_t *session_info)
Definition: globus_gridftp_server.h:632
globus_object_t * globus_gfs_ftp_response_error_construct(globus_module_descriptor_t *base_source, globus_object_t *base_cause, int response_code, const char *response_error_code, const char *fmt,...)
Definition: globus_i_gfs_ftp_response_error.c:57
enum globus_gfs_event_type_e globus_gfs_event_type_t
Event types.
const char * globus_gfs_error_get_ftp_response_error_code(globus_object_t *error)
Definition: globus_i_gfs_ftp_response_error.c:284
globus_gfs_event_type_e
Event types.
Definition: globus_gridftp_server.h:153
@ GLOBUS_GFS_EVENT_DISCONNECTED
Definition: globus_gridftp_server.h:167
@ GLOBUS_GFS_EVENT_TRANSFER_COMPLETE
Definition: globus_gridftp_server.h:163
@ GLOBUS_GFS_EVENT_TRANSFER_CONNECTED
Definition: globus_gridftp_server.h:182
@ GLOBUS_GFS_EVENT_PARTIAL_EOF_COUNT
Definition: globus_gridftp_server.h:185
@ GLOBUS_GFS_EVENT_RANGES_RECVD
Definition: globus_gridftp_server.h:177
@ GLOBUS_GFS_EVENT_TRANSFER_BEGIN
Definition: globus_gridftp_server.h:156
@ GLOBUS_GFS_EVENT_TRANSFER_ABORT
Definition: globus_gridftp_server.h:159
@ GLOBUS_GFS_EVENT_ALL
Definition: globus_gridftp_server.h:191
@ GLOBUS_GFS_EVENT_BYTES_RECVD
Definition: globus_gridftp_server.h:172
@ GLOBUS_GFS_EVENT_FINAL_EOF_COUNT
Definition: globus_gridftp_server.h:188
globus_object_t * globus_gfs_ftp_response_error_v_initialize(globus_object_t *error, globus_module_descriptor_t *base_source, globus_object_t *base_cause, int response_code, const char *response_error_code, const char *fmt, va_list ap)
Definition: globus_i_gfs_ftp_response_error.c:175
globus_bool_t globus_gfs_error_match_response_error_code(globus_object_t *error, const char *response_error_code)
Definition: globus_i_gfs_ftp_response_error.c:317