BIO_SET_CALLBACK(3ssl) OpenSSL BIO_SET_CALLBACK(3ssl) BIO_set_callback_ex, BIO_get_callback_ex, BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg, BIO_debug_callback, BIO_debug_callback_ex, BIO_callback_fn_ex, BIO_callback_fn \&- BIO #include typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, size_t len, int argi, long argl, int ret, size_t *processed); void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); void BIO_set_callback_arg(BIO *b, char *arg); char *BIO_get_callback_arg(const BIO *b); long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, int argi, long argl, int ret, size_t *processed); OpenSSL 3.0 OPENSSL_API_COMPAT openssl_user_macros(7): typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, long argl, long ret); void BIO_set_callback(BIO *b, BIO_callback_fn cb); BIO_callback_fn BIO_get_callback(const BIO *b); long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, long argl, long ret); typedef struct bio_mmsg_cb_args_st { BIO_MSG *msg; size_t stride, num_msg; uint64_t flags; size_t *msgs_processed; } BIO_MMSG_CB_ARGS; \&BIO_set_callback_ex() BIO_get_callback_ex() BIO. BIO . BIO . \&BIO_set_callback() BIO_get_callback() BIO . . BIO_set_callback_ex() BIO_set_callback(). \&BIO_set_callback_arg() BIO_get_callback_arg() . \&BIO_debug_callback_ex() BIO. BIO stderr. BIO_debug_callback() BIO_set_callback(). BIO_callback_fn_ex BIO_callback_fn . : b BIO b. oper \&oper . oper BIO_CB_RETURN. len . \&oper BIO_CB_READ BIO_CB_WRITE BIO_CB_GETS. argp argi argl argp argi argl oper . processed processed . BIO_CB_READ BIO_CB_WRITE BIO_CB_GETS BIO_CB_PUTS. ret ret . . BIO 1 ret BIO. ret . callback . BIO_free(b) callback_ex(b, BIO_CB_FREE, NULL, 0, 0, 0L, 1L, NULL) callback(b, BIO_CB_FREE, NULL, 0L, 0L, 1L) . BIO_read_ex(b, data, dlen, readbytes) callback_ex(b, BIO_CB_READ, data, dlen, 0, 0L, 1L, NULL) callback(b, BIO_CB_READ, data, dlen, 0L, 1L) callback_ex(b, BIO_CB_READ | BIO_CB_RETURN, data, dlen, 0, 0L, retvalue, &readbytes) callback(b, BIO_CB_READ|BIO_CB_RETURN, data, dlen, 0L, retvalue) . BIO_write(b, data, dlen, written) callback_ex(b, BIO_CB_WRITE, data, dlen, 0, 0L, 1L, NULL) callback(b, BIO_CB_WRITE, datat, dlen, 0L, 1L) callback_ex(b, BIO_CB_WRITE | BIO_CB_RETURN, data, dlen, 0, 0L, retvalue, &written) callback(b, BIO_CB_WRITE|BIO_CB_RETURN, data, dlen, 0L, retvalue) . BIO_gets(b, buf, size) callback_ex(b, BIO_CB_GETS, buf, size, 0, 0L, 1, NULL, NULL) callback(b, BIO_CB_GETS, buf, size, 0L, 1L) callback_ex(b, BIO_CB_GETS | BIO_CB_RETURN, buf, size, 0, 0L, retvalue, &readbytes) callback(b, BIO_CB_GETS|BIO_CB_RETURN, buf, size, 0L, retvalue) . BIO_puts(b, buf) callback_ex(b, BIO_CB_PUTS, buf, 0, 0, 0L, 1L, NULL); callback(b, BIO_CB_PUTS, buf, 0, 0L, 1L) callback_ex(b, BIO_CB_PUTS | BIO_CB_RETURN, buf, 0, 0, 0L, retvalue, &written) callback(b, BIO_CB_PUTS|BIO_CB_RETURN, buf, 0, 0L, retvalue) . BIO_ctrl(BIO *b, int cmd, long larg, void *parg) callback_ex(b, BIO_CB_CTRL, parg, 0, cmd, larg, 1L, NULL) callback(b, BIO_CB_CTRL, parg, cmd, larg, 1L) callback_ex(b, BIO_CB_CTRL | BIO_CB_RETURN, parg, 0, cmd, larg, ret, NULL) callback(b, BIO_CB_CTRL|BIO_CB_RETURN, parg, cmd, larg, ret) . : cmd == BIO_CTRL_SET_CALLBACK parg BIO_info_cb . parg BIO_callback_ctrl. BIO_sendmmsg(BIO *b, BIO_MSG *msg, size_t stride, size_t num_msg, uint64_t flags, size_t *msgs_processed) callback_ex(b, BIO_CB_SENDMMSG, args, 0, 0, 0, 1, NULL) callback(b, BIO_CB_SENDMMSG, args, 0, 0, 1) callback_ex(b, BIO_CB_SENDMMSG | BIO_CB_RETURN, args, ret, 0, 0, ret, NULL) callback(b, BIO_CB_SENDMMSG | BIO_CB_RETURN, args, ret, 0, 0, ret) . args BIO_MMSG_CB_ARGS BIO_sendmmsg(). ret BIO_sendmmsg(). BIO_sendmmsg() BIO_CB_SENDMMSG | BIO_CB_RETURN. BIO_recvmmsg(BIO *b, BIO_MSG *msg, size_t stride, size_t num_msg, uint64_t flags, size_t *msgs_processed) BIO_sendmmsg(). BIO_recvmmsg() BIO_CB_RECVMMSG BIO_CB_SENDMMSG. BIO_get_callback_ex() BIO_get_callback() BIO_set_callback_ex() BIO_set_callback() . BIO_get_callback_arg() char BIO_set_callback_arg(). BIO_debug_callback() 1 ret BIO . BIO_debug_callback_ex() crypto/bio/bio_cb.c BIO_debug_callback_ex() OpenSSL 3.0. BIO_set_callback() BIO_get_callback() BIO_debug_callback() OpenSSL 3.0. _ex . 2000-2021 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 BIO_SET_CALLBACK(3ssl)