Home | History | Annotate | Line # | Download | only in man3
      1  1.1  christos =pod
      2  1.1  christos 
      3  1.1  christos =head1 NAME
      4  1.1  christos 
      5  1.1  christos BIO_ctrl, BIO_callback_ctrl, BIO_ptr_ctrl, BIO_int_ctrl, BIO_reset,
      6  1.1  christos BIO_seek, BIO_tell, BIO_flush, BIO_eof, BIO_set_close, BIO_get_close,
      7  1.1  christos BIO_pending, BIO_wpending, BIO_ctrl_pending, BIO_ctrl_wpending,
      8  1.1  christos BIO_get_info_callback, BIO_set_info_callback, BIO_info_cb, BIO_get_ktls_send,
      9  1.1  christos BIO_get_ktls_recv, BIO_set_conn_mode, BIO_get_conn_mode, BIO_set_tfo
     10  1.1  christos - BIO control operations
     11  1.1  christos 
     12  1.1  christos =head1 SYNOPSIS
     13  1.1  christos 
     14  1.1  christos  #include <openssl/bio.h>
     15  1.1  christos 
     16  1.1  christos  typedef int BIO_info_cb(BIO *b, int state, int res);
     17  1.1  christos 
     18  1.1  christos  long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
     19  1.1  christos  long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *cb);
     20  1.1  christos  void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
     21  1.1  christos  long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
     22  1.1  christos 
     23  1.1  christos  int BIO_reset(BIO *b);
     24  1.1  christos  int BIO_seek(BIO *b, int ofs);
     25  1.1  christos  int BIO_tell(BIO *b);
     26  1.1  christos  int BIO_flush(BIO *b);
     27  1.1  christos  int BIO_eof(BIO *b);
     28  1.1  christos  int BIO_set_close(BIO *b, long flag);
     29  1.1  christos  int BIO_get_close(BIO *b);
     30  1.1  christos  int BIO_pending(BIO *b);
     31  1.1  christos  int BIO_wpending(BIO *b);
     32  1.1  christos  size_t BIO_ctrl_pending(BIO *b);
     33  1.1  christos  size_t BIO_ctrl_wpending(BIO *b);
     34  1.1  christos 
     35  1.1  christos  int BIO_get_info_callback(BIO *b, BIO_info_cb **cbp);
     36  1.1  christos  int BIO_set_info_callback(BIO *b, BIO_info_cb *cb);
     37  1.1  christos 
     38  1.1  christos  int BIO_get_ktls_send(BIO *b);
     39  1.1  christos  int BIO_get_ktls_recv(BIO *b);
     40  1.1  christos 
     41  1.1  christos  int BIO_set_conn_mode(BIO *b, int mode);
     42  1.1  christos  int BIO_get_conn_mode(BIO *b);
     43  1.1  christos 
     44  1.1  christos  int BIO_set_tfo(BIO *b, int onoff);
     45  1.1  christos 
     46  1.1  christos =head1 DESCRIPTION
     47  1.1  christos 
     48  1.1  christos BIO_ctrl(), BIO_callback_ctrl(), BIO_ptr_ctrl() and BIO_int_ctrl()
     49  1.1  christos are BIO "control" operations taking arguments of various types.
     50  1.1  christos These functions are not normally called directly, various macros
     51  1.1  christos are used instead. The standard macros are described below, macros
     52  1.1  christos specific to a particular type of BIO are described in the specific
     53  1.1  christos BIOs manual page as well as any special features of the standard
     54  1.1  christos calls.
     55  1.1  christos 
     56  1.1  christos BIO_reset() typically resets a BIO to some initial state, in the case
     57  1.1  christos of file related BIOs for example it rewinds the file pointer to the
     58  1.1  christos start of the file.
     59  1.1  christos 
     60  1.1  christos BIO_seek() resets a file related BIO's (that is file descriptor and
     61  1.1  christos FILE BIOs) file position pointer to B<ofs> bytes from start of file.
     62  1.1  christos 
     63  1.1  christos BIO_tell() returns the current file position of a file related BIO.
     64  1.1  christos 
     65  1.1  christos BIO_flush() normally writes out any internally buffered data, in some
     66  1.1  christos cases it is used to signal EOF and that no more data will be written.
     67  1.1  christos 
     68  1.1  christos BIO_eof() returns 1 if the BIO has read EOF, the precise meaning of
     69  1.1  christos "EOF" varies according to the BIO type.
     70  1.1  christos 
     71  1.1  christos BIO_set_close() sets the BIO B<b> close flag to B<flag>. B<flag> can
     72  1.1  christos take the value BIO_CLOSE or BIO_NOCLOSE. Typically BIO_CLOSE is used
     73  1.1  christos in a source/sink BIO to indicate that the underlying I/O stream should
     74  1.1  christos be closed when the BIO is freed.
     75  1.1  christos 
     76  1.1  christos BIO_get_close() returns the BIOs close flag.
     77  1.1  christos 
     78  1.1  christos BIO_pending(), BIO_ctrl_pending(), BIO_wpending() and BIO_ctrl_wpending()
     79  1.1  christos return the number of pending characters in the BIOs read and write buffers.
     80  1.1  christos Not all BIOs support these calls. BIO_ctrl_pending() and BIO_ctrl_wpending()
     81  1.1  christos return a size_t type and are functions, BIO_pending() and BIO_wpending() are
     82  1.1  christos macros which call BIO_ctrl().
     83  1.1  christos 
     84  1.1  christos BIO_get_ktls_send() returns 1 if the BIO is using the Kernel TLS data-path for
     85  1.1  christos sending. Otherwise, it returns zero.
     86  1.1  christos BIO_get_ktls_recv() returns 1 if the BIO is using the Kernel TLS data-path for
     87  1.1  christos receiving. Otherwise, it returns zero.
     88  1.1  christos 
     89  1.1  christos BIO_get_conn_mode() returns the BIO connection mode. BIO_set_conn_mode() sets
     90  1.1  christos the BIO connection mode.
     91  1.1  christos 
     92  1.1  christos BIO_set_tfo() disables TCP Fast Open when B<onoff> is 0, and enables TCP Fast
     93  1.1  christos Open when B<onoff> is nonzero. Setting the value to 1 is equivalent to setting
     94  1.1  christos B<BIO_SOCK_TFO> in BIO_set_conn_mode().
     95  1.1  christos 
     96  1.1  christos =head1 RETURN VALUES
     97  1.1  christos 
     98  1.1  christos BIO_reset() normally returns 1 for success and <=0 for failure. File
     99  1.1  christos BIOs are an exception, they return 0 for success and -1 for failure.
    100  1.1  christos 
    101  1.1  christos BIO_seek() and BIO_tell() both return the current file position on success
    102  1.1  christos and -1 for failure, except file BIOs which for BIO_seek() always return 0
    103  1.1  christos for success and -1 for failure.
    104  1.1  christos 
    105  1.1  christos BIO_flush() returns 1 for success and <=0 for failure.
    106  1.1  christos 
    107  1.1  christos BIO_eof() returns 1 if EOF has been reached, 0 if not, or negative values for failure.
    108  1.1  christos 
    109  1.1  christos BIO_set_close() returns 1 on success or <=0 for failure.
    110  1.1  christos 
    111  1.1  christos BIO_get_close() returns the close flag value: BIO_CLOSE or BIO_NOCLOSE. It also
    112  1.1  christos returns other negative values if an error occurs.
    113  1.1  christos 
    114  1.1  christos BIO_pending(), BIO_ctrl_pending(), BIO_wpending() and BIO_ctrl_wpending()
    115  1.1  christos return the amount of pending data. BIO_pending() and BIO_wpending() return
    116  1.1  christos negative value or 0 on error. BIO_ctrl_pending() and BIO_ctrl_wpending() return
    117  1.1  christos 0 on error.
    118  1.1  christos 
    119  1.1  christos BIO_get_ktls_send() returns 1 if the BIO is using the Kernel TLS data-path for
    120  1.1  christos sending. Otherwise, it returns zero.
    121  1.1  christos BIO_get_ktls_recv() returns 1 if the BIO is using the Kernel TLS data-path for
    122  1.1  christos receiving. Otherwise, it returns zero.
    123  1.1  christos 
    124  1.1  christos BIO_set_conn_mode() returns 1 for success and 0 for failure. BIO_get_conn_mode()
    125  1.1  christos returns the current connection mode. Which may contain the bitwise-or of the
    126  1.1  christos following flags:
    127  1.1  christos 
    128  1.1  christos  BIO_SOCK_REUSEADDR
    129  1.1  christos  BIO_SOCK_V6_ONLY
    130  1.1  christos  BIO_SOCK_KEEPALIVE
    131  1.1  christos  BIO_SOCK_NONBLOCK
    132  1.1  christos  BIO_SOCK_NODELAY
    133  1.1  christos  BIO_SOCK_TFO
    134  1.1  christos 
    135  1.1  christos BIO_set_tfo() returns 1 for success, and 0 for failure.
    136  1.1  christos 
    137  1.1  christos =head1 NOTES
    138  1.1  christos 
    139  1.1  christos BIO_flush(), because it can write data may return 0 or -1 indicating
    140  1.1  christos that the call should be retried later in a similar manner to BIO_write_ex().
    141  1.1  christos The BIO_should_retry() call should be used and appropriate action taken
    142  1.1  christos is the call fails.
    143  1.1  christos 
    144  1.1  christos The return values of BIO_pending() and BIO_wpending() may not reliably
    145  1.1  christos determine the amount of pending data in all cases. For example in the
    146  1.1  christos case of a file BIO some data may be available in the FILE structures
    147  1.1  christos internal buffers but it is not possible to determine this in a
    148  1.1  christos portably way. For other types of BIO they may not be supported.
    149  1.1  christos 
    150  1.1  christos Filter BIOs if they do not internally handle a particular BIO_ctrl()
    151  1.1  christos operation usually pass the operation to the next BIO in the chain.
    152  1.1  christos This often means there is no need to locate the required BIO for
    153  1.1  christos a particular operation, it can be called on a chain and it will
    154  1.1  christos be automatically passed to the relevant BIO. However, this can cause
    155  1.1  christos unexpected results: for example no current filter BIOs implement
    156  1.1  christos BIO_seek(), but this may still succeed if the chain ends in a FILE
    157  1.1  christos or file descriptor BIO.
    158  1.1  christos 
    159  1.1  christos Source/sink BIOs return an 0 if they do not recognize the BIO_ctrl()
    160  1.1  christos operation.
    161  1.1  christos 
    162  1.1  christos =head1 BUGS
    163  1.1  christos 
    164  1.1  christos Some of the return values are ambiguous and care should be taken. In
    165  1.1  christos particular a return value of 0 can be returned if an operation is not
    166  1.1  christos supported, if an error occurred, if EOF has not been reached and in
    167  1.1  christos the case of BIO_seek() on a file BIO for a successful operation.
    168  1.1  christos 
    169  1.1  christos In older versions of OpenSSL the BIO_ctrl_pending() and
    170  1.1  christos BIO_ctrl_wpending() could return values greater than INT_MAX on error.
    171  1.1  christos 
    172  1.1  christos =head1 HISTORY
    173  1.1  christos 
    174  1.1  christos The BIO_get_ktls_send() and BIO_get_ktls_recv() macros were added in
    175  1.1  christos OpenSSL 3.0. They were modified to never return -1 in OpenSSL 3.0.4.
    176  1.1  christos 
    177  1.1  christos The BIO_get_conn_mode(), BIO_set_conn_mode() and BIO_set_tfo() functions
    178  1.1  christos were added in OpenSSL 3.2.
    179  1.1  christos 
    180  1.1  christos =head1 COPYRIGHT
    181  1.1  christos 
    182  1.1  christos Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
    183  1.1  christos 
    184  1.1  christos Licensed under the Apache License 2.0 (the "License").  You may not use
    185  1.1  christos this file except in compliance with the License.  You can obtain a copy
    186  1.1  christos in the file LICENSE in the source distribution or at
    187  1.1  christos L<https://www.openssl.org/source/license.html>.
    188  1.1  christos 
    189  1.1  christos =cut
    190