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;
252 typedef struct globus_gfs_stat_ext_s
261 } globus_gfs_stat_ext_t;
270 typedef struct globus_i_gfs_op_info_s * globus_gfs_op_info_t;
278 typedef struct globus_gfs_data_finished_info_s
283 globus_bool_t bi_directional;
289 const char ** contact_strings;
290 } globus_gfs_data_finished_info_t;
297 typedef struct globus_gfs_cmd_finshed_info_s
300 globus_gfs_command_type_t command;
305 } globus_gfs_cmd_finshed_info_t;
312 typedef struct globus_gfs_stat_finished_info_s
324 } globus_gfs_stat_finished_info_t;
331 typedef struct globus_gfs_session_finished_info_s
339 } globus_gfs_session_finished_info_t;
346 typedef struct globus_gfs_transfer_finished_info_s
349 globus_off_t bytes_transferred;
351 } globus_gfs_transfer_finished_info_t;
358 typedef struct globus_gfs_finished_info_s
361 globus_gfs_operation_type_t type;
370 globus_result_t result;
374 globus_gfs_session_finished_info_t session;
375 globus_gfs_data_finished_info_t data;
376 globus_gfs_cmd_finshed_info_t command;
377 globus_gfs_stat_finished_info_t stat;
378 globus_gfs_transfer_finished_info_t transfer;
382 globus_gfs_op_info_t op_info;
383 } globus_gfs_finished_info_t;
390 typedef struct globus_gfs_event_info_s
407 globus_off_t recvd_bytes;
409 globus_range_list_t recvd_ranges;
420 globus_gfs_op_info_t op_info;
421 } globus_gfs_event_info_t;
428 typedef struct globus_gfs_transfer_info_s
439 globus_off_t partial_offset;
441 globus_off_t partial_length;
443 globus_range_list_t range_list;
445 globus_bool_t truncate;
459 globus_off_t alloc_size;
462 char * expected_checksum;
464 char * expected_checksum_alg;
469 int traversal_options;
472 globus_gfs_op_info_t op_info;
473 } globus_gfs_transfer_info_t;
479 #define rnfr_pathname from_pathname
486 typedef struct globus_gfs_command_info_s
489 globus_gfs_command_type_t command;
494 globus_off_t cksm_offset;
496 globus_off_t cksm_length;
505 char * from_pathname;
517 globus_gfs_op_info_t op_info;
518 } globus_gfs_command_info_t;
525 typedef struct globus_gfs_data_info_s
536 globus_size_t tcp_bufsize;
538 globus_size_t blocksize;
540 globus_size_t stripe_blocksize;
558 const char ** contact_strings;
564 gss_cred_id_t del_cred;
567 globus_gfs_op_info_t op_info;
568 } globus_gfs_data_info_t;
575 typedef struct globus_gfs_stat_info_s
578 globus_bool_t file_only;
580 globus_bool_t
internal;
584 globus_bool_t use_symlink_info;
586 globus_bool_t include_path_stat;
589 globus_gfs_op_info_t op_info;
590 } globus_gfs_stat_info_t;
592 typedef struct globus_gfs_session_info_s
594 gss_cred_id_t del_cred;
595 globus_bool_t free_cred;
596 globus_bool_t map_user;
604 globus_gfs_op_info_t op_info;
605 } globus_gfs_session_info_t;
607 typedef enum globus_gfs_brain_reason_e
609 GLOBUS_GFS_BRAIN_REASON_ERROR = 1,
610 GLOBUS_GFS_BRAIN_REASON_COMPLETE
611 } globus_gfs_brain_reason_t;
613 typedef struct globus_i_gfs_brain_node_s
619 int current_connection;
621 } globus_i_gfs_brain_node_t;
636 typedef struct globus_l_gfs_data_operation_s * globus_gfs_operation_t;
639 typedef void * globus_gfs_session_config_t;
656 globus_gfs_operation_t op,
657 globus_gfs_session_info_t * session_info);
664 (*globus_gfs_storage_destroy_t)(
673 (*globus_gfs_storage_transfer_t)(
674 globus_gfs_operation_t op,
675 globus_gfs_transfer_info_t * transfer_info,
685 (*globus_gfs_storage_command_t)(
686 globus_gfs_operation_t op,
687 globus_gfs_command_info_t * command_info,
696 (*globus_gfs_storage_stat_t)(
697 globus_gfs_operation_t op,
698 globus_gfs_stat_info_t * stat_info,
708 (*globus_gfs_storage_data_t)(
709 globus_gfs_operation_t op,
710 globus_gfs_data_info_t * data_info,
721 (*globus_gfs_storage_data_destroy_t)(
733 (*globus_gfs_storage_trev_t)(
734 globus_gfs_event_info_t * event_info,
744 (*globus_gfs_storage_set_cred_t)(
745 gss_cred_id_t del_cred,
755 (*globus_gfs_storage_buffer_send_t)(
757 globus_byte_t * buffer,
758 globus_size_t buffer_len,
771 typedef globus_result_t
772 (*globus_gfs_storage_realpath_t)(
773 const char * in_path,
774 char ** out_realpath,
778 #define GLOBUS_GFS_DSI_DESCRIPTOR_SENDER (1 << 0)
779 #define GLOBUS_GFS_DSI_DESCRIPTOR_BLOCKING (1 << 1)
780 #define GLOBUS_GFS_DSI_DESCRIPTOR_HAS_REALPATH (1 << 2)
781 #define GLOBUS_GFS_DSI_DESCRIPTOR_REQUIRES_ORDERED_DATA (1 << 3)
782 #define GLOBUS_GFS_DSI_DESCRIPTOR_SETS_ERROR_RESPONSES (1 << 4)
783 #define GLOBUS_GFS_DSI_DESCRIPTOR_SAFE_RDEL (1 << 5)
784 #define GLOBUS_GFS_DSI_DESCRIPTOR_USERNAME_INCLUDES_DOMAIN (1 << 6)
785 #define GLOBUS_GFS_DSI_DESCRIPTOR_DYN_SENDER (1 << 7)
786 #define GLOBUS_GFS_DSI_DESCRIPTOR_SIZE_NOT_REQUIRED (1 << 8)
795 typedef struct globus_gfs_storage_iface_s
801 globus_gfs_storage_destroy_t destroy_func;
804 globus_gfs_storage_transfer_t list_func;
805 globus_gfs_storage_transfer_t send_func;
806 globus_gfs_storage_transfer_t recv_func;
807 globus_gfs_storage_trev_t trev_func;
810 globus_gfs_storage_data_t active_func;
811 globus_gfs_storage_data_t passive_func;
812 globus_gfs_storage_data_destroy_t data_destroy_func;
814 globus_gfs_storage_command_t command_func;
815 globus_gfs_storage_stat_t stat_func;
817 globus_gfs_storage_set_cred_t set_cred_func;
818 globus_gfs_storage_buffer_send_t buffer_send_func;
819 globus_gfs_storage_realpath_t realpath_func;
820 } globus_gfs_storage_iface_t;
836 globus_gfs_operation_t op,
837 globus_result_t result,
838 globus_gfs_finished_info_t * finished_info);
848 globus_gridftp_server_operation_event(
849 globus_gfs_operation_t op,
850 globus_result_t result,
851 globus_gfs_event_info_t * event_info);
859 globus_gridftp_server_begin_transfer(
860 globus_gfs_operation_t op,
870 globus_gridftp_server_finished_transfer(
871 globus_gfs_operation_t op,
872 globus_result_t result);
881 globus_gridftp_server_finished_session_start(
882 globus_gfs_operation_t op,
883 globus_result_t result,
896 globus_gridftp_server_finished_command(
897 globus_gfs_operation_t op,
898 globus_result_t result,
899 char * command_response);
901 globus_gridftp_server_intermediate_command(
902 globus_gfs_operation_t op,
903 globus_result_t result,
904 char * command_response);
912 globus_gridftp_server_finished_stat(
913 globus_gfs_operation_t op,
914 globus_result_t result,
934 globus_gfs_operation_t op,
935 const char * fact_names);
948 globus_gfs_operation_t op,
949 globus_result_t result,
950 globus_gfs_stat_ext_t * stat_array,
953 globus_bool_t
final);
956 globus_gridftp_server_finished_stat_partial(
957 globus_gfs_operation_t op,
958 globus_result_t result,
963 globus_gridftp_server_finished_stat_custom_list(
964 globus_gfs_operation_t op,
965 globus_result_t result,
966 globus_byte_t * list_response,
967 globus_size_t list_response_len,
968 globus_bool_t free_buffer);
976 globus_gridftp_server_finished_active_data(
977 globus_gfs_operation_t op,
978 globus_result_t result,
980 globus_bool_t bi_directional);
988 globus_gridftp_server_finished_passive_data(
989 globus_gfs_operation_t op,
990 globus_result_t result,
992 globus_bool_t bi_directional,
993 const char ** contact_strings,
1013 globus_gfs_operation_t op,
1014 globus_result_t result,
1015 globus_byte_t * buffer,
1016 globus_size_t nbytes,
1020 globus_gridftp_server_register_write(
1021 globus_gfs_operation_t op,
1022 globus_byte_t * buffer,
1023 globus_size_t length,
1024 globus_off_t offset,
1039 (*globus_gridftp_server_read_cb_t)(
1040 globus_gfs_operation_t op,
1041 globus_result_t result,
1042 globus_byte_t * buffer,
1043 globus_size_t nbytes,
1044 globus_off_t offset,
1049 globus_gridftp_server_register_read(
1050 globus_gfs_operation_t op,
1051 globus_byte_t * buffer,
1052 globus_size_t length,
1053 globus_gridftp_server_read_cb_t callback,
1097 globus_gridftp_server_add_command(
1098 globus_gfs_operation_t op,
1099 const char * command_name,
1103 const char * help_string,
1104 globus_bool_t has_pathname,
1136 #define globus_gfs_custom_string_to_959 globus_gsc_string_to_959
1155 globus_gfs_operation_t op,
1156 const char * cksm_str);
1169 globus_gfs_operation_t op,
1170 const char * stage_str);
1182 globus_gfs_operation_t op,
1183 const char * info_str);
1197 GLOBUS_GFS_OP_INFO_CMD_ARGS = 1,
1208 GLOBUS_GFS_OP_INFO_REQUESTED_FACTS = 2
1218 globus_gridftp_server_query_op_info(
1219 globus_gfs_operation_t op,
1220 globus_gfs_op_info_t op_info,
1235 globus_gridftp_server_get_recv_attr_string(
1236 globus_gfs_operation_t op,
1237 const char * requested_attr,
1247 globus_gridftp_server_get_recv_modification_time(
1248 globus_gfs_operation_t op,
1262 globus_gridftp_server_update_bytes_written(
1263 globus_gfs_operation_t op,
1264 globus_off_t offset,
1265 globus_off_t length);
1278 globus_gridftp_server_update_bytes_recvd(
1279 globus_gfs_operation_t op,
1280 globus_off_t length);
1293 globus_gridftp_server_update_range_recvd(
1294 globus_gfs_operation_t op,
1295 globus_off_t offset,
1296 globus_off_t length);
1305 globus_gridftp_server_get_optimal_concurrency(
1306 globus_gfs_operation_t op,
1317 globus_gridftp_server_get_block_size(
1318 globus_gfs_operation_t op,
1319 globus_size_t * block_size);
1328 globus_gridftp_server_get_stripe_block_size(
1329 globus_gfs_operation_t op,
1330 globus_size_t * stripe_block_size);
1340 globus_gridftp_server_get_session_username(
1341 globus_gfs_operation_t op,
1353 globus_gridftp_server_get_delegated_cred(
1354 globus_gfs_operation_t op,
1355 gss_cred_id_t * del_cred);
1369 globus_gridftp_server_get_sec_context(
1370 globus_gfs_operation_t op,
1371 gss_ctx_id_t * context);
1390 globus_gridftp_server_set_ordered_data(
1391 globus_gfs_operation_t op,
1392 globus_bool_t ordered_data);
1395 globus_gridftp_server_get_ordered_data(
1396 globus_gfs_operation_t op,
1397 globus_bool_t * ordered_data);
1406 globus_gridftp_server_get_config_string(
1407 globus_gfs_operation_t op,
1408 char ** config_string);
1417 globus_gridftp_server_get_config_data(
1418 globus_gfs_operation_t op,
1420 char ** config_data);
1423 globus_gridftp_server_session_get_config_data(
1424 globus_gfs_session_config_t session_conf_handle,
1426 char ** config_data);
1429 globus_gridftp_server_get_session_config_handle(
1430 globus_gfs_operation_t op,
1431 globus_gfs_session_config_t * out_session_conf_handle);
1434 globus_gfs_data_get_file_stack_list(
1435 globus_gfs_operation_t in_op,
1436 globus_list_t ** out_list);
1439 globus_gridftp_server_get_update_interval(
1440 globus_gfs_operation_t op,
1450 globus_gridftp_server_get_task_id(
1451 globus_gfs_operation_t op,
1463 globus_gridftp_server_get_read_range(
1464 globus_gfs_operation_t op,
1465 globus_off_t * offset,
1466 globus_off_t * length);
1479 globus_gridftp_server_get_write_range(
1480 globus_gfs_operation_t op,
1481 globus_off_t * offset,
1482 globus_off_t * length);
1489 GLOBUS_GFS_LOG_ERR = 0x01,
1490 GLOBUS_GFS_LOG_WARN = 0x02,
1491 GLOBUS_GFS_LOG_TRANSFER = 0x04,
1492 GLOBUS_GFS_LOG_INFO = 0x08,
1493 GLOBUS_GFS_LOG_DUMP = 0x10,
1494 GLOBUS_GFS_LOG_ALL = 0xFF,
1495 GLOBUS_GFS_LOG_AUDIT = 0x100
1496 } globus_gfs_log_type_t;
1499 globus_gfs_log_message(
1500 globus_gfs_log_type_t type,
1501 const char * format,
1505 globus_gfs_log_result(
1506 globus_gfs_log_type_t type,
1508 globus_result_t result);
1513 GLOBUS_GFS_DEBUG_TRACE = 8,
1514 GLOBUS_GFS_DEBUG_INFO = 16,
1515 GLOBUS_GFS_DEBUG_STATE = 32
1519 #define GlobusGFSName(func) static const char * _gfs_name __attribute__((__unused__)) = #func
1521 #define GlobusGFSName(func) static const char * _gfs_name = #func
1524 GlobusDebugDeclare(GLOBUS_GRIDFTP_SERVER);
1526 #define GlobusGFSDebugPrintf(level, message) \
1527 GlobusDebugPrintf(GLOBUS_GRIDFTP_SERVER, level, message)
1530 #define GlobusGFSDebugInfoF(_msg) \
1533 GlobusGFSDebugPrintf( \
1534 GLOBUS_GFS_DEBUG_INFO, \
1535 ("[%s:%d] (pid=%d) [%s] ", __FILE__, __LINE__, getpid(), __func__));\
1536 GlobusGFSDebugPrintf( \
1537 GLOBUS_GFS_DEBUG_INFO, \
1541 #define GlobusGFSDebugResultT(_result, _msg) \
1544 char * _err_str = globus_error_print_friendly( \
1545 globus_error_peek(_result)); \
1546 GlobusGFSDebugInfoF(("%s: %s\n", _msg, _err_str)); \
1550 #define GlobusGFSDebugInfo(_msg) \
1551 GlobusGFSDebugPrintf( \
1552 GLOBUS_GFS_DEBUG_INFO, \
1553 ("[%s] %s\n", __func__, _msg))
1555 #define GlobusGFSDebugEnter() \
1556 GlobusGFSDebugPrintf( \
1557 GLOBUS_GFS_DEBUG_TRACE, \
1558 ("[%s] Entering\n", __func__))
1560 #define GlobusGFSDebugExitResult(res) \
1561 GlobusGFSDebugPrintf( \
1562 GLOBUS_GFS_DEBUG_TRACE, \
1563 ("[%s] Exiting%s\n", \
1565 (res != GLOBUS_SUCCESS) ? " with error" : ""))
1567 #define GlobusGFSDebugExit() \
1568 GlobusGFSDebugPrintf( \
1569 GLOBUS_GFS_DEBUG_TRACE, \
1570 ("[%s] Exiting\n", __func__))
1572 #define GlobusGFSDebugState(_state) \
1573 GlobusGFSDebugPrintf( \
1574 GLOBUS_GFS_DEBUG_INFO, \
1575 ("[%s] State: %d\n", __func__, _state))
1577 #define GlobusGFSDebugExitWithError() \
1578 GlobusGFSDebugPrintf( \
1579 GLOBUS_GFS_DEBUG_TRACE, \
1580 ("[%s] Exiting with error\n", __func__))
1582 #define GlobusGFSErrorParameter(mem_name) \
1583 globus_error_put(GlobusGFSErrorObjParameter(mem_name))
1585 #define GlobusGFSErrorIPC() \
1586 globus_error_put(GlobusGFSErrorObjIPC())
1588 #define GlobusGFSErrorObjIPC() \
1589 globus_error_construct_error( \
1592 GLOBUS_GFS_ERROR_MEMORY, \
1596 "IPC Communication error.")
1598 #define GlobusGFSErrorObjParameter(param_name) \
1599 globus_error_construct_error( \
1602 GLOBUS_GFS_ERROR_PARAMETER, \
1606 "invalid parameter: %s", \
1609 #define GlobusGFSErrorSystemError(system_func, system_errno) \
1610 globus_error_put(GlobusGFSErrorObjSystemError(\
1611 (system_func), (system_errno)))
1612 #define GlobusGFSErrorObjSystemError(system_func, system_errno) \
1613 globus_i_gfs_error_system( \
1614 0, (system_errno), \
1615 "System error%s%s", \
1616 (system_func) != NULL ? " in " : "", \
1617 (system_func) != NULL ? (system_func) : "")
1619 #define GlobusGFSErrorWrapFailed(failed_func, result) \
1620 globus_error_put(GlobusGFSErrorObjWrapFailed(failed_func, result))
1622 #define GlobusGFSErrorObjWrapFailed(failed_func, result) \
1623 globus_error_construct_error( \
1625 globus_error_get((result)), \
1626 GLOBUS_GFS_ERROR_WRAPPED, \
1633 #define GlobusGFSErrorData(reason) \
1634 globus_error_put(GlobusGFSErrorObjData(reason))
1636 #define GlobusGFSErrorObjData(reason) \
1637 globus_error_construct_error( \
1640 GLOBUS_GFS_ERROR_DATA, \
1647 #define GlobusGFSErrorGeneric(reason) \
1648 globus_error_put(GlobusGFSErrorObjGeneric(reason))
1650 #define GlobusGFSErrorObjGeneric(reason) \
1651 globus_error_construct_error( \
1654 GLOBUS_GFS_ERROR_GENERIC, \
1663 globus_module_descriptor_t * base_source,
1664 globus_object_t * base_cause,
1666 const char *response_error_code,
1672 globus_object_t * error,
1673 globus_module_descriptor_t * base_source,
1674 globus_object_t * base_cause,
1676 const char * response_error_code,
1681 globus_object_t * error,
1682 globus_module_descriptor_t * base_source,
1683 globus_object_t * base_cause,
1685 const char * response_error_code,
1691 globus_object_t * error);
1695 globus_object_t * error);
1699 globus_object_t * error,
1700 const char * response_error_code);
1702 extern const globus_object_type_t
1705 #define GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE \
1706 (&GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION)
1709 #define GlobusGFSErrorFtpResponse(cause, code, response_error_code, ...) \
1710 globus_error_put(GlobusGFSErrorObjFtpResponse( \
1711 cause, code, response_error_code, __VA_ARGS__))
1713 #define GlobusGFSErrorObjFtpResponse(cause, code, response_error_code, ...) \
1714 globus_gfs_ftp_response_error_construct( \
1718 response_error_code, \
1724 #define GlobusGFSErrorMemory(mem) \
1725 globus_error_put(GlobusGFSErrorObjMemory(mem))
1726 #define GlobusGFSErrorObjMemory(mem) \
1727 GlobusGFSErrorObjSystemError("malloc", errno)
1729 #define GlobusGFSErrorObj(cause, response_code, ...) \
1730 GlobusGFSErrorObjFtpResponse(cause, response_code, __VA_ARGS__)
1732 #define GlobusGFSErrorPathNotFound(p) \
1733 globus_error_put(GlobusGFSErrorObjPathNotFound(NULL, p))
1734 #define GlobusGFSErrorObjPathNotFound(cause, p) \
1735 GlobusGFSErrorObj((cause), 550, "PATH_NOT_FOUND", \
1737 ((p) != NULL) ? "GridFTP-Path: \"" : "", \
1738 ((p) != NULL) ? (p) : "", \
1739 ((p) != NULL) ? "\"" : "")
1741 #define GlobusGFSErrorIncorrectChecksum(computed, expected) \
1742 globus_error_put(GlobusGFSErrorObjIncorrectChecksum( \
1743 NULL, computed, expected))
1744 #define GlobusGFSErrorObjIncorrectChecksum(cause, computed, expected) \
1745 GlobusGFSErrorObj( \
1748 "INCORRECT_CHECKSUM", \
1749 "GridFTP-Computed-Checksum: %s\n" \
1750 "GridFTP-Expected-Checksum: %s", (computed), (expected))
1752 #define GlobusGFSErrorMultipartUploadNotFound() \
1753 globus_error_put(GlobusGFSErrorObjMultipartUploadNotFound(NULL))
1754 #define GlobusGFSErrorObjMultipartUploadNotFound(cause) \
1755 GlobusGFSErrorObj(cause, 553, "MULTI_PART_UPLOAD_NOT_FOUND", NULL)
1757 #define GlobusGFSErrorAppendNotSupported() \
1758 globus_error_put(GlobusGFSErrorObjAppendNotSupported(NULL))
1759 #define GlobusGFSErrorObjAppendNotSupported(cause) \
1760 GlobusGFSErrorObj((cause), 553, "APPEND_NOT_SUPPORTED", NULL)
1762 #define GlobusGFSErrorAmbiguousPath(ambiguity) \
1763 globus_error_put(GlobusGFSErrorObjAmbiguousPath(NULL, ambiguity))
1764 #define GlobusGFSErrorObjAmbiguousPath(cause, ambiguity) \
1765 GlobusGFSErrorObj( \
1769 "GridFTP-Path: %s", \
1772 #define GlobusGFSErrorTooBusy() \
1773 globus_error_put(GlobusGFSErrorObjTooBusy(NULL))
1774 #define GlobusGFSErrorObjTooBusy(cause) \
1775 GlobusGFSErrorObj((cause), 451, "TOO_BUSY", NULL)
1777 #define GlobusGFSErrorDataChannelAuthenticationFailure() \
1778 globus_error_put(GlobusGFSErrorObjDataChannelAuthenticationFailure( \
1780 #define GlobusGFSErrorObjDataChannelAuthenticationFailure(cause) \
1781 GlobusGFSErrorObj((cause), 425, \
1782 "DATA_CHANNEL_AUTHENTICATION_FAILURE", NULL)
1784 #define GlobusGFSErrorDataChannelCommunicationFailure() \
1785 globus_error_put(GlobusGFSErrorObjDataChannelCommunicationFailure( \
1787 #define GlobusGFSErrorObjDataChannelCommunicationFailure(cause) \
1788 GlobusGFSErrorObj((cause), 425, \
1789 "DATA_CHANNEL_COMMUNICATION_FAILURE", NULL)
1791 #define GlobusGFSErrorLoginDenied() \
1792 globus_error_put(GlobusGFSErrorObjLoginDenied(NULL))
1793 #define GlobusGFSErrorObjLoginDenied(cause) \
1794 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", NULL)
1796 #define GlobusGFSErrorLoginDeniedJSON(message, json) \
1797 globus_error_put(GlobusGFSErrorObjLoginDeniedJSON(NULL, message, json))
1798 #define GlobusGFSErrorObjLoginDeniedJSON(cause, message, json) \
1799 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", \
1800 "GridFTP-Message: %s\n" \
1801 "GridFTP-JSON-Result: %s", \
1802 (message) ? (message) : "Message not available", (json))
1804 #define GlobusGFSErrorEndpointError() \
1805 globus_error_put(GlobusGFSErrorObjEndpointError(NULL))
1806 #define GlobusGFSErrorObjEndpointError(cause) \
1807 GlobusGFSErrorObj((cause), 530, "ENDPOINT_ERROR", NULL)
1809 #define GlobusGFSErrorPermissionDenied() \
1810 globus_error_put(GlobusGFSErrorObjPermissionDenied(NULL))
1811 #define GlobusGFSErrorObjPermissionDenied(cause) \
1812 GlobusGFSErrorObj((cause), 550, "PERMISSION_DENIED", NULL)
1814 #define GlobusGFSErrorQuotaExceeded() \
1815 globus_error_put(GlobusGFSErrorObjQuotaExceeded(NULL))
1816 #define GlobusGFSErrorObjQuotaExceeded(cause) \
1817 GlobusGFSErrorObj((cause), 451, "QUOTA_EXCEEDED", NULL)
1819 #define GlobusGFSErrorNoSpaceLeft() \
1820 globus_error_put(GlobusGFSErrorObjNoSpaceLeft(NULL))
1821 #define GlobusGFSErrorObjNoSpaceLeft(cause) \
1822 GlobusGFSErrorObj((cause), 451, "NO_SPACE_LEFT", NULL)
1824 #define GlobusGFSErrorInvalidPathName(name) \
1825 globus_error_put(GlobusGFSErrorObjInvalidPathName(NULL, name))
1826 #define GlobusGFSErrorObjInvalidPathName(cause, name) \
1827 GlobusGFSErrorObj((cause), 553, "INVALID_PATH_NAME", \
1828 "GridFTP-Path: %s", name)
1830 #define GlobusGFSErrorPathExists(name) \
1831 globus_error_put(GlobusGFSErrorObjPathExists(NULL, name))
1832 #define GlobusGFSErrorObjPathExists(cause, name) \
1833 GlobusGFSErrorObj((cause), 553, "PATH_EXISTS", \
1834 "GridFTP-Path: %s", name)
1836 #define GlobusGFSErrorIsADirectory(name) \
1837 globus_error_put(GlobusGFSErrorObjIsADirectory(NULL, name))
1838 #define GlobusGFSErrorObjIsADirectory(cause, name) \
1839 GlobusGFSErrorObj((cause), 553, "IS_A_DIRECTORY", \
1840 "GridFTP-Path: %s", name)
1842 #define GlobusGFSErrorNotADirectory(name) \
1843 globus_error_put(GlobusGFSErrorObjNotADirectory(NULL, name))
1844 #define GlobusGFSErrorObjNotADirectory(cause, name) \
1845 GlobusGFSErrorObj((cause), 553, "NOT_A_DIRECTORY", \
1846 "GridFTP-Path: %s", name)
1848 #define GlobusGFSErrorCRLError() \
1849 globus_error_put(GlobusGFSErrorObjCRLError(NULL))
1850 #define GlobusGFSErrorObjCRLError(cause) \
1851 GlobusGFSErrorObj((cause), 530, "CRL_ERROR", NULL)
1853 #define GlobusGFSErrorInternalError(generic_string) \
1854 globus_error_put(GlobusGFSErrorObjInternalError( \
1855 NULL, (generic_string)))
1856 #define GlobusGFSErrorObjInternalError(cause, generic_string) \
1857 GlobusGFSErrorObj((cause), 500, "INTERNAL_ERROR", \
1859 ((generic_string) != NULL) ? "GridFTP-Error: " : "", \
1860 ((generic_string) != NULL) ? generic_string : "")
1862 #define GlobusGFSErrorNotImplemented() \
1863 globus_error_put(GlobusGFSErrorObjNotImplemented(NULL))
1864 #define GlobusGFSErrorObjNotImplemented(cause) \
1865 GlobusGFSErrorObj((cause), 500, "NOT_IMPLEMETED", NULL)
1867 #define GlobusGFSErrorNotImplementedFeature(feature) \
1868 globus_error_put(GlobusGFSErrorObjNotImplementedFeature(NULL, feature))
1869 #define GlobusGFSErrorObjNotImplementedFeature(cause, feature) \
1870 GlobusGFSErrorObj((cause), 500, \
1871 "NOT_IMPLEMETED", "GridFTP-Feature: %s", (feature))
1873 #define GlobusGFSErrorConfigurationError() \
1874 globus_error_put(GlobusGFSErrorObjConfigurationError(NULL))
1875 #define GlobusGFSErrorObjConfigurationError(cause) \
1876 GlobusGFSErrorObj((cause), 500, "CONFIGURATION_ERROR", NULL)
1885 #define GLOBUS_GFS_BUILTIN_CHECKSUM_SUPPORT "MD5:10;ADLER32:10;SHA1:10;CRC32C:10;SHA256:12;SHA512:11;QuickXORHex:12;Dropbox:12;"
1887 typedef struct globus_l_gfs_checksum_state_s * globus_gfs_checksum_state_t;
1890 globus_gfs_checksum_init(
1891 const char * algorithm,
1892 globus_gfs_checksum_state_t * state);
1895 globus_gfs_checksum_update(
1896 globus_gfs_checksum_state_t state,
1897 const unsigned char * buffer,
1901 globus_gfs_checksum_finalize(
1902 globus_gfs_checksum_state_t state,
1903 char ** checksum_str);
1911 typedef struct globus_i_gfs_ipc_handle_s * globus_gfs_ipc_handle_t;
1936 (*globus_gfs_ipc_callback_t)(
1937 globus_gfs_ipc_handle_t ipc_handle,
1938 globus_result_t result,
1939 globus_gfs_finished_info_t * reply,
1943 (*globus_gfs_ipc_event_callback_t)(
1944 globus_gfs_ipc_handle_t ipc_handle,
1945 globus_result_t result,
1946 globus_gfs_event_info_t * reply,
1950 (*globus_gfs_ipc_close_callback_t)(
1951 globus_gfs_ipc_handle_t ipc_handle,
1952 globus_result_t result,
1956 (*globus_gfs_ipc_open_callback_t)(
1957 globus_gfs_ipc_handle_t ipc_handle,
1958 globus_result_t result,
1959 globus_gfs_finished_info_t * reply,
1963 (*globus_gfs_ipc_error_callback_t)(
1964 globus_gfs_ipc_handle_t ipc_handle,
1965 globus_result_t result,
1969 globus_gfs_ipc_reply_finished(
1970 globus_gfs_ipc_handle_t ipc_handle,
1971 globus_gfs_finished_info_t * reply);
1974 globus_gfs_ipc_reply_event(
1975 globus_gfs_ipc_handle_t ipc_handle,
1976 globus_gfs_event_info_t * reply);
1979 globus_gfs_ipc_reply_session(
1980 globus_gfs_ipc_handle_t ipc_handle,
1981 globus_gfs_finished_info_t * reply);
1995 (*globus_i_gfs_ipc_data_callback_t)(
1996 globus_gfs_finished_info_t * reply,
2000 (*globus_i_gfs_ipc_data_event_callback_t)(
2001 globus_gfs_event_info_t * reply,
2005 (*globus_i_gfs_ipc_done_callback_t)(
2007 globus_result_t result);
2016 (*globus_gfs_ipc_iface_session_start_t)(
2017 globus_gfs_ipc_handle_t ipc_handle,
2018 const gss_ctx_id_t context,
2019 globus_gfs_session_info_t * session_info,
2020 globus_i_gfs_ipc_data_callback_t cb,
2024 globus_gfs_ipc_start_session(
2025 globus_gfs_ipc_handle_t ipc_handle,
2026 globus_gfs_session_info_t * session_info,
2027 globus_gfs_ipc_callback_t cb,
2032 (*globus_gfs_ipc_iface_session_stop_t)(
2033 globus_gfs_ipc_handle_t ipc_handle,
2034 void * session_handle);
2037 globus_gfs_ipc_iface_session_stop(
2038 globus_gfs_ipc_handle_t ipc_handle,
2039 void * session_handle);
2042 (*globus_gfs_ipc_iface_set_cred_t)(
2043 globus_gfs_ipc_handle_t ipc_handle,
2044 void * session_handle,
2045 gss_cred_id_t del_cred);
2048 globus_gfs_ipc_set_cred(
2049 globus_gfs_ipc_handle_t ipc_handle,
2050 gss_cred_id_t del_cred);
2053 (*globus_gfs_ipc_iface_buffer_send_t)(
2054 globus_gfs_ipc_handle_t ipc_handle,
2055 void * session_handle,
2056 globus_byte_t * buffer,
2058 globus_size_t buffer_len);
2061 globus_gfs_ipc_request_buffer_send(
2062 globus_gfs_ipc_handle_t ipc_handle,
2063 globus_byte_t * buffer,
2065 globus_size_t buffer_len);
2073 (*globus_gfs_ipc_iface_recv_t)(
2074 globus_gfs_ipc_handle_t ipc_handle,
2075 void * session_handle,
2077 globus_gfs_transfer_info_t * recv_info,
2078 globus_i_gfs_ipc_data_callback_t cb,
2079 globus_i_gfs_ipc_data_event_callback_t event_cb,
2083 globus_gfs_ipc_request_recv(
2084 globus_gfs_ipc_handle_t ipc_handle,
2085 globus_gfs_transfer_info_t * recv_info,
2086 globus_gfs_ipc_callback_t cb,
2087 globus_gfs_ipc_event_callback_t event_cb,
2096 (*globus_gfs_ipc_iface_send_t)(
2097 globus_gfs_ipc_handle_t ipc_handle,
2098 void * session_handle,
2100 globus_gfs_transfer_info_t * send_info,
2101 globus_i_gfs_ipc_data_callback_t cb,
2102 globus_i_gfs_ipc_data_event_callback_t event_cb,
2106 globus_gfs_ipc_request_send(
2107 globus_gfs_ipc_handle_t ipc_handle,
2108 globus_gfs_transfer_info_t * send_info,
2109 globus_gfs_ipc_callback_t cb,
2110 globus_gfs_ipc_event_callback_t event_cb,
2114 (*globus_gfs_ipc_iface_list_t)(
2115 globus_gfs_ipc_handle_t ipc_handle,
2116 void * session_handle,
2118 globus_gfs_transfer_info_t * list_info,
2119 globus_i_gfs_ipc_data_callback_t cb,
2120 globus_i_gfs_ipc_data_event_callback_t event_cb,
2124 globus_gfs_ipc_request_list(
2125 globus_gfs_ipc_handle_t ipc_handle,
2126 globus_gfs_transfer_info_t * data_info,
2127 globus_gfs_ipc_callback_t cb,
2128 globus_gfs_ipc_event_callback_t event_cb,
2137 (*globus_gfs_ipc_iface_command_t)(
2138 globus_gfs_ipc_handle_t ipc_handle,
2139 void * session_handle,
2141 globus_gfs_command_info_t * cmd_info,
2142 globus_i_gfs_ipc_data_callback_t cb,
2146 globus_gfs_ipc_request_command(
2147 globus_gfs_ipc_handle_t ipc_handle,
2148 globus_gfs_command_info_t * cmd_info,
2149 globus_gfs_ipc_callback_t cb,
2158 (*globus_gfs_ipc_iface_active_data_t)(
2159 globus_gfs_ipc_handle_t ipc_handle,
2160 void * session_handle,
2162 globus_gfs_data_info_t * data_info,
2163 globus_i_gfs_ipc_data_callback_t cb,
2167 globus_gfs_ipc_request_active_data(
2168 globus_gfs_ipc_handle_t ipc_handle,
2169 globus_gfs_data_info_t * data_info,
2170 globus_gfs_ipc_callback_t cb,
2179 (*globus_gfs_ipc_iface_passive_data_t)(
2180 globus_gfs_ipc_handle_t ipc_handle,
2181 void * session_handle,
2183 globus_gfs_data_info_t * data_info,
2184 globus_i_gfs_ipc_data_callback_t cb,
2188 globus_gfs_ipc_request_passive_data(
2189 globus_gfs_ipc_handle_t ipc_handle,
2190 globus_gfs_data_info_t * data_info,
2191 globus_gfs_ipc_callback_t cb,
2198 (*globus_gfs_ipc_iface_stat_t)(
2199 globus_gfs_ipc_handle_t ipc_handle,
2200 void * session_handle,
2202 globus_gfs_stat_info_t * stat_info,
2203 globus_i_gfs_ipc_data_callback_t cb,
2207 globus_gfs_ipc_request_stat(
2208 globus_gfs_ipc_handle_t ipc_handle,
2209 globus_gfs_stat_info_t * stat_info,
2210 globus_gfs_ipc_callback_t cb,
2217 (*globus_gfs_ipc_iface_transfer_event_t)(
2218 globus_gfs_ipc_handle_t ipc_handle,
2219 void * session_handle,
2220 globus_gfs_event_info_t * event_info);
2224 globus_gfs_ipc_request_transfer_event(
2225 globus_gfs_ipc_handle_t ipc_handle,
2226 globus_gfs_event_info_t * event_info);
2233 (*globus_gfs_ipc_iface_data_destroy_t)(
2234 globus_gfs_ipc_handle_t ipc_handle,
2235 void * session_handle,
2239 globus_gfs_ipc_request_data_destroy(
2240 globus_gfs_ipc_handle_t ipc_handle,
2243 typedef struct globus_i_gfs_ipc_iface_s
2245 globus_gfs_ipc_iface_session_start_t session_start_func;
2246 globus_gfs_ipc_iface_session_stop_t session_stop_func;
2247 globus_gfs_ipc_iface_recv_t recv_func;
2248 globus_gfs_ipc_iface_send_t send_func;
2249 globus_gfs_ipc_iface_command_t command_func;
2250 globus_gfs_ipc_iface_active_data_t active_func;
2251 globus_gfs_ipc_iface_passive_data_t passive_func;
2252 globus_gfs_ipc_iface_data_destroy_t data_destroy_func;
2253 globus_gfs_ipc_iface_stat_t stat_func;
2254 globus_gfs_ipc_iface_list_t list_func;
2255 globus_gfs_ipc_iface_transfer_event_t transfer_event_func;
2256 globus_gfs_ipc_iface_set_cred_t set_cred;
2257 globus_gfs_ipc_iface_buffer_send_t buffer_send;
2258 } globus_gfs_ipc_iface_t;
2269 globus_gfs_ipc_handle_create(
2270 globus_gfs_ipc_iface_t * iface,
2271 globus_xio_system_socket_t system_handle,
2272 globus_i_gfs_ipc_done_callback_t done_cb,
2279 globus_gfs_ipc_close(
2280 globus_gfs_ipc_handle_t ipc_handle,
2281 globus_gfs_ipc_close_callback_t cb,
2285 globus_gfs_ipc_reply_close(
2286 globus_gfs_ipc_handle_t ipc_handle);
2289 globus_gfs_ipc_session_stop(
2290 globus_gfs_ipc_handle_t ipc_handle);
2293 globus_gfs_ipc_handle_connect(
2294 globus_gfs_session_info_t * session_info,
2295 globus_gfs_ipc_open_callback_t cb,
2297 globus_gfs_ipc_error_callback_t error_cb,
2298 void * error_user_arg);
2301 globus_gfs_ipc_handle_connect_ex(
2302 globus_gfs_session_info_t * session_info,
2303 globus_gfs_ipc_open_callback_t cb,
2305 globus_gfs_ipc_error_callback_t error_cb,
2306 void * error_user_arg,
2307 globus_bool_t secure_ipc,
2309 const char *auth_mode,
2310 const char *subject,
2311 time_t connect_timeout,
2312 time_t idle_timeout,
2313 globus_bool_t inetd);
2316 globus_gfs_ipc_handle_obtain(
2317 globus_gfs_session_info_t * session_info,
2318 globus_gfs_ipc_iface_t * iface,
2319 globus_gfs_ipc_open_callback_t cb,
2321 globus_gfs_ipc_error_callback_t error_cb,
2322 void * error_user_arg);
2327 #define BRAIN_SYMBOL_NAME (void*)"gridftp_brain"
2328 extern globus_extension_registry_t brain_i_registry;
2330 typedef globus_result_t
2331 (*globus_i_gfs_brain_select_nodes_func_t)(
2332 globus_i_gfs_brain_node_t *** out_node_array,
2333 int * out_array_length,
2334 const char * repo_name,
2335 globus_off_t filesize,
2339 typedef globus_result_t
2340 (*globus_i_gfs_brain_release_node_func_t)(
2341 globus_i_gfs_brain_node_t * contact_node,
2342 globus_gfs_brain_reason_t reason);
2344 typedef globus_result_t
2345 (*globus_i_gfs_brain_init_func_t)(
2346 globus_callback_func_t ready_cb,
2347 void * ready_cb_arg);
2350 (*globus_i_gfs_brain_stop_func_t)();
2352 typedef globus_result_t
2353 (*globus_i_gfs_brain_get_available_func_t)(
2354 const char * user_id,
2355 const char * repo_name,
2359 typedef struct globus_i_gfs_brain_module_s
2361 globus_i_gfs_brain_init_func_t init_func;
2362 globus_i_gfs_brain_stop_func_t stop_func;
2363 globus_i_gfs_brain_select_nodes_func_t select_func;
2364 globus_i_gfs_brain_release_node_func_t release_func;
2365 globus_i_gfs_brain_get_available_func_t available_func;
2366 } globus_i_gfs_brain_module_t;
2368 extern globus_i_gfs_brain_module_t globus_i_gfs_default_brain;
2371 globus_gfs_brain_select_nodes(
2372 globus_i_gfs_brain_node_t *** out_node_array,
2373 int * out_array_length,
2374 const char * repo_name,
2375 globus_off_t filesize,
2380 globus_gfs_brain_release_node(
2381 globus_i_gfs_brain_node_t * contact_node,
2382 globus_gfs_brain_reason_t reason);
2385 globus_gfs_brain_get_available(
2386 const char * user_id,
2387 const char * repo_name,
2391 globus_gfs_ipc_handle_get_contact_string(
2392 globus_gfs_ipc_handle_t ipc_handle,
2393 char ** contact_string);
2396 globus_gfs_ipc_init(
2397 globus_bool_t requester);
2403 globus_gfs_ipc_add_server(
2404 globus_xio_server_t server_handle);
2406 extern globus_gfs_ipc_iface_t globus_gfs_ipc_default_iface;
2421 #define GFS_ACL_INTERFACE_VERSION 1000
2424 typedef struct globus_i_gfs_acl_handle_s * globus_gfs_acl_handle_t;
2429 enum globus_gfs_acl_action_e
2431 GFS_ACL_ACTION_DELETE = 2,
2433 GFS_ACL_ACTION_WRITE,
2435 GFS_ACL_ACTION_CREATE,
2437 GFS_ACL_ACTION_READ,
2439 GFS_ACL_ACTION_LOOKUP
2444 enum globus_gfs_acl_status_e
2447 GLOBUS_GFS_ACL_COMPLETE = 1,
2449 GLOBUS_GFS_ACL_PENDING
2454 enum globus_gfs_acl_collection_type_e
2456 GFS_ACL_COLLECTION_MAPPED = 1,
2457 GFS_ACL_COLLECTION_GUEST
2461 enum globus_gfs_acl_access_method_e
2464 GFS_ACL_ACCESS_SERVICE = 1,
2466 GFS_ACL_ACCESS_HTTPS
2481 (*globus_gfs_acl_init_t)(
2483 globus_gfs_acl_handle_t acl_handle,
2484 globus_result_t * out_res);
2496 (*globus_gfs_acl_authorize_t)(
2499 const char * object,
2500 globus_gfs_acl_handle_t acl_handle,
2501 globus_result_t * out_res);
2506 (*globus_gfs_acl_destroy_t)(
2516 typedef struct globus_gfs_acl_module_s
2519 globus_gfs_acl_init_t init_func;
2520 globus_gfs_acl_authorize_t authorize_func;
2521 globus_gfs_acl_destroy_t destroy_func;
2522 } globus_gfs_acl_module_t;
2536 enum globus_gfs_acl_info_e
2544 GFS_ACL_INFO_COLLECTION_ID,
2553 GFS_ACL_INFO_COLLECTION_TYPE,
2564 GFS_ACL_INFO_METHOD,
2572 GFS_ACL_INFO_MAPPED_USERNAME,
2582 GFS_ACL_INFO_MAPPED_IDENTITY_ID,
2595 GFS_ACL_INFO_MAPPED_IDENTITY_IDS,
2607 GFS_ACL_INFO_GUEST_IDENTITY_IDS,
2619 GFS_ACL_INFO_TASK_ID,
2628 GFS_ACL_INFO_SESSION_ID
2634 globus_gfs_acl_get_info(
2635 globus_gfs_acl_handle_t acl_handle,
2643 globus_gfs_acl_finished(
2644 globus_gfs_acl_handle_t acl_handle,
2645 globus_result_t result);
2650 globus_gfs_acl_action_to_string(
2660 (*globus_i_gfs_config_set_string_cb_t)(
2661 const char * option_name,
2667 (*globus_i_gfs_config_set_int_cb_t)(
2668 const char * option_name,
2675 globus_bool_t enabled;
2677 } globus_i_gfs_config_option_cb_ent_t;
2680 globus_gfs_config_enable_cb(
2681 globus_i_gfs_config_option_cb_ent_t * cb_handle,
2682 globus_bool_t enabled);
2685 globus_gfs_config_add_cb(
2686 globus_i_gfs_config_option_cb_ent_t ** cb_handle,
2692 globus_gfs_config_get_bool(
2693 const char * option_name);
2696 globus_gfs_config_get_string(
2697 const char * option_name);
2700 globus_gfs_config_get_list(
2701 const char * option_name);
2704 globus_gfs_config_get(
2705 const char * option_name);
2708 globus_gfs_config_get_int(
2709 const char * option_name);
2712 globus_gfs_config_set_int(
2717 globus_gfs_config_set_bool(
2722 globus_gfs_config_set_ptr(
2727 globus_gfs_config_inc_int(
2732 globus_gfs_base64_encode(
2733 const unsigned char * inbuf,
2734 globus_size_t in_len,
2735 globus_byte_t * outbuf,
2736 globus_size_t * out_len);
2739 globus_gfs_base64_decode(
2740 const unsigned char * inbuf,
2741 globus_byte_t * outbuf,
2742 globus_size_t * out_len);
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:1190
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:1012
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
void globus_gridftp_server_finished_stat_ext(globus_gfs_operation_t op, globus_result_t result, globus_gfs_stat_ext_t *stat_array, int stat_count, size_t stat_size, globus_bool_t final)
Definition: globus_i_gfs_data.c:13841
globus_result_t globus_gridftp_server_set_staging_support(globus_gfs_operation_t op, const char *stage_str)
Definition: globus_i_gfs_data.c:15244
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:14486
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:15224
void(* globus_gfs_storage_init_t)(globus_gfs_operation_t op, globus_gfs_session_info_t *session_info)
Definition: globus_gridftp_server.h:655
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_result_t globus_gridftp_server_set_mlst_facts(globus_gfs_operation_t op, const char *fact_names)
Definition: globus_i_gfs_data.c:15271
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
globus_result_t globus_gridftp_server_set_info_string(globus_gfs_operation_t op, const char *info_str)
Definition: globus_i_gfs_data.c:15305
Definition: globus_gridftp_server_control.h:204