29 #ifndef GLOBUS_GRIDFTP_SERVER_H 30 #define GLOBUS_GRIDFTP_SERVER_H 33 #include "globus_gridftp_server_control.h" 35 #ifdef TARGET_ARCH_WIN32 41 #ifndef TARGET_ARCH_WIN32 45 #define GLOBUS_MAPPING_STRING ":globus-mapping:" 48 #define GLOBUS_GRIDFTP_SERVER_MODULE (&globus_i_gfs_module) 50 extern globus_extension_registry_t globus_i_gfs_dsi_registry;
51 #define GLOBUS_GFS_DSI_REGISTRY &globus_i_gfs_dsi_registry 53 extern globus_extension_registry_t globus_i_gfs_acl_registry;
54 #define GLOBUS_GFS_ACL_REGISTRY &globus_i_gfs_acl_registry 60 typedef enum globus_gfs_error_type_e
62 GLOBUS_GFS_ERROR_MEMORY = 1,
63 GLOBUS_GFS_ERROR_PARAMETER,
64 GLOBUS_GFS_ERROR_SYSTEM_ERROR,
65 GLOBUS_GFS_ERROR_WRAPPED,
66 GLOBUS_GFS_ERROR_DATA,
67 GLOBUS_GFS_ERROR_GENERIC
68 } globus_gfs_error_type_t;
75 typedef enum globus_gfs_operation_type_e
77 GLOBUS_GFS_OP_FINAL_REPLY = 1,
78 GLOBUS_GFS_OP_EVENT_REPLY,
80 GLOBUS_GFS_OP_SESSION_START,
81 GLOBUS_GFS_OP_SESSION_STOP,
85 GLOBUS_GFS_OP_COMMAND,
86 GLOBUS_GFS_OP_PASSIVE,
88 GLOBUS_GFS_OP_DESTROY,
89 GLOBUS_GFS_OP_TRANSFER,
91 GLOBUS_GFS_OP_BUFFER_SEND,
92 GLOBUS_GFS_OP_HANDSHAKE,
93 GLOBUS_GFS_OP_SESSION_START_REPLY,
94 GLOBUS_GFS_OP_INTERMEDIATE_REPLY
95 } globus_gfs_operation_type_t;
97 #define GLOBUS_GFS_OP_STAT_PARTIAL GLOBUS_GFS_OP_INTERMEDIATE_REPLY 105 typedef enum globus_gfs_command_type_e
107 GLOBUS_GFS_CMD_MKD = 1,
110 GLOBUS_GFS_CMD_SITE_AUTHZ_ASSERT,
111 GLOBUS_GFS_CMD_SITE_RDEL,
115 GLOBUS_GFS_CMD_SITE_CHMOD,
116 GLOBUS_GFS_CMD_SITE_DSI,
117 GLOBUS_GFS_CMD_SITE_SETNETSTACK,
118 GLOBUS_GFS_CMD_SITE_SETDISKSTACK,
119 GLOBUS_GFS_CMD_SITE_CLIENTINFO,
121 GLOBUS_GFS_CMD_SITE_CHGRP,
122 GLOBUS_GFS_CMD_SITE_UTIME,
123 GLOBUS_GFS_CMD_SITE_SYMLINKFROM,
124 GLOBUS_GFS_CMD_SITE_SYMLINK,
125 GLOBUS_GFS_CMD_HTTP_PUT,
126 GLOBUS_GFS_CMD_HTTP_GET,
127 GLOBUS_GFS_CMD_HTTP_CONFIG,
129 GLOBUS_GFS_CMD_SITE_TASKID,
132 GLOBUS_GFS_CMD_SITE_RESTRICT = 3072,
133 GLOBUS_GFS_CMD_SITE_CHROOT,
134 GLOBUS_GFS_CMD_SITE_SHARING,
137 GLOBUS_GFS_CMD_STORATTR,
138 GLOBUS_GFS_CMD_WHOAMI,
140 GLOBUS_GFS_MIN_CUSTOM_CMD = 4096
141 } globus_gfs_command_type_t;
208 typedef enum globus_gfs_buffer_type_e
210 GLOBUS_GFS_BUFFER_EOF_INFO = 0x0001,
211 GLOBUS_GFS_BUFFER_SERVER_DEFINED = 0xFFFF
213 } globus_gfs_buffer_type_t;
220 typedef enum globus_gfs_layout_type_e
222 GLOBUS_GFS_LAYOUT_PARTITIONED = 1,
223 GLOBUS_GFS_LAYOUT_BLOCKED
224 } globus_gfs_layout_type_t;
259 typedef struct globus_i_gfs_op_info_s * globus_gfs_op_info_t;
267 typedef struct globus_gfs_data_finished_info_s
278 const char ** contact_strings;
279 } globus_gfs_data_finished_info_t;
286 typedef struct globus_gfs_cmd_finshed_info_s
289 globus_gfs_command_type_t command;
294 } globus_gfs_cmd_finshed_info_t;
301 typedef struct globus_gfs_stat_finished_info_s
313 } globus_gfs_stat_finished_info_t;
320 typedef struct globus_gfs_session_finished_info_s
328 } globus_gfs_session_finished_info_t;
335 typedef struct globus_gfs_transfer_finished_info_s
338 globus_off_t bytes_transferred;
340 } globus_gfs_transfer_finished_info_t;
347 typedef struct globus_gfs_finished_info_s
350 globus_gfs_operation_type_t type;
363 globus_gfs_session_finished_info_t session;
364 globus_gfs_data_finished_info_t data;
365 globus_gfs_cmd_finshed_info_t command;
366 globus_gfs_stat_finished_info_t stat;
367 globus_gfs_transfer_finished_info_t transfer;
371 globus_gfs_op_info_t op_info;
372 } globus_gfs_finished_info_t;
379 typedef struct globus_gfs_event_info_s
396 globus_off_t recvd_bytes;
398 globus_range_list_t recvd_ranges;
409 globus_gfs_op_info_t op_info;
410 } globus_gfs_event_info_t;
417 typedef struct globus_gfs_transfer_info_s
428 globus_off_t partial_offset;
430 globus_off_t partial_length;
432 globus_range_list_t range_list;
448 globus_off_t alloc_size;
451 char * expected_checksum;
453 char * expected_checksum_alg;
458 int traversal_options;
461 globus_gfs_op_info_t op_info;
462 } globus_gfs_transfer_info_t;
468 #define rnfr_pathname from_pathname 475 typedef struct globus_gfs_command_info_s
478 globus_gfs_command_type_t command;
483 globus_off_t cksm_offset;
485 globus_off_t cksm_length;
494 char * from_pathname;
506 globus_gfs_op_info_t op_info;
507 } globus_gfs_command_info_t;
514 typedef struct globus_gfs_data_info_s
547 const char ** contact_strings;
553 gss_cred_id_t del_cred;
556 globus_gfs_op_info_t op_info;
557 } globus_gfs_data_info_t;
564 typedef struct globus_gfs_stat_info_s
578 globus_gfs_op_info_t op_info;
579 } globus_gfs_stat_info_t;
581 typedef struct globus_gfs_session_info_s
583 gss_cred_id_t del_cred;
593 globus_gfs_op_info_t op_info;
594 } globus_gfs_session_info_t;
596 typedef enum globus_gfs_brain_reason_e
598 GLOBUS_GFS_BRAIN_REASON_ERROR = 1,
599 GLOBUS_GFS_BRAIN_REASON_COMPLETE
600 } globus_gfs_brain_reason_t;
602 typedef struct globus_i_gfs_brain_node_s
608 int current_connection;
610 } globus_i_gfs_brain_node_t;
625 typedef struct globus_l_gfs_data_operation_s * globus_gfs_operation_t;
643 globus_gfs_operation_t op,
644 globus_gfs_session_info_t * session_info);
651 (*globus_gfs_storage_destroy_t)(
660 (*globus_gfs_storage_transfer_t)(
661 globus_gfs_operation_t op,
662 globus_gfs_transfer_info_t * transfer_info,
672 (*globus_gfs_storage_command_t)(
673 globus_gfs_operation_t op,
674 globus_gfs_command_info_t * command_info,
683 (*globus_gfs_storage_stat_t)(
684 globus_gfs_operation_t op,
685 globus_gfs_stat_info_t * stat_info,
695 (*globus_gfs_storage_data_t)(
696 globus_gfs_operation_t op,
697 globus_gfs_data_info_t * data_info,
708 (*globus_gfs_storage_data_destroy_t)(
720 (*globus_gfs_storage_trev_t)(
721 globus_gfs_event_info_t * event_info,
731 (*globus_gfs_storage_set_cred_t)(
732 gss_cred_id_t del_cred,
742 (*globus_gfs_storage_buffer_send_t)(
759 (*globus_gfs_storage_realpath_t)(
760 const char * in_path,
761 char ** out_realpath,
765 #define GLOBUS_GFS_DSI_DESCRIPTOR_SENDER (1 << 0) 766 #define GLOBUS_GFS_DSI_DESCRIPTOR_BLOCKING (1 << 1) 767 #define GLOBUS_GFS_DSI_DESCRIPTOR_HAS_REALPATH (1 << 2) 768 #define GLOBUS_GFS_DSI_DESCRIPTOR_REQUIRES_ORDERED_DATA (1 << 3) 769 #define GLOBUS_GFS_DSI_DESCRIPTOR_SETS_ERROR_RESPONSES (1 << 4) 770 #define GLOBUS_GFS_DSI_DESCRIPTOR_SAFE_RDEL (1 << 5) 780 typedef struct globus_gfs_storage_iface_s
786 globus_gfs_storage_destroy_t destroy_func;
789 globus_gfs_storage_transfer_t list_func;
790 globus_gfs_storage_transfer_t send_func;
791 globus_gfs_storage_transfer_t recv_func;
792 globus_gfs_storage_trev_t trev_func;
795 globus_gfs_storage_data_t active_func;
796 globus_gfs_storage_data_t passive_func;
797 globus_gfs_storage_data_destroy_t data_destroy_func;
799 globus_gfs_storage_command_t command_func;
800 globus_gfs_storage_stat_t stat_func;
802 globus_gfs_storage_set_cred_t set_cred_func;
803 globus_gfs_storage_buffer_send_t buffer_send_func;
804 globus_gfs_storage_realpath_t realpath_func;
805 } globus_gfs_storage_iface_t;
821 globus_gfs_operation_t op,
823 globus_gfs_finished_info_t * finished_info);
833 globus_gridftp_server_operation_event(
834 globus_gfs_operation_t op,
836 globus_gfs_event_info_t * event_info);
844 globus_gridftp_server_begin_transfer(
845 globus_gfs_operation_t op,
855 globus_gridftp_server_finished_transfer(
856 globus_gfs_operation_t op,
866 globus_gridftp_server_finished_session_start(
867 globus_gfs_operation_t op,
881 globus_gridftp_server_finished_command(
882 globus_gfs_operation_t op,
884 char * command_response);
886 globus_gridftp_server_intermediate_command(
887 globus_gfs_operation_t op,
889 char * command_response);
897 globus_gridftp_server_finished_stat(
898 globus_gfs_operation_t op,
904 globus_gridftp_server_finished_stat_partial(
905 globus_gfs_operation_t op,
911 globus_gridftp_server_finished_stat_custom_list(
912 globus_gfs_operation_t op,
924 globus_gridftp_server_finished_active_data(
925 globus_gfs_operation_t op,
936 globus_gridftp_server_finished_passive_data(
937 globus_gfs_operation_t op,
941 const char ** contact_strings,
961 globus_gfs_operation_t op,
968 globus_gridftp_server_register_write(
969 globus_gfs_operation_t op,
987 (*globus_gridftp_server_read_cb_t)(
988 globus_gfs_operation_t op,
997 globus_gridftp_server_register_read(
998 globus_gfs_operation_t op,
1001 globus_gridftp_server_read_cb_t callback,
1040 globus_gridftp_server_add_command(
1041 globus_gfs_operation_t op,
1042 const char * command_name,
1046 const char * help_string,
1062 GLOBUS_GFS_OP_INFO_CMD_ARGS = 1
1072 globus_gridftp_server_query_op_info(
1073 globus_gfs_operation_t op,
1074 globus_gfs_op_info_t op_info,
1089 globus_gridftp_server_get_recv_attr_string(
1090 globus_gfs_operation_t op,
1091 const char * requested_attr,
1101 globus_gridftp_server_get_recv_modification_time(
1102 globus_gfs_operation_t op,
1116 globus_gridftp_server_update_bytes_written(
1117 globus_gfs_operation_t op,
1118 globus_off_t offset,
1119 globus_off_t length);
1132 globus_gridftp_server_update_bytes_recvd(
1133 globus_gfs_operation_t op,
1134 globus_off_t length);
1147 globus_gridftp_server_update_range_recvd(
1148 globus_gfs_operation_t op,
1149 globus_off_t offset,
1150 globus_off_t length);
1159 globus_gridftp_server_get_optimal_concurrency(
1160 globus_gfs_operation_t op,
1171 globus_gridftp_server_get_block_size(
1172 globus_gfs_operation_t op,
1182 globus_gridftp_server_get_stripe_block_size(
1183 globus_gfs_operation_t op,
1194 globus_gridftp_server_get_session_username(
1195 globus_gfs_operation_t op,
1207 globus_gridftp_server_get_delegated_cred(
1208 globus_gfs_operation_t op,
1209 gss_cred_id_t * del_cred);
1223 globus_gridftp_server_get_sec_context(
1224 globus_gfs_operation_t op,
1225 gss_ctx_id_t * context);
1244 globus_gridftp_server_set_ordered_data(
1245 globus_gfs_operation_t op,
1249 globus_gridftp_server_get_ordered_data(
1250 globus_gfs_operation_t op,
1260 globus_gridftp_server_get_config_string(
1261 globus_gfs_operation_t op,
1262 char ** config_string);
1272 globus_gridftp_server_get_config_data(
1273 globus_gfs_operation_t op,
1275 char ** config_data);
1278 globus_gfs_data_get_file_stack_list(
1279 globus_gfs_operation_t in_op,
1283 globus_gfs_data_get_cmd_string(
1284 globus_gfs_operation_t op);
1287 globus_gridftp_server_get_update_interval(
1288 globus_gfs_operation_t op,
1300 globus_gridftp_server_get_read_range(
1301 globus_gfs_operation_t op,
1302 globus_off_t * offset,
1303 globus_off_t * length);
1316 globus_gridftp_server_get_write_range(
1317 globus_gfs_operation_t op,
1318 globus_off_t * offset,
1319 globus_off_t * length);
1326 GLOBUS_GFS_LOG_ERR = 0x01,
1327 GLOBUS_GFS_LOG_WARN = 0x02,
1328 GLOBUS_GFS_LOG_TRANSFER = 0x04,
1329 GLOBUS_GFS_LOG_INFO = 0x08,
1330 GLOBUS_GFS_LOG_DUMP = 0x10,
1332 GLOBUS_GFS_LOG_ALL = 0xFF
1333 } globus_gfs_log_type_t;
1336 globus_gfs_log_message(
1337 globus_gfs_log_type_t type,
1338 const char * format,
1342 globus_gfs_log_result(
1343 globus_gfs_log_type_t type,
1350 GLOBUS_GFS_DEBUG_TRACE = 8,
1351 GLOBUS_GFS_DEBUG_INFO = 16,
1352 GLOBUS_GFS_DEBUG_STATE = 32
1356 #define GlobusGFSName(func) static const char * _gfs_name __attribute__((__unused__)) = #func 1358 #define GlobusGFSName(func) static const char * _gfs_name = #func 1361 GlobusDebugDeclare(GLOBUS_GRIDFTP_SERVER);
1363 #define GlobusGFSDebugPrintf(level, message) \ 1364 GlobusDebugPrintf(GLOBUS_GRIDFTP_SERVER, level, message) 1366 #define GlobusGFSDebugInfo(_msg) \ 1367 GlobusGFSDebugPrintf( \ 1368 GLOBUS_GFS_DEBUG_INFO, \ 1369 ("[%s] %s\n", __func__, _msg)) 1371 #define GlobusGFSDebugEnter() \ 1372 GlobusGFSDebugPrintf( \ 1373 GLOBUS_GFS_DEBUG_TRACE, \ 1374 ("[%s] Entering\n", __func__)) 1376 #define GlobusGFSDebugExit() \ 1377 GlobusGFSDebugPrintf( \ 1378 GLOBUS_GFS_DEBUG_TRACE, \ 1379 ("[%s] Exiting\n", __func__)) 1381 #define GlobusGFSDebugState(_state) \ 1382 GlobusGFSDebugPrintf( \ 1383 GLOBUS_GFS_DEBUG_INFO, \ 1384 ("[%s] State: %d\n", __func__, _state)) 1386 #define GlobusGFSDebugExitWithError() \ 1387 GlobusGFSDebugPrintf( \ 1388 GLOBUS_GFS_DEBUG_TRACE, \ 1389 ("[%s] Exiting with error\n", __func__)) 1391 #define GlobusGFSErrorParameter(mem_name) \ 1392 globus_error_put(GlobusGFSErrorObjParameter(mem_name)) 1394 #define GlobusGFSErrorIPC() \ 1395 globus_error_put(GlobusGFSErrorObjIPC()) 1397 #define GlobusGFSErrorObjIPC() \ 1398 globus_error_construct_error( \ 1401 GLOBUS_GFS_ERROR_MEMORY, \ 1405 "IPC Communication error.") 1407 #define GlobusGFSErrorObjParameter(param_name) \ 1408 globus_error_construct_error( \ 1411 GLOBUS_GFS_ERROR_PARAMETER, \ 1415 "invalid parameter: %s", \ 1418 #define GlobusGFSErrorSystemError(system_func, system_errno) \ 1419 globus_error_put(GlobusGFSErrorObjSystemError(\ 1420 (system_func), (system_errno))) 1421 #define GlobusGFSErrorObjSystemError(system_func, system_errno) \ 1422 globus_i_gfs_error_system( \ 1423 0, (system_errno), \ 1424 "System error%s%s", \ 1425 (system_func) != NULL ? " in " : "", \ 1426 (system_func) != NULL ? (system_func) : "") 1428 #define GlobusGFSErrorWrapFailed(failed_func, result) \ 1429 globus_error_put(GlobusGFSErrorObjWrapFailed(failed_func, result)) 1431 #define GlobusGFSErrorObjWrapFailed(failed_func, result) \ 1432 globus_error_construct_error( \ 1434 globus_error_get((result)), \ 1435 GLOBUS_GFS_ERROR_WRAPPED, \ 1442 #define GlobusGFSErrorData(reason) \ 1443 globus_error_put(GlobusGFSErrorObjData(reason)) 1445 #define GlobusGFSErrorObjData(reason) \ 1446 globus_error_construct_error( \ 1449 GLOBUS_GFS_ERROR_DATA, \ 1456 #define GlobusGFSErrorGeneric(reason) \ 1457 globus_error_put(GlobusGFSErrorObjGeneric(reason)) 1459 #define GlobusGFSErrorObjGeneric(reason) \ 1460 globus_error_construct_error( \ 1463 GLOBUS_GFS_ERROR_GENERIC, \ 1473 globus_object_t * base_cause,
1475 const char *response_error_code,
1481 globus_object_t * error,
1483 globus_object_t * base_cause,
1485 const char * response_error_code,
1490 globus_object_t * error,
1492 globus_object_t * base_cause,
1494 const char * response_error_code,
1500 globus_object_t * error);
1504 globus_object_t * error);
1508 globus_object_t * error,
1509 const char * response_error_code);
1511 extern const globus_object_type_t
1514 #define GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE \ 1515 (&GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION) 1518 #define GlobusGFSErrorFtpResponse(cause, code, response_error_code, ...) \ 1519 globus_error_put(GlobusGFSErrorObjFtpResponse( \ 1520 cause, code, response_error_code, __VA_ARGS__)) 1522 #define GlobusGFSErrorObjFtpResponse(cause, code, response_error_code, ...) \ 1523 globus_gfs_ftp_response_error_construct( \ 1527 response_error_code, \ 1533 #define GlobusGFSErrorMemory(mem) \ 1534 globus_error_put(GlobusGFSErrorObjMemory(mem)) 1535 #define GlobusGFSErrorObjMemory(mem) \ 1536 GlobusGFSErrorObjSystemError("malloc", errno) 1538 #define GlobusGFSErrorObj(cause, response_code, ...) \ 1539 GlobusGFSErrorObjFtpResponse(cause, response_code, __VA_ARGS__) 1541 #define GlobusGFSErrorPathNotFound(p) \ 1542 globus_error_put(GlobusGFSErrorObjPathNotFound(NULL, p)) 1543 #define GlobusGFSErrorObjPathNotFound(cause, p) \ 1544 GlobusGFSErrorObj((cause), 550, "PATH_NOT_FOUND", \ 1546 ((p) != NULL) ? "GridFTP-Path: \"" : "", \ 1547 ((p) != NULL) ? (p) : "", \ 1548 ((p) != NULL) ? "\"" : "") 1550 #define GlobusGFSErrorIncorrectChecksum(computed, expected) \ 1551 globus_error_put(GlobusGFSErrorObjIncorrectChecksum( \ 1552 NULL, computed, expected)) 1553 #define GlobusGFSErrorObjIncorrectChecksum(cause, computed, expected) \ 1554 GlobusGFSErrorObj( \ 1557 "INCORRECT_CHECKSUM", \ 1558 "GridFTP-Computed-Checksum: %s\n" \ 1559 "GridFTP-Expected-Checksum: %s", (computed), (expected)) 1561 #define GlobusGFSErrorMultipartUploadNotFound() \ 1562 globus_error_put(GlobusGFSErrorObjMultipartUploadNotFound(NULL)) 1563 #define GlobusGFSErrorObjMultipartUploadNotFound(cause) \ 1564 GlobusGFSErrorObj(cause, 553, "MULTI_PART_UPLOAD_NOT_FOUND", NULL) 1566 #define GlobusGFSErrorAppendNotSupported() \ 1567 globus_error_put(GlobusGFSErrorObjAppendNotSupported(NULL)) 1568 #define GlobusGFSErrorObjAppendNotSupported(cause) \ 1569 GlobusGFSErrorObj((cause), 553, "APPEND_NOT_SUPPORTED", NULL) 1571 #define GlobusGFSErrorAmbiguousPath(ambiguity) \ 1572 globus_error_put(GlobusGFSErrorObjAmbiguousPath(NULL, ambiguity)) 1573 #define GlobusGFSErrorObjAmbiguousPath(cause, ambiguity) \ 1574 GlobusGFSErrorObj( \ 1578 "GridFTP-Path: %s", \ 1581 #define GlobusGFSErrorTooBusy() \ 1582 globus_error_put(GlobusGFSErrorObjTooBusy(NULL)) 1583 #define GlobusGFSErrorObjTooBusy(cause) \ 1584 GlobusGFSErrorObj((cause), 451, "TOO_BUSY", NULL) 1586 #define GlobusGFSErrorDataChannelAuthenticationFailure() \ 1587 globus_error_put(GlobusGFSErrorObjDataChannelAuthenticationFailure( \ 1589 #define GlobusGFSErrorObjDataChannelAuthenticationFailure(cause) \ 1590 GlobusGFSErrorObj((cause), 425, \ 1591 "DATA_CHANNEL_AUTHENTICATION_FAILURE", NULL) 1593 #define GlobusGFSErrorDataChannelCommunicationFailure() \ 1594 globus_error_put(GlobusGFSErrorObjDataChannelCommunicationFailure( \ 1596 #define GlobusGFSErrorObjDataChannelCommunicationFailure(cause) \ 1597 GlobusGFSErrorObj((cause), 425, \ 1598 "DATA_CHANNEL_COMMUNICATION_FAILURE", NULL) 1600 #define GlobusGFSErrorLoginDenied() \ 1601 globus_error_put(GlobusGFSErrorObjLoginDenied(NULL)) 1602 #define GlobusGFSErrorObjLoginDenied(cause) \ 1603 GlobusGFSErrorObj((cause), 530, "LOGIN_DENIED", NULL) 1605 #define GlobusGFSErrorPermissionDenied() \ 1606 globus_error_put(GlobusGFSErrorObjPermissionDenied(NULL)) 1607 #define GlobusGFSErrorObjPermissionDenied(cause) \ 1608 GlobusGFSErrorObj((cause), 550, "PERMISSION_DENIED", NULL) 1610 #define GlobusGFSErrorQuotaExceeded() \ 1611 globus_error_put(GlobusGFSErrorObjQuotaExceeded(NULL)) 1612 #define GlobusGFSErrorObjQuotaExceeded(cause) \ 1613 GlobusGFSErrorObj((cause), 451, "QUOTA_EXCEEDED", NULL) 1615 #define GlobusGFSErrorNoSpaceLeft() \ 1616 globus_error_put(GlobusGFSErrorObjNoSpaceLeft(NULL)) 1617 #define GlobusGFSErrorObjNoSpaceLeft(cause) \ 1618 GlobusGFSErrorObj((cause), 451, "NO_SPACE_LEFT", NULL) 1620 #define GlobusGFSErrorInvalidPathName(name) \ 1621 globus_error_put(GlobusGFSErrorObjInvalidPathName(NULL, name)) 1622 #define GlobusGFSErrorObjInvalidPathName(cause, name) \ 1623 GlobusGFSErrorObj((cause), 553, "INVALID_PATH_NAME", \ 1624 "GridFTP-Path: %s", name) 1626 #define GlobusGFSErrorPathExists(name) \ 1627 globus_error_put(GlobusGFSErrorObjPathExists(NULL, name)) 1628 #define GlobusGFSErrorObjPathExists(cause, name) \ 1629 GlobusGFSErrorObj((cause), 553, "PATH_EXISTS", \ 1630 "GridFTP-Path: %s", name) 1632 #define GlobusGFSErrorIsADirectory(name) \ 1633 globus_error_put(GlobusGFSErrorObjIsADirectory(NULL, name)) 1634 #define GlobusGFSErrorObjIsADirectory(cause, name) \ 1635 GlobusGFSErrorObj((cause), 553, "IS_A_DIRECTORY", \ 1636 "GridFTP-Path: %s", name) 1638 #define GlobusGFSErrorNotADirectory(name) \ 1639 globus_error_put(GlobusGFSErrorObjNotADirectory(NULL, name)) 1640 #define GlobusGFSErrorObjNotADirectory(cause, name) \ 1641 GlobusGFSErrorObj((cause), 553, "NOT_A_DIRECTORY", \ 1642 "GridFTP-Path: %s", name) 1644 #define GlobusGFSErrorCRLError() \ 1645 globus_error_put(GlobusGFSErrorObjCRLError(NULL)) 1646 #define GlobusGFSErrorObjCRLError(cause) \ 1647 GlobusGFSErrorObj((cause), 530, "CRL_ERROR", NULL) 1649 #define GlobusGFSErrorInternalError(generic_string) \ 1650 globus_error_put(GlobusGFSErrorObjInternalError( \ 1651 NULL, (generic_string))) 1652 #define GlobusGFSErrorObjInternalError(cause, generic_string) \ 1653 GlobusGFSErrorObj((cause), 500, "INTERNAL_ERROR", \ 1655 ((generic_string) != NULL) ? "GridFTP-Error: " : "", \ 1656 ((generic_string) != NULL) ? generic_string : "") 1658 #define GlobusGFSErrorNotImplemented() \ 1659 globus_error_put(GlobusGFSErrorObjNotImplemented(NULL)) 1660 #define GlobusGFSErrorObjNotImplemented(cause) \ 1661 GlobusGFSErrorObj((cause), 500, "NOT_IMPLEMETED", NULL) 1663 #define GlobusGFSErrorNotImplementedFeature(feature) \ 1664 globus_error_put(GlobusGFSErrorObjNotImplementedFeature(NULL, feature)) 1665 #define GlobusGFSErrorObjNotImplementedFeature(cause, feature) \ 1666 GlobusGFSErrorObj((cause), 500, \ 1667 "NOT_IMPLEMETED", "GridFTP-Feature: %s", (feature)) 1669 #define GlobusGFSErrorConfigurationError() \ 1670 globus_error_put(GlobusGFSErrorObjConfigurationError(NULL)) 1671 #define GlobusGFSErrorObjConfigurationError(cause) \ 1672 GlobusGFSErrorObj((cause), 500, "CONFIGURATION_ERROR", NULL) 1679 typedef struct globus_i_gfs_ipc_handle_s * globus_gfs_ipc_handle_t;
1704 (*globus_gfs_ipc_callback_t)(
1705 globus_gfs_ipc_handle_t ipc_handle,
1707 globus_gfs_finished_info_t * reply,
1711 (*globus_gfs_ipc_event_callback_t)(
1712 globus_gfs_ipc_handle_t ipc_handle,
1714 globus_gfs_event_info_t * reply,
1718 (*globus_gfs_ipc_close_callback_t)(
1719 globus_gfs_ipc_handle_t ipc_handle,
1724 (*globus_gfs_ipc_open_callback_t)(
1725 globus_gfs_ipc_handle_t ipc_handle,
1727 globus_gfs_finished_info_t * reply,
1731 (*globus_gfs_ipc_error_callback_t)(
1732 globus_gfs_ipc_handle_t ipc_handle,
1737 globus_gfs_ipc_reply_finished(
1738 globus_gfs_ipc_handle_t ipc_handle,
1739 globus_gfs_finished_info_t * reply);
1742 globus_gfs_ipc_reply_event(
1743 globus_gfs_ipc_handle_t ipc_handle,
1744 globus_gfs_event_info_t * reply);
1747 globus_gfs_ipc_reply_session(
1748 globus_gfs_ipc_handle_t ipc_handle,
1749 globus_gfs_finished_info_t * reply);
1763 (*globus_i_gfs_ipc_data_callback_t)(
1764 globus_gfs_finished_info_t * reply,
1768 (*globus_i_gfs_ipc_data_event_callback_t)(
1769 globus_gfs_event_info_t * reply,
1773 (*globus_i_gfs_ipc_done_callback_t)(
1784 (*globus_gfs_ipc_iface_session_start_t)(
1785 globus_gfs_ipc_handle_t ipc_handle,
1786 const gss_ctx_id_t context,
1787 globus_gfs_session_info_t * session_info,
1788 globus_i_gfs_ipc_data_callback_t cb,
1792 globus_gfs_ipc_start_session(
1793 globus_gfs_ipc_handle_t ipc_handle,
1794 globus_gfs_session_info_t * session_info,
1795 globus_gfs_ipc_callback_t cb,
1800 (*globus_gfs_ipc_iface_session_stop_t)(
1801 globus_gfs_ipc_handle_t ipc_handle,
1802 void * session_handle);
1805 globus_gfs_ipc_iface_session_stop(
1806 globus_gfs_ipc_handle_t ipc_handle,
1807 void * session_handle);
1810 (*globus_gfs_ipc_iface_set_cred_t)(
1811 globus_gfs_ipc_handle_t ipc_handle,
1812 void * session_handle,
1813 gss_cred_id_t del_cred);
1816 globus_gfs_ipc_set_cred(
1817 globus_gfs_ipc_handle_t ipc_handle,
1818 gss_cred_id_t del_cred);
1821 (*globus_gfs_ipc_iface_buffer_send_t)(
1822 globus_gfs_ipc_handle_t ipc_handle,
1823 void * session_handle,
1829 globus_gfs_ipc_request_buffer_send(
1830 globus_gfs_ipc_handle_t ipc_handle,
1841 (*globus_gfs_ipc_iface_recv_t)(
1842 globus_gfs_ipc_handle_t ipc_handle,
1843 void * session_handle,
1845 globus_gfs_transfer_info_t * recv_info,
1846 globus_i_gfs_ipc_data_callback_t cb,
1847 globus_i_gfs_ipc_data_event_callback_t event_cb,
1851 globus_gfs_ipc_request_recv(
1852 globus_gfs_ipc_handle_t ipc_handle,
1853 globus_gfs_transfer_info_t * recv_info,
1854 globus_gfs_ipc_callback_t cb,
1855 globus_gfs_ipc_event_callback_t event_cb,
1864 (*globus_gfs_ipc_iface_send_t)(
1865 globus_gfs_ipc_handle_t ipc_handle,
1866 void * session_handle,
1868 globus_gfs_transfer_info_t * send_info,
1869 globus_i_gfs_ipc_data_callback_t cb,
1870 globus_i_gfs_ipc_data_event_callback_t event_cb,
1874 globus_gfs_ipc_request_send(
1875 globus_gfs_ipc_handle_t ipc_handle,
1876 globus_gfs_transfer_info_t * send_info,
1877 globus_gfs_ipc_callback_t cb,
1878 globus_gfs_ipc_event_callback_t event_cb,
1882 (*globus_gfs_ipc_iface_list_t)(
1883 globus_gfs_ipc_handle_t ipc_handle,
1884 void * session_handle,
1886 globus_gfs_transfer_info_t * list_info,
1887 globus_i_gfs_ipc_data_callback_t cb,
1888 globus_i_gfs_ipc_data_event_callback_t event_cb,
1892 globus_gfs_ipc_request_list(
1893 globus_gfs_ipc_handle_t ipc_handle,
1894 globus_gfs_transfer_info_t * data_info,
1895 globus_gfs_ipc_callback_t cb,
1896 globus_gfs_ipc_event_callback_t event_cb,
1905 (*globus_gfs_ipc_iface_command_t)(
1906 globus_gfs_ipc_handle_t ipc_handle,
1907 void * session_handle,
1909 globus_gfs_command_info_t * cmd_info,
1910 globus_i_gfs_ipc_data_callback_t cb,
1914 globus_gfs_ipc_request_command(
1915 globus_gfs_ipc_handle_t ipc_handle,
1916 globus_gfs_command_info_t * cmd_info,
1917 globus_gfs_ipc_callback_t cb,
1926 (*globus_gfs_ipc_iface_active_data_t)(
1927 globus_gfs_ipc_handle_t ipc_handle,
1928 void * session_handle,
1930 globus_gfs_data_info_t * data_info,
1931 globus_i_gfs_ipc_data_callback_t cb,
1935 globus_gfs_ipc_request_active_data(
1936 globus_gfs_ipc_handle_t ipc_handle,
1937 globus_gfs_data_info_t * data_info,
1938 globus_gfs_ipc_callback_t cb,
1947 (*globus_gfs_ipc_iface_passive_data_t)(
1948 globus_gfs_ipc_handle_t ipc_handle,
1949 void * session_handle,
1951 globus_gfs_data_info_t * data_info,
1952 globus_i_gfs_ipc_data_callback_t cb,
1956 globus_gfs_ipc_request_passive_data(
1957 globus_gfs_ipc_handle_t ipc_handle,
1958 globus_gfs_data_info_t * data_info,
1959 globus_gfs_ipc_callback_t cb,
1966 (*globus_gfs_ipc_iface_stat_t)(
1967 globus_gfs_ipc_handle_t ipc_handle,
1968 void * session_handle,
1970 globus_gfs_stat_info_t * stat_info,
1971 globus_i_gfs_ipc_data_callback_t cb,
1975 globus_gfs_ipc_request_stat(
1976 globus_gfs_ipc_handle_t ipc_handle,
1977 globus_gfs_stat_info_t * stat_info,
1978 globus_gfs_ipc_callback_t cb,
1985 (*globus_gfs_ipc_iface_transfer_event_t)(
1986 globus_gfs_ipc_handle_t ipc_handle,
1987 void * session_handle,
1988 globus_gfs_event_info_t * event_info);
1992 globus_gfs_ipc_request_transfer_event(
1993 globus_gfs_ipc_handle_t ipc_handle,
1994 globus_gfs_event_info_t * event_info);
2001 (*globus_gfs_ipc_iface_data_destroy_t)(
2002 globus_gfs_ipc_handle_t ipc_handle,
2003 void * session_handle,
2007 globus_gfs_ipc_request_data_destroy(
2008 globus_gfs_ipc_handle_t ipc_handle,
2011 typedef struct globus_i_gfs_ipc_iface_s
2013 globus_gfs_ipc_iface_session_start_t session_start_func;
2014 globus_gfs_ipc_iface_session_stop_t session_stop_func;
2015 globus_gfs_ipc_iface_recv_t recv_func;
2016 globus_gfs_ipc_iface_send_t send_func;
2017 globus_gfs_ipc_iface_command_t command_func;
2018 globus_gfs_ipc_iface_active_data_t active_func;
2019 globus_gfs_ipc_iface_passive_data_t passive_func;
2020 globus_gfs_ipc_iface_data_destroy_t data_destroy_func;
2021 globus_gfs_ipc_iface_stat_t stat_func;
2022 globus_gfs_ipc_iface_list_t list_func;
2023 globus_gfs_ipc_iface_transfer_event_t transfer_event_func;
2024 globus_gfs_ipc_iface_set_cred_t set_cred;
2025 globus_gfs_ipc_iface_buffer_send_t buffer_send;
2026 } globus_gfs_ipc_iface_t;
2037 globus_gfs_ipc_handle_create(
2038 globus_gfs_ipc_iface_t * iface,
2039 globus_xio_system_socket_t system_handle,
2040 globus_i_gfs_ipc_done_callback_t done_cb,
2047 globus_gfs_ipc_close(
2048 globus_gfs_ipc_handle_t ipc_handle,
2049 globus_gfs_ipc_close_callback_t cb,
2053 globus_gfs_ipc_reply_close(
2054 globus_gfs_ipc_handle_t ipc_handle);
2057 globus_gfs_ipc_session_stop(
2058 globus_gfs_ipc_handle_t ipc_handle);
2061 globus_gfs_ipc_handle_connect(
2062 globus_gfs_session_info_t * session_info,
2063 globus_gfs_ipc_open_callback_t cb,
2065 globus_gfs_ipc_error_callback_t error_cb,
2066 void * error_user_arg);
2069 globus_gfs_ipc_handle_connect_ex(
2070 globus_gfs_session_info_t * session_info,
2071 globus_gfs_ipc_open_callback_t cb,
2073 globus_gfs_ipc_error_callback_t error_cb,
2074 void * error_user_arg,
2077 const char *auth_mode,
2078 const char *subject,
2079 time_t connect_timeout,
2080 time_t idle_timeout,
2084 globus_gfs_ipc_handle_obtain(
2085 globus_gfs_session_info_t * session_info,
2086 globus_gfs_ipc_iface_t * iface,
2087 globus_gfs_ipc_open_callback_t cb,
2089 globus_gfs_ipc_error_callback_t error_cb,
2090 void * error_user_arg);
2095 #define BRAIN_SYMBOL_NAME (void*)"gridftp_brain" 2096 extern globus_extension_registry_t brain_i_registry;
2099 (*globus_i_gfs_brain_select_nodes_func_t)(
2100 globus_i_gfs_brain_node_t *** out_node_array,
2101 int * out_array_length,
2102 const char * repo_name,
2103 globus_off_t filesize,
2108 (*globus_i_gfs_brain_release_node_func_t)(
2109 globus_i_gfs_brain_node_t * contact_node,
2110 globus_gfs_brain_reason_t reason);
2113 (*globus_i_gfs_brain_init_func_t)();
2116 (*globus_i_gfs_brain_stop_func_t)();
2119 (*globus_i_gfs_brain_get_available_func_t)(
2120 const char * user_id,
2121 const char * repo_name,
2125 typedef struct globus_i_gfs_brain_module_s
2127 globus_i_gfs_brain_init_func_t init_func;
2128 globus_i_gfs_brain_stop_func_t stop_func;
2129 globus_i_gfs_brain_select_nodes_func_t select_func;
2130 globus_i_gfs_brain_release_node_func_t release_func;
2131 globus_i_gfs_brain_get_available_func_t available_func;
2132 } globus_i_gfs_brain_module_t;
2134 extern globus_i_gfs_brain_module_t globus_i_gfs_default_brain;
2137 globus_gfs_brain_select_nodes(
2138 globus_i_gfs_brain_node_t *** out_node_array,
2139 int * out_array_length,
2140 const char * repo_name,
2141 globus_off_t filesize,
2146 globus_gfs_brain_release_node(
2147 globus_i_gfs_brain_node_t * contact_node,
2148 globus_gfs_brain_reason_t reason);
2151 globus_gfs_brain_get_available(
2152 const char * user_id,
2153 const char * repo_name,
2157 globus_gfs_ipc_handle_get_contact_string(
2158 globus_gfs_ipc_handle_t ipc_handle,
2159 char ** contact_string);
2162 globus_gfs_ipc_init(
2169 globus_gfs_ipc_add_server(
2170 globus_xio_server_t server_handle);
2172 extern globus_gfs_ipc_iface_t globus_gfs_ipc_default_iface;
2185 typedef struct globus_i_gfs_acl_handle_s * globus_gfs_acl_handle_t;
2190 typedef enum globus_gfs_acl_action_e
2193 GFS_ACL_ACTION_INIT = 1,
2195 GFS_ACL_ACTION_DELETE,
2197 GFS_ACL_ACTION_WRITE,
2199 GFS_ACL_ACTION_CREATE,
2201 GFS_ACL_ACTION_READ,
2203 GFS_ACL_ACTION_LOOKUP,
2207 GFS_ACL_ACTION_AUTHZ_ASSERT,
2210 GFS_ACL_ACTION_COMMIT,
2213 } globus_gfs_acl_action_t;
2217 typedef struct globus_gfs_acl_info_s
2224 gss_ctx_id_t context;
2225 } globus_gfs_acl_info_t;
2229 typedef struct globus_gfs_acl_object_desc_s
2250 globus_gfs_op_info_t op_info;
2251 } globus_gfs_acl_object_desc_t;
2254 typedef enum globus_gfs_acl_status_e
2257 GLOBUS_GFS_ACL_COMPLETE = 1,
2260 GLOBUS_GFS_ACL_WOULD_BLOCK
2261 } globus_gfs_acl_status_t;
2278 (*globus_gfs_acl_init_t)(
2280 globus_gfs_acl_info_t * acl_info,
2281 globus_gfs_acl_handle_t acl_handle,
2294 (*globus_gfs_acl_authorize_t)(
2296 globus_gfs_acl_action_t action,
2297 globus_gfs_acl_object_desc_t * object,
2298 globus_gfs_acl_info_t * acl_info,
2299 globus_gfs_acl_handle_t acl_handle,
2304 (*globus_gfs_acl_destroy_t)(
2310 (*globus_gfs_acl_audit_t)(
2312 globus_gfs_acl_action_t action,
2313 globus_gfs_acl_object_desc_t * object,
2314 const char * message);
2318 typedef struct globus_gfs_acl_module_s
2320 globus_gfs_acl_init_t init_func;
2321 globus_gfs_acl_authorize_t authorize_func;
2322 globus_gfs_acl_destroy_t destroy_func;
2323 globus_gfs_acl_audit_t audit_func;
2324 } globus_gfs_acl_module_t;
2330 globus_gfs_acl_authorized_finished(
2331 globus_gfs_acl_handle_t acl_handle,
2337 globus_gfs_acl_action_to_string(
2338 globus_gfs_acl_action_t action);
2347 (*globus_i_gfs_config_set_string_cb_t)(
2348 const char * option_name,
2354 (*globus_i_gfs_config_set_int_cb_t)(
2355 const char * option_name,
2364 } globus_i_gfs_config_option_cb_ent_t;
2367 globus_gfs_config_enable_cb(
2368 globus_i_gfs_config_option_cb_ent_t * cb_handle,
2372 globus_gfs_config_add_cb(
2373 globus_i_gfs_config_option_cb_ent_t ** cb_handle,
2379 globus_gfs_config_get_bool(
2380 const char * option_name);
2383 globus_gfs_config_get_string(
2384 const char * option_name);
2387 globus_gfs_config_get_list(
2388 const char * option_name);
2391 globus_gfs_config_get(
2392 const char * option_name);
2395 globus_gfs_config_get_int(
2396 const char * option_name);
2399 globus_gfs_config_set_int(
2404 globus_gfs_config_set_bool(
2409 globus_gfs_config_set_ptr(
2414 globus_gfs_config_inc_int(
Definition: globus_gridftp_server.h:195
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:326
Definition: globus_gridftp_server.h:201
Definition: globus_gridftp_server.h:166
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:12903
Definition: globus_gridftp_server.h:169
int globus_bool_t
Boolean type.
Definition: globus_types.h:93
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:67
Definition: globus_gridftp_server.h:192
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:185
globus_gfs_op_info_param_t
Definition: globus_gridftp_server.h:1054
Definition: globus_gridftp_server.h:187
List data type.
Definition: globus_list.h:43
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:960
Definition: globus_gridftp_server_control.h:209
Definition: globus_gridftp_server.h:173
void(* globus_gfs_storage_init_t)(globus_gfs_operation_t op, globus_gfs_session_info_t *session_info)
Definition: globus_gridftp_server.h:642
size_t globus_size_t
Standard size of memory objectThe globus_size_t is the size of a memory object. It is identical to si...
Definition: globus_types.h:48
globus_gfs_event_type_e
Event types.
Definition: globus_gridftp_server.h:162
enum globus_gfs_event_type_e globus_gfs_event_type_t
Event types.
unsigned char globus_byte_t
Unsigned byte datatypeThis is used for byte-addressable arrays of arbitrary data which is not subject...
Definition: globus_types.h:85
Definition: globus_gridftp_server.h:182
Headers common to all of Globus.
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:132
uint32_t globus_result_t
Definition: globus_types.h:99
Definition: globus_gridftp_server.h:198
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:473
int globus_gfs_error_get_ftp_response_code(globus_object_t *error)
Definition: globus_i_gfs_ftp_response_error.c:261
Definition: globus_gridftp_server.h:177
const char * globus_gfs_error_get_ftp_response_error_code(globus_object_t *error)
Definition: globus_i_gfs_ftp_response_error.c:293
const globus_object_type_t GLOBUS_GFS_ERROR_FTP_RESPONSE_TYPE_DEFINITION
Definition: globus_i_gfs_ftp_response_error.c:618
Module Descriptor.
Definition: globus_module.h:69