globus_io  10.11
 All Files
globus_io.h
Go to the documentation of this file.
1 /*
2  * Copyright 1999-2006 University of Chicago
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
22 #ifndef GLOBUS_GLOBUS_IO_H
23 #define GLOBUS_GLOBUS_IO_H
24 
25 #include "globus_xio.h"
26 #include "globus_xio_tcp_driver.h"
27 #include "globus_xio_file_driver.h"
28 #include "globus_xio_gsi.h"
29 
30 #define GLOBUS_IO_OVER_XIO 1
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 #define GLOBUS_IO_MODULE (&globus_l_io_module)
37 
38 extern globus_module_descriptor_t globus_l_io_module;
39 
40 #define _IOSL(s) globus_common_i18n_get_string( \
41  GLOBUS_IO_MODULE, \
42  s)
43 
44 typedef struct globus_l_io_handle_s * globus_io_handle_t;
45 typedef struct globus_l_io_attr_s * globus_io_attr_t;
46 /*** XXXX ***/
47 typedef struct blah_s * globus_netlogger_handle_t;
48 
49 typedef void
50 (*globus_io_callback_t)(
51  void * callback_arg,
52  globus_io_handle_t * handle,
53  globus_result_t result);
54 
55 typedef void
56 (*globus_io_read_callback_t)(
57  void * arg,
58  globus_io_handle_t * handle,
59  globus_result_t result,
60  globus_byte_t * buf,
61  globus_size_t nbytes);
62 
63 typedef void
64 (*globus_io_write_callback_t)(
65  void * arg,
66  globus_io_handle_t * handle,
67  globus_result_t result,
68  globus_byte_t * buf,
69  globus_size_t nbytes);
70 
71 typedef void
72 (*globus_io_writev_callback_t)(
73  void * arg,
74  globus_io_handle_t * handle,
75  globus_result_t result,
76  struct iovec * iov,
77  globus_size_t iovcnt,
78  globus_size_t nbytes);
79 
80 typedef enum
81 {
82  GLOBUS_IO_HANDLE_TYPE_TCP_LISTENER,
83  GLOBUS_IO_HANDLE_TYPE_TCP_CONNECTED,
84  GLOBUS_IO_HANDLE_TYPE_UDSS_LISTENER,
85  GLOBUS_IO_HANDLE_TYPE_UDSS_CONNECTED,
86  GLOBUS_IO_HANDLE_TYPE_FILE,
87  GLOBUS_IO_HANDLE_TYPE_UDP_UNCONNECTED,
88  GLOBUS_IO_HANDLE_TYPE_UDP_CONNECTED,
89  GLOBUS_IO_HANDLE_TYPE_UDDS_UNCONNECTED,
90  GLOBUS_IO_HANDLE_TYPE_UDDS_CONNECTED,
91  GLOBUS_IO_HANDLE_TYPE_INTERNAL
92 } globus_io_handle_type_t;
93 
94 typedef enum
95 {
96  GLOBUS_IO_FILE_CREAT = GLOBUS_XIO_FILE_CREAT,
97  GLOBUS_IO_FILE_EXCL = GLOBUS_XIO_FILE_EXCL,
98  GLOBUS_IO_FILE_RDONLY = GLOBUS_XIO_FILE_RDONLY,
99  GLOBUS_IO_FILE_WRONLY = GLOBUS_XIO_FILE_WRONLY,
100  GLOBUS_IO_FILE_RDWR = GLOBUS_XIO_FILE_RDWR,
101  GLOBUS_IO_FILE_TRUNC = GLOBUS_XIO_FILE_TRUNC,
102  GLOBUS_IO_FILE_APPEND = GLOBUS_XIO_FILE_APPEND
103 } globus_io_file_flag_t;
104 
105 typedef enum
106 {
107  GLOBUS_IO_FILE_IRWXU = GLOBUS_XIO_FILE_IRWXU,
108  GLOBUS_IO_FILE_IRUSR = GLOBUS_XIO_FILE_IRUSR,
109  GLOBUS_IO_FILE_IWUSR = GLOBUS_XIO_FILE_IWUSR,
110  GLOBUS_IO_FILE_IXUSR = GLOBUS_XIO_FILE_IXUSR,
111  GLOBUS_IO_FILE_IRWXO = GLOBUS_XIO_FILE_IRWXO,
112  GLOBUS_IO_FILE_IROTH = GLOBUS_XIO_FILE_IROTH,
113  GLOBUS_IO_FILE_IWOTH = GLOBUS_XIO_FILE_IWOTH,
114  GLOBUS_IO_FILE_IXOTH = GLOBUS_XIO_FILE_IXOTH,
115  GLOBUS_IO_FILE_IRWXG = GLOBUS_XIO_FILE_IRWXG,
116  GLOBUS_IO_FILE_IRGRP = GLOBUS_XIO_FILE_IRGRP,
117  GLOBUS_IO_FILE_IWGRP = GLOBUS_XIO_FILE_IWGRP,
118  GLOBUS_IO_FILE_IXGRP = GLOBUS_XIO_FILE_IXGRP
119 } globus_io_file_create_mode_t;
120 
121 typedef enum
122 {
123  GLOBUS_IO_SEEK_SET = GLOBUS_XIO_FILE_SEEK_SET,
124  GLOBUS_IO_SEEK_CUR = GLOBUS_XIO_FILE_SEEK_CUR,
125  GLOBUS_IO_SEEK_END = GLOBUS_XIO_FILE_SEEK_END
126 } globus_io_whence_t;
127 
128 typedef enum
129 {
130  GLOBUS_IO_FILE_TYPE_TEXT = GLOBUS_XIO_FILE_TEXT,
131  GLOBUS_IO_FILE_TYPE_BINARY = GLOBUS_XIO_FILE_BINARY
132 } globus_io_file_type_t;
133 
134 typedef enum
135 {
136  GLOBUS_IO_SEND_MSG_OOB = GLOBUS_XIO_TCP_SEND_OOB
137 } globus_io_send_flags_t;
138 
139 globus_result_t
140 globus_io_register_cancel(
141  globus_io_handle_t * handle,
142  globus_bool_t perform_callbacks,
143  globus_io_callback_t cancel_callback,
144  void * cancel_arg);
145 
146 globus_result_t
147 globus_io_cancel(
148  globus_io_handle_t * handle,
149  globus_bool_t perform_callbacks);
150 
151 globus_result_t
152 globus_io_register_close(
153  globus_io_handle_t * handle,
154  globus_io_callback_t callback,
155  void * callback_arg);
156 
157 globus_result_t
158 globus_io_close(
159  globus_io_handle_t * handle);
160 
161 globus_io_handle_type_t
162 globus_io_get_handle_type(
163  globus_io_handle_t * handle);
164 
165 globus_result_t
166 globus_io_handle_get_user_pointer(
167  globus_io_handle_t * handle,
168  void ** user_pointer);
169 
170 globus_result_t
171 globus_io_handle_set_user_pointer(
172  globus_io_handle_t * handle,
173  void * user_pointer);
174 
175 globus_result_t
176 globus_io_register_read(
177  globus_io_handle_t * handle,
178  globus_byte_t * buf,
179  globus_size_t max_nbytes,
180  globus_size_t wait_for_nbytes,
181  globus_io_read_callback_t callback,
182  void * callback_arg);
183 
184 globus_result_t
185 globus_io_try_read(
186  globus_io_handle_t * handle,
187  globus_byte_t * buf,
188  globus_size_t max_nbytes,
189  globus_size_t * nbytes_read);
190 
191 globus_result_t
192 globus_io_read(
193  globus_io_handle_t * handle,
194  globus_byte_t * buf,
195  globus_size_t max_nbytes,
196  globus_size_t wait_for_nbytes,
197  globus_size_t * nbytes_read);
198 
199 globus_result_t
200 globus_io_register_write(
201  globus_io_handle_t * handle,
202  globus_byte_t * buf,
203  globus_size_t nbytes,
204  globus_io_write_callback_t write_callback,
205  void * callback_arg);
206 
207 globus_result_t
208 globus_io_register_send(
209  globus_io_handle_t * handle,
210  globus_byte_t * buf,
211  globus_size_t nbytes,
212  int flags,
213  globus_io_write_callback_t write_callback,
214  void * callback_arg);
215 
216 globus_result_t
217 globus_io_register_writev(
218  globus_io_handle_t * handle,
219  struct iovec * iov,
220  globus_size_t iovcnt,
221  globus_io_writev_callback_t writev_callback,
222  void * callback_arg);
223 
224 globus_result_t
225 globus_io_try_write(
226  globus_io_handle_t * handle,
227  globus_byte_t * buf,
228  globus_size_t max_nbytes,
229  globus_size_t * nbytes_written);
230 
231 globus_result_t
232 globus_io_try_send(
233  globus_io_handle_t * handle,
234  globus_byte_t * buf,
235  globus_size_t nbytes,
236  int flags,
237  globus_size_t * nbytes_sent);
238 
239 globus_result_t
240 globus_io_write(
241  globus_io_handle_t * handle,
242  globus_byte_t * buf,
243  globus_size_t nbytes,
244  globus_size_t * nbytes_written);
245 
246 globus_result_t
247 globus_io_send(
248  globus_io_handle_t * handle,
249  globus_byte_t * buf,
250  globus_size_t nbytes,
251  int flags,
252  globus_size_t * nbytes_sent);
253 
254 globus_result_t
255 globus_io_writev(
256  globus_io_handle_t * handle,
257  struct iovec * iov,
258  globus_size_t iovcnt,
259  globus_size_t * bytes_written);
260 
261 globus_result_t
262 globus_io_tcp_register_connect(
263  const char * host,
264  unsigned short port,
265  globus_io_attr_t * attr,
266  globus_io_callback_t callback,
267  void * callback_arg,
268  globus_io_handle_t * handle);
269 
270 globus_result_t
271 globus_io_tcp_connect(
272  const char * host,
273  unsigned short port,
274  globus_io_attr_t * attr,
275  globus_io_handle_t * handle);
276 
277 globus_result_t
278 globus_io_tcp_create_listener(
279  unsigned short * port,
280  int backlog,
281  globus_io_attr_t * attr,
282  globus_io_handle_t * handle);
283 
284 #define globus_io_register_listen globus_io_tcp_register_listen
285 #define globus_io_listen globus_io_tcp_listen
286 
287 globus_result_t
288 globus_io_tcp_register_listen(
289  globus_io_handle_t * handle,
290  globus_io_callback_t callback,
291  void * callback_arg);
292 
293 globus_result_t
294 globus_io_tcp_listen(
295  globus_io_handle_t * handle);
296 
297 globus_result_t
298 globus_io_tcp_register_accept(
299  globus_io_handle_t * listener_handle,
300  globus_io_attr_t * attr,
301  globus_io_handle_t * new_handle,
302  globus_io_callback_t callback,
303  void * callback_arg);
304 
305 globus_result_t
306 globus_io_tcp_accept(
307  globus_io_handle_t * listener_handle,
308  globus_io_attr_t * attr,
309  globus_io_handle_t * handle);
310 
311 globus_result_t
312 globus_io_register_select(
313  globus_io_handle_t * handle,
314  globus_io_callback_t read_callback_func,
315  void * read_callback_arg,
316  globus_io_callback_t write_callback_func,
317  void * write_callback_arg,
318  globus_io_callback_t except_callback_func,
319  void * except_callback_arg);
320 
321 /* host must have room for 4 ints. will fail if ip is ipv6 */
322 globus_result_t
323 globus_io_tcp_get_local_address(
324  globus_io_handle_t * handle,
325  int * host,
326  unsigned short * port);
327 
328 globus_result_t
329 globus_io_tcp_get_remote_address(
330  globus_io_handle_t * handle,
331  int * host,
332  unsigned short * port);
333 
334 /* host must have room for 16 ints,
335  * count will be passed back: 4 for ipv4, 16 for ipv6
336  */
337 globus_result_t
338 globus_io_tcp_get_local_address_ex(
339  globus_io_handle_t * handle,
340  int * host,
341  int * count,
342  unsigned short * port);
343 
344 globus_result_t
345 globus_io_tcp_get_remote_address_ex(
346  globus_io_handle_t * handle,
347  int * host,
348  int * count,
349  unsigned short * port);
350 
351 globus_result_t
352 globus_io_tcp_posix_convert(
353  int socket,
354  globus_io_attr_t * attributes,
355  globus_io_handle_t * handle);
356 
357 globus_result_t
358 globus_io_tcp_posix_convert_listener(
359  int socket,
360  globus_io_attr_t * attributes,
361  globus_io_handle_t * handle);
362 
363 globus_result_t
364 globus_io_fileattr_init(
365  globus_io_attr_t * attr);
366 
367 globus_result_t
368 globus_io_fileattr_destroy(
369  globus_io_attr_t * attr);
370 
371 globus_result_t
372 globus_io_attr_set_file_type(
373  globus_io_attr_t * attr,
374  globus_io_file_type_t file_type);
375 
376 globus_result_t
377 globus_io_attr_get_file_type(
378  globus_io_attr_t * attr,
379  globus_io_file_type_t * file_type);
380 
381 globus_result_t
382 globus_io_file_open(
383  const char * path,
384  int flags,
385  int mode,
386  globus_io_attr_t * attr,
387  globus_io_handle_t * handle);
388 
389 globus_result_t
390 globus_io_file_seek(
391  globus_io_handle_t * handle,
392  globus_off_t offset,
393  globus_io_whence_t whence);
394 
395 globus_result_t
396 globus_io_file_posix_convert(
397  int fd,
398  globus_io_attr_t * attr,
399  globus_io_handle_t * handle);
400 
401 globus_result_t
402 globus_io_tcpattr_init(
403  globus_io_attr_t * attr);
404 
405 globus_result_t
406 globus_io_tcpattr_destroy(
407  globus_io_attr_t * attr);
408 
409 globus_result_t
410 globus_io_tcp_get_attr(
411  globus_io_handle_t * handle,
412  globus_io_attr_t * attr);
413 
414 globus_result_t
415 globus_io_attr_set_tcp_restrict_port(
416  globus_io_attr_t * attr,
417  globus_bool_t restrict_port);
418 
419 globus_result_t
420 globus_io_attr_get_tcp_restrict_port(
421  globus_io_attr_t * attr,
422  globus_bool_t * restrict_port);
423 
424 globus_result_t
425 globus_io_attr_set_socket_reuseaddr(
426  globus_io_attr_t * attr,
427  globus_bool_t reuseaddr);
428 
429 globus_result_t
430 globus_io_attr_get_socket_reuseaddr(
431  globus_io_attr_t * attr,
432  globus_bool_t * reuseaddr);
433 
434 globus_result_t
435 globus_io_attr_set_socket_keepalive(
436  globus_io_attr_t * attr,
437  globus_bool_t keepalive);
438 
439 globus_result_t
440 globus_io_attr_get_socket_keepalive(
441  globus_io_attr_t * attr,
442  globus_bool_t * keepalive);
443 
444 globus_result_t
445 globus_io_attr_set_socket_linger(
446  globus_io_attr_t * attr,
447  globus_bool_t linger,
448  int linger_time);
449 
450 globus_result_t
451 globus_io_attr_get_socket_linger(
452  globus_io_attr_t * attr,
453  globus_bool_t * linger,
454  int * linger_time);
455 
456 globus_result_t
457 globus_io_attr_set_socket_oobinline(
458  globus_io_attr_t * attr,
459  globus_bool_t oobinline);
460 
461 globus_result_t
462 globus_io_attr_get_socket_oobinline(
463  globus_io_attr_t * attr,
464  globus_bool_t * oobinline);
465 
466 globus_result_t
467 globus_io_attr_set_socket_sndbuf(
468  globus_io_attr_t * attr,
469  int sndbuf);
470 
471 globus_result_t
472 globus_io_attr_get_socket_sndbuf(
473  globus_io_attr_t * attr,
474  int * sndbuf);
475 
476 globus_result_t
477 globus_io_attr_set_socket_rcvbuf(
478  globus_io_attr_t * attr,
479  int rcvbuf);
480 
481 globus_result_t
482 globus_io_attr_get_socket_rcvbuf(
483  globus_io_attr_t * attr,
484  int * rcvbuf);
485 
486 globus_result_t
487 globus_io_attr_set_tcp_nodelay(
488  globus_io_attr_t * attr,
489  globus_bool_t nodelay);
490 
491 globus_result_t
492 globus_io_attr_get_tcp_nodelay(
493  globus_io_attr_t * attr,
494  globus_bool_t * nodelay);
495 
496 globus_result_t
497 globus_io_attr_set_tcp_interface(
498  globus_io_attr_t * attr,
499  const char * interface_addr);
500 
501 globus_result_t
502 globus_io_attr_get_tcp_interface(
503  globus_io_attr_t * attr,
504  char ** interface_addr);
505 
506 globus_result_t
507 globus_io_attr_set_tcp_allow_ipv6(
508  globus_io_attr_t * attr,
509  globus_bool_t allow);
510 
511 globus_bool_t
512 globus_io_eof(
513  globus_object_t * eof);
514 
515 globus_result_t
516 globus_io_attr_set_callback_space(
517  globus_io_attr_t * attr,
518  globus_callback_space_t space);
519 
520 globus_result_t
521 globus_io_attr_get_callback_space(
522  globus_io_attr_t * attr,
523  globus_callback_space_t * space);
524 
525 #include "globus_gss_assist.h"
526 
527 #ifndef _HAVE_GSI_EXTENDED_GSSAPI
528 #include "globus_gss_ext_compat.h"
529 #endif
530 
531 typedef struct globus_l_io_secure_authorization_data_s * globus_io_secure_authorization_data_t;
532 
533 typedef globus_bool_t
534 (*globus_io_secure_authorization_callback_t)(
535  void * arg,
536  globus_io_handle_t * handle,
537  globus_result_t result,
538  char * identity,
539  gss_ctx_id_t context_handle);
540 
541 typedef void
542 (* globus_io_delegation_callback_t)(
543  void * arg,
544  globus_io_handle_t * handle,
545  globus_result_t result,
546  gss_cred_id_t delegated_cred,
547  OM_uint32 time_rec);
548 
549 typedef enum
550 {
551  GLOBUS_IO_SECURE_AUTHENTICATION_MODE_NONE,
552  GLOBUS_IO_SECURE_AUTHENTICATION_MODE_GSSAPI,
553  GLOBUS_IO_SECURE_AUTHENTICATION_MODE_MUTUAL,
554  GLOBUS_IO_SECURE_AUTHENTICATION_MODE_ANONYMOUS
555 } globus_io_secure_authentication_mode_t;
556 
557 typedef enum
558 {
559  GLOBUS_IO_SECURE_AUTHORIZATION_MODE_NONE =
560  GLOBUS_XIO_GSI_NO_AUTHORIZATION,
561  GLOBUS_IO_SECURE_AUTHORIZATION_MODE_SELF =
562  GLOBUS_XIO_GSI_SELF_AUTHORIZATION,
563  GLOBUS_IO_SECURE_AUTHORIZATION_MODE_IDENTITY =
564  GLOBUS_XIO_GSI_IDENTITY_AUTHORIZATION,
565  GLOBUS_IO_SECURE_AUTHORIZATION_MODE_HOST =
566  GLOBUS_XIO_GSI_HOST_AUTHORIZATION,
567  GLOBUS_IO_SECURE_AUTHORIZATION_MODE_CALLBACK
568 } globus_io_secure_authorization_mode_t;
569 
570 typedef enum
571 {
572  GLOBUS_IO_SECURE_PROTECTION_MODE_NONE =
573  GLOBUS_XIO_GSI_PROTECTION_LEVEL_NONE,
574  GLOBUS_IO_SECURE_PROTECTION_MODE_SAFE =
575  GLOBUS_XIO_GSI_PROTECTION_LEVEL_INTEGRITY,
576  GLOBUS_IO_SECURE_PROTECTION_MODE_PRIVATE =
577  GLOBUS_XIO_GSI_PROTECTION_LEVEL_PRIVACY
578 } globus_io_secure_protection_mode_t;
579 
580 typedef enum
581 {
582  GLOBUS_IO_SECURE_DELEGATION_MODE_NONE =
583  GLOBUS_XIO_GSI_DELEGATION_MODE_NONE,
584  GLOBUS_IO_SECURE_DELEGATION_MODE_LIMITED_PROXY =
585  GLOBUS_XIO_GSI_DELEGATION_MODE_LIMITED,
586  GLOBUS_IO_SECURE_DELEGATION_MODE_FULL_PROXY =
587  GLOBUS_XIO_GSI_DELEGATION_MODE_FULL
588 } globus_io_secure_delegation_mode_t;
589 
590 typedef enum
591 {
592  GLOBUS_IO_SECURE_PROXY_MODE_NONE =
593  GLOBUS_XIO_GSI_PROXY_MODE_LIMITED,
594  GLOBUS_IO_SECURE_PROXY_MODE_LIMITED =
595  GLOBUS_XIO_GSI_PROXY_MODE_FULL,
596  GLOBUS_IO_SECURE_PROXY_MODE_MANY =
597  GLOBUS_XIO_GSI_PROXY_MODE_MANY
598 } globus_io_secure_proxy_mode_t;
599 
600 typedef enum
601 {
602  GLOBUS_IO_SECURE_CHANNEL_MODE_CLEAR = 0,
603  GLOBUS_IO_SECURE_CHANNEL_MODE_GSI_WRAP,
604  GLOBUS_IO_SECURE_CHANNEL_MODE_SSL_WRAP,
605  GLOBUS_IO_SECURE_CHANNEL_MODE_GSI_WRAP_SSL3
606 } globus_io_secure_channel_mode_t;
607 
608 globus_result_t
609 globus_io_tcp_get_security_context(
610  globus_io_handle_t * handle,
611  gss_ctx_id_t * context);
612 
613 globus_result_t
614 globus_io_tcp_get_delegated_credential(
615  globus_io_handle_t * handle,
616  gss_cred_id_t * cred);
617 
618 /* new api just for gram_protocol_io */
619 globus_result_t
620 globus_io_tcp_set_credential(
621  globus_io_handle_t * handle,
622  gss_cred_id_t credential);
623 
624 globus_result_t
625 globus_io_tcp_get_credential(
626  globus_io_handle_t * handle,
627  gss_cred_id_t * credential);
628 
629 globus_result_t
630 globus_io_register_init_delegation(
631  globus_io_handle_t * handle,
632  const gss_cred_id_t cred_handle,
633  const gss_OID_set restriction_oids,
634  const gss_buffer_set_t restriction_buffers,
635  OM_uint32 time_req,
636  globus_io_delegation_callback_t callback,
637  void * callback_arg);
638 
639 globus_result_t
640 globus_io_init_delegation(
641  globus_io_handle_t * handle,
642  const gss_cred_id_t cred_handle,
643  const gss_OID_set restriction_oids,
644  const gss_buffer_set_t restriction_buffers,
645  OM_uint32 time_req);
646 
647 globus_result_t
648 globus_io_register_accept_delegation(
649  globus_io_handle_t * handle,
650  const gss_OID_set restriction_oids,
651  const gss_buffer_set_t restriction_buffers,
652  OM_uint32 time_req,
653  globus_io_delegation_callback_t callback,
654  void * callback_arg);
655 
656 globus_result_t
657 globus_io_accept_delegation(
658  globus_io_handle_t * handle,
659  gss_cred_id_t * delegated_cred,
660  const gss_OID_set restriction_oids,
661  const gss_buffer_set_t restriction_buffers,
662  OM_uint32 time_req,
663  OM_uint32 * time_rec);
664 
665 
666 globus_result_t
667 globus_io_attr_set_secure_authentication_mode(
668  globus_io_attr_t * attr,
669  globus_io_secure_authentication_mode_t
670  mode,
671  gss_cred_id_t credential);
672 
673 globus_result_t
674 globus_io_attr_get_secure_authentication_mode(
675  globus_io_attr_t * attr,
676  globus_io_secure_authentication_mode_t *
677  mode,
678  gss_cred_id_t * credential);
679 
680 globus_result_t
681 globus_io_attr_set_secure_authorization_mode(
682  globus_io_attr_t * attr,
683  globus_io_secure_authorization_mode_t
684  mode,
685  globus_io_secure_authorization_data_t *
686  data);
687 
688 globus_result_t
689 globus_io_attr_get_secure_authorization_mode(
690  globus_io_attr_t * attr,
691  globus_io_secure_authorization_mode_t *
692  mode,
693  globus_io_secure_authorization_data_t *
694  data);
695 globus_result_t
696 globus_io_attr_set_secure_extension_oids(
697  globus_io_attr_t * attr,
698  gss_OID_set extension_oids);
699 
700 globus_result_t
701 globus_io_attr_get_secure_extension_oids(
702  globus_io_attr_t * attr,
703  gss_OID_set * extension_oids);
704 
705 globus_result_t
706 globus_io_secure_authorization_data_initialize(
707  globus_io_secure_authorization_data_t *
708  data);
709 globus_result_t
710 globus_io_secure_authorization_data_destroy(
711  globus_io_secure_authorization_data_t *
712  data);
713 globus_result_t
714 globus_io_secure_authorization_data_set_identity(
715  globus_io_secure_authorization_data_t *
716  data,
717  char * identity);
718 
719 globus_result_t
720 globus_io_secure_authorization_data_get_identity(
721  globus_io_secure_authorization_data_t *
722  data,
723  char ** identity);
724 
725 globus_result_t
726 globus_io_secure_authorization_data_set_callback(
727  globus_io_secure_authorization_data_t *
728  data,
729  globus_io_secure_authorization_callback_t
730  callback,
731  void * callback_arg);
732 
733 globus_result_t
734 globus_io_secure_authorization_data_get_callback(
735  globus_io_secure_authorization_data_t *
736  data,
737  globus_io_secure_authorization_callback_t *
738  callback,
739  void ** callback_arg);
740 
741 globus_result_t
742 globus_io_attr_set_secure_channel_mode(
743  globus_io_attr_t * attr,
744  globus_io_secure_channel_mode_t mode);
745 
746 globus_result_t
747 globus_io_attr_get_secure_channel_mode(
748  globus_io_attr_t * attr,
749  globus_io_secure_channel_mode_t * mode);
750 
751 globus_result_t
752 globus_io_attr_set_secure_protection_mode(
753  globus_io_attr_t * attr,
754  globus_io_secure_protection_mode_t mode);
755 
756 globus_result_t
757 globus_io_attr_get_secure_protection_mode(
758  globus_io_attr_t * attr,
759  globus_io_secure_protection_mode_t *mode);
760 
761 globus_result_t
762 globus_io_attr_set_secure_delegation_mode(
763  globus_io_attr_t * attr,
764  globus_io_secure_delegation_mode_t mode);
765 
766 globus_result_t
767 globus_io_attr_get_secure_delegation_mode(
768  globus_io_attr_t * attr,
769  globus_io_secure_delegation_mode_t *
770  mode);
771 globus_result_t
772 globus_io_attr_set_secure_proxy_mode(
773  globus_io_attr_t * attr,
774  globus_io_secure_proxy_mode_t mode);
775 
776 globus_result_t
777 globus_io_attr_get_secure_proxy_mode(
778  globus_io_attr_t * attr,
779  globus_io_secure_proxy_mode_t * mode);
780 
781 
782 /* netlogger */
783 
784 globus_result_t
785 globus_io_attr_netlogger_set_handle(
786  globus_io_attr_t * attr,
787  globus_netlogger_handle_t * nl_handle);
788 
789 globus_result_t
790 globus_io_attr_netlogger_copy_handle(
791  globus_netlogger_handle_t * src,
792  globus_netlogger_handle_t * dst);
793 
794 globus_result_t
795 globus_netlogger_write(
796  globus_netlogger_handle_t * nl_handle,
797  const char * event,
798  const char * id,
799  const char * level,
800  const char * tag);
801 
802 globus_result_t
803 globus_netlogger_handle_init(
804  globus_netlogger_handle_t * gnl_handle,
805  const char * hostname,
806  const char * progname,
807  const char * pid);
808 
809 globus_result_t
810 globus_netlogger_handle_destroy(
811  globus_netlogger_handle_t * nl_handle);
812 
813 globus_result_t
814 globus_netlogger_get_nlhandle(
815  globus_netlogger_handle_t * nl_handle,
816  void ** handle);
817 
818 globus_result_t
819 globus_netlogger_set_desc(
820  globus_netlogger_handle_t * nl_handle,
821  char * desc);
822 
823 globus_result_t
824 globus_io_handle_get_socket_buf(
825  globus_io_handle_t * handle,
826  int * rcvbuf,
827  int * sndbuf);
828 
829 globus_xio_driver_t
830 globus_io_compat_get_tcp_driver();
831 
832 globus_xio_driver_t
833 globus_io_compat_get_gsi_driver();
834 
835 globus_xio_driver_t
836 globus_io_compat_get_file_driver();
837 
838 globus_result_t
839 globus_io_attr_get_xio_attr(
840  globus_io_attr_t * attr,
841  globus_xio_attr_t * xio_attr);
842 
843 globus_result_t
844 globus_io_attr_set_stack(
845  globus_io_attr_t * attr,
846  globus_xio_stack_t stack);
847 
848 #ifdef __cplusplus
849 }
850 #endif
851 
852 #include "globus_io_error_hierarchy.h"
853 
854 #endif /* GLOBUS_IO_H */