2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH BIO_set_callback 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
192 BIO_debug_callback \- BIO callback functions
196 \& #include <openssl/bio.h>
199 \& #define BIO_set_callback(b,cb) ((b)->callback=(cb))
200 \& #define BIO_get_callback(b) ((b)->callback)
201 \& #define BIO_set_callback_arg(b,arg) ((b)->cb_arg=(char *)(arg))
202 \& #define BIO_get_callback_arg(b) ((b)->cb_arg)
205 \& long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
206 \& long argl,long ret);
209 \& typedef long callback(BIO *b, int oper, const char *argp,
210 \& int argi, long argl, long retvalue);
213 \fIBIO_set_callback()\fR and \fIBIO_get_callback()\fR set and retrieve the BIO callback,
214 they are both macros. The callback is called during most high level BIO
215 operations. It can be used for debugging purposes to trace operations on
216 a BIO or to modify its operation.
218 \fIBIO_set_callback_arg()\fR and \fIBIO_get_callback_arg()\fR are macros which can be
219 used to set and retrieve an argument for use in the callback.
221 \fIBIO_debug_callback()\fR is a standard debugging callback which prints
222 out information relating to each BIO operation. If the callback
223 argument is set if is interpreted as a BIO to send the information
224 to, otherwise stderr is used.
226 \fIcallback()\fR is the callback function itself. The meaning of each
227 argument is described below.
229 The BIO the callback is attached to is passed in \fBb\fR.
231 \fBoper\fR is set to the operation being performed. For some operations
232 the callback is called twice, once before and once after the actual
233 operation, the latter case has \fBoper\fR or'ed with BIO_CB_RETURN.
235 The meaning of the arguments \fBargp\fR, \fBargi\fR and \fBargl\fR depends on
236 the value of \fBoper\fR, that is the operation being performed.
238 \fBretvalue\fR is the return value that would be returned to the
239 application if no callback were present. The actual value returned
240 is the return value of the callback itself. In the case of callbacks
241 called before the actual BIO operation 1 is placed in retvalue, if
242 the return value is not positive it will be immediately returned to
243 the application and the BIO operation will not be performed.
245 The callback should normally simply return \fBretvalue\fR when it has
246 finished processing, unless if specifically wishes to modify the
247 value returned to the application.
248 .SH "CALLBACK OPERATIONS"
249 .Ip "\fBBIO_free(b)\fR" 4
250 \fIcallback\fR\|(b, \s-1BIO_CB_FREE\s0, \s-1NULL\s0, 0L, 0L, 1L) is called before the
252 .Ip "\fBBIO_read(b, out, outl)\fR" 4
253 \fIcallback\fR\|(b, \s-1BIO_CB_READ\s0, out, outl, 0L, 1L) is called before
254 the read and \fIcallback\fR\|(b, \s-1BIO_CB_READ\s0|\s-1BIO_CB_RETURN\s0, out, outl, 0L, retvalue)
256 .Ip "\fBBIO_write(b, in, inl)\fR" 4
257 \fIcallback\fR\|(b, \s-1BIO_CB_WRITE\s0, in, inl, 0L, 1L) is called before
258 the write and \fIcallback\fR\|(b, \s-1BIO_CB_WRITE\s0|\s-1BIO_CB_RETURN\s0, in, inl, 0L, retvalue)
260 .Ip "\fBBIO_gets(b, out, outl)\fR" 4
261 \fIcallback\fR\|(b, \s-1BIO_CB_GETS\s0, out, outl, 0L, 1L) is called before
262 the operation and \fIcallback\fR\|(b, \s-1BIO_CB_GETS\s0|\s-1BIO_CB_RETURN\s0, out, outl, 0L, retvalue)
264 .Ip "\fBBIO_puts(b, in)\fR" 4
265 \fIcallback\fR\|(b, \s-1BIO_CB_WRITE\s0, in, 0, 0L, 1L) is called before
266 the operation and \fIcallback\fR\|(b, \s-1BIO_CB_WRITE\s0|\s-1BIO_CB_RETURN\s0, in, 0, 0L, retvalue)
268 .Ip "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR" 4
269 \fIcallback\fR\|(b,\s-1BIO_CB_CTRL\s0,parg,cmd,larg,1L) is called before the call and
270 \fIcallback\fR\|(b,\s-1BIO_CB_CTRL\s0|\s-1BIO_CB_RETURN\s0,parg,cmd, larg,ret) after.
272 The \fIBIO_debug_callback()\fR function is a good example, its source is
273 in crypto/bio/bio_cb.c
278 .IX Title "BIO_set_callback 3"
279 .IX Name "BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
280 BIO_debug_callback - BIO callback functions"
284 .IX Header "SYNOPSIS"
286 .IX Header "DESCRIPTION"
288 .IX Header "CALLBACK OPERATIONS"
290 .IX Item "\fBBIO_free(b)\fR"
292 .IX Item "\fBBIO_read(b, out, outl)\fR"
294 .IX Item "\fBBIO_write(b, in, inl)\fR"
296 .IX Item "\fBBIO_gets(b, out, outl)\fR"
298 .IX Item "\fBBIO_puts(b, in)\fR"
300 .IX Item "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR"
304 .IX Header "SEE ALSO"