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:"
38extern globus_module_descriptor_t globus_i_gfs_module;
39#define GLOBUS_GRIDFTP_SERVER_MODULE (&globus_i_gfs_module)
41extern globus_extension_registry_t globus_i_gfs_dsi_registry;
42#define GLOBUS_GFS_DSI_REGISTRY &globus_i_gfs_dsi_registry
44extern globus_extension_registry_t globus_i_gfs_acl_registry;
45#define GLOBUS_GFS_ACL_REGISTRY &globus_i_gfs_acl_registry
51typedef 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;
66typedef 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
96typedef 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;
199typedef 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;
211typedef enum globus_gfs_layout_type_e
213 GLOBUS_GFS_LAYOUT_PARTITIONED = 1,
214 GLOBUS_GFS_LAYOUT_BLOCKED
215} globus_gfs_layout_type_t;
241typedef globus_gridftp_server_control_stat_t globus_gfs_stat_t;
250typedef struct globus_i_gfs_op_info_s * globus_gfs_op_info_t;
258typedef 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;
277typedef struct globus_gfs_cmd_finshed_info_s
280 globus_gfs_command_type_t command;
285} globus_gfs_cmd_finshed_info_t;
292typedef struct globus_gfs_stat_finished_info_s
303 globus_gfs_stat_t * stat_array;
304} globus_gfs_stat_finished_info_t;
311typedef struct globus_gfs_session_finished_info_s
319} globus_gfs_session_finished_info_t;
326typedef struct globus_gfs_transfer_finished_info_s
329 globus_off_t bytes_transferred;
331} globus_gfs_transfer_finished_info_t;
338typedef 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;
370typedef 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;
408typedef 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
466typedef 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;
505typedef 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;
555typedef 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;
572typedef 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;
587typedef 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;
593typedef struct globus_i_gfs_brain_node_s
599 int current_connection;
601} globus_i_gfs_brain_node_t;
616typedef struct globus_l_gfs_data_operation_s * globus_gfs_operation_t;
619typedef void * globus_gfs_session_config_t;
636 globus_gfs_operation_t op,
637 globus_gfs_session_info_t * session_info);
644(*globus_gfs_storage_destroy_t)(
653(*globus_gfs_storage_transfer_t)(
654 globus_gfs_operation_t op,
655 globus_gfs_transfer_info_t * transfer_info,
665(*globus_gfs_storage_command_t)(
666 globus_gfs_operation_t op,
667 globus_gfs_command_info_t * command_info,
676(*globus_gfs_storage_stat_t)(
677 globus_gfs_operation_t op,
678 globus_gfs_stat_info_t * stat_info,
688(*globus_gfs_storage_data_t)(
689 globus_gfs_operation_t op,
690 globus_gfs_data_info_t * data_info,
701(*globus_gfs_storage_data_destroy_t)(
713(*globus_gfs_storage_trev_t)(
714 globus_gfs_event_info_t * event_info,
724(*globus_gfs_storage_set_cred_t)(
725 gss_cred_id_t del_cred,
735(*globus_gfs_storage_buffer_send_t)(
737 globus_byte_t * buffer,
738 globus_size_t buffer_len,
751typedef globus_result_t
752(*globus_gfs_storage_realpath_t)(
753 const char * in_path,
754 char ** out_realpath,
758#define GLOBUS_GFS_DSI_DESCRIPTOR_SENDER (1 << 0)
759#define GLOBUS_GFS_DSI_DESCRIPTOR_BLOCKING (1 << 1)
760#define GLOBUS_GFS_DSI_DESCRIPTOR_HAS_REALPATH (1 << 2)
761#define GLOBUS_GFS_DSI_DESCRIPTOR_REQUIRES_ORDERED_DATA (1 << 3)
762#define GLOBUS_GFS_DSI_DESCRIPTOR_SETS_ERROR_RESPONSES (1 << 4)
763#define GLOBUS_GFS_DSI_DESCRIPTOR_SAFE_RDEL (1 << 5)
764#define GLOBUS_GFS_DSI_DESCRIPTOR_USERNAME_INCLUDES_DOMAIN (1 << 6)
765#define GLOBUS_GFS_DSI_DESCRIPTOR_DYN_SENDER (1 << 7)
766#define GLOBUS_GFS_DSI_DESCRIPTOR_SIZE_NOT_REQUIRED (1 << 8)
775typedef struct globus_gfs_storage_iface_s
781 globus_gfs_storage_destroy_t destroy_func;
784 globus_gfs_storage_transfer_t list_func;
785 globus_gfs_storage_transfer_t send_func;
786 globus_gfs_storage_transfer_t recv_func;
787 globus_gfs_storage_trev_t trev_func;
790 globus_gfs_storage_data_t active_func;
791 globus_gfs_storage_data_t passive_func;
792 globus_gfs_storage_data_destroy_t data_destroy_func;
794 globus_gfs_storage_command_t command_func;
795 globus_gfs_storage_stat_t stat_func;
797 globus_gfs_storage_set_cred_t set_cred_func;
798 globus_gfs_storage_buffer_send_t buffer_send_func;
799 globus_gfs_storage_realpath_t realpath_func;
800} globus_gfs_storage_iface_t;
816 globus_gfs_operation_t op,
817 globus_result_t result,
818 globus_gfs_finished_info_t * finished_info);
828globus_gridftp_server_operation_event(
829 globus_gfs_operation_t op,
830 globus_result_t result,
831 globus_gfs_event_info_t * event_info);
839globus_gridftp_server_begin_transfer(
840 globus_gfs_operation_t op,
850globus_gridftp_server_finished_transfer(
851 globus_gfs_operation_t op,
852 globus_result_t result);
861globus_gridftp_server_finished_session_start(
862 globus_gfs_operation_t op,
863 globus_result_t result,
876globus_gridftp_server_finished_command(
877 globus_gfs_operation_t op,
878 globus_result_t result,
879 char * command_response);
881globus_gridftp_server_intermediate_command(
882 globus_gfs_operation_t op,
883 globus_result_t result,
884 char * command_response);
892globus_gridftp_server_finished_stat(
893 globus_gfs_operation_t op,
894 globus_result_t result,
895 globus_gfs_stat_t * stat_array,
899globus_gridftp_server_finished_stat_partial(
900 globus_gfs_operation_t op,
901 globus_result_t result,
902 globus_gfs_stat_t * stat_array,
906globus_gridftp_server_finished_stat_custom_list(
907 globus_gfs_operation_t op,
908 globus_result_t result,
909 globus_byte_t * list_response,
910 globus_size_t list_response_len,
911 globus_bool_t free_buffer);
919globus_gridftp_server_finished_active_data(
920 globus_gfs_operation_t op,
921 globus_result_t result,
923 globus_bool_t bi_directional);
931globus_gridftp_server_finished_passive_data(
932 globus_gfs_operation_t op,
933 globus_result_t result,
935 globus_bool_t bi_directional,
936 const char ** contact_strings,
956 globus_gfs_operation_t op,
957 globus_result_t result,
958 globus_byte_t * buffer,
959 globus_size_t nbytes,
963globus_gridftp_server_register_write(
964 globus_gfs_operation_t op,
965 globus_byte_t * buffer,
966 globus_size_t length,
982(*globus_gridftp_server_read_cb_t)(
983 globus_gfs_operation_t op,
984 globus_result_t result,
985 globus_byte_t * buffer,
986 globus_size_t nbytes,
992globus_gridftp_server_register_read(
993 globus_gfs_operation_t op,
994 globus_byte_t * buffer,
995 globus_size_t length,
996 globus_gridftp_server_read_cb_t callback,
1035globus_gridftp_server_add_command(
1036 globus_gfs_operation_t op,
1037 const char * command_name,
1041 const char * help_string,
1042 globus_bool_t has_pathname,
1061 globus_gfs_operation_t op,
1062 const char * cksm_str);
1076 GLOBUS_GFS_OP_INFO_CMD_ARGS = 1
1086globus_gridftp_server_query_op_info(
1087 globus_gfs_operation_t op,
1088 globus_gfs_op_info_t op_info,
1103globus_gridftp_server_get_recv_attr_string(
1104 globus_gfs_operation_t op,
1105 const char * requested_attr,
1115globus_gridftp_server_get_recv_modification_time(
1116 globus_gfs_operation_t op,
1130globus_gridftp_server_update_bytes_written(
1131 globus_gfs_operation_t op,
1132 globus_off_t offset,
1133 globus_off_t length);
1146globus_gridftp_server_update_bytes_recvd(
1147 globus_gfs_operation_t op,
1148 globus_off_t length);
1161globus_gridftp_server_update_range_recvd(
1162 globus_gfs_operation_t op,
1163 globus_off_t offset,
1164 globus_off_t length);
1173globus_gridftp_server_get_optimal_concurrency(
1174 globus_gfs_operation_t op,
1185globus_gridftp_server_get_block_size(
1186 globus_gfs_operation_t op,
1187 globus_size_t * block_size);
1196globus_gridftp_server_get_stripe_block_size(
1197 globus_gfs_operation_t op,
1198 globus_size_t * stripe_block_size);
1208globus_gridftp_server_get_session_username(
1209 globus_gfs_operation_t op,
1221globus_gridftp_server_get_delegated_cred(
1222 globus_gfs_operation_t op,
1223 gss_cred_id_t * del_cred);
1237globus_gridftp_server_get_sec_context(
1238 globus_gfs_operation_t op,
1239 gss_ctx_id_t * context);
1258globus_gridftp_server_set_ordered_data(
1259 globus_gfs_operation_t op,
1260 globus_bool_t ordered_data);
1263globus_gridftp_server_get_ordered_data(
1264 globus_gfs_operation_t op,
1265 globus_bool_t * ordered_data);
1274globus_gridftp_server_get_config_string(
1275 globus_gfs_operation_t op,
1276 char ** config_string);
1285globus_gridftp_server_get_config_data(
1286 globus_gfs_operation_t op,
1288 char ** config_data);
1291globus_gridftp_server_session_get_config_data(
1292 globus_gfs_session_config_t session_conf_handle,
1294 char ** config_data);
1297globus_gridftp_server_get_session_config_handle(
1298 globus_gfs_operation_t op,
1299 globus_gfs_session_config_t * out_session_conf_handle);
1302globus_gfs_data_get_file_stack_list(
1303 globus_gfs_operation_t in_op,
1304 globus_list_t ** out_list);
1307globus_gridftp_server_get_update_interval(
1308 globus_gfs_operation_t op,
1318globus_gridftp_server_get_task_id(
1319 globus_gfs_operation_t op,
1331globus_gridftp_server_get_read_range(
1332 globus_gfs_operation_t op,
1333 globus_off_t * offset,
1334 globus_off_t * length);
1347globus_gridftp_server_get_write_range(
1348 globus_gfs_operation_t op,
1349 globus_off_t * offset,
1350 globus_off_t * length);
1357 GLOBUS_GFS_LOG_ERR = 0x01,
1358 GLOBUS_GFS_LOG_WARN = 0x02,
1359 GLOBUS_GFS_LOG_TRANSFER = 0x04,
1360 GLOBUS_GFS_LOG_INFO = 0x08,
1361 GLOBUS_GFS_LOG_DUMP = 0x10,
1362 GLOBUS_GFS_LOG_ALL = 0xFF,
1363 GLOBUS_GFS_LOG_AUDIT = 0x100
1364} globus_gfs_log_type_t;
1367globus_gfs_log_message(
1368 globus_gfs_log_type_t type,
1369 const char * format,
1373globus_gfs_log_result(
1374 globus_gfs_log_type_t type,
1376 globus_result_t result);
1381 GLOBUS_GFS_DEBUG_TRACE = 8,
1382 GLOBUS_GFS_DEBUG_INFO = 16,
1383 GLOBUS_GFS_DEBUG_STATE = 32
1387#define GlobusGFSName(func) static const char * _gfs_name __attribute__((__unused__)) = #func
1389#define GlobusGFSName(func) static const char * _gfs_name = #func
1392GlobusDebugDeclare(GLOBUS_GRIDFTP_SERVER);
1394#define GlobusGFSDebugPrintf(level, message) \
1395 GlobusDebugPrintf(GLOBUS_GRIDFTP_SERVER, level, message)
1398#define GlobusGFSDebugInfoF(_msg) \
1401 GlobusGFSDebugPrintf( \
1402 GLOBUS_GFS_DEBUG_INFO, \
1403 ("[%s:%d] (pid=%d) [%s] ", __FILE__, __LINE__, getpid(), __func__));\
1404 GlobusGFSDebugPrintf( \
1405 GLOBUS_GFS_DEBUG_INFO, \
1409#define GlobusGFSDebugResultT(_result, _msg) \
1412 char * _err_str = globus_error_print_friendly( \
1413 globus_error_peek(_result)); \
1414 GlobusGFSDebugInfoF(("%s: %s\n", _msg, _err_str)); \
1418#define GlobusGFSDebugInfo(_msg) \
1419 GlobusGFSDebugPrintf( \
1420 GLOBUS_GFS_DEBUG_INFO, \
1421 ("[%s] %s\n", __func__, _msg))
1423#define GlobusGFSDebugEnter() \
1424 GlobusGFSDebugPrintf( \
1425 GLOBUS_GFS_DEBUG_TRACE, \
1426 ("[%s] Entering\n", __func__))
1428#define GlobusGFSDebugExitResult(res) \
1429 GlobusGFSDebugPrintf( \
1430 GLOBUS_GFS_DEBUG_TRACE, \
1431 ("[%s] Exiting%s\n", \
1433 (res != GLOBUS_SUCCESS) ? " with error" : ""))
1435#define GlobusGFSDebugExit() \
1436 GlobusGFSDebugPrintf( \
1437 GLOBUS_GFS_DEBUG_TRACE, \
1438 ("[%s] Exiting\n", __func__))
1440#define GlobusGFSDebugState(_state) \
1441 GlobusGFSDebugPrintf( \
1442 GLOBUS_GFS_DEBUG_INFO, \
1443 ("[%s] State: %d\n", __func__, _state))
1445#define GlobusGFSDebugExitWithError() \
1446 GlobusGFSDebugPrintf( \
1447 GLOBUS_GFS_DEBUG_TRACE, \
1448 ("[%s] Exiting with error\n", __func__))
1450#define GlobusGFSErrorParameter(mem_name) \
1451 globus_error_put(GlobusGFSErrorObjParameter(mem_name))
1453#define GlobusGFSErrorIPC() \
1454 globus_error_put(GlobusGFSErrorObjIPC())
1456#define GlobusGFSErrorObjIPC() \
1457 globus_error_construct_error( \
1460 GLOBUS_GFS_ERROR_MEMORY, \
1464 "IPC Communication error.")
1466#define GlobusGFSErrorObjParameter(param_name) \
1467 globus_error_construct_error( \
1470 GLOBUS_GFS_ERROR_PARAMETER, \
1474 "invalid parameter: %s", \
1477#define GlobusGFSErrorSystemError(system_func, system_errno) \
1478 globus_error_put(GlobusGFSErrorObjSystemError(\
1479 (system_func), (system_errno)))
1480#define GlobusGFSErrorObjSystemError(system_func, system_errno) \
1481 globus_i_gfs_error_system( \
1482 0, (system_errno), \
1483 "System error%s%s", \
1484 (system_func) != NULL ? " in " : "", \
1485 (system_func) != NULL ? (system_func) : "")
1487#define GlobusGFSErrorWrapFailed(failed_func, result) \
1488 globus_error_put(GlobusGFSErrorObjWrapFailed(failed_func, result))
1490#define GlobusGFSErrorObjWrapFailed(failed_func, result) \
1491 globus_error_construct_error( \
1493 globus_error_get((result)), \
1494 GLOBUS_GFS_ERROR_WRAPPED, \
1501#define GlobusGFSErrorData(reason) \
1502 globus_error_put(GlobusGFSErrorObjData(reason))
1504#define GlobusGFSErrorObjData(reason) \
1505 globus_error_construct_error( \
1508 GLOBUS_GFS_ERROR_DATA, \
1515#define GlobusGFSErrorGeneric(reason) \
1516 globus_error_put(GlobusGFSErrorObjGeneric(reason))
1518#define GlobusGFSErrorObjGeneric(reason) \
1519 globus_error_construct_error( \
1522 GLOBUS_GFS_ERROR_GENERIC, \
1531 globus_module_descriptor_t * base_source,
1532 globus_object_t * base_cause,
1534 const char *response_error_code,
1540 globus_object_t * error,
1541 globus_module_descriptor_t * base_source,
1542 globus_object_t * base_cause,
1544 const char * response_error_code,
1549 globus_object_t * error,
1550 globus_module_descriptor_t * base_source,
1551 globus_object_t * base_cause,
1553 const char * response_error_code,
1559 globus_object_t * error);
1563 globus_object_t * error);
1567 globus_object_t * error,
1568 const char * response_error_code);
1570extern const globus_object_type_t
1573#define GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE \
1574 (&GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION)
1577#define GlobusGFSErrorFtpResponse(cause, code, response_error_code, ...) \
1578 globus_error_put(GlobusGFSErrorObjFtpResponse( \
1579 cause, code, response_error_code, __VA_ARGS__))
1581#define GlobusGFSErrorObjFtpResponse(cause, code, response_error_code, ...) \
1582 globus_gfs_ftp_response_error_construct( \
1586 response_error_code, \
1592#define GlobusGFSErrorMemory(mem) \
1593 globus_error_put(GlobusGFSErrorObjMemory(mem))
1594#define GlobusGFSErrorObjMemory(mem) \
1595 GlobusGFSErrorObjSystemError("malloc", errno)
1597#define GlobusGFSErrorObj(cause, response_code, ...) \
1598 GlobusGFSErrorObjFtpResponse(cause, response_code, __VA_ARGS__)
1600#define GlobusGFSErrorPathNotFound(p) \
1601 globus_error_put(GlobusGFSErrorObjPathNotFound(NULL, p))
1602#define GlobusGFSErrorObjPathNotFound(cause, p) \
1603 GlobusGFSErrorObj((cause), 550, "PATH_NOT_FOUND", \
1605 ((p) != NULL) ? "GridFTP-Path: \"" : "", \
1606 ((p) != NULL) ? (p) : "", \
1607 ((p) != NULL) ? "\"" : "")
1609#define GlobusGFSErrorIncorrectChecksum(computed, expected) \
1610 globus_error_put(GlobusGFSErrorObjIncorrectChecksum( \
1611 NULL, computed, expected))
1612#define GlobusGFSErrorObjIncorrectChecksum(cause, computed, expected) \
1613 GlobusGFSErrorObj( \
1616 "INCORRECT_CHECKSUM", \
1617 "GridFTP-Computed-Checksum: %s\n" \
1618 "GridFTP-Expected-Checksum: %s", (computed), (expected))
1620#define GlobusGFSErrorMultipartUploadNotFound() \
1621 globus_error_put(GlobusGFSErrorObjMultipartUploadNotFound(NULL))
1622#define GlobusGFSErrorObjMultipartUploadNotFound(cause) \
1623 GlobusGFSErrorObj(cause, 553, "MULTI_PART_UPLOAD_NOT_FOUND", NULL)
1625#define GlobusGFSErrorAppendNotSupported() \
1626 globus_error_put(GlobusGFSErrorObjAppendNotSupported(NULL))
1627#define GlobusGFSErrorObjAppendNotSupported(cause) \
1628 GlobusGFSErrorObj((cause), 553, "APPEND_NOT_SUPPORTED", NULL)
1630#define GlobusGFSErrorAmbiguousPath(ambiguity) \
1631 globus_error_put(GlobusGFSErrorObjAmbiguousPath(NULL, ambiguity))
1632#define GlobusGFSErrorObjAmbiguousPath(cause, ambiguity) \
1633 GlobusGFSErrorObj( \
1637 "GridFTP-Path: %s", \
1640#define GlobusGFSErrorTooBusy() \
1641 globus_error_put(GlobusGFSErrorObjTooBusy(NULL))
1642#define GlobusGFSErrorObjTooBusy(cause) \
1643 GlobusGFSErrorObj((cause), 451, "TOO_BUSY", NULL)
1645#define GlobusGFSErrorDataChannelAuthenticationFailure() \
1646 globus_error_put(GlobusGFSErrorObjDataChannelAuthenticationFailure( \
1648#define GlobusGFSErrorObjDataChannelAuthenticationFailure(cause) \
1649 GlobusGFSErrorObj((cause), 425, \
1650 "DATA_CHANNEL_AUTHENTICATION_FAILURE", NULL)
1652#define GlobusGFSErrorDataChannelCommunicationFailure() \
1653 globus_error_put(GlobusGFSErrorObjDataChannelCommunicationFailure( \
1655#define GlobusGFSErrorObjDataChannelCommunicationFailure(cause) \
1656 GlobusGFSErrorObj((cause), 425, \
1657 "DATA_CHANNEL_COMMUNICATION_FAILURE", NULL)
1659#define GlobusGFSErrorLoginDenied() \
1660 globus_error_put(GlobusGFSErrorObjLoginDenied(NULL))
1661#define GlobusGFSErrorObjLoginDenied(cause) \
1662 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", NULL)
1664#define GlobusGFSErrorLoginDeniedJSON(message, json) \
1665 globus_error_put(GlobusGFSErrorObjLoginDeniedJSON(NULL, message, json))
1666#define GlobusGFSErrorObjLoginDeniedJSON(cause, message, json) \
1667 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", \
1668 "GridFTP-Message: %s\n" \
1669 "GridFTP-JSON-Result: %s", \
1670 (message) ? (message) : "Message not available", (json))
1672#define GlobusGFSErrorEndpointError() \
1673 globus_error_put(GlobusGFSErrorObjEndpointError(NULL))
1674#define GlobusGFSErrorObjEndpointError(cause) \
1675 GlobusGFSErrorObj((cause), 530, "ENDPOINT_ERROR", NULL)
1677#define GlobusGFSErrorPermissionDenied() \
1678 globus_error_put(GlobusGFSErrorObjPermissionDenied(NULL))
1679#define GlobusGFSErrorObjPermissionDenied(cause) \
1680 GlobusGFSErrorObj((cause), 550, "PERMISSION_DENIED", NULL)
1682#define GlobusGFSErrorQuotaExceeded() \
1683 globus_error_put(GlobusGFSErrorObjQuotaExceeded(NULL))
1684#define GlobusGFSErrorObjQuotaExceeded(cause) \
1685 GlobusGFSErrorObj((cause), 451, "QUOTA_EXCEEDED", NULL)
1687#define GlobusGFSErrorNoSpaceLeft() \
1688 globus_error_put(GlobusGFSErrorObjNoSpaceLeft(NULL))
1689#define GlobusGFSErrorObjNoSpaceLeft(cause) \
1690 GlobusGFSErrorObj((cause), 451, "NO_SPACE_LEFT", NULL)
1692#define GlobusGFSErrorInvalidPathName(name) \
1693 globus_error_put(GlobusGFSErrorObjInvalidPathName(NULL, name))
1694#define GlobusGFSErrorObjInvalidPathName(cause, name) \
1695 GlobusGFSErrorObj((cause), 553, "INVALID_PATH_NAME", \
1696 "GridFTP-Path: %s", name)
1698#define GlobusGFSErrorPathExists(name) \
1699 globus_error_put(GlobusGFSErrorObjPathExists(NULL, name))
1700#define GlobusGFSErrorObjPathExists(cause, name) \
1701 GlobusGFSErrorObj((cause), 553, "PATH_EXISTS", \
1702 "GridFTP-Path: %s", name)
1704#define GlobusGFSErrorIsADirectory(name) \
1705 globus_error_put(GlobusGFSErrorObjIsADirectory(NULL, name))
1706#define GlobusGFSErrorObjIsADirectory(cause, name) \
1707 GlobusGFSErrorObj((cause), 553, "IS_A_DIRECTORY", \
1708 "GridFTP-Path: %s", name)
1710#define GlobusGFSErrorNotADirectory(name) \
1711 globus_error_put(GlobusGFSErrorObjNotADirectory(NULL, name))
1712#define GlobusGFSErrorObjNotADirectory(cause, name) \
1713 GlobusGFSErrorObj((cause), 553, "NOT_A_DIRECTORY", \
1714 "GridFTP-Path: %s", name)
1716#define GlobusGFSErrorCRLError() \
1717 globus_error_put(GlobusGFSErrorObjCRLError(NULL))
1718#define GlobusGFSErrorObjCRLError(cause) \
1719 GlobusGFSErrorObj((cause), 530, "CRL_ERROR", NULL)
1721#define GlobusGFSErrorInternalError(generic_string) \
1722 globus_error_put(GlobusGFSErrorObjInternalError( \
1723 NULL, (generic_string)))
1724#define GlobusGFSErrorObjInternalError(cause, generic_string) \
1725 GlobusGFSErrorObj((cause), 500, "INTERNAL_ERROR", \
1727 ((generic_string) != NULL) ? "GridFTP-Error: " : "", \
1728 ((generic_string) != NULL) ? generic_string : "")
1730#define GlobusGFSErrorNotImplemented() \
1731 globus_error_put(GlobusGFSErrorObjNotImplemented(NULL))
1732#define GlobusGFSErrorObjNotImplemented(cause) \
1733 GlobusGFSErrorObj((cause), 500, "NOT_IMPLEMETED", NULL)
1735#define GlobusGFSErrorNotImplementedFeature(feature) \
1736 globus_error_put(GlobusGFSErrorObjNotImplementedFeature(NULL, feature))
1737#define GlobusGFSErrorObjNotImplementedFeature(cause, feature) \
1738 GlobusGFSErrorObj((cause), 500, \
1739 "NOT_IMPLEMETED", "GridFTP-Feature: %s", (feature))
1741#define GlobusGFSErrorConfigurationError() \
1742 globus_error_put(GlobusGFSErrorObjConfigurationError(NULL))
1743#define GlobusGFSErrorObjConfigurationError(cause) \
1744 GlobusGFSErrorObj((cause), 500, "CONFIGURATION_ERROR", NULL)
1753#define GLOBUS_GFS_BUILTIN_CHECKSUM_SUPPORT "MD5:10;ADLER32:10;SHA1:10;CRC32C:10;SHA256:12;SHA512:11;QuickXORHex:12;Dropbox:12;"
1755typedef struct globus_l_gfs_checksum_state_s * globus_gfs_checksum_state_t;
1758globus_gfs_checksum_init(
1759 const char * algorithm,
1760 globus_gfs_checksum_state_t * state);
1763globus_gfs_checksum_update(
1764 globus_gfs_checksum_state_t state,
1765 const unsigned char * buffer,
1769globus_gfs_checksum_finalize(
1770 globus_gfs_checksum_state_t state,
1771 char ** checksum_str);
1779typedef struct globus_i_gfs_ipc_handle_s * globus_gfs_ipc_handle_t;
1804(*globus_gfs_ipc_callback_t)(
1805 globus_gfs_ipc_handle_t ipc_handle,
1806 globus_result_t result,
1807 globus_gfs_finished_info_t * reply,
1811(*globus_gfs_ipc_event_callback_t)(
1812 globus_gfs_ipc_handle_t ipc_handle,
1813 globus_result_t result,
1814 globus_gfs_event_info_t * reply,
1818(*globus_gfs_ipc_close_callback_t)(
1819 globus_gfs_ipc_handle_t ipc_handle,
1820 globus_result_t result,
1824(*globus_gfs_ipc_open_callback_t)(
1825 globus_gfs_ipc_handle_t ipc_handle,
1826 globus_result_t result,
1827 globus_gfs_finished_info_t * reply,
1831(*globus_gfs_ipc_error_callback_t)(
1832 globus_gfs_ipc_handle_t ipc_handle,
1833 globus_result_t result,
1837globus_gfs_ipc_reply_finished(
1838 globus_gfs_ipc_handle_t ipc_handle,
1839 globus_gfs_finished_info_t * reply);
1842globus_gfs_ipc_reply_event(
1843 globus_gfs_ipc_handle_t ipc_handle,
1844 globus_gfs_event_info_t * reply);
1847globus_gfs_ipc_reply_session(
1848 globus_gfs_ipc_handle_t ipc_handle,
1849 globus_gfs_finished_info_t * reply);
1863(*globus_i_gfs_ipc_data_callback_t)(
1864 globus_gfs_finished_info_t * reply,
1868(*globus_i_gfs_ipc_data_event_callback_t)(
1869 globus_gfs_event_info_t * reply,
1873(*globus_i_gfs_ipc_done_callback_t)(
1875 globus_result_t result);
1884(*globus_gfs_ipc_iface_session_start_t)(
1885 globus_gfs_ipc_handle_t ipc_handle,
1886 const gss_ctx_id_t context,
1887 globus_gfs_session_info_t * session_info,
1888 globus_i_gfs_ipc_data_callback_t cb,
1892globus_gfs_ipc_start_session(
1893 globus_gfs_ipc_handle_t ipc_handle,
1894 globus_gfs_session_info_t * session_info,
1895 globus_gfs_ipc_callback_t cb,
1900(*globus_gfs_ipc_iface_session_stop_t)(
1901 globus_gfs_ipc_handle_t ipc_handle,
1902 void * session_handle);
1905globus_gfs_ipc_iface_session_stop(
1906 globus_gfs_ipc_handle_t ipc_handle,
1907 void * session_handle);
1910(*globus_gfs_ipc_iface_set_cred_t)(
1911 globus_gfs_ipc_handle_t ipc_handle,
1912 void * session_handle,
1913 gss_cred_id_t del_cred);
1916globus_gfs_ipc_set_cred(
1917 globus_gfs_ipc_handle_t ipc_handle,
1918 gss_cred_id_t del_cred);
1921(*globus_gfs_ipc_iface_buffer_send_t)(
1922 globus_gfs_ipc_handle_t ipc_handle,
1923 void * session_handle,
1924 globus_byte_t * buffer,
1926 globus_size_t buffer_len);
1929globus_gfs_ipc_request_buffer_send(
1930 globus_gfs_ipc_handle_t ipc_handle,
1931 globus_byte_t * buffer,
1933 globus_size_t buffer_len);
1941(*globus_gfs_ipc_iface_recv_t)(
1942 globus_gfs_ipc_handle_t ipc_handle,
1943 void * session_handle,
1945 globus_gfs_transfer_info_t * recv_info,
1946 globus_i_gfs_ipc_data_callback_t cb,
1947 globus_i_gfs_ipc_data_event_callback_t event_cb,
1951globus_gfs_ipc_request_recv(
1952 globus_gfs_ipc_handle_t ipc_handle,
1953 globus_gfs_transfer_info_t * recv_info,
1954 globus_gfs_ipc_callback_t cb,
1955 globus_gfs_ipc_event_callback_t event_cb,
1964(*globus_gfs_ipc_iface_send_t)(
1965 globus_gfs_ipc_handle_t ipc_handle,
1966 void * session_handle,
1968 globus_gfs_transfer_info_t * send_info,
1969 globus_i_gfs_ipc_data_callback_t cb,
1970 globus_i_gfs_ipc_data_event_callback_t event_cb,
1974globus_gfs_ipc_request_send(
1975 globus_gfs_ipc_handle_t ipc_handle,
1976 globus_gfs_transfer_info_t * send_info,
1977 globus_gfs_ipc_callback_t cb,
1978 globus_gfs_ipc_event_callback_t event_cb,
1982(*globus_gfs_ipc_iface_list_t)(
1983 globus_gfs_ipc_handle_t ipc_handle,
1984 void * session_handle,
1986 globus_gfs_transfer_info_t * list_info,
1987 globus_i_gfs_ipc_data_callback_t cb,
1988 globus_i_gfs_ipc_data_event_callback_t event_cb,
1992globus_gfs_ipc_request_list(
1993 globus_gfs_ipc_handle_t ipc_handle,
1994 globus_gfs_transfer_info_t * data_info,
1995 globus_gfs_ipc_callback_t cb,
1996 globus_gfs_ipc_event_callback_t event_cb,
2005(*globus_gfs_ipc_iface_command_t)(
2006 globus_gfs_ipc_handle_t ipc_handle,
2007 void * session_handle,
2009 globus_gfs_command_info_t * cmd_info,
2010 globus_i_gfs_ipc_data_callback_t cb,
2014globus_gfs_ipc_request_command(
2015 globus_gfs_ipc_handle_t ipc_handle,
2016 globus_gfs_command_info_t * cmd_info,
2017 globus_gfs_ipc_callback_t cb,
2026(*globus_gfs_ipc_iface_active_data_t)(
2027 globus_gfs_ipc_handle_t ipc_handle,
2028 void * session_handle,
2030 globus_gfs_data_info_t * data_info,
2031 globus_i_gfs_ipc_data_callback_t cb,
2035globus_gfs_ipc_request_active_data(
2036 globus_gfs_ipc_handle_t ipc_handle,
2037 globus_gfs_data_info_t * data_info,
2038 globus_gfs_ipc_callback_t cb,
2047(*globus_gfs_ipc_iface_passive_data_t)(
2048 globus_gfs_ipc_handle_t ipc_handle,
2049 void * session_handle,
2051 globus_gfs_data_info_t * data_info,
2052 globus_i_gfs_ipc_data_callback_t cb,
2056globus_gfs_ipc_request_passive_data(
2057 globus_gfs_ipc_handle_t ipc_handle,
2058 globus_gfs_data_info_t * data_info,
2059 globus_gfs_ipc_callback_t cb,
2066(*globus_gfs_ipc_iface_stat_t)(
2067 globus_gfs_ipc_handle_t ipc_handle,
2068 void * session_handle,
2070 globus_gfs_stat_info_t * stat_info,
2071 globus_i_gfs_ipc_data_callback_t cb,
2075globus_gfs_ipc_request_stat(
2076 globus_gfs_ipc_handle_t ipc_handle,
2077 globus_gfs_stat_info_t * stat_info,
2078 globus_gfs_ipc_callback_t cb,
2085(*globus_gfs_ipc_iface_transfer_event_t)(
2086 globus_gfs_ipc_handle_t ipc_handle,
2087 void * session_handle,
2088 globus_gfs_event_info_t * event_info);
2092globus_gfs_ipc_request_transfer_event(
2093 globus_gfs_ipc_handle_t ipc_handle,
2094 globus_gfs_event_info_t * event_info);
2101(*globus_gfs_ipc_iface_data_destroy_t)(
2102 globus_gfs_ipc_handle_t ipc_handle,
2103 void * session_handle,
2107globus_gfs_ipc_request_data_destroy(
2108 globus_gfs_ipc_handle_t ipc_handle,
2111typedef struct globus_i_gfs_ipc_iface_s
2113 globus_gfs_ipc_iface_session_start_t session_start_func;
2114 globus_gfs_ipc_iface_session_stop_t session_stop_func;
2115 globus_gfs_ipc_iface_recv_t recv_func;
2116 globus_gfs_ipc_iface_send_t send_func;
2117 globus_gfs_ipc_iface_command_t command_func;
2118 globus_gfs_ipc_iface_active_data_t active_func;
2119 globus_gfs_ipc_iface_passive_data_t passive_func;
2120 globus_gfs_ipc_iface_data_destroy_t data_destroy_func;
2121 globus_gfs_ipc_iface_stat_t stat_func;
2122 globus_gfs_ipc_iface_list_t list_func;
2123 globus_gfs_ipc_iface_transfer_event_t transfer_event_func;
2124 globus_gfs_ipc_iface_set_cred_t set_cred;
2125 globus_gfs_ipc_iface_buffer_send_t buffer_send;
2126} globus_gfs_ipc_iface_t;
2137globus_gfs_ipc_handle_create(
2138 globus_gfs_ipc_iface_t * iface,
2139 globus_xio_system_socket_t system_handle,
2140 globus_i_gfs_ipc_done_callback_t done_cb,
2147globus_gfs_ipc_close(
2148 globus_gfs_ipc_handle_t ipc_handle,
2149 globus_gfs_ipc_close_callback_t cb,
2153globus_gfs_ipc_reply_close(
2154 globus_gfs_ipc_handle_t ipc_handle);
2157globus_gfs_ipc_session_stop(
2158 globus_gfs_ipc_handle_t ipc_handle);
2161globus_gfs_ipc_handle_connect(
2162 globus_gfs_session_info_t * session_info,
2163 globus_gfs_ipc_open_callback_t cb,
2165 globus_gfs_ipc_error_callback_t error_cb,
2166 void * error_user_arg);
2169globus_gfs_ipc_handle_connect_ex(
2170 globus_gfs_session_info_t * session_info,
2171 globus_gfs_ipc_open_callback_t cb,
2173 globus_gfs_ipc_error_callback_t error_cb,
2174 void * error_user_arg,
2175 globus_bool_t secure_ipc,
2177 const char *auth_mode,
2178 const char *subject,
2179 time_t connect_timeout,
2180 time_t idle_timeout,
2181 globus_bool_t inetd);
2184globus_gfs_ipc_handle_obtain(
2185 globus_gfs_session_info_t * session_info,
2186 globus_gfs_ipc_iface_t * iface,
2187 globus_gfs_ipc_open_callback_t cb,
2189 globus_gfs_ipc_error_callback_t error_cb,
2190 void * error_user_arg);
2195#define BRAIN_SYMBOL_NAME (void*)"gridftp_brain"
2196extern globus_extension_registry_t brain_i_registry;
2198typedef globus_result_t
2199(*globus_i_gfs_brain_select_nodes_func_t)(
2200 globus_i_gfs_brain_node_t *** out_node_array,
2201 int * out_array_length,
2202 const char * repo_name,
2203 globus_off_t filesize,
2207typedef globus_result_t
2208(*globus_i_gfs_brain_release_node_func_t)(
2209 globus_i_gfs_brain_node_t * contact_node,
2210 globus_gfs_brain_reason_t reason);
2212typedef globus_result_t
2213(*globus_i_gfs_brain_init_func_t)(
2214 globus_callback_func_t ready_cb,
2215 void * ready_cb_arg);
2218(*globus_i_gfs_brain_stop_func_t)();
2220typedef globus_result_t
2221(*globus_i_gfs_brain_get_available_func_t)(
2222 const char * user_id,
2223 const char * repo_name,
2227typedef struct globus_i_gfs_brain_module_s
2229 globus_i_gfs_brain_init_func_t init_func;
2230 globus_i_gfs_brain_stop_func_t stop_func;
2231 globus_i_gfs_brain_select_nodes_func_t select_func;
2232 globus_i_gfs_brain_release_node_func_t release_func;
2233 globus_i_gfs_brain_get_available_func_t available_func;
2234} globus_i_gfs_brain_module_t;
2236extern globus_i_gfs_brain_module_t globus_i_gfs_default_brain;
2239globus_gfs_brain_select_nodes(
2240 globus_i_gfs_brain_node_t *** out_node_array,
2241 int * out_array_length,
2242 const char * repo_name,
2243 globus_off_t filesize,
2248globus_gfs_brain_release_node(
2249 globus_i_gfs_brain_node_t * contact_node,
2250 globus_gfs_brain_reason_t reason);
2253globus_gfs_brain_get_available(
2254 const char * user_id,
2255 const char * repo_name,
2259globus_gfs_ipc_handle_get_contact_string(
2260 globus_gfs_ipc_handle_t ipc_handle,
2261 char ** contact_string);
2265 globus_bool_t requester);
2271globus_gfs_ipc_add_server(
2272 globus_xio_server_t server_handle);
2274extern globus_gfs_ipc_iface_t globus_gfs_ipc_default_iface;
2287typedef struct globus_i_gfs_acl_handle_s * globus_gfs_acl_handle_t;
2292typedef enum globus_gfs_acl_action_e
2295 GFS_ACL_ACTION_INIT = 1,
2297 GFS_ACL_ACTION_DELETE,
2299 GFS_ACL_ACTION_WRITE,
2301 GFS_ACL_ACTION_CREATE,
2303 GFS_ACL_ACTION_READ,
2305 GFS_ACL_ACTION_LOOKUP,
2309 GFS_ACL_ACTION_AUTHZ_ASSERT,
2312 GFS_ACL_ACTION_COMMIT,
2315} globus_gfs_acl_action_t;
2319typedef struct globus_gfs_acl_info_s
2326 gss_ctx_id_t context;
2327} globus_gfs_acl_info_t;
2331typedef struct globus_gfs_acl_object_desc_s
2349 globus_bool_t
final;
2352 globus_gfs_op_info_t op_info;
2353} globus_gfs_acl_object_desc_t;
2356typedef enum globus_gfs_acl_status_e
2359 GLOBUS_GFS_ACL_COMPLETE = 1,
2362 GLOBUS_GFS_ACL_WOULD_BLOCK
2363} globus_gfs_acl_status_t;
2380(*globus_gfs_acl_init_t)(
2382 globus_gfs_acl_info_t * acl_info,
2383 globus_gfs_acl_handle_t acl_handle,
2384 globus_result_t * out_res);
2396(*globus_gfs_acl_authorize_t)(
2398 globus_gfs_acl_action_t action,
2399 globus_gfs_acl_object_desc_t * object,
2400 globus_gfs_acl_info_t * acl_info,
2401 globus_gfs_acl_handle_t acl_handle,
2402 globus_result_t * out_res);
2406(*globus_gfs_acl_destroy_t)(
2412(*globus_gfs_acl_audit_t)(
2414 globus_gfs_acl_action_t action,
2415 globus_gfs_acl_object_desc_t * object,
2416 const char * message);
2420typedef struct globus_gfs_acl_module_s
2422 globus_gfs_acl_init_t init_func;
2423 globus_gfs_acl_authorize_t authorize_func;
2424 globus_gfs_acl_destroy_t destroy_func;
2425 globus_gfs_acl_audit_t audit_func;
2426} globus_gfs_acl_module_t;
2432globus_gfs_acl_authorized_finished(
2433 globus_gfs_acl_handle_t acl_handle,
2434 globus_result_t result);
2439globus_gfs_acl_action_to_string(
2440 globus_gfs_acl_action_t action);
2449(*globus_i_gfs_config_set_string_cb_t)(
2450 const char * option_name,
2456(*globus_i_gfs_config_set_int_cb_t)(
2457 const char * option_name,
2464 globus_bool_t enabled;
2466} globus_i_gfs_config_option_cb_ent_t;
2469globus_gfs_config_enable_cb(
2470 globus_i_gfs_config_option_cb_ent_t * cb_handle,
2471 globus_bool_t enabled);
2474globus_gfs_config_add_cb(
2475 globus_i_gfs_config_option_cb_ent_t ** cb_handle,
2481globus_gfs_config_get_bool(
2482 const char * option_name);
2485globus_gfs_config_get_string(
2486 const char * option_name);
2489globus_gfs_config_get_list(
2490 const char * option_name);
2493globus_gfs_config_get(
2494 const char * option_name);
2497globus_gfs_config_get_int(
2498 const char * option_name);
2501globus_gfs_config_set_int(
2506globus_gfs_config_set_bool(
2511globus_gfs_config_set_ptr(
2516globus_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
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_op_info_param_t
Definition globus_gridftp_server.h:1069
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:955
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:14434
int globus_gfs_error_get_ftp_response_code(globus_object_t *error)
Definition globus_i_gfs_ftp_response_error.c:252
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
globus_result_t globus_gridftp_server_set_checksum_support(globus_gfs_operation_t op, const char *cksm_str)
Definition globus_i_gfs_data.c:15165
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
void(* globus_gfs_storage_init_t)(globus_gfs_operation_t op, globus_gfs_session_info_t *session_info)
Definition globus_gridftp_server.h:635
enum globus_gfs_event_type_e globus_gfs_event_type_t
Event types.
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_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_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
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