19 #ifndef GLOBUS_GRIDFTP_SERVER_H
20 #define GLOBUS_GRIDFTP_SERVER_H
22 #include "globus_common.h"
23 #include "globus_error.h"
24 #include "globus_gridftp_server_control.h"
26 #ifdef TARGET_ARCH_WIN32
32 #ifndef TARGET_ARCH_WIN32
36 #define GLOBUS_MAPPING_STRING ":globus-mapping:"
38 extern globus_module_descriptor_t globus_i_gfs_module;
39 #define GLOBUS_GRIDFTP_SERVER_MODULE (&globus_i_gfs_module)
41 extern globus_extension_registry_t globus_i_gfs_dsi_registry;
42 #define GLOBUS_GFS_DSI_REGISTRY &globus_i_gfs_dsi_registry
44 extern globus_extension_registry_t globus_i_gfs_acl_registry;
45 #define GLOBUS_GFS_ACL_REGISTRY &globus_i_gfs_acl_registry
51 typedef enum globus_gfs_error_type_e
53 GLOBUS_GFS_ERROR_MEMORY = 1,
54 GLOBUS_GFS_ERROR_PARAMETER,
55 GLOBUS_GFS_ERROR_SYSTEM_ERROR,
56 GLOBUS_GFS_ERROR_WRAPPED,
57 GLOBUS_GFS_ERROR_DATA,
58 GLOBUS_GFS_ERROR_GENERIC
59 } globus_gfs_error_type_t;
66 typedef enum globus_gfs_operation_type_e
68 GLOBUS_GFS_OP_FINAL_REPLY = 1,
69 GLOBUS_GFS_OP_EVENT_REPLY,
71 GLOBUS_GFS_OP_SESSION_START,
72 GLOBUS_GFS_OP_SESSION_STOP,
76 GLOBUS_GFS_OP_COMMAND,
77 GLOBUS_GFS_OP_PASSIVE,
79 GLOBUS_GFS_OP_DESTROY,
80 GLOBUS_GFS_OP_TRANSFER,
82 GLOBUS_GFS_OP_BUFFER_SEND,
83 GLOBUS_GFS_OP_HANDSHAKE,
84 GLOBUS_GFS_OP_SESSION_START_REPLY,
85 GLOBUS_GFS_OP_INTERMEDIATE_REPLY
86 } globus_gfs_operation_type_t;
88 #define GLOBUS_GFS_OP_STAT_PARTIAL GLOBUS_GFS_OP_INTERMEDIATE_REPLY
96 typedef enum globus_gfs_command_type_e
98 GLOBUS_GFS_CMD_MKD = 1,
101 GLOBUS_GFS_CMD_SITE_AUTHZ_ASSERT,
102 GLOBUS_GFS_CMD_SITE_RDEL,
106 GLOBUS_GFS_CMD_SITE_CHMOD,
107 GLOBUS_GFS_CMD_SITE_DSI,
108 GLOBUS_GFS_CMD_SITE_SETNETSTACK,
109 GLOBUS_GFS_CMD_SITE_SETDISKSTACK,
110 GLOBUS_GFS_CMD_SITE_CLIENTINFO,
112 GLOBUS_GFS_CMD_SITE_CHGRP,
113 GLOBUS_GFS_CMD_SITE_UTIME,
114 GLOBUS_GFS_CMD_SITE_SYMLINKFROM,
115 GLOBUS_GFS_CMD_SITE_SYMLINK,
116 GLOBUS_GFS_CMD_HTTP_PUT,
117 GLOBUS_GFS_CMD_HTTP_GET,
118 GLOBUS_GFS_CMD_HTTP_CONFIG,
120 GLOBUS_GFS_CMD_SITE_TASKID,
123 GLOBUS_GFS_CMD_SITE_RESTRICT = 3072,
124 GLOBUS_GFS_CMD_SITE_CHROOT,
125 GLOBUS_GFS_CMD_SITE_SHARING,
128 GLOBUS_GFS_CMD_STORATTR,
129 GLOBUS_GFS_CMD_WHOAMI,
131 GLOBUS_GFS_MIN_CUSTOM_CMD = 4096
132 } globus_gfs_command_type_t;
199 typedef enum globus_gfs_buffer_type_e
201 GLOBUS_GFS_BUFFER_EOF_INFO = 0x0001,
202 GLOBUS_GFS_BUFFER_SERVER_DEFINED = 0xFFFF
204 } globus_gfs_buffer_type_t;
211 typedef enum globus_gfs_layout_type_e
213 GLOBUS_GFS_LAYOUT_PARTITIONED = 1,
214 GLOBUS_GFS_LAYOUT_BLOCKED
215 } globus_gfs_layout_type_t;
241 typedef globus_gridftp_server_control_stat_t globus_gfs_stat_t;
250 typedef struct globus_i_gfs_op_info_s * globus_gfs_op_info_t;
258 typedef struct globus_gfs_data_finished_info_s
263 globus_bool_t bi_directional;
269 const char ** contact_strings;
270 } globus_gfs_data_finished_info_t;
277 typedef struct globus_gfs_cmd_finshed_info_s
280 globus_gfs_command_type_t command;
285 } globus_gfs_cmd_finshed_info_t;
292 typedef struct globus_gfs_stat_finished_info_s
303 globus_gfs_stat_t * stat_array;
304 } globus_gfs_stat_finished_info_t;
311 typedef struct globus_gfs_session_finished_info_s
319 } globus_gfs_session_finished_info_t;
326 typedef struct globus_gfs_transfer_finished_info_s
329 globus_off_t bytes_transferred;
331 } globus_gfs_transfer_finished_info_t;
338 typedef struct globus_gfs_finished_info_s
341 globus_gfs_operation_type_t type;
350 globus_result_t result;
354 globus_gfs_session_finished_info_t session;
355 globus_gfs_data_finished_info_t data;
356 globus_gfs_cmd_finshed_info_t command;
357 globus_gfs_stat_finished_info_t stat;
358 globus_gfs_transfer_finished_info_t transfer;
362 globus_gfs_op_info_t op_info;
363 } globus_gfs_finished_info_t;
370 typedef struct globus_gfs_event_info_s
387 globus_off_t recvd_bytes;
389 globus_range_list_t recvd_ranges;
400 globus_gfs_op_info_t op_info;
401 } globus_gfs_event_info_t;
408 typedef struct globus_gfs_transfer_info_s
419 globus_off_t partial_offset;
421 globus_off_t partial_length;
423 globus_range_list_t range_list;
425 globus_bool_t truncate;
439 globus_off_t alloc_size;
442 char * expected_checksum;
444 char * expected_checksum_alg;
449 int traversal_options;
452 globus_gfs_op_info_t op_info;
453 } globus_gfs_transfer_info_t;
459 #define rnfr_pathname from_pathname
466 typedef struct globus_gfs_command_info_s
469 globus_gfs_command_type_t command;
474 globus_off_t cksm_offset;
476 globus_off_t cksm_length;
485 char * from_pathname;
497 globus_gfs_op_info_t op_info;
498 } globus_gfs_command_info_t;
505 typedef struct globus_gfs_data_info_s
516 globus_size_t tcp_bufsize;
518 globus_size_t blocksize;
520 globus_size_t stripe_blocksize;
538 const char ** contact_strings;
544 gss_cred_id_t del_cred;
547 globus_gfs_op_info_t op_info;
548 } globus_gfs_data_info_t;
555 typedef struct globus_gfs_stat_info_s
558 globus_bool_t file_only;
560 globus_bool_t
internal;
564 globus_bool_t use_symlink_info;
566 globus_bool_t include_path_stat;
569 globus_gfs_op_info_t op_info;
570 } globus_gfs_stat_info_t;
572 typedef struct globus_gfs_session_info_s
574 gss_cred_id_t del_cred;
575 globus_bool_t free_cred;
576 globus_bool_t map_user;
584 globus_gfs_op_info_t op_info;
585 } globus_gfs_session_info_t;
587 typedef enum globus_gfs_brain_reason_e
589 GLOBUS_GFS_BRAIN_REASON_ERROR = 1,
590 GLOBUS_GFS_BRAIN_REASON_COMPLETE
591 } globus_gfs_brain_reason_t;
593 typedef struct globus_i_gfs_brain_node_s
599 int current_connection;
601 } globus_i_gfs_brain_node_t;
616 typedef struct globus_l_gfs_data_operation_s * globus_gfs_operation_t;
634 globus_gfs_operation_t op,
635 globus_gfs_session_info_t * session_info);
642 (*globus_gfs_storage_destroy_t)(
651 (*globus_gfs_storage_transfer_t)(
652 globus_gfs_operation_t op,
653 globus_gfs_transfer_info_t * transfer_info,
663 (*globus_gfs_storage_command_t)(
664 globus_gfs_operation_t op,
665 globus_gfs_command_info_t * command_info,
674 (*globus_gfs_storage_stat_t)(
675 globus_gfs_operation_t op,
676 globus_gfs_stat_info_t * stat_info,
686 (*globus_gfs_storage_data_t)(
687 globus_gfs_operation_t op,
688 globus_gfs_data_info_t * data_info,
699 (*globus_gfs_storage_data_destroy_t)(
711 (*globus_gfs_storage_trev_t)(
712 globus_gfs_event_info_t * event_info,
722 (*globus_gfs_storage_set_cred_t)(
723 gss_cred_id_t del_cred,
733 (*globus_gfs_storage_buffer_send_t)(
735 globus_byte_t * buffer,
736 globus_size_t buffer_len,
749 typedef globus_result_t
750 (*globus_gfs_storage_realpath_t)(
751 const char * in_path,
752 char ** out_realpath,
756 #define GLOBUS_GFS_DSI_DESCRIPTOR_SENDER (1 << 0)
757 #define GLOBUS_GFS_DSI_DESCRIPTOR_BLOCKING (1 << 1)
758 #define GLOBUS_GFS_DSI_DESCRIPTOR_HAS_REALPATH (1 << 2)
759 #define GLOBUS_GFS_DSI_DESCRIPTOR_REQUIRES_ORDERED_DATA (1 << 3)
760 #define GLOBUS_GFS_DSI_DESCRIPTOR_SETS_ERROR_RESPONSES (1 << 4)
761 #define GLOBUS_GFS_DSI_DESCRIPTOR_SAFE_RDEL (1 << 5)
762 #define GLOBUS_GFS_DSI_DESCRIPTOR_USERNAME_INCLUDES_DOMAIN (1 << 6)
763 #define GLOBUS_GFS_DSI_DESCRIPTOR_DYN_SENDER (1 << 7)
764 #define GLOBUS_GFS_DSI_DESCRIPTOR_SIZE_NOT_REQUIRED (1 << 8)
773 typedef struct globus_gfs_storage_iface_s
779 globus_gfs_storage_destroy_t destroy_func;
782 globus_gfs_storage_transfer_t list_func;
783 globus_gfs_storage_transfer_t send_func;
784 globus_gfs_storage_transfer_t recv_func;
785 globus_gfs_storage_trev_t trev_func;
788 globus_gfs_storage_data_t active_func;
789 globus_gfs_storage_data_t passive_func;
790 globus_gfs_storage_data_destroy_t data_destroy_func;
792 globus_gfs_storage_command_t command_func;
793 globus_gfs_storage_stat_t stat_func;
795 globus_gfs_storage_set_cred_t set_cred_func;
796 globus_gfs_storage_buffer_send_t buffer_send_func;
797 globus_gfs_storage_realpath_t realpath_func;
798 } globus_gfs_storage_iface_t;
814 globus_gfs_operation_t op,
815 globus_result_t result,
816 globus_gfs_finished_info_t * finished_info);
826 globus_gridftp_server_operation_event(
827 globus_gfs_operation_t op,
828 globus_result_t result,
829 globus_gfs_event_info_t * event_info);
837 globus_gridftp_server_begin_transfer(
838 globus_gfs_operation_t op,
848 globus_gridftp_server_finished_transfer(
849 globus_gfs_operation_t op,
850 globus_result_t result);
859 globus_gridftp_server_finished_session_start(
860 globus_gfs_operation_t op,
861 globus_result_t result,
874 globus_gridftp_server_finished_command(
875 globus_gfs_operation_t op,
876 globus_result_t result,
877 char * command_response);
879 globus_gridftp_server_intermediate_command(
880 globus_gfs_operation_t op,
881 globus_result_t result,
882 char * command_response);
890 globus_gridftp_server_finished_stat(
891 globus_gfs_operation_t op,
892 globus_result_t result,
893 globus_gfs_stat_t * stat_array,
897 globus_gridftp_server_finished_stat_partial(
898 globus_gfs_operation_t op,
899 globus_result_t result,
900 globus_gfs_stat_t * stat_array,
904 globus_gridftp_server_finished_stat_custom_list(
905 globus_gfs_operation_t op,
906 globus_result_t result,
907 globus_byte_t * list_response,
908 globus_size_t list_response_len,
909 globus_bool_t free_buffer);
917 globus_gridftp_server_finished_active_data(
918 globus_gfs_operation_t op,
919 globus_result_t result,
921 globus_bool_t bi_directional);
929 globus_gridftp_server_finished_passive_data(
930 globus_gfs_operation_t op,
931 globus_result_t result,
933 globus_bool_t bi_directional,
934 const char ** contact_strings,
954 globus_gfs_operation_t op,
955 globus_result_t result,
956 globus_byte_t * buffer,
957 globus_size_t nbytes,
961 globus_gridftp_server_register_write(
962 globus_gfs_operation_t op,
963 globus_byte_t * buffer,
964 globus_size_t length,
980 (*globus_gridftp_server_read_cb_t)(
981 globus_gfs_operation_t op,
982 globus_result_t result,
983 globus_byte_t * buffer,
984 globus_size_t nbytes,
990 globus_gridftp_server_register_read(
991 globus_gfs_operation_t op,
992 globus_byte_t * buffer,
993 globus_size_t length,
994 globus_gridftp_server_read_cb_t callback,
1033 globus_gridftp_server_add_command(
1034 globus_gfs_operation_t op,
1035 const char * command_name,
1039 const char * help_string,
1040 globus_bool_t has_pathname,
1059 globus_gfs_operation_t op,
1060 const char * cksm_str);
1074 GLOBUS_GFS_OP_INFO_CMD_ARGS = 1
1084 globus_gridftp_server_query_op_info(
1085 globus_gfs_operation_t op,
1086 globus_gfs_op_info_t op_info,
1101 globus_gridftp_server_get_recv_attr_string(
1102 globus_gfs_operation_t op,
1103 const char * requested_attr,
1113 globus_gridftp_server_get_recv_modification_time(
1114 globus_gfs_operation_t op,
1128 globus_gridftp_server_update_bytes_written(
1129 globus_gfs_operation_t op,
1130 globus_off_t offset,
1131 globus_off_t length);
1144 globus_gridftp_server_update_bytes_recvd(
1145 globus_gfs_operation_t op,
1146 globus_off_t length);
1159 globus_gridftp_server_update_range_recvd(
1160 globus_gfs_operation_t op,
1161 globus_off_t offset,
1162 globus_off_t length);
1171 globus_gridftp_server_get_optimal_concurrency(
1172 globus_gfs_operation_t op,
1183 globus_gridftp_server_get_block_size(
1184 globus_gfs_operation_t op,
1185 globus_size_t * block_size);
1194 globus_gridftp_server_get_stripe_block_size(
1195 globus_gfs_operation_t op,
1196 globus_size_t * stripe_block_size);
1206 globus_gridftp_server_get_session_username(
1207 globus_gfs_operation_t op,
1219 globus_gridftp_server_get_delegated_cred(
1220 globus_gfs_operation_t op,
1221 gss_cred_id_t * del_cred);
1235 globus_gridftp_server_get_sec_context(
1236 globus_gfs_operation_t op,
1237 gss_ctx_id_t * context);
1256 globus_gridftp_server_set_ordered_data(
1257 globus_gfs_operation_t op,
1258 globus_bool_t ordered_data);
1261 globus_gridftp_server_get_ordered_data(
1262 globus_gfs_operation_t op,
1263 globus_bool_t * ordered_data);
1272 globus_gridftp_server_get_config_string(
1273 globus_gfs_operation_t op,
1274 char ** config_string);
1283 globus_gridftp_server_get_config_data(
1284 globus_gfs_operation_t op,
1286 char ** config_data);
1289 globus_gfs_data_get_file_stack_list(
1290 globus_gfs_operation_t in_op,
1291 globus_list_t ** out_list);
1294 globus_gridftp_server_get_update_interval(
1295 globus_gfs_operation_t op,
1305 globus_gridftp_server_get_task_id(
1306 globus_gfs_operation_t op,
1318 globus_gridftp_server_get_read_range(
1319 globus_gfs_operation_t op,
1320 globus_off_t * offset,
1321 globus_off_t * length);
1334 globus_gridftp_server_get_write_range(
1335 globus_gfs_operation_t op,
1336 globus_off_t * offset,
1337 globus_off_t * length);
1344 GLOBUS_GFS_LOG_ERR = 0x01,
1345 GLOBUS_GFS_LOG_WARN = 0x02,
1346 GLOBUS_GFS_LOG_TRANSFER = 0x04,
1347 GLOBUS_GFS_LOG_INFO = 0x08,
1348 GLOBUS_GFS_LOG_DUMP = 0x10,
1349 GLOBUS_GFS_LOG_ALL = 0xFF,
1350 GLOBUS_GFS_LOG_AUDIT = 0x100
1351 } globus_gfs_log_type_t;
1354 globus_gfs_log_message(
1355 globus_gfs_log_type_t type,
1356 const char * format,
1360 globus_gfs_log_result(
1361 globus_gfs_log_type_t type,
1363 globus_result_t result);
1368 GLOBUS_GFS_DEBUG_TRACE = 8,
1369 GLOBUS_GFS_DEBUG_INFO = 16,
1370 GLOBUS_GFS_DEBUG_STATE = 32
1374 #define GlobusGFSName(func) static const char * _gfs_name __attribute__((__unused__)) = #func
1376 #define GlobusGFSName(func) static const char * _gfs_name = #func
1379 GlobusDebugDeclare(GLOBUS_GRIDFTP_SERVER);
1381 #define GlobusGFSDebugPrintf(level, message) \
1382 GlobusDebugPrintf(GLOBUS_GRIDFTP_SERVER, level, message)
1385 #define GlobusGFSDebugInfoF(_msg) \
1388 GlobusGFSDebugPrintf( \
1389 GLOBUS_GFS_DEBUG_INFO, \
1390 ("[%s:%d] (pid=%d) [%s] ", __FILE__, __LINE__, getpid(), __func__));\
1391 GlobusGFSDebugPrintf( \
1392 GLOBUS_GFS_DEBUG_INFO, \
1396 #define GlobusGFSDebugResultT(_result, _msg) \
1399 char * _err_str = globus_error_print_friendly( \
1400 globus_error_peek(_result)); \
1401 GlobusGFSDebugInfoF(("%s: %s\n", _msg, _err_str)); \
1405 #define GlobusGFSDebugInfo(_msg) \
1406 GlobusGFSDebugPrintf( \
1407 GLOBUS_GFS_DEBUG_INFO, \
1408 ("[%s] %s\n", __func__, _msg))
1410 #define GlobusGFSDebugEnter() \
1411 GlobusGFSDebugPrintf( \
1412 GLOBUS_GFS_DEBUG_TRACE, \
1413 ("[%s] Entering\n", __func__))
1415 #define GlobusGFSDebugExitResult(res) \
1416 GlobusGFSDebugPrintf( \
1417 GLOBUS_GFS_DEBUG_TRACE, \
1418 ("[%s] Exiting%s\n", \
1420 (res != GLOBUS_SUCCESS) ? " with error" : ""))
1422 #define GlobusGFSDebugExit() \
1423 GlobusGFSDebugPrintf( \
1424 GLOBUS_GFS_DEBUG_TRACE, \
1425 ("[%s] Exiting\n", __func__))
1427 #define GlobusGFSDebugState(_state) \
1428 GlobusGFSDebugPrintf( \
1429 GLOBUS_GFS_DEBUG_INFO, \
1430 ("[%s] State: %d\n", __func__, _state))
1432 #define GlobusGFSDebugExitWithError() \
1433 GlobusGFSDebugPrintf( \
1434 GLOBUS_GFS_DEBUG_TRACE, \
1435 ("[%s] Exiting with error\n", __func__))
1437 #define GlobusGFSErrorParameter(mem_name) \
1438 globus_error_put(GlobusGFSErrorObjParameter(mem_name))
1440 #define GlobusGFSErrorIPC() \
1441 globus_error_put(GlobusGFSErrorObjIPC())
1443 #define GlobusGFSErrorObjIPC() \
1444 globus_error_construct_error( \
1447 GLOBUS_GFS_ERROR_MEMORY, \
1451 "IPC Communication error.")
1453 #define GlobusGFSErrorObjParameter(param_name) \
1454 globus_error_construct_error( \
1457 GLOBUS_GFS_ERROR_PARAMETER, \
1461 "invalid parameter: %s", \
1464 #define GlobusGFSErrorSystemError(system_func, system_errno) \
1465 globus_error_put(GlobusGFSErrorObjSystemError(\
1466 (system_func), (system_errno)))
1467 #define GlobusGFSErrorObjSystemError(system_func, system_errno) \
1468 globus_i_gfs_error_system( \
1469 0, (system_errno), \
1470 "System error%s%s", \
1471 (system_func) != NULL ? " in " : "", \
1472 (system_func) != NULL ? (system_func) : "")
1474 #define GlobusGFSErrorWrapFailed(failed_func, result) \
1475 globus_error_put(GlobusGFSErrorObjWrapFailed(failed_func, result))
1477 #define GlobusGFSErrorObjWrapFailed(failed_func, result) \
1478 globus_error_construct_error( \
1480 globus_error_get((result)), \
1481 GLOBUS_GFS_ERROR_WRAPPED, \
1488 #define GlobusGFSErrorData(reason) \
1489 globus_error_put(GlobusGFSErrorObjData(reason))
1491 #define GlobusGFSErrorObjData(reason) \
1492 globus_error_construct_error( \
1495 GLOBUS_GFS_ERROR_DATA, \
1502 #define GlobusGFSErrorGeneric(reason) \
1503 globus_error_put(GlobusGFSErrorObjGeneric(reason))
1505 #define GlobusGFSErrorObjGeneric(reason) \
1506 globus_error_construct_error( \
1509 GLOBUS_GFS_ERROR_GENERIC, \
1518 globus_module_descriptor_t * base_source,
1519 globus_object_t * base_cause,
1521 const char *response_error_code,
1527 globus_object_t * error,
1528 globus_module_descriptor_t * base_source,
1529 globus_object_t * base_cause,
1531 const char * response_error_code,
1536 globus_object_t * error,
1537 globus_module_descriptor_t * base_source,
1538 globus_object_t * base_cause,
1540 const char * response_error_code,
1546 globus_object_t * error);
1550 globus_object_t * error);
1554 globus_object_t * error,
1555 const char * response_error_code);
1557 extern const globus_object_type_t
1560 #define GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE \
1561 (&GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION)
1564 #define GlobusGFSErrorFtpResponse(cause, code, response_error_code, ...) \
1565 globus_error_put(GlobusGFSErrorObjFtpResponse( \
1566 cause, code, response_error_code, __VA_ARGS__))
1568 #define GlobusGFSErrorObjFtpResponse(cause, code, response_error_code, ...) \
1569 globus_gfs_ftp_response_error_construct( \
1573 response_error_code, \
1579 #define GlobusGFSErrorMemory(mem) \
1580 globus_error_put(GlobusGFSErrorObjMemory(mem))
1581 #define GlobusGFSErrorObjMemory(mem) \
1582 GlobusGFSErrorObjSystemError("malloc", errno)
1584 #define GlobusGFSErrorObj(cause, response_code, ...) \
1585 GlobusGFSErrorObjFtpResponse(cause, response_code, __VA_ARGS__)
1587 #define GlobusGFSErrorPathNotFound(p) \
1588 globus_error_put(GlobusGFSErrorObjPathNotFound(NULL, p))
1589 #define GlobusGFSErrorObjPathNotFound(cause, p) \
1590 GlobusGFSErrorObj((cause), 550, "PATH_NOT_FOUND", \
1592 ((p) != NULL) ? "GridFTP-Path: \"" : "", \
1593 ((p) != NULL) ? (p) : "", \
1594 ((p) != NULL) ? "\"" : "")
1596 #define GlobusGFSErrorIncorrectChecksum(computed, expected) \
1597 globus_error_put(GlobusGFSErrorObjIncorrectChecksum( \
1598 NULL, computed, expected))
1599 #define GlobusGFSErrorObjIncorrectChecksum(cause, computed, expected) \
1600 GlobusGFSErrorObj( \
1603 "INCORRECT_CHECKSUM", \
1604 "GridFTP-Computed-Checksum: %s\n" \
1605 "GridFTP-Expected-Checksum: %s", (computed), (expected))
1607 #define GlobusGFSErrorMultipartUploadNotFound() \
1608 globus_error_put(GlobusGFSErrorObjMultipartUploadNotFound(NULL))
1609 #define GlobusGFSErrorObjMultipartUploadNotFound(cause) \
1610 GlobusGFSErrorObj(cause, 553, "MULTI_PART_UPLOAD_NOT_FOUND", NULL)
1612 #define GlobusGFSErrorAppendNotSupported() \
1613 globus_error_put(GlobusGFSErrorObjAppendNotSupported(NULL))
1614 #define GlobusGFSErrorObjAppendNotSupported(cause) \
1615 GlobusGFSErrorObj((cause), 553, "APPEND_NOT_SUPPORTED", NULL)
1617 #define GlobusGFSErrorAmbiguousPath(ambiguity) \
1618 globus_error_put(GlobusGFSErrorObjAmbiguousPath(NULL, ambiguity))
1619 #define GlobusGFSErrorObjAmbiguousPath(cause, ambiguity) \
1620 GlobusGFSErrorObj( \
1624 "GridFTP-Path: %s", \
1627 #define GlobusGFSErrorTooBusy() \
1628 globus_error_put(GlobusGFSErrorObjTooBusy(NULL))
1629 #define GlobusGFSErrorObjTooBusy(cause) \
1630 GlobusGFSErrorObj((cause), 451, "TOO_BUSY", NULL)
1632 #define GlobusGFSErrorDataChannelAuthenticationFailure() \
1633 globus_error_put(GlobusGFSErrorObjDataChannelAuthenticationFailure( \
1635 #define GlobusGFSErrorObjDataChannelAuthenticationFailure(cause) \
1636 GlobusGFSErrorObj((cause), 425, \
1637 "DATA_CHANNEL_AUTHENTICATION_FAILURE", NULL)
1639 #define GlobusGFSErrorDataChannelCommunicationFailure() \
1640 globus_error_put(GlobusGFSErrorObjDataChannelCommunicationFailure( \
1642 #define GlobusGFSErrorObjDataChannelCommunicationFailure(cause) \
1643 GlobusGFSErrorObj((cause), 425, \
1644 "DATA_CHANNEL_COMMUNICATION_FAILURE", NULL)
1646 #define GlobusGFSErrorLoginDenied() \
1647 globus_error_put(GlobusGFSErrorObjLoginDenied(NULL))
1648 #define GlobusGFSErrorObjLoginDenied(cause) \
1649 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", NULL)
1651 #define GlobusGFSErrorLoginDeniedJSON(message, json) \
1652 globus_error_put(GlobusGFSErrorObjLoginDeniedJSON(NULL, message, json))
1653 #define GlobusGFSErrorObjLoginDeniedJSON(cause, message, json) \
1654 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", \
1655 "GridFTP-Message: %s\n" \
1656 "GridFTP-JSON-Result: %s", \
1657 (message) ? (message) : "Message not available", (json))
1659 #define GlobusGFSErrorEndpointError() \
1660 globus_error_put(GlobusGFSErrorObjEndpointError(NULL))
1661 #define GlobusGFSErrorObjEndpointError(cause) \
1662 GlobusGFSErrorObj((cause), 530, "ENDPOINT_ERROR", NULL)
1664 #define GlobusGFSErrorPermissionDenied() \
1665 globus_error_put(GlobusGFSErrorObjPermissionDenied(NULL))
1666 #define GlobusGFSErrorObjPermissionDenied(cause) \
1667 GlobusGFSErrorObj((cause), 550, "PERMISSION_DENIED", NULL)
1669 #define GlobusGFSErrorQuotaExceeded() \
1670 globus_error_put(GlobusGFSErrorObjQuotaExceeded(NULL))
1671 #define GlobusGFSErrorObjQuotaExceeded(cause) \
1672 GlobusGFSErrorObj((cause), 451, "QUOTA_EXCEEDED", NULL)
1674 #define GlobusGFSErrorNoSpaceLeft() \
1675 globus_error_put(GlobusGFSErrorObjNoSpaceLeft(NULL))
1676 #define GlobusGFSErrorObjNoSpaceLeft(cause) \
1677 GlobusGFSErrorObj((cause), 451, "NO_SPACE_LEFT", NULL)
1679 #define GlobusGFSErrorInvalidPathName(name) \
1680 globus_error_put(GlobusGFSErrorObjInvalidPathName(NULL, name))
1681 #define GlobusGFSErrorObjInvalidPathName(cause, name) \
1682 GlobusGFSErrorObj((cause), 553, "INVALID_PATH_NAME", \
1683 "GridFTP-Path: %s", name)
1685 #define GlobusGFSErrorPathExists(name) \
1686 globus_error_put(GlobusGFSErrorObjPathExists(NULL, name))
1687 #define GlobusGFSErrorObjPathExists(cause, name) \
1688 GlobusGFSErrorObj((cause), 553, "PATH_EXISTS", \
1689 "GridFTP-Path: %s", name)
1691 #define GlobusGFSErrorIsADirectory(name) \
1692 globus_error_put(GlobusGFSErrorObjIsADirectory(NULL, name))
1693 #define GlobusGFSErrorObjIsADirectory(cause, name) \
1694 GlobusGFSErrorObj((cause), 553, "IS_A_DIRECTORY", \
1695 "GridFTP-Path: %s", name)
1697 #define GlobusGFSErrorNotADirectory(name) \
1698 globus_error_put(GlobusGFSErrorObjNotADirectory(NULL, name))
1699 #define GlobusGFSErrorObjNotADirectory(cause, name) \
1700 GlobusGFSErrorObj((cause), 553, "NOT_A_DIRECTORY", \
1701 "GridFTP-Path: %s", name)
1703 #define GlobusGFSErrorCRLError() \
1704 globus_error_put(GlobusGFSErrorObjCRLError(NULL))
1705 #define GlobusGFSErrorObjCRLError(cause) \
1706 GlobusGFSErrorObj((cause), 530, "CRL_ERROR", NULL)
1708 #define GlobusGFSErrorInternalError(generic_string) \
1709 globus_error_put(GlobusGFSErrorObjInternalError( \
1710 NULL, (generic_string)))
1711 #define GlobusGFSErrorObjInternalError(cause, generic_string) \
1712 GlobusGFSErrorObj((cause), 500, "INTERNAL_ERROR", \
1714 ((generic_string) != NULL) ? "GridFTP-Error: " : "", \
1715 ((generic_string) != NULL) ? generic_string : "")
1717 #define GlobusGFSErrorNotImplemented() \
1718 globus_error_put(GlobusGFSErrorObjNotImplemented(NULL))
1719 #define GlobusGFSErrorObjNotImplemented(cause) \
1720 GlobusGFSErrorObj((cause), 500, "NOT_IMPLEMETED", NULL)
1722 #define GlobusGFSErrorNotImplementedFeature(feature) \
1723 globus_error_put(GlobusGFSErrorObjNotImplementedFeature(NULL, feature))
1724 #define GlobusGFSErrorObjNotImplementedFeature(cause, feature) \
1725 GlobusGFSErrorObj((cause), 500, \
1726 "NOT_IMPLEMETED", "GridFTP-Feature: %s", (feature))
1728 #define GlobusGFSErrorConfigurationError() \
1729 globus_error_put(GlobusGFSErrorObjConfigurationError(NULL))
1730 #define GlobusGFSErrorObjConfigurationError(cause) \
1731 GlobusGFSErrorObj((cause), 500, "CONFIGURATION_ERROR", NULL)
1740 #define GLOBUS_GFS_BUILTIN_CHECKSUM_SUPPORT "MD5:10;ADLER32:10;SHA1:10;CRC32C:10;SHA256:12;SHA512:11;QuickXORHex:12;Dropbox:12;"
1742 typedef struct globus_l_gfs_checksum_state_s * globus_gfs_checksum_state_t;
1745 globus_gfs_checksum_init(
1746 const char * algorithm,
1747 globus_gfs_checksum_state_t * state);
1750 globus_gfs_checksum_update(
1751 globus_gfs_checksum_state_t state,
1752 const unsigned char * buffer,
1756 globus_gfs_checksum_finalize(
1757 globus_gfs_checksum_state_t state,
1758 char ** checksum_str);
1766 typedef struct globus_i_gfs_ipc_handle_s * globus_gfs_ipc_handle_t;
1791 (*globus_gfs_ipc_callback_t)(
1792 globus_gfs_ipc_handle_t ipc_handle,
1793 globus_result_t result,
1794 globus_gfs_finished_info_t * reply,
1798 (*globus_gfs_ipc_event_callback_t)(
1799 globus_gfs_ipc_handle_t ipc_handle,
1800 globus_result_t result,
1801 globus_gfs_event_info_t * reply,
1805 (*globus_gfs_ipc_close_callback_t)(
1806 globus_gfs_ipc_handle_t ipc_handle,
1807 globus_result_t result,
1811 (*globus_gfs_ipc_open_callback_t)(
1812 globus_gfs_ipc_handle_t ipc_handle,
1813 globus_result_t result,
1814 globus_gfs_finished_info_t * reply,
1818 (*globus_gfs_ipc_error_callback_t)(
1819 globus_gfs_ipc_handle_t ipc_handle,
1820 globus_result_t result,
1824 globus_gfs_ipc_reply_finished(
1825 globus_gfs_ipc_handle_t ipc_handle,
1826 globus_gfs_finished_info_t * reply);
1829 globus_gfs_ipc_reply_event(
1830 globus_gfs_ipc_handle_t ipc_handle,
1831 globus_gfs_event_info_t * reply);
1834 globus_gfs_ipc_reply_session(
1835 globus_gfs_ipc_handle_t ipc_handle,
1836 globus_gfs_finished_info_t * reply);
1850 (*globus_i_gfs_ipc_data_callback_t)(
1851 globus_gfs_finished_info_t * reply,
1855 (*globus_i_gfs_ipc_data_event_callback_t)(
1856 globus_gfs_event_info_t * reply,
1860 (*globus_i_gfs_ipc_done_callback_t)(
1862 globus_result_t result);
1871 (*globus_gfs_ipc_iface_session_start_t)(
1872 globus_gfs_ipc_handle_t ipc_handle,
1873 const gss_ctx_id_t context,
1874 globus_gfs_session_info_t * session_info,
1875 globus_i_gfs_ipc_data_callback_t cb,
1879 globus_gfs_ipc_start_session(
1880 globus_gfs_ipc_handle_t ipc_handle,
1881 globus_gfs_session_info_t * session_info,
1882 globus_gfs_ipc_callback_t cb,
1887 (*globus_gfs_ipc_iface_session_stop_t)(
1888 globus_gfs_ipc_handle_t ipc_handle,
1889 void * session_handle);
1892 globus_gfs_ipc_iface_session_stop(
1893 globus_gfs_ipc_handle_t ipc_handle,
1894 void * session_handle);
1897 (*globus_gfs_ipc_iface_set_cred_t)(
1898 globus_gfs_ipc_handle_t ipc_handle,
1899 void * session_handle,
1900 gss_cred_id_t del_cred);
1903 globus_gfs_ipc_set_cred(
1904 globus_gfs_ipc_handle_t ipc_handle,
1905 gss_cred_id_t del_cred);
1908 (*globus_gfs_ipc_iface_buffer_send_t)(
1909 globus_gfs_ipc_handle_t ipc_handle,
1910 void * session_handle,
1911 globus_byte_t * buffer,
1913 globus_size_t buffer_len);
1916 globus_gfs_ipc_request_buffer_send(
1917 globus_gfs_ipc_handle_t ipc_handle,
1918 globus_byte_t * buffer,
1920 globus_size_t buffer_len);
1928 (*globus_gfs_ipc_iface_recv_t)(
1929 globus_gfs_ipc_handle_t ipc_handle,
1930 void * session_handle,
1932 globus_gfs_transfer_info_t * recv_info,
1933 globus_i_gfs_ipc_data_callback_t cb,
1934 globus_i_gfs_ipc_data_event_callback_t event_cb,
1938 globus_gfs_ipc_request_recv(
1939 globus_gfs_ipc_handle_t ipc_handle,
1940 globus_gfs_transfer_info_t * recv_info,
1941 globus_gfs_ipc_callback_t cb,
1942 globus_gfs_ipc_event_callback_t event_cb,
1951 (*globus_gfs_ipc_iface_send_t)(
1952 globus_gfs_ipc_handle_t ipc_handle,
1953 void * session_handle,
1955 globus_gfs_transfer_info_t * send_info,
1956 globus_i_gfs_ipc_data_callback_t cb,
1957 globus_i_gfs_ipc_data_event_callback_t event_cb,
1961 globus_gfs_ipc_request_send(
1962 globus_gfs_ipc_handle_t ipc_handle,
1963 globus_gfs_transfer_info_t * send_info,
1964 globus_gfs_ipc_callback_t cb,
1965 globus_gfs_ipc_event_callback_t event_cb,
1969 (*globus_gfs_ipc_iface_list_t)(
1970 globus_gfs_ipc_handle_t ipc_handle,
1971 void * session_handle,
1973 globus_gfs_transfer_info_t * list_info,
1974 globus_i_gfs_ipc_data_callback_t cb,
1975 globus_i_gfs_ipc_data_event_callback_t event_cb,
1979 globus_gfs_ipc_request_list(
1980 globus_gfs_ipc_handle_t ipc_handle,
1981 globus_gfs_transfer_info_t * data_info,
1982 globus_gfs_ipc_callback_t cb,
1983 globus_gfs_ipc_event_callback_t event_cb,
1992 (*globus_gfs_ipc_iface_command_t)(
1993 globus_gfs_ipc_handle_t ipc_handle,
1994 void * session_handle,
1996 globus_gfs_command_info_t * cmd_info,
1997 globus_i_gfs_ipc_data_callback_t cb,
2001 globus_gfs_ipc_request_command(
2002 globus_gfs_ipc_handle_t ipc_handle,
2003 globus_gfs_command_info_t * cmd_info,
2004 globus_gfs_ipc_callback_t cb,
2013 (*globus_gfs_ipc_iface_active_data_t)(
2014 globus_gfs_ipc_handle_t ipc_handle,
2015 void * session_handle,
2017 globus_gfs_data_info_t * data_info,
2018 globus_i_gfs_ipc_data_callback_t cb,
2022 globus_gfs_ipc_request_active_data(
2023 globus_gfs_ipc_handle_t ipc_handle,
2024 globus_gfs_data_info_t * data_info,
2025 globus_gfs_ipc_callback_t cb,
2034 (*globus_gfs_ipc_iface_passive_data_t)(
2035 globus_gfs_ipc_handle_t ipc_handle,
2036 void * session_handle,
2038 globus_gfs_data_info_t * data_info,
2039 globus_i_gfs_ipc_data_callback_t cb,
2043 globus_gfs_ipc_request_passive_data(
2044 globus_gfs_ipc_handle_t ipc_handle,
2045 globus_gfs_data_info_t * data_info,
2046 globus_gfs_ipc_callback_t cb,
2053 (*globus_gfs_ipc_iface_stat_t)(
2054 globus_gfs_ipc_handle_t ipc_handle,
2055 void * session_handle,
2057 globus_gfs_stat_info_t * stat_info,
2058 globus_i_gfs_ipc_data_callback_t cb,
2062 globus_gfs_ipc_request_stat(
2063 globus_gfs_ipc_handle_t ipc_handle,
2064 globus_gfs_stat_info_t * stat_info,
2065 globus_gfs_ipc_callback_t cb,
2072 (*globus_gfs_ipc_iface_transfer_event_t)(
2073 globus_gfs_ipc_handle_t ipc_handle,
2074 void * session_handle,
2075 globus_gfs_event_info_t * event_info);
2079 globus_gfs_ipc_request_transfer_event(
2080 globus_gfs_ipc_handle_t ipc_handle,
2081 globus_gfs_event_info_t * event_info);
2088 (*globus_gfs_ipc_iface_data_destroy_t)(
2089 globus_gfs_ipc_handle_t ipc_handle,
2090 void * session_handle,
2094 globus_gfs_ipc_request_data_destroy(
2095 globus_gfs_ipc_handle_t ipc_handle,
2098 typedef struct globus_i_gfs_ipc_iface_s
2100 globus_gfs_ipc_iface_session_start_t session_start_func;
2101 globus_gfs_ipc_iface_session_stop_t session_stop_func;
2102 globus_gfs_ipc_iface_recv_t recv_func;
2103 globus_gfs_ipc_iface_send_t send_func;
2104 globus_gfs_ipc_iface_command_t command_func;
2105 globus_gfs_ipc_iface_active_data_t active_func;
2106 globus_gfs_ipc_iface_passive_data_t passive_func;
2107 globus_gfs_ipc_iface_data_destroy_t data_destroy_func;
2108 globus_gfs_ipc_iface_stat_t stat_func;
2109 globus_gfs_ipc_iface_list_t list_func;
2110 globus_gfs_ipc_iface_transfer_event_t transfer_event_func;
2111 globus_gfs_ipc_iface_set_cred_t set_cred;
2112 globus_gfs_ipc_iface_buffer_send_t buffer_send;
2113 } globus_gfs_ipc_iface_t;
2124 globus_gfs_ipc_handle_create(
2125 globus_gfs_ipc_iface_t * iface,
2126 globus_xio_system_socket_t system_handle,
2127 globus_i_gfs_ipc_done_callback_t done_cb,
2134 globus_gfs_ipc_close(
2135 globus_gfs_ipc_handle_t ipc_handle,
2136 globus_gfs_ipc_close_callback_t cb,
2140 globus_gfs_ipc_reply_close(
2141 globus_gfs_ipc_handle_t ipc_handle);
2144 globus_gfs_ipc_session_stop(
2145 globus_gfs_ipc_handle_t ipc_handle);
2148 globus_gfs_ipc_handle_connect(
2149 globus_gfs_session_info_t * session_info,
2150 globus_gfs_ipc_open_callback_t cb,
2152 globus_gfs_ipc_error_callback_t error_cb,
2153 void * error_user_arg);
2156 globus_gfs_ipc_handle_connect_ex(
2157 globus_gfs_session_info_t * session_info,
2158 globus_gfs_ipc_open_callback_t cb,
2160 globus_gfs_ipc_error_callback_t error_cb,
2161 void * error_user_arg,
2162 globus_bool_t secure_ipc,
2164 const char *auth_mode,
2165 const char *subject,
2166 time_t connect_timeout,
2167 time_t idle_timeout,
2168 globus_bool_t inetd);
2171 globus_gfs_ipc_handle_obtain(
2172 globus_gfs_session_info_t * session_info,
2173 globus_gfs_ipc_iface_t * iface,
2174 globus_gfs_ipc_open_callback_t cb,
2176 globus_gfs_ipc_error_callback_t error_cb,
2177 void * error_user_arg);
2182 #define BRAIN_SYMBOL_NAME (void*)"gridftp_brain"
2183 extern globus_extension_registry_t brain_i_registry;
2185 typedef globus_result_t
2186 (*globus_i_gfs_brain_select_nodes_func_t)(
2187 globus_i_gfs_brain_node_t *** out_node_array,
2188 int * out_array_length,
2189 const char * repo_name,
2190 globus_off_t filesize,
2194 typedef globus_result_t
2195 (*globus_i_gfs_brain_release_node_func_t)(
2196 globus_i_gfs_brain_node_t * contact_node,
2197 globus_gfs_brain_reason_t reason);
2199 typedef globus_result_t
2200 (*globus_i_gfs_brain_init_func_t)();
2203 (*globus_i_gfs_brain_stop_func_t)();
2205 typedef globus_result_t
2206 (*globus_i_gfs_brain_get_available_func_t)(
2207 const char * user_id,
2208 const char * repo_name,
2212 typedef struct globus_i_gfs_brain_module_s
2214 globus_i_gfs_brain_init_func_t init_func;
2215 globus_i_gfs_brain_stop_func_t stop_func;
2216 globus_i_gfs_brain_select_nodes_func_t select_func;
2217 globus_i_gfs_brain_release_node_func_t release_func;
2218 globus_i_gfs_brain_get_available_func_t available_func;
2219 } globus_i_gfs_brain_module_t;
2221 extern globus_i_gfs_brain_module_t globus_i_gfs_default_brain;
2224 globus_gfs_brain_select_nodes(
2225 globus_i_gfs_brain_node_t *** out_node_array,
2226 int * out_array_length,
2227 const char * repo_name,
2228 globus_off_t filesize,
2233 globus_gfs_brain_release_node(
2234 globus_i_gfs_brain_node_t * contact_node,
2235 globus_gfs_brain_reason_t reason);
2238 globus_gfs_brain_get_available(
2239 const char * user_id,
2240 const char * repo_name,
2244 globus_gfs_ipc_handle_get_contact_string(
2245 globus_gfs_ipc_handle_t ipc_handle,
2246 char ** contact_string);
2249 globus_gfs_ipc_init(
2250 globus_bool_t requester);
2256 globus_gfs_ipc_add_server(
2257 globus_xio_server_t server_handle);
2259 extern globus_gfs_ipc_iface_t globus_gfs_ipc_default_iface;
2272 typedef struct globus_i_gfs_acl_handle_s * globus_gfs_acl_handle_t;
2277 typedef enum globus_gfs_acl_action_e
2280 GFS_ACL_ACTION_INIT = 1,
2282 GFS_ACL_ACTION_DELETE,
2284 GFS_ACL_ACTION_WRITE,
2286 GFS_ACL_ACTION_CREATE,
2288 GFS_ACL_ACTION_READ,
2290 GFS_ACL_ACTION_LOOKUP,
2294 GFS_ACL_ACTION_AUTHZ_ASSERT,
2297 GFS_ACL_ACTION_COMMIT,
2300 } globus_gfs_acl_action_t;
2304 typedef struct globus_gfs_acl_info_s
2311 gss_ctx_id_t context;
2312 } globus_gfs_acl_info_t;
2316 typedef struct globus_gfs_acl_object_desc_s
2334 globus_bool_t
final;
2337 globus_gfs_op_info_t op_info;
2338 } globus_gfs_acl_object_desc_t;
2341 typedef enum globus_gfs_acl_status_e
2344 GLOBUS_GFS_ACL_COMPLETE = 1,
2347 GLOBUS_GFS_ACL_WOULD_BLOCK
2348 } globus_gfs_acl_status_t;
2365 (*globus_gfs_acl_init_t)(
2367 globus_gfs_acl_info_t * acl_info,
2368 globus_gfs_acl_handle_t acl_handle,
2369 globus_result_t * out_res);
2381 (*globus_gfs_acl_authorize_t)(
2383 globus_gfs_acl_action_t action,
2384 globus_gfs_acl_object_desc_t * object,
2385 globus_gfs_acl_info_t * acl_info,
2386 globus_gfs_acl_handle_t acl_handle,
2387 globus_result_t * out_res);
2391 (*globus_gfs_acl_destroy_t)(
2397 (*globus_gfs_acl_audit_t)(
2399 globus_gfs_acl_action_t action,
2400 globus_gfs_acl_object_desc_t * object,
2401 const char * message);
2405 typedef struct globus_gfs_acl_module_s
2407 globus_gfs_acl_init_t init_func;
2408 globus_gfs_acl_authorize_t authorize_func;
2409 globus_gfs_acl_destroy_t destroy_func;
2410 globus_gfs_acl_audit_t audit_func;
2411 } globus_gfs_acl_module_t;
2417 globus_gfs_acl_authorized_finished(
2418 globus_gfs_acl_handle_t acl_handle,
2419 globus_result_t result);
2424 globus_gfs_acl_action_to_string(
2425 globus_gfs_acl_action_t action);
2434 (*globus_i_gfs_config_set_string_cb_t)(
2435 const char * option_name,
2441 (*globus_i_gfs_config_set_int_cb_t)(
2442 const char * option_name,
2449 globus_bool_t enabled;
2451 } globus_i_gfs_config_option_cb_ent_t;
2454 globus_gfs_config_enable_cb(
2455 globus_i_gfs_config_option_cb_ent_t * cb_handle,
2456 globus_bool_t enabled);
2459 globus_gfs_config_add_cb(
2460 globus_i_gfs_config_option_cb_ent_t ** cb_handle,
2466 globus_gfs_config_get_bool(
2467 const char * option_name);
2470 globus_gfs_config_get_string(
2471 const char * option_name);
2474 globus_gfs_config_get_list(
2475 const char * option_name);
2478 globus_gfs_config_get(
2479 const char * option_name);
2482 globus_gfs_config_get_int(
2483 const char * option_name);
2486 globus_gfs_config_set_int(
2491 globus_gfs_config_set_bool(
2496 globus_gfs_config_set_ptr(
2501 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:1067
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:953
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:14356
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:15002
void(* globus_gfs_storage_init_t)(globus_gfs_operation_t op, globus_gfs_session_info_t *session_info)
Definition: globus_gridftp_server.h:633
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:154
@ GLOBUS_GFS_EVENT_DISCONNECTED
Definition: globus_gridftp_server.h:168
@ GLOBUS_GFS_EVENT_TRANSFER_COMPLETE
Definition: globus_gridftp_server.h:164
@ GLOBUS_GFS_EVENT_TRANSFER_CONNECTED
Definition: globus_gridftp_server.h:183
@ GLOBUS_GFS_EVENT_PARTIAL_EOF_COUNT
Definition: globus_gridftp_server.h:186
@ GLOBUS_GFS_EVENT_RANGES_RECVD
Definition: globus_gridftp_server.h:178
@ GLOBUS_GFS_EVENT_TRANSFER_BEGIN
Definition: globus_gridftp_server.h:157
@ GLOBUS_GFS_EVENT_TRANSFER_ABORT
Definition: globus_gridftp_server.h:160
@ GLOBUS_GFS_EVENT_ALL
Definition: globus_gridftp_server.h:192
@ GLOBUS_GFS_EVENT_BYTES_RECVD
Definition: globus_gridftp_server.h:173
@ GLOBUS_GFS_EVENT_FINAL_EOF_COUNT
Definition: globus_gridftp_server.h:189
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