27RCSIDH(lib_bio_bio_priv_h,
"$Id: 13908e0885c18cd435e43b77016349a51813c1b7 $")
30#include <freeradius-devel/bio/base.h>
50#define FR_BIO_COMMON \
52 fr_bio_cb_funcs_t cb; \
53 fr_bio_priv_callback_t priv_cb; \
65#define FR_BIO_DESTRUCTOR_COMMON \
67 if (my->priv_cb.shutdown) { \
73 rcode = fr_bio_shutdown_discard(&my->bio); \
74 if (rcode < 0) return rcode; \
76 if (fr_bio_prev(&my->bio) || fr_bio_next(&my->bio)) \
77 fr_bio_unchain(&my->bio); \
static int const char char buffer[256]
static fr_bio_t * fr_bio_prev(fr_bio_t *bio)
fr_dlist_t _CONST entry
in the linked list of multiple bios
static fr_bio_t * fr_bio_next(fr_bio_t *bio)
int(* fr_bio_io_t)(fr_bio_t *bio)
void(* fr_bio_callback_t)(fr_bio_t *bio)
static int packet_ctx
the tests pass only the address of packet_ctx
fr_bio_io_t read_resume
"unblocked" is too similar to "blocked"
fr_bio_io_t write_blocked
static void fr_bio_chain(fr_bio_t *first, fr_bio_t *second)
Chain one bio after another.
int fr_bio_write_blocked(fr_bio_t *bio)
Internal BIO function to tell all BIOs that it's blocked.
ssize_t fr_bio_next_read(fr_bio_t *bio, void *packet_ctx, void *buffer, size_t size)
Internal bio function which just reads from the "next" bio.
fr_bio_t * fr_bio_eof(fr_bio_t *bio)
Tell the chain that a bio is at EOF, and let the application drain whatever is buffered.
static void fr_bio_unchain(fr_bio_t *bio)
Remove a bio from a chain.
ssize_t fr_bio_next_write(fr_bio_t *bio, void *packet_ctx, void const *buffer, size_t size)
Internal bio function which just writes to the "next" bio.