BIO_set_callback, BIO_get_callback, BIO_set_callback_arg,
BIO_get_callback_arg, BIO_debug_callback - BIO callback
#define BIO_set_callback(b,cb) ((b)->callback=(cb))
#define BIO_get_callback(b) ((b)->callback)
((b)->cb_arg=(char *)(arg)) #define
const char *argp,
long ret ); typedef long callback(
const char *argp,
long retvalue );
BIO_set_callback() and BIO_get_callback() set and retrieve
the BIO callback, they are both macros. The callback is
called during most high level BIO operations. It can be
used for debugging purposes to trace operations on a BIO
or to modify its operation.
BIO_set_callback_arg() and BIO_get_callback_arg() are
macros which can be used to set and retrieve an argument
for use in the callback.
BIO_debug_callback() is a standard debugging callback
which prints out information relating to each BIO operation.
If the callback argument is set it is interpreted as
a BIO to send the information to, otherwise stderr is
The callback() is the callback function itself. The meaning
of each argument is described below.
The BIO that the callback is attached to is passed in b.
The oper is set to the operation being performed. For
some operations the callback is called twice, once before
and once after the actual operation, the latter case has
oper or'ed with BIO_CB_RETURN.
The meaning of the arguments argp, argi, and argl depends
on the value of oper, that is the operation being performed.
The retvalue is the return value that would be returned to
the application if no callback were present. The actual
value returned is the return value of the callback itself.
In the case of callbacks called before the actual BIO
operation 1 is placed in retvalue. If the return value is
not positive it will be returned to the application, and
the BIO operation will not be performed.
The callback should return retvalue when it finishes processing,
unless it specifically wishes to modify the value
returned to the application.
Callback Operations [Toc] [Back]
callback(b, BIO_CB_FREE, NULL, 0L, 0L, 1L) is called
before the free operation. callback(b, BIO_CB_READ, out,
outl, 0L, 1L) is called before the read and callback(b,
BIO_CB_READ|BIO_CB_RETURN, out, outl, 0L, retvalue) after.
callback(b, BIO_CB_WRITE, in, inl, 0L, 1L) is called
before the write and callback(b,
BIO_CB_WRITE|BIO_CB_RETURN, in, inl, 0L, retvalue) after.
callback(b, BIO_CB_GETS, out, outl, 0L, 1L) is called
before the operation and callback(b,
BIO_CB_GETS|BIO_CB_RETURN, out, outl, 0L, retvalue) after.
callback(b, BIO_CB_WRITE, in, 0, 0L, 1L) is called before
the operation and callback(b, BIO_CB_WRITE|BIO_CB_RETURN,
in, 0, 0L, retvalue) after. callback(b, BIO_CB_CTRL,
parg, cmd, larg, 1L) is called before the call and callback(b,
BIO_CB_CTRL|BIO_CB_RETURN, parg, cmd, larg, ret)
The BIO_debug_callback() function is a good example. Its
source is in crypto/bio/bio_cb.c
[ Back ]