.TH "globus_gram_protocol_io" 3 "Fri Nov 11 2016" "Version 12.15" "globus_gram_protocol" \" -*- nroff -*- .ad l .nh .SH NAME globus_gram_protocol_io \- Message I/O .PP Mesage I/O\&. .SS "Typedefs" .in +1c .ti -1c .RI "typedef unsigned long \fBglobus_gram_protocol_handle_t\fP" .br .RI "Unique GRAM protocol identifier\&. " .ti -1c .RI "typedef struct globus_gram_protocol_hash_entry_s \fBglobus_gram_protocol_extension_t\fP" .br .RI "GRAM protocol extension attribute-value pair\&. " .in -1c .SS "Functions" .in +1c .ti -1c .RI "int \fBglobus_gram_protocol_setup_attr\fP (globus_io_attr_t *attr)" .br .RI "Create default I/O attribute for GRAM\&. " .ti -1c .RI "globus_bool_t \fBglobus_gram_protocol_authorize_self\fP (gss_ctx_id_t context)" .br .RI "Determine if a GSSAPI context has the same source and target identities\&. " .ti -1c .RI "int \fBglobus_gram_protocol_allow_attach\fP (char **url, globus_gram_protocol_callback_t callback, void *callback_arg)" .br .RI "Create a GRAM protocol service listener\&. " .ti -1c .RI "int \fBglobus_gram_protocol_callback_disallow\fP (char *url)" .br .RI "Stop a GASS protocol listener from handling new requests\&. " .ti -1c .RI "int \fBglobus_gram_protocol_post\fP (const char *url, \fBglobus_gram_protocol_handle_t\fP *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, globus_gram_protocol_callback_t callback, void *callback_arg)" .br .RI "Post a GRAM protocol request to a GRAM server\&. " .ti -1c .RI "int \fBglobus_gram_protocol_post_delegation\fP (const char *url, \fBglobus_gram_protocol_handle_t\fP *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, gss_cred_id_t cred_handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_callback_t callback, void *callback_arg)" .br .RI "Post a GRAM protocol delegation request to a GRAM server\&. " .ti -1c .RI "int \fBglobus_gram_protocol_reply\fP (\fBglobus_gram_protocol_handle_t\fP handle, int code, globus_byte_t *message, globus_size_t message_size)" .br .RI "Reply to a GRAM protocol message\&. " .ti -1c .RI "int \fBglobus_gram_protocol_accept_delegation\fP (\fBglobus_gram_protocol_handle_t\fP handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_delegation_callback_t callback, void *arg)" .br .RI "Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential\&. " .ti -1c .RI "int \fBglobus_gram_protocol_get_sec_context\fP (\fBglobus_gram_protocol_handle_t\fP handle, gss_ctx_id_t *context)" .br .RI "Get a reference to the GSSAPI security context associated with a GRAM protocol handle\&. " .in -1c .SH "Detailed Description" .PP Mesage I/O\&. The functions in this section are related to sending and receiving GRAM protocol messages\&. .SH "Typedef Documentation" .PP .SS "\fBglobus_gram_protocol_extension_t\fP" .PP GRAM protocol extension attribute-value pair\&. The \fIglobus_gram_protocol_extension_t\fP data type contains an attribute value pair that represents an extension to the GRAM2 protocol\&. .SS "\fBglobus_gram_protocol_handle_t\fP" .PP Unique GRAM protocol identifier\&. The \fI\fBglobus_gram_protocol_handle_t\fP\fP data type is used by functions in the GRAM protocol API as a unique discriminant between instances of a callback invocation\&. .PP There are no public functions that operate on these handles\&. They are used as identifiers for callback functions\&. .SH "Function Documentation" .PP .SS "int globus_gram_protocol_accept_delegation (\fBglobus_gram_protocol_handle_t\fP handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_delegation_callback_t callback, void * arg)" .PP Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential\&. The \fBglobus_gram_protocol_accept_delegation()\fP function performs the service side accepting of a GRAM protocol delegation exchange with a GRAM protocol client\&. This is performed after the delegation HTTP message has been unpacked by the application\&. .PP The \fBglobus_gram_protocol_accept_delegation()\fP function returns after processing the GSSAPI handshake, passing the delegated credential or error information to the function pointed to by the \fIcallback\fP parameter\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A GRAM protocol handle on which the server received a protocol refresh message\&. .br \fIrestriction_oids\fP A set of OID values indicating the data in the \fIrestriction_buffers\fP parameter\&. This parameter may have the value GSS_C_NO_OID_SET if there are no restriction buffers\&. .br \fIrestriction_buffers\fP A set of binary data buffers which will be included in the delegated credential\&. The type of data in these buffers is determined by the OID values in \fIrestriction_oids\fP\&. This parameter may have the value GSS_C_EMPTY_BUFFER_SET if there are no extra restrictions to be added to the credential\&. .br \fIreq_flags\fP A bitwise-or of GSSAPI flag values to use when delegating the credential using gss_init_delegation()\&. .br \fItime_req\fP An integer value indicating the length of time (in seconds) that the delegated credential should be valid for\&. This is an advisory parameter: no error will be returned if a credential with the requested lifetime can not be created\&. .br \fIcallback\fP A pointer to a function to call when the delegation handshake has completed or failed\&. This function will be passed the value of \fIarg\fP as well as the handle and delegated credential or erorr that occurred processing the delegation messages\&. .br \fIarg\fP A pointer to application-specific data which will be passed to the function pointed to by \fIcallback\fP as its first parameter\&. This may be NULL if the application has a NULL \fIcallback\fP or does not require the pointer to establish its context in the callback\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fBglobus_gram_protocol_accept_delegation()\fP returns GLOBUS_SUCCESS and registers the function pointed to by \fIcallback\fP to be called after the delegation completes or fails\&. If an error occurs, \fBglobus_gram_protocol_accept_delegation()\fP returns an integer error code and the \fIcallback\fP function is not registered\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_MALLOC_FAILED\fP Malloc failed .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES\fP No resources .RE .PP .SS "int globus_gram_protocol_allow_attach (char ** url, globus_gram_protocol_callback_t callback, void * callback_arg)" .PP Create a GRAM protocol service listener\&. The \fBglobus_gram_protocol_allow_attach()\fP function creates a GRAM protocol listener to which other processes can send GRAM protocol messages\&. The listener will automatically accept new connections on it's TCP/IP port and parse GRAM requests\&. The requests will be passed to the function pointed to by the \fIcallback\fP parameter for the application to unpack, handle, and send a reply by calling \fBglobus_gram_protocol_reply()\fP\&. .PP \fBParameters:\fP .RS 4 \fIurl\fP An output parameter that will be initialized to point to a string that will hold the URL of the new listener\&. This URL may be published or otherwise passed to applications which need to contact this GRAM protocol server\&. The URL will be of the form \fIhttps://host:port/\fP\&. .br \fIcallback\fP A pointer to a function to be called when a new request has been received by this listener\&. This function will be passed the request, which may be unpacked using one of the functions described in the \fBmessage packing \fP section of the documentation\&. .br \fIcallback_arg\fP A pointer to arbitrary user data which will be passed to the callback function as its first parameter\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fBglobus_gram_protocol_allow_attach()\fP returns \fIGLOBUS_SUCCESS\fP and modifies the \fIurl\fP parameter to point to a newly allocated string\&. The caller is then responsible for freeing this string\&. If an error occurs, an integer error code will be returned and the \fIurl\fP parameter value will be uninitialized\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED\fP Out of memory .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES\fP No resources .RE .PP \fBSee also:\fP .RS 4 \fBglobus_gram_protocol_callback_disallow()\fP .RE .PP .SS "globus_bool_t globus_gram_protocol_authorize_self (gss_ctx_id_t context)" .PP Determine if a GSSAPI context has the same source and target identities\&. The \fBglobus_gram_protocol_authorize_self()\fP function implements a predicate which returns true if the source and destination identities used to establish the GSSAPI security context are the same\&. .PP \fBParameters:\fP .RS 4 \fIcontext\fP A GSSAPI security context which has been previously established\&. The source and target names of this context will be inspected by this function\&. .RE .PP \fBReturns:\fP .RS 4 If the source and target identiies are the same, then \fI\fBglobus_gram_protocol_authorize_self()\fP\fP returns \fIGLOBUS_TRUE\fP, otherwise, this function returns \fIGLOBUS_FALSE\fP\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_TRUE\fP The source and target identities are the same\&. .br \fIGLOBUS_FALSE\fP The source and target identities are not the same or this function is unabled to inspect the security context\&. .RE .PP .SS "int globus_gram_protocol_callback_disallow (char * url)" .PP Stop a GASS protocol listener from handling new requests\&. The \fBglobus_gram_protocol_callback_disallow()\fP function stops the listener named by the value of the \fIurl\fP parameter from receiving any new requests\&. It also frees memory used internally by the GRAM protocol implementation to handle requests for this listener\&. .PP The \fBglobus_gram_protocol_callback_disallow()\fP function will wait until all requests being processed by this listener have completed processing\&. Once \fBglobus_gram_protocol_callback_disallow()\fP returns, no further request callbacks will occur for the listener\&. .PP \fBParameters:\fP .RS 4 \fIurl\fP A pointer to the URL string which names the listener to disable\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, the \fBglobus_gram_protocol_callback_disallow()\fP function returns \fIGLOBUS_SUCCESS\fP and frees internal state associated with the listener named by the \fIurl\fP parameter\&. If an error occurs, its integer error code value will be returned and no listener will be affected\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT\fP Invalid job contact .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_CALLBACK_NOT_FOUND\fP Callback not found .RE .PP \fBSee also:\fP .RS 4 \fBglobus_gram_protocol_allow_attach()\fP .RE .PP .SS "int globus_gram_protocol_get_sec_context (\fBglobus_gram_protocol_handle_t\fP handle, gss_ctx_id_t * context)" .PP Get a reference to the GSSAPI security context associated with a GRAM protocol handle\&. The \fI\fBglobus_gram_protocol_get_sec_context()\fP\fP function retrieves a reference to the GSSAPI security context associated with a particular GRAM protocol handle\&. This context may be inspected by the caller but must not be destroyed by the caller\&. The \fI\fBglobus_gram_protocol_get_sec_context()\fP\fP function must only be called after the GRAM protocol library has called the \fIcallback\fP function associated with a GRAM protocol message exchange\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP The GRAM protocol handle associated with a GRAM protocol message exchange\&. .br \fIcontext\fP The GSSAPI security context associated with the protocol handle\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fI\fBglobus_gram_protocol_get_sec_context()\fP\fP returns GLOBUS_SUCCESS and modifies the \fIcontext\fP parameter to point to the security context associated with the \fIhandle\fP parameter\&. If an error occurs, an interger error code is returned and the value of the \fIcontext\fP parameter is undefined\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .RE .PP .SS "int globus_gram_protocol_post (const char * url, \fBglobus_gram_protocol_handle_t\fP * handle, globus_io_attr_t * attr, globus_byte_t * message, globus_size_t message_size, globus_gram_protocol_callback_t callback, void * callback_arg)" .PP Post a GRAM protocol request to a GRAM server\&. The \fBglobus_gram_protocol_post()\fP function initiates a GRAM protocol message exchange with a GRAM protocol listener\&. It returns after framing the message and initiating the connection\&. When the message exchange is complete, the function pointed to by \fIcallback\fP is invoked either in another thread or when a non-threaded application calls the globus_poll() or globus_cond_wait() functions\&. .PP \fBParameters:\fP .RS 4 \fIurl\fP A pointer to a string containing the URL of the server to post the request to\&. This URL must be an HTTPS URL naming a GRAM service resource\&. .br \fIhandle\fP A pointer to a \fIglobus_gram_protocol_handle_t\fP which will be initialized with a unique handle identifier\&. This identifier will be passed to the \fIcallback\fP function to allow the caller to differentiate replies to multiple GRAM Protocol requests\&. This pointer may be NULL if the caller will not have multiple simultaneous requests\&. .br \fIattr\fP A pointer to a Globus I/O attribute set, which will be used as parameters when connecting to the GRAM server\&. The value of \fIattr\fP may be NULL, in which case, the default GRAM Protocol attributes will be used (authentication to self, SSL-compatible transport, with message integrity)\&. .br \fImessage\fP A pointer to a message string to be sent to the GRAM server\&. This is normally created by calling one of the GRAM Protocol \fBpack \fP functions\&. This message need not be NULL terminated as the length is passed in the \fImessage_size\fP parameter\&. .br \fImessage_size\fP The length of the \fImessage\fP string\&. Typically generated as one of the output parameters to one of the GRAM Protocol \fBpack \fP functions\&. .br \fIcallback\fP A pointer to a function to call when the response to this message is received or the message exchange fails\&. This may be NULL, in which case no callback will be received, and the caller will be unable to verify whether the message was successfully received\&. .br \fIcallback_arg\fP A pointer to application-specific data which will be passed to the function pointed to by \fIcallback\fP as its first parameter\&. This may be NULL if the application has a NULL \fIcallback\fP or does not require the pointer to establish its context in the callback\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fBglobus_gram_protocol_post()\fP returns GLOBUS_SUCCESS, initiates the message exchange, registers the function pointed to by \fIcallback\fP to be called when the exchange completes or fails, and modifies the \fIhandle\fP parameter if it is non-NULL\&. If an error occurs, its error code will be returned, the \fIhandle\fP parameter will be uninitialized and the function pointed to be \fIcallback\fP will not be called\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT\fP Invalid job contact .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED\fP Out of memory .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES\fP No resources .RE .PP \fBNote:\fP .RS 4 There is no way to time out or cancel a service request that is begun with \fBglobus_gram_protocol_post()\fP\&. .RE .PP \fBSee also:\fP .RS 4 \fBglobus_gram_protocol_reply()\fP .RE .PP .SS "int globus_gram_protocol_post_delegation (const char * url, \fBglobus_gram_protocol_handle_t\fP * handle, globus_io_attr_t * attr, globus_byte_t * message, globus_size_t message_size, gss_cred_id_t cred_handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_callback_t callback, void * callback_arg)" .PP Post a GRAM protocol delegation request to a GRAM server\&. The \fBglobus_gram_protocol_post_delegation()\fP function initiates a GRAM protocol delegation exchange with a GRAM protocol listener\&. The delegation protocol is a custom mix of HTTP and SSL records\&. .PP The \fBglobus_gram_protocol_post_delegation()\fP function returns after framing the message and initiating the connection to be used for delegation\&. When the message exchange is complete, the function pointed to by \fIcallback\fP is invoked either in another thread or when a non-threaded application calls the globus_poll() or globus_cond_wait() functions\&. .PP \fBParameters:\fP .RS 4 \fIurl\fP A pointer to a string containing the URL of the server to post the request to\&. This URL must be an HTTPS URL naming a GRAM service resource\&. .br \fIhandle\fP A pointer to a \fIglobus_gram_protocol_handle_t\fP which will be initialized with a unique handle identifier\&. This identifier will be passed to the \fIcallback\fP function to allow the caller to differentiate replies to multiple GRAM Protocol requests\&. This pointer may be NULL if the caller will not have multiple simultaneous requests\&. .br \fIattr\fP A pointer to a Globus I/O attribute set, which will be used as parameters when connecting to the GRAM server\&. The value of \fIattr\fP may be NULL, in which case, the default GRAM Protocol attributes will be used (authentication to self, SSL-compatible transport, with message integrity)\&. .br \fImessage\fP A pointer to a message string to be sent to the GRAM server\&. This is normally created by calling one of the GRAM Protocol \fBpack \fP functions\&. This message need not be NULL terminated as the length is passed in the \fImessage_size\fP parameter\&. .br \fImessage_size\fP The length of the \fImessage\fP string\&. Typically generated as one of the output parameters to one of the GRAM Protocol \fBpack \fP functions\&. .br \fIcred_handle\fP Handle to an existing GSSAPI security credential\&. If this parameter is set to \fIGSS_C_NO_CREDENTIAL\fP, then the current account's default credential will be used\&. A proxy credential sharing the identity of this credential will be delegated to the GRAM protocol server\&. .br \fIrestriction_oids\fP A set of OID values indicating the data in the \fIrestriction_buffers\fP parameter\&. This parameter may have the value GSS_C_NO_OID_SET if there are no restriction buffers\&. .br \fIrestriction_buffers\fP A set of binary data buffers which will be included in the delegated credential\&. The type of data in these buffers is determined by the OID values in \fIrestriction_oids\fP\&. This parameter may have the value GSS_C_EMPTY_BUFFER_SET if there are no extra restrictions to be added to the credential\&. .br \fIreq_flags\fP A bitwise-or of GSSAPI flag values to use when delegating the credential using gss_init_delegation()\&. .br \fItime_req\fP An integer value indicating the length of time (in seconds) that the delegated credential should be valid for\&. This is an advisory parameter: no error will be returned if a credential with the requested lifetime can not be created\&. .br \fIcallback\fP A pointer to a function to call when the response to this message is received or the message exchange fails\&. This may be NULL, in which case no callback will be received, and the caller will be unable to verify whether the message was successfully received\&. .br \fIcallback_arg\fP A pointer to application-specific data which will be passed to the function pointed to by \fIcallback\fP as its first parameter\&. This may be NULL if the application has a NULL \fIcallback\fP or does not require the pointer to establish its context in the callback\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fBglobus_gram_protocol_post_delegation()\fP returns GLOBUS_SUCCESS, initiates the message exchange, registers the function pointed to by \fIcallback\fP to be called when the exchange completes or fails, and modifies the \fIhandle\fP parameter if it is non-NULL\&. If an error occurs, its error code will be returned, the \fIhandle\fP parameter will be uninitialized and the function pointed to be \fIcallback\fP will not be called\&. In the case of a protocol or delegation failure, the callback function will be called with the \fIerrorcode\fP parameter set to the error\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT\fP Invalid job contact .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED\fP Out of memory .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES\fP No resources .RE .PP \fBNote:\fP .RS 4 There is no way to time out or cancel a service request that is begun with \fBglobus_gram_protocol_post_delegation()\fP\&. .RE .PP \fBSee also:\fP .RS 4 \fBglobus_gram_protocol_reply()\fP .RE .PP .SS "int globus_gram_protocol_reply (\fBglobus_gram_protocol_handle_t\fP handle, int code, globus_byte_t * message, globus_size_t message_size)" .PP Reply to a GRAM protocol message\&. The \fI\fBglobus_gram_protocol_reply()\fP\fP function sends a response message to a client which initiated a GRAM message exchange\&. The \fI\fBglobus_gram_protocol_reply()\fP\fP function composes the message with an HTTP message frame and then sends it to the client which initiated the exchange\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A GRAM protocol handle which is used by this function to determine the network connection to use for this reply\&. This must be the same value as was passed as a parameter to the callback function registered with the \fI\fBglobus_gram_protocol_allow_attach()\fP\fP function\&. .br \fIcode\fP The HTTP response code\&. The code should be one from the set described in RFC 2616\&. .br \fImessage\fP A pointer to a message string to be sent to the GRAM client\&. This is normally created by calling one of the GRAM Protocol \fBpack \fP functions\&. This message need not be NULL terminated as the length is passed in the \fImessage_size\fP parameter\&. .br \fImessage_size\fP The length of the \fImessage\fP string\&. Typically generated as one of the output parameters to one of the GRAM Protocol \fBpack \fP functions\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fI\fBglobus_gram_protocol_reply()\fP\fP returns GLOBUS_SUCCESS, frames the \fImessage\fP with an HTTP header and initiates sending the message to the client\&. The caller must not try to use the value of the \fIhandle\fP parameter after this function returns\&. If an error occurs, its integer error code will be returned\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST\fP Invalid request .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES\fP No Resources .RE .PP \fBSee also:\fP .RS 4 \fBglobus_gram_protocol_allow_attach()\fP .RE .PP .SS "int globus_gram_protocol_setup_attr (globus_io_attr_t * attr)" .PP Create default I/O attribute for GRAM\&. The \fBglobus_gram_protocol_setup_attr()\fP function creates a new globus_io attribute containing the default set of values needed for communication between a GRAM client and a job manager\&. These attributes include: .IP "\(bu" 2 SO_KEEPALIVE .IP "\(bu" 2 GSSAPI Mutual Authentication .IP "\(bu" 2 GSSAPI Self Authorization .IP "\(bu" 2 SSL-compatible message wrapping .PP .PP \fBParameters:\fP .RS 4 \fIattr\fP A pointer to a \fIglobus_io_attr_t\fP structure which will be initialized by this function\&. .RE .PP \fBReturns:\fP .RS 4 Upon success, \fBglobus_gram_protocol_setup_attr()\fP modifies the \fIattr\fP parameter to point to a new attribute and returns the value \fIGLOBUS_SUCCESS\fP\&. When this occurs, the caller must destroy the attribute when no longer needed by calling globus_io_tcpattr_destroy()\&. If an error occurs, its value will be returned and the attribute pointed to by the \fIattr\fP parameter will be set to an uninitialized state\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GRAM_PROTOCOL_ERROR_CONNECTION_FAILED\fP Error initializing attribute .RE .PP .SH "Author" .PP Generated automatically by Doxygen for globus_gram_protocol from the source code\&.