]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/BIO_set_callback.pod
Doc nits: callback function typedefs
[thirdparty/openssl.git] / doc / man3 / BIO_set_callback.pod
CommitLineData
d572cb6c
DSH
1=pod
2
3=head1 NAME
4
b055fceb 5BIO_set_callback_ex, BIO_get_callback_ex, BIO_set_callback, BIO_get_callback,
121677b4
RS
6BIO_set_callback_arg, BIO_get_callback_arg, BIO_debug_callback,
7BIO_callback_fn_ex, BIO_callback_fn
b055fceb 8- BIO callback functions
d572cb6c
DSH
9
10=head1 SYNOPSIS
11
12 #include <openssl/bio.h>
13
b055fceb
MC
14 typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp,
15 size_t len, int argi,
16 long argl, int ret, size_t *processed);
91da5e77
RS
17 typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi,
18 long argl, long ret);
d572cb6c 19
b055fceb
MC
20 void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback);
21 BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b);
22
91da5e77
RS
23 void BIO_set_callback(BIO *b, BIO_callack_fn cb);
24 BIO_callack_fn BIO_get_callback(BIO *b);
25 void BIO_set_callback_arg(BIO *b, char *arg);
26 char *BIO_get_callback_arg(const BIO *b);
27
28 long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
29 long argl, long ret);
d572cb6c
DSH
30
31=head1 DESCRIPTION
32
b055fceb
MC
33BIO_set_callback_ex() and BIO_get_callback_ex() set and retrieve the BIO
34callback. The callback is called during most high level BIO operations. It can
35be used for debugging purposes to trace operations on a BIO or to modify its
36operation.
37
38BIO_set_callback() and BIO_get_callback() set and retrieve the old format BIO
39callback. New code should not use these functions, but they are retained for
40backwards compatbility. Any callback set via BIO_set_callback_ex() will get
41called in preference to any set by BIO_set_callback().
d572cb6c
DSH
42
43BIO_set_callback_arg() and BIO_get_callback_arg() are macros which can be
44used to set and retrieve an argument for use in the callback.
45
46BIO_debug_callback() is a standard debugging callback which prints
47out information relating to each BIO operation. If the callback
91da5e77 48argument is set it is interpreted as a BIO to send the information
d572cb6c
DSH
49to, otherwise stderr is used.
50
b055fceb
MC
51BIO_callback_fn_ex() is the type of the callback function and BIO_callback_fn()
52is the type of the old format callback function. The meaning of each argument
53is described below:
d572cb6c 54
91da5e77 55=over
2a5f907e
CS
56
57=item B<b>
58
d572cb6c
DSH
59The BIO the callback is attached to is passed in B<b>.
60
2a5f907e
CS
61=item B<oper>
62
d572cb6c
DSH
63B<oper> is set to the operation being performed. For some operations
64the callback is called twice, once before and once after the actual
65operation, the latter case has B<oper> or'ed with BIO_CB_RETURN.
66
b055fceb
MC
67=item B<len>
68
69The length of the data requested to be read or written. This is only useful if
70B<oper> is BIO_CB_READ, BIO_CB_WRITE or BIO_CB_GETS.
71
2a5f907e
CS
72=item B<argp> B<argi> B<argl>
73
d572cb6c
DSH
74The meaning of the arguments B<argp>, B<argi> and B<argl> depends on
75the value of B<oper>, that is the operation being performed.
76
b055fceb
MC
77=item B<processed>
78
79B<processed> is a pointer to a location which will be updated with the amount of
4e3973b4 80data that was actually read or written. Only used for BIO_CB_READ, BIO_CB_WRITE,
b055fceb
MC
81BIO_CB_GETS and BIO_CB_PUTS.
82
2a5f907e
CS
83=item B<ret>
84
91da5e77 85B<ret> is the return value that would be returned to the
d572cb6c
DSH
86application if no callback were present. The actual value returned
87is the return value of the callback itself. In the case of callbacks
91da5e77 88called before the actual BIO operation 1 is placed in B<ret>, if
d572cb6c
DSH
89the return value is not positive it will be immediately returned to
90the application and the BIO operation will not be performed.
91
91da5e77
RS
92=back
93
94The callback should normally simply return B<ret> when it has
95finished processing, unless it specifically wishes to modify the
d572cb6c
DSH
96value returned to the application.
97
98=head1 CALLBACK OPERATIONS
99
91da5e77
RS
100In the notes below, B<callback> defers to the actual callback
101function that is called.
102
d572cb6c
DSH
103=over 4
104
105=item B<BIO_free(b)>
106
b055fceb
MC
107 callback_ex(b, BIO_CB_FREE, NULL, 0, 0, 0L, 1L, NULL)
108
109or
110
111 callback(b, BIO_CB_FREE, NULL, 0L, 0L, 1L)
112
113is called before the free operation.
114
4e3973b4 115=item B<BIO_read_ex(b, data, dlen, readbytes)>
d572cb6c 116
4e3973b4 117 callback_ex(b, BIO_CB_READ, data, dlen, 0, 0L, 1L, readbytes)
b055fceb
MC
118
119or
120
4e3973b4
BK
121 callback(b, BIO_CB_READ, data, dlen, 0L, 1L)
122
b055fceb
MC
123is called before the read and
124
4e3973b4 125 callback_ex(b, BIO_CB_READ | BIO_CB_RETURN, data, dlen, 0, 0L, retvalue, readbytes)
b055fceb
MC
126
127or
128
4e3973b4 129 callback(b, BIO_CB_READ|BIO_CB_RETURN, data, dlen, 0L, retvalue)
d572cb6c 130
d572cb6c
DSH
131after.
132
4e3973b4 133=item B<BIO_write(b, data, dlen, written)>
b055fceb 134
4e3973b4 135 callback_ex(b, BIO_CB_WRITE, data, dlen, 0, 0L, 1L, written)
b055fceb
MC
136
137or
138
4e3973b4 139 callback(b, BIO_CB_WRITE, datat, dlen, 0L, 1L)
b055fceb
MC
140
141is called before the write and
142
4e3973b4 143 callback_ex(b, BIO_CB_WRITE | BIO_CB_RETURN, data, dlen, 0, 0L, retvalue, written)
b055fceb
MC
144
145or
146
4e3973b4 147 callback(b, BIO_CB_WRITE|BIO_CB_RETURN, data, dlen, 0L, retvalue)
d572cb6c 148
d572cb6c
DSH
149after.
150
4e3973b4 151=item B<BIO_gets(b, buf, size)>
d572cb6c 152
4e3973b4 153 callback_ex(b, BIO_CB_GETS, buf, size, 0, 0L, 1, NULL, NULL)
b055fceb
MC
154
155or
156
4e3973b4 157 callback(b, BIO_CB_GETS, buf, size, 0L, 1L)
b055fceb
MC
158
159is called before the operation and
160
4e3973b4 161 callback_ex(b, BIO_CB_GETS | BIO_CB_RETURN, buf, size, 0, 0L, retvalue, readbytes)
b055fceb
MC
162
163or
164
4e3973b4 165 callback(b, BIO_CB_GETS|BIO_CB_RETURN, buf, size, 0L, retvalue)
b055fceb 166
d572cb6c
DSH
167after.
168
4e3973b4 169=item B<BIO_puts(b, buf)>
d572cb6c 170
4e3973b4 171 callback_ex(b, BIO_CB_PUTS, buf, 0, 0, 0L, 1L, NULL);
b055fceb
MC
172
173or
174
4e3973b4 175 callback(b, BIO_CB_PUTS, buf, 0, 0L, 1L)
b055fceb
MC
176
177is called before the operation and
178
4e3973b4 179 callback_ex(b, BIO_CB_PUTS | BIO_CB_RETURN, buf, 0, 0, 0L, retvalue, written)
b055fceb
MC
180
181or
182
4e3973b4 183 callback(b, BIO_CB_WRITE|BIO_CB_RETURN, buf, 0, 0L, retvalue)
b055fceb 184
d572cb6c
DSH
185after.
186
187=item B<BIO_ctrl(BIO *b, int cmd, long larg, void *parg)>
188
b055fceb
MC
189 callback_ex(b, BIO_CB_CTRL, parg, 0, cmd, larg, 1L, NULL)
190
191or
192
193 callback(b, BIO_CB_CTRL, parg, cmd, larg, 1L)
194
195is called before the call and
196
197 callback_ex(b, BIO_CB_CTRL | BIO_CB_RETURN, parg, 0, cmd, larg, ret, NULL)
198
199or
200
201 callback(b, BIO_CB_CTRL|BIO_CB_RETURN, parg, cmd, larg, ret)
4e3973b4 202
b055fceb 203after.
d572cb6c
DSH
204
205=back
206
207=head1 EXAMPLE
208
209The BIO_debug_callback() function is a good example, its source is
210in crypto/bio/bio_cb.c
211
e2f92610
RS
212=head1 COPYRIGHT
213
214Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
215
216Licensed under the OpenSSL license (the "License"). You may not use
217this file except in compliance with the License. You can obtain a copy
218in the file LICENSE in the source distribution or at
219L<https://www.openssl.org/source/license.html>.
220
221=cut