Update files for OpenSSL-1.0.0f import.
[dragonfly.git] / secure / lib / libcrypto / man / BIO_set_callback.3
CommitLineData
e3261593 1.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.19)
8b0cefbb
JR
2.\"
3.\" Standard preamble:
4.\" ========================================================================
8b0cefbb 5.de Sp \" Vertical space (when we can't use .PP)
984263bc
MD
6.if t .sp .5v
7.if n .sp
8..
8b0cefbb 9.de Vb \" Begin verbatim text
984263bc
MD
10.ft CW
11.nf
12.ne \\$1
13..
8b0cefbb 14.de Ve \" End verbatim text
984263bc 15.ft R
984263bc
MD
16.fi
17..
8b0cefbb
JR
18.\" Set up some character translations and predefined strings. \*(-- will
19.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
e257b235
PA
20.\" double quote, and \*(R" will give a right double quote. \*(C+ will
21.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23.\" nothing in troff, for use with C<>.
24.tr \(*W-
8b0cefbb 25.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
984263bc 26.ie n \{\
8b0cefbb
JR
27. ds -- \(*W-
28. ds PI pi
29. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31. ds L" ""
32. ds R" ""
33. ds C` ""
34. ds C' ""
984263bc
MD
35'br\}
36.el\{\
8b0cefbb
JR
37. ds -- \|\(em\|
38. ds PI \(*p
39. ds L" ``
40. ds R" ''
984263bc 41'br\}
8b0cefbb 42.\"
e257b235
PA
43.\" Escape single quotes in literal strings from groff's Unicode transform.
44.ie \n(.g .ds Aq \(aq
45.el .ds Aq '
46.\"
8b0cefbb 47.\" If the F register is turned on, we'll generate index entries on stderr for
01185282 48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
8b0cefbb
JR
49.\" entries marked with X<> in POD. Of course, you'll have to process the
50.\" output yourself in some meaningful fashion.
e257b235 51.ie \nF \{\
8b0cefbb
JR
52. de IX
53. tm Index:\\$1\t\\n%\t"\\$2"
984263bc 54..
8b0cefbb
JR
55. nr % 0
56. rr F
984263bc 57.\}
e257b235
PA
58.el \{\
59. de IX
60..
61.\}
aac4ff6f 62.\"
8b0cefbb
JR
63.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64.\" Fear. Run. Save yourself. No user-serviceable parts.
65. \" fudge factors for nroff and troff
984263bc 66.if n \{\
8b0cefbb
JR
67. ds #H 0
68. ds #V .8m
69. ds #F .3m
70. ds #[ \f1
71. ds #] \fP
984263bc
MD
72.\}
73.if t \{\
8b0cefbb
JR
74. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75. ds #V .6m
76. ds #F 0
77. ds #[ \&
78. ds #] \&
984263bc 79.\}
8b0cefbb 80. \" simple accents for nroff and troff
984263bc 81.if n \{\
8b0cefbb
JR
82. ds ' \&
83. ds ` \&
84. ds ^ \&
85. ds , \&
86. ds ~ ~
87. ds /
984263bc
MD
88.\}
89.if t \{\
8b0cefbb
JR
90. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
984263bc 96.\}
8b0cefbb 97. \" troff and (daisy-wheel) nroff accents
984263bc
MD
98.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105.ds ae a\h'-(\w'a'u*4/10)'e
106.ds Ae A\h'-(\w'A'u*4/10)'E
8b0cefbb 107. \" corrections for vroff
984263bc
MD
108.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
8b0cefbb 110. \" for low resolution devices (crt and lpr)
984263bc
MD
111.if \n(.H>23 .if \n(.V>19 \
112\{\
8b0cefbb
JR
113. ds : e
114. ds 8 ss
115. ds o a
116. ds d- d\h'-1'\(ga
117. ds D- D\h'-1'\(hy
118. ds th \o'bp'
119. ds Th \o'LP'
120. ds ae ae
121. ds Ae AE
984263bc
MD
122.\}
123.rm #[ #] #H #V #F C
8b0cefbb
JR
124.\" ========================================================================
125.\"
126.IX Title "BIO_set_callback 3"
e3261593 127.TH BIO_set_callback 3 "2012-01-04" "1.0.0f" "OpenSSL"
e257b235
PA
128.\" For nroff, turn off justification. Always turn off hyphenation; it makes
129.\" way too many mistakes in technical documents.
130.if n .ad l
131.nh
984263bc
MD
132.SH "NAME"
133BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
74dab6c2 134BIO_debug_callback \- BIO callback functions
984263bc 135.SH "SYNOPSIS"
8b0cefbb 136.IX Header "SYNOPSIS"
984263bc
MD
137.Vb 1
138\& #include <openssl/bio.h>
e257b235
PA
139\&
140\& #define BIO_set_callback(b,cb) ((b)\->callback=(cb))
141\& #define BIO_get_callback(b) ((b)\->callback)
142\& #define BIO_set_callback_arg(b,arg) ((b)\->cb_arg=(char *)(arg))
143\& #define BIO_get_callback_arg(b) ((b)\->cb_arg)
144\&
984263bc
MD
145\& long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
146\& long argl,long ret);
e257b235 147\&
edae4a78 148\& typedef long (*callback)(BIO *b, int oper, const char *argp,
984263bc
MD
149\& int argi, long argl, long retvalue);
150.Ve
151.SH "DESCRIPTION"
8b0cefbb
JR
152.IX Header "DESCRIPTION"
153\&\fIBIO_set_callback()\fR and \fIBIO_get_callback()\fR set and retrieve the \s-1BIO\s0 callback,
154they are both macros. The callback is called during most high level \s-1BIO\s0
984263bc 155operations. It can be used for debugging purposes to trace operations on
8b0cefbb 156a \s-1BIO\s0 or to modify its operation.
984263bc 157.PP
8b0cefbb 158\&\fIBIO_set_callback_arg()\fR and \fIBIO_get_callback_arg()\fR are macros which can be
984263bc
MD
159used to set and retrieve an argument for use in the callback.
160.PP
8b0cefbb
JR
161\&\fIBIO_debug_callback()\fR is a standard debugging callback which prints
162out information relating to each \s-1BIO\s0 operation. If the callback
163argument is set if is interpreted as a \s-1BIO\s0 to send the information
984263bc
MD
164to, otherwise stderr is used.
165.PP
8b0cefbb 166\&\fIcallback()\fR is the callback function itself. The meaning of each
984263bc
MD
167argument is described below.
168.PP
8b0cefbb 169The \s-1BIO\s0 the callback is attached to is passed in \fBb\fR.
984263bc 170.PP
8b0cefbb 171\&\fBoper\fR is set to the operation being performed. For some operations
984263bc 172the callback is called twice, once before and once after the actual
8b0cefbb 173operation, the latter case has \fBoper\fR or'ed with \s-1BIO_CB_RETURN\s0.
984263bc
MD
174.PP
175The meaning of the arguments \fBargp\fR, \fBargi\fR and \fBargl\fR depends on
176the value of \fBoper\fR, that is the operation being performed.
177.PP
8b0cefbb 178\&\fBretvalue\fR is the return value that would be returned to the
984263bc
MD
179application if no callback were present. The actual value returned
180is the return value of the callback itself. In the case of callbacks
8b0cefbb 181called before the actual \s-1BIO\s0 operation 1 is placed in retvalue, if
984263bc 182the return value is not positive it will be immediately returned to
8b0cefbb 183the application and the \s-1BIO\s0 operation will not be performed.
984263bc
MD
184.PP
185The callback should normally simply return \fBretvalue\fR when it has
186finished processing, unless if specifically wishes to modify the
187value returned to the application.
188.SH "CALLBACK OPERATIONS"
8b0cefbb
JR
189.IX Header "CALLBACK OPERATIONS"
190.IP "\fBBIO_free(b)\fR" 4
191.IX Item "BIO_free(b)"
192callback(b, \s-1BIO_CB_FREE\s0, \s-1NULL\s0, 0L, 0L, 1L) is called before the
984263bc 193free operation.
8b0cefbb
JR
194.IP "\fBBIO_read(b, out, outl)\fR" 4
195.IX Item "BIO_read(b, out, outl)"
196callback(b, \s-1BIO_CB_READ\s0, out, outl, 0L, 1L) is called before
197the read and callback(b, BIO_CB_READ|BIO_CB_RETURN, out, outl, 0L, retvalue)
984263bc 198after.
8b0cefbb
JR
199.IP "\fBBIO_write(b, in, inl)\fR" 4
200.IX Item "BIO_write(b, in, inl)"
201callback(b, \s-1BIO_CB_WRITE\s0, in, inl, 0L, 1L) is called before
202the write and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, inl, 0L, retvalue)
984263bc 203after.
8b0cefbb
JR
204.IP "\fBBIO_gets(b, out, outl)\fR" 4
205.IX Item "BIO_gets(b, out, outl)"
206callback(b, \s-1BIO_CB_GETS\s0, out, outl, 0L, 1L) is called before
207the operation and callback(b, BIO_CB_GETS|BIO_CB_RETURN, out, outl, 0L, retvalue)
984263bc 208after.
8b0cefbb
JR
209.IP "\fBBIO_puts(b, in)\fR" 4
210.IX Item "BIO_puts(b, in)"
211callback(b, \s-1BIO_CB_WRITE\s0, in, 0, 0L, 1L) is called before
212the operation and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, 0, 0L, retvalue)
984263bc 213after.
8b0cefbb
JR
214.IP "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR" 4
215.IX Item "BIO_ctrl(BIO *b, int cmd, long larg, void *parg)"
216callback(b,BIO_CB_CTRL,parg,cmd,larg,1L) is called before the call and
217callback(b,BIO_CB_CTRL|BIO_CB_RETURN,parg,cmd, larg,ret) after.
984263bc 218.SH "EXAMPLE"
8b0cefbb 219.IX Header "EXAMPLE"
984263bc
MD
220The \fIBIO_debug_callback()\fR function is a good example, its source is
221in crypto/bio/bio_cb.c
222.SH "SEE ALSO"
223.IX Header "SEE ALSO"
8b0cefbb 224\&\s-1TBA\s0