Grid Community Toolkit  6.2.1653033972 (tag: v6.2.20220524)
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions
globus_ftp_control.h File Reference

GridFTP Control Connection API. More...

#include "globus_common.h"
#include "globus_error_string.h"
#include "globus_io.h"
#include "globus_gss_assist.h"
#include "globus_handle_table.h"

Go to the source code of this file.

Data Structures

struct  globus_ftp_control_dcau_subject_s
 Control DCAU subject authentication type. More...
 
struct  globus_ftp_control_round_robin_s
 Control striping round robin attribute structure. More...
 
union  globus_ftp_control_dcau_u
 Control DCAU union. More...
 
union  globus_ftp_control_layout_u
 Control striping attribute union. More...
 
union  globus_ftp_control_parallelism_u
 Control parallelism attribute structure. More...
 
struct  globus_ftp_control_tcpbuffer_default_t
 Don't change the TCP buffer/window size from the system default. More...
 
struct  globus_ftp_control_tcpbuffer_fixed_t
 Set the TCP buffer/window size to a fixed value. More...
 
struct  globus_ftp_control_tcpbuffer_automatic_s
 Automatically set the TCP buffer/window size. More...
 
union  globus_ftp_control_tcpbuffer_t
 Control tcpbuffer attribute structure. More...
 
struct  globus_ftp_control_auth_info_s
 Authentication Values. More...
 

Macros

#define GLOBUS_FTP_CONTROL_MODULE   (&globus_i_ftp_control_module)
 Module descriptor.
 

Typedefs

typedef enum
globus_ftp_control_type_e 
globus_ftp_control_type_t
 GridFTP TYPE values. More...
 
typedef enum
globus_ftp_control_mode_e 
globus_ftp_control_mode_t
 GridFTP MODE values. More...
 
typedef enum
globus_ftp_control_dcau_mode_e 
globus_ftp_control_dcau_mode_t
 GridFTP DCAU values. More...
 
typedef struct
globus_ftp_control_dcau_subject_s 
globus_ftp_control_dcau_subject_t
 Control DCAU subject authentication type.
 
typedef enum
globus_ftp_control_striping_mode_e 
globus_ftp_control_striping_mode_t
 GridFTP Striping Types. More...
 
typedef struct
globus_ftp_control_round_robin_s 
globus_ftp_control_round_robin_t
 Control striping round robin attribute structure.
 
typedef union
globus_ftp_control_dcau_u 
globus_ftp_control_dcau_t
 Control DCAU union.
 
typedef union
globus_ftp_control_layout_u 
globus_ftp_control_layout_t
 Control striping attribute union.
 
typedef enum
globus_ftp_control_structure_e 
globus_ftp_control_structure_t
 
typedef enum
globus_ftp_control_parallelism_mode_e 
globus_ftp_control_parallelism_mode_t
 
typedef union
globus_ftp_control_parallelism_u 
globus_ftp_control_parallelism_t
 Control parallelism attribute structure.
 
typedef enum
globus_ftp_control_tcpbuffer_mode_e 
globus_ftp_control_tcpbuffer_mode_t
 
typedef struct
globus_ftp_control_tcpbuffer_automatic_s 
globus_ftp_control_tcpbuffer_automatic_t
 Automatically set the TCP buffer/window size.
 
typedef union
globus_ftp_control_tcpbuffer_t 
globus_ftp_control_tcpbuffer_t
 Control tcpbuffer attribute structure.
 
typedef struct
globus_ftp_control_auth_info_s 
globus_ftp_control_auth_info_t
 Authentication Values. More...
 
typedef void(* globus_ftp_control_response_callback_t )(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_response_t *ftp_response)
 
typedef void(* globus_ftp_control_callback_t )(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error)
 
typedef void(* globus_ftp_control_command_callback_t )(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, union globus_ftp_control_command_u *command)
 
typedef void(* globus_ftp_control_auth_callback_t )(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_auth_info_t *auth_result)
 
typedef unsigned long globus_ftp_control_auth_requirements_t
 
typedef void(* globus_ftp_control_data_callback_t )(void *callback_arg, globus_ftp_control_handle_t *handle, globus_object_t *error, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)
 
typedef void(* globus_ftp_control_server_callback_t )(void *callback_arg, struct globus_ftp_control_server_s *server_handle, globus_object_t *error)
 Server callbackA function with this signature can be used as general callbacks for the GridFTP server API. More...
 

Enumerations

enum  globus_ftp_control_type_e {
  GLOBUS_FTP_CONTROL_TYPE_NONE, GLOBUS_FTP_CONTROL_TYPE_ASCII = 'A', GLOBUS_FTP_CONTROL_TYPE_EBCDIC = 'E', GLOBUS_FTP_CONTROL_TYPE_IMAGE = 'I',
  GLOBUS_FTP_CONTROL_TYPE_LOCAL = 'L'
}
 GridFTP TYPE values. More...
 
enum  globus_ftp_control_mode_e {
  GLOBUS_FTP_CONTROL_MODE_NONE, GLOBUS_FTP_CONTROL_MODE_STREAM = 'S', GLOBUS_FTP_CONTROL_MODE_BLOCK = 'B', GLOBUS_FTP_CONTROL_MODE_EXTENDED_BLOCK = 'E',
  GLOBUS_FTP_CONTROL_MODE_COMPRESSED = 'C'
}
 GridFTP MODE values. More...
 
enum  globus_ftp_control_dcau_mode_e { GLOBUS_FTP_CONTROL_DCAU_NONE = 'N', GLOBUS_FTP_CONTROL_DCAU_SELF = 'A', GLOBUS_FTP_CONTROL_DCAU_SUBJECT = 'S', GLOBUS_FTP_CONTROL_DCAU_DEFAULT }
 GridFTP DCAU values. More...
 
enum  globus_ftp_control_striping_mode_e
 GridFTP Striping Types. More...
 
enum  globus_ftp_control_protection_t { GLOBUS_FTP_CONTROL_PROTECTION_CLEAR = 'C', GLOBUS_FTP_CONTROL_PROTECTION_SAFE = 'S', GLOBUS_FTP_CONTROL_PROTECTION_CONFIDENTIAL = 'E', GLOBUS_FTP_CONTROL_PROTECTION_PRIVATE = 'P' }
 GridFTP Protection Types. More...
 
enum  globus_ftp_control_delay_passive_t
 
enum  globus_ftp_control_structure_e
 
enum  globus_ftp_control_parallelism_mode_e
 
enum  globus_ftp_control_tcpbuffer_mode_e { GLOBUS_FTP_CONTROL_TCPBUFFER_DEFAULT, GLOBUS_FTP_CONTROL_TCPBUFFER_FIXED, GLOBUS_FTP_CONTROL_TCPBUFFER_AUTOMATIC }
 

Functions

globus_result_t globus_ftp_control_local_layout (globus_ftp_control_handle_t *handle, globus_ftp_control_layout_t *layout, globus_size_t data_size)
 Set data layout. More...
 
globus_result_t globus_ftp_control_data_set_interface (globus_ftp_control_handle_t *handle, const char *interface_addr)
 Create an outgoing FTP data connection. More...
 
globus_result_t globus_ftp_control_create_data_info (globus_ftp_control_handle_t *handle, globus_ftp_control_data_write_info_t *data_info, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, globus_ftp_control_data_callback_t callback, void *callback_arg)
 Create a globus_ftp_control_data_write_info_t structure. More...
 
globus_result_t globus_ftp_control_release_data_info (globus_ftp_control_handle_t *handle, globus_ftp_control_data_write_info_t *data_info)
 Release a data_info structure. More...
 
globus_result_t globus_ftp_control_data_write_stripe (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, int stripe_ndx, globus_ftp_control_data_callback_t callback, void *callback_arg)
 Write FTP data to a stripe. More...
 
globus_result_t globus_X_ftp_control_data_write_stripe (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, int stripe_ndx, globus_ftp_control_data_write_info_t *data_info)
 Write data to a stripe from an enqueue callback. More...
 
globus_result_t globus_ftp_control_auth_info_init (globus_ftp_control_auth_info_t *auth_info, gss_cred_id_t credential_handle, globus_bool_t encrypt, char *user, char *password, char *account, char *subject)
 Initialize authentication information. More...
 
int globus_ftp_control_auth_info_compare (globus_ftp_control_auth_info_t *auth_info_1, globus_ftp_control_auth_info_t *auth_info_2)
 Compare authentication information. More...
 
globus_result_t globus_ftp_control_handle_init (globus_ftp_control_handle_t *handle)
 Initialize a globus ftp handle. More...
 
globus_result_t globus_ftp_control_handle_destroy (globus_ftp_control_handle_t *handle)
 Destroy a globus ftp handle. More...
 
globus_result_t globus_ftp_control_server_handle_init (globus_ftp_control_server_t *handle)
 Initialize a GridFTP server handle. More...
 
globus_result_t globus_ftp_control_server_handle_destroy (globus_ftp_control_server_t *handle)
 Destroy a GridFTP server handle. More...
 
globus_result_t globus_ftp_control_response_destroy (globus_ftp_control_response_t *response)
 Free the memory associated with a response. More...
 
globus_result_t globus_ftp_control_response_copy (globus_ftp_control_response_t *src, globus_ftp_control_response_t *dest)
 Copy a response structure. More...
 
globus_result_t globus_ftp_control_connect (globus_ftp_control_handle_t *handle, char *host, unsigned short port, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Create a new control connection to an FTP server. More...
 
globus_result_t globus_ftp_control_authenticate (globus_ftp_control_handle_t *handle, globus_ftp_control_auth_info_t *auth_info, globus_bool_t use_auth, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Authenticate the user to the FTP server. More...
 
globus_result_t globus_ftp_control_authenticate_ex (globus_ftp_control_handle_t *handle, globus_ftp_control_auth_info_t *auth_info, globus_bool_t use_auth, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Authenticate the user to the FTP server. More...
 
globus_result_t globus_ftp_control_abort (globus_ftp_control_handle_t *handle, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Send a GridFTP ABORT. More...
 
globus_result_t globus_ftp_control_quit (globus_ftp_control_handle_t *handle, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Send a GridFTP QUIT. More...
 
globus_result_t globus_ftp_control_force_close (globus_ftp_control_handle_t *handle, globus_ftp_control_response_callback_t callback, void *callback_arg)
 Force a control connection to close. More...
 
globus_result_t globus_ftp_control_send_command (globus_ftp_control_handle_t *handle, const char *cmdspec, globus_ftp_control_response_callback_t callback, void *callback_arg,...)
 Send an FTP protocol command. More...
 
globus_result_t globus_ftp_control_local_pbsz (globus_ftp_control_handle_t *handle, unsigned long bufsize)
 Set data channel protection buffer size. More...
 
globus_result_t globus_ftp_control_get_pbsz (globus_ftp_control_handle_t *handle, unsigned long *bufsize)
 Get data channel protection buffer size. More...
 
globus_result_t globus_ftp_control_server_listen (globus_ftp_control_server_t *handle, unsigned short *port, globus_ftp_control_server_callback_t callback, void *callback_arg)
 Listen on for FTP Client Connections. More...
 
globus_result_t globus_ftp_control_server_listen_ex (globus_ftp_control_server_t *handle, globus_io_attr_t *attr, unsigned short *port, globus_ftp_control_server_callback_t callback, void *callback_arg)
 Listen on for FTP Client Connections. More...
 
globus_result_t globus_ftp_control_server_stop (globus_ftp_control_server_t *listener, globus_ftp_control_server_callback_t callback, void *callback_arg)
 Stop listening for GridFTP client connections. More...
 
globus_result_t globus_ftp_control_server_accept (globus_ftp_control_server_t *listener, globus_ftp_control_handle_t *handle, globus_ftp_control_callback_t callback, void *callback_arg)
 Accept a Client Connection. More...
 
globus_result_t globus_ftp_control_server_authenticate (globus_ftp_control_handle_t *handle, globus_ftp_control_auth_requirements_t auth_requirements, globus_ftp_control_auth_callback_t callback, void *callback_arg)
 Authenticate a GridFTP Client Connection. More...
 
globus_result_t globus_ftp_control_read_commands (globus_ftp_control_handle_t *handle, globus_ftp_control_command_callback_t callback, void *callback_arg)
 Read GridFTP commands. More...
 
globus_result_t globus_ftp_control_send_response (globus_ftp_control_handle_t *handle, const char *respspec, globus_ftp_control_callback_t callback, void *callback_arg,...)
 Send a GridFTP response. More...
 
globus_result_t globus_ftp_control_command_copy (globus_ftp_control_command_t *dest, globus_ftp_control_command_t *src)
 Copy of GridFTP command. More...
 
globus_result_t globus_ftp_control_command_init (globus_ftp_control_command_t *command, char *raw_command, globus_ftp_control_auth_info_t *auth_info)
 Initialize a GridFTP command. More...
 
globus_result_t globus_ftp_control_command_destroy (globus_ftp_control_command_t *command)
 Destroy a GridFTP command. More...
 
globus_result_t globus_ftp_control_data_force_close (globus_ftp_control_handle_t *control_handle, globus_ftp_control_callback_t destroy_callback, void *destroy_callback_arg)
 Close data connections. More...
 
globus_result_t globus_ftp_control_local_send_eof (globus_ftp_control_handle_t *handle, globus_bool_t send_eof)
 Enable or disable automatic EOF handling. More...
 
globus_result_t globus_ftp_control_data_send_eof (globus_ftp_control_handle_t *handle, int count[], int array_size, globus_bool_t eof_message, globus_ftp_control_callback_t cb, void *user_arg)
 Send EOF. More...
 
globus_result_t globus_ftp_control_data_connect_read (globus_ftp_control_handle_t *handle, globus_ftp_control_data_connect_callback_t callback, void *user_arg)
 Create an incoming FTP data connection. More...
 
globus_result_t globus_ftp_control_data_connect_write (globus_ftp_control_handle_t *handle, globus_ftp_control_data_connect_callback_t callback, void *user_arg)
 Create an outgoing FTP data connection. More...
 
globus_result_t globus_ftp_control_data_add_channels (globus_ftp_control_handle_t *handle, unsigned int num_channels, unsigned int stripe)
 Add data channels. More...
 
globus_result_t globus_ftp_control_data_remove_channels (globus_ftp_control_handle_t *handle, unsigned int num_channels, unsigned int stripe)
 Remove Data Channels. More...
 
globus_result_t globus_ftp_control_data_query_channels (globus_ftp_control_handle_t *handle, unsigned int *num_channels, unsigned int stripe)
 Number of data channels. More...
 
globus_result_t globus_ftp_control_data_get_total_data_channels (globus_ftp_control_handle_t *handle, unsigned int *num_channels, unsigned int stripe_ndx)
 Get Total Data Channels For a Stripe. More...
 
globus_result_t globus_ftp_control_local_parallelism (globus_ftp_control_handle_t *handle, globus_ftp_control_parallelism_t *parallelism)
 Set control handle parallelism. More...
 
globus_result_t globus_ftp_control_local_pasv (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *address)
 Create a passive socket. More...
 
globus_result_t globus_ftp_control_local_spas (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)
 Create multiple passive sockets. More...
 
globus_result_t globus_ftp_control_local_port (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *address)
 Set remote data address. More...
 
globus_result_t globus_ftp_control_local_spor (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)
 Set remote data addresses. More...
 
globus_result_t globus_ftp_control_local_type (globus_ftp_control_handle_t *handle, globus_ftp_control_type_t type, int form_code)
 Set control handle TYPE value. More...
 
globus_result_t globus_ftp_control_local_tcp_buffer (globus_ftp_control_handle_t *handle, globus_ftp_control_tcpbuffer_t *tcp_buffer)
 Set data handle TCP buffer size. More...
 
globus_result_t globus_ftp_control_local_mode (globus_ftp_control_handle_t *handle, globus_ftp_control_mode_t mode)
 Set data handle mode. More...
 
globus_result_t globus_ftp_control_local_dcau (globus_ftp_control_handle_t *handle, const globus_ftp_control_dcau_t *dcau, gss_cred_id_t delegated_credential_handle)
 Set data channel DCAU. More...
 
globus_result_t globus_ftp_control_local_stru (globus_ftp_control_handle_t *handle, globus_ftp_control_structure_t structure)
 Set data channel structure. More...
 
globus_result_t globus_ftp_control_data_write (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, globus_ftp_control_data_callback_t callback, void *callback_arg)
 Write data to data connections. More...
 
globus_result_t globus_ftp_control_data_read (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t max_length, globus_ftp_control_data_callback_t callback, void *callback_arg)
 Read data from data connections. More...
 
globus_result_t globus_ftp_control_set_force_order (globus_ftp_control_handle_t *handle, globus_bool_t order_data, globus_off_t starting_offset)
 Set data handle to return read mode E data in order. More...
 
globus_result_t globus_ftp_control_ipv6_allow (globus_ftp_control_handle_t *handle, globus_bool_t allow)
 Not documented yet.
 
globus_result_t globus_ftp_control_client_get_connection_info_ex (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *local_info, globus_ftp_control_host_port_t *remote_info)
 Not documented yet.
 

Detailed Description

GridFTP Control Connection API.

Typedef Documentation

typedef void(* globus_ftp_control_auth_callback_t)(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_auth_info_t *auth_result)

Server authentication complete callback.

A function with this signature is registered by calling globus_ftp_control_accept(). It is called when the authentication protocol has completed. Based on the auth_result, the server implementor should determine authorization and then send the appropriate response using globus_ftp_control_send_response(), indicating to the client whether authorization was successful or not.

Parameters
handleThis structure is populated when the callback is called and represents a control connection to the client.
errorIndicates if a command was successfully read or or if a failure occurred. This object will be freed once this callback returns. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using globus_object_copy(), and free it with globus_object_free().
auth_resultA globus_ftp_control_auth_result_t containing the values the client sent for gss authentication, user name, password and account. If any of the values were not sent by the client they will be NULL. Based on that information the user can decide if the client will be authorized for use of the server.
callback_argThe user argument passed to the callback.

Authentication Values.

This structure is populated and passed back to the user via the globus_ftp_control_auth_callback_t(). It contains the information needed to decide if a client may use the server.

Authentication requirements.

The value of this should be a bitwise or of

  • GLOBUS_FTP_CONTROL_AUTH_NONE
  • GLOBUS_FTP_CONTROL_AUTH_GSSAPI
  • GLOBUS_FTP_CONTROL_AUTH_USER
  • GLOBUS_FTP_CONTROL_AUTH_PASS
  • GLOBUS_FTP_CONTROL_AUTH_ACCT
typedef void(* globus_ftp_control_callback_t)(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error)

Asynchronous control callback.

This callback is used as a generic control operation callback.

Parameters
callback_argUser supplied argument to the callback function
handleA pointer to the GridFTP control handle. Used to identify which control connection the operation was applied to.
errorPointer to a globus error object containing information about any errors that occurred processing the operation
typedef void(* globus_ftp_control_command_callback_t)(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, union globus_ftp_control_command_u *command)

Server command callback.

When a command from a client is received on the control channel a user callback with this signature is called.

Parameters
callback_argThe user argument passed to the callback function.
handleThe control handle that the command was issued on.
errorIndicates if a command was successfully read or or if a failure occurred. This object will be freed once this callback returns. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using globus_object_copy(), and free it with globus_object_free().
commandThe command structure indicates what type of command the client issued. Based on the 'type' further information can be extracted. This command structure will be freed once this callback returns. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using globus_ftp_control_command_copy(), and free it with globus_ftp_control_command_free().
typedef void(* globus_ftp_control_data_callback_t)(void *callback_arg, globus_ftp_control_handle_t *handle, globus_object_t *error, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)

Asynchronous data transmission operation callback.

This callback is called in functions that send or receive data on the data channel(s).

In the case of a write, this function is invoked when the entire data buffer is sent. Depending on the data transfer properties set by the globus_ftp_control_local_*() functions, the data may actually be split into multiple buffers and sent to multiple data nodes.

In the case of a read, this function will return a single extent of the data. The order of the data returned is not defined in an extended block mode data transfer, unless the ordered_data flag is set. It is up to the user of the API to re-construct the file order.

Parameters
callback_argUser supplied argument to the callback function
handleA pointer to the GridFTP control handle. Used to identify which control connection the operation was applied to.
errorPointer to a globus error object containing information about any errors that occurred processing the operation
bufferThe user buffer passed as a parameter to globus_ftp_control_data_read() or globus_ftp_control_data_write().
lengthThe amount of data in the buffer. In the case of an incoming data channel, this may be less than the buffer size.
offsetThe file offset of the data which is contained in the buffer.
eofThis is set to GLOBUS_TRUE then all of the data associated with the transfer has arrived on the data connections associated with this handle. If multiple data callbacks are registered with this handle, there is no guaranteed order of the EOF callback with respect to other data callbacks. If multiple callbacks are registered when EOF is reached on the data connections, at least one callback function will be called with eof set to GLOBUS_TRUE.

control parallelism Types

typedef void(* globus_ftp_control_response_callback_t)(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_response_t *ftp_response)

Asynchronous operation completion callback.

This callback is called whenever a reply to command is received on the FTP control channel. It allows the user to handle the received reply or alternatively handle any errors that occurred during the interaction with the FTP server. This function will be called multiple times in the case when intermediate responses (1yz) are received.

Parameters
callback_argUser supplied argument to the callback function
handleA pointer to the GridFTP control handle. Used to identify which control connection the operation was applied to.
errorPointer to a globus error object containing information about any errors that occurred processing the operation
ftp_responsePointer to a response structure containing the FTP response to the command.

control structure structure

TCP Buffer Setting Modes

Enumeration Type Documentation

delayed passive flags

control parallelism Types

control structure structure

TCP Buffer Setting Modes

Enumerator
GLOBUS_FTP_CONTROL_TCPBUFFER_DEFAULT 

Don't change the TCP buffer/window size from the system default

GLOBUS_FTP_CONTROL_TCPBUFFER_FIXED 

Set the TCP buffer/window size to a fixed value

GLOBUS_FTP_CONTROL_TCPBUFFER_AUTOMATIC 

Automatically set the TCP buffer/window size