]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/BIO_s_connect.3
Regen manual pages.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / BIO_s_connect.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
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-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
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' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "BIO_S_CONNECT 3"
132 .TH BIO_S_CONNECT 3 "2018-09-11" "1.1.1" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 BIO_set_conn_address, BIO_get_conn_address, BIO_s_connect, BIO_new_connect, BIO_set_conn_hostname, BIO_set_conn_port, BIO_set_conn_ip_family, BIO_get_conn_ip_family, BIO_get_conn_hostname, BIO_get_conn_port, BIO_set_nbio, BIO_do_connect \- connect BIO
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/bio.h>
143 \&
144 \& const BIO_METHOD * BIO_s_connect(void);
145 \&
146 \& BIO *BIO_new_connect(char *name);
147 \&
148 \& long BIO_set_conn_hostname(BIO *b, char *name);
149 \& long BIO_set_conn_port(BIO *b, char *port);
150 \& long BIO_set_conn_address(BIO *b, BIO_ADDR *addr);
151 \& long BIO_set_conn_ip_family(BIO *b, long family);
152 \& const char *BIO_get_conn_hostname(BIO *b);
153 \& const char *BIO_get_conn_port(BIO *b);
154 \& const BIO_ADDR *BIO_get_conn_address(BIO *b);
155 \& const long BIO_get_conn_ip_family(BIO *b);
156 \&
157 \& long BIO_set_nbio(BIO *b, long n);
158 \&
159 \& int BIO_do_connect(BIO *b);
160 .Ve
161 .SH "DESCRIPTION"
162 .IX Header "DESCRIPTION"
163 \&\fIBIO_s_connect()\fR returns the connect \s-1BIO\s0 method. This is a wrapper
164 round the platform's \s-1TCP/IP\s0 socket connection routines.
165 .PP
166 Using connect BIOs, \s-1TCP/IP\s0 connections can be made and data
167 transferred using only \s-1BIO\s0 routines. In this way any platform
168 specific operations are hidden by the \s-1BIO\s0 abstraction.
169 .PP
170 Read and write operations on a connect \s-1BIO\s0 will perform I/O
171 on the underlying connection. If no connection is established
172 and the port and hostname (see below) is set up properly then
173 a connection is established first.
174 .PP
175 Connect BIOs support \fIBIO_puts()\fR but not \fIBIO_gets()\fR.
176 .PP
177 If the close flag is set on a connect \s-1BIO\s0 then any active
178 connection is shutdown and the socket closed when the \s-1BIO\s0
179 is freed.
180 .PP
181 Calling \fIBIO_reset()\fR on a connect \s-1BIO\s0 will close any active
182 connection and reset the \s-1BIO\s0 into a state where it can connect
183 to the same host again.
184 .PP
185 \&\fIBIO_get_fd()\fR places the underlying socket in \fBc\fR if it is not \s-1NULL,\s0
186 it also returns the socket . If \fBc\fR is not \s-1NULL\s0 it should be of
187 type (int *).
188 .PP
189 \&\fIBIO_set_conn_hostname()\fR uses the string \fBname\fR to set the hostname.
190 The hostname can be an \s-1IP\s0 address; if the address is an IPv6 one, it
191 must be enclosed with brackets. The hostname can also include the
192 port in the form hostname:port.
193 .PP
194 \&\fIBIO_set_conn_port()\fR sets the port to \fBport\fR. \fBport\fR can be the
195 numerical form or a string such as \*(L"http\*(R". A string will be looked
196 up first using \fIgetservbyname()\fR on the host platform but if that
197 fails a standard table of port names will be used. This internal
198 list is http, telnet, socks, https, ssl, ftp, and gopher.
199 .PP
200 \&\fIBIO_set_conn_address()\fR sets the address and port information using
201 a \s-1\fIBIO_ADDR\s0\fR\|(3ssl).
202 .PP
203 \&\fIBIO_set_conn_ip_family()\fR sets the \s-1IP\s0 family.
204 .PP
205 \&\fIBIO_get_conn_hostname()\fR returns the hostname of the connect \s-1BIO\s0 or
206 \&\s-1NULL\s0 if the \s-1BIO\s0 is initialized but no hostname is set.
207 This return value is an internal pointer which should not be modified.
208 .PP
209 \&\fIBIO_get_conn_port()\fR returns the port as a string.
210 This return value is an internal pointer which should not be modified.
211 .PP
212 \&\fIBIO_get_conn_address()\fR returns the address information as a \s-1BIO_ADDR.\s0
213 This return value is an internal pointer which should not be modified.
214 .PP
215 \&\fIBIO_get_conn_ip_family()\fR returns the \s-1IP\s0 family of the connect \s-1BIO.\s0
216 .PP
217 \&\fIBIO_set_nbio()\fR sets the non blocking I/O flag to \fBn\fR. If \fBn\fR is
218 zero then blocking I/O is set. If \fBn\fR is 1 then non blocking I/O
219 is set. Blocking I/O is the default. The call to \fIBIO_set_nbio()\fR
220 should be made before the connection is established because
221 non blocking I/O is set during the connect process.
222 .PP
223 \&\fIBIO_new_connect()\fR combines \fIBIO_new()\fR and \fIBIO_set_conn_hostname()\fR into
224 a single call: that is it creates a new connect \s-1BIO\s0 with \fBname\fR.
225 .PP
226 \&\fIBIO_do_connect()\fR attempts to connect the supplied \s-1BIO.\s0 It returns 1
227 if the connection was established successfully. A zero or negative
228 value is returned if the connection could not be established, the
229 call \fIBIO_should_retry()\fR should be used for non blocking connect BIOs
230 to determine if the call should be retried.
231 .SH "NOTES"
232 .IX Header "NOTES"
233 If blocking I/O is set then a non positive return value from any
234 I/O call is caused by an error condition, although a zero return
235 will normally mean that the connection was closed.
236 .PP
237 If the port name is supplied as part of the host name then this will
238 override any value set with \fIBIO_set_conn_port()\fR. This may be undesirable
239 if the application does not wish to allow connection to arbitrary
240 ports. This can be avoided by checking for the presence of the ':'
241 character in the passed hostname and either indicating an error or
242 truncating the string at that point.
243 .PP
244 The values returned by \fIBIO_get_conn_hostname()\fR, \fIBIO_get_conn_address()\fR,
245 and \fIBIO_get_conn_port()\fR are updated when a connection attempt is made.
246 Before any connection attempt the values returned are those set by the
247 application itself.
248 .PP
249 Applications do not have to call \fIBIO_do_connect()\fR but may wish to do
250 so to separate the connection process from other I/O processing.
251 .PP
252 If non blocking I/O is set then retries will be requested as appropriate.
253 .PP
254 It addition to \fIBIO_should_read()\fR and \fIBIO_should_write()\fR it is also
255 possible for \fIBIO_should_io_special()\fR to be true during the initial
256 connection process with the reason \s-1BIO_RR_CONNECT.\s0 If this is returned
257 then this is an indication that a connection attempt would block,
258 the application should then take appropriate action to wait until
259 the underlying socket has connected and retry the call.
260 .PP
261 \&\fIBIO_set_conn_hostname()\fR, \fIBIO_set_conn_port()\fR, \fIBIO_get_conn_hostname()\fR,
262 \&\fIBIO_set_conn_address()\fR, \fIBIO_get_conn_port()\fR, \fIBIO_get_conn_address()\fR,
263 \&\fIBIO_set_conn_ip_family()\fR, \fIBIO_get_conn_ip_family()\fR,
264 \&\fIBIO_set_nbio()\fR, and \fIBIO_do_connect()\fR are macros.
265 .SH "RETURN VALUES"
266 .IX Header "RETURN VALUES"
267 \&\fIBIO_s_connect()\fR returns the connect \s-1BIO\s0 method.
268 .PP
269 \&\fIBIO_get_fd()\fR returns the socket or \-1 if the \s-1BIO\s0 has not
270 been initialized.
271 .PP
272 \&\fIBIO_set_conn_address()\fR, \fIBIO_set_conn_port()\fR, and \fIBIO_set_conn_ip_family()\fR
273 always return 1.
274 .PP
275 \&\fIBIO_set_conn_hostname()\fR returns 1 on success and 0 on failure.
276 .PP
277 \&\fIBIO_get_conn_address()\fR returns the address information or \s-1NULL\s0 if none
278 was set.
279 .PP
280 \&\fIBIO_get_conn_hostname()\fR returns the connected hostname or \s-1NULL\s0 if
281 none was set.
282 .PP
283 \&\fIBIO_get_conn_ip_family()\fR returns the address family or \-1 if none was set.
284 .PP
285 \&\fIBIO_get_conn_port()\fR returns a string representing the connected
286 port or \s-1NULL\s0 if not set.
287 .PP
288 \&\fIBIO_set_nbio()\fR always returns 1.
289 .PP
290 \&\fIBIO_do_connect()\fR returns 1 if the connection was successfully
291 established and 0 or \-1 if the connection failed.
292 .SH "EXAMPLE"
293 .IX Header "EXAMPLE"
294 This is example connects to a webserver on the local host and attempts
295 to retrieve a page and copy the result to standard output.
296 .PP
297 .Vb 3
298 \& BIO *cbio, *out;
299 \& int len;
300 \& char tmpbuf[1024];
301 \&
302 \& cbio = BIO_new_connect("localhost:http");
303 \& out = BIO_new_fp(stdout, BIO_NOCLOSE);
304 \& if (BIO_do_connect(cbio) <= 0) {
305 \&     fprintf(stderr, "Error connecting to server\en");
306 \&     ERR_print_errors_fp(stderr);
307 \&     exit(1);
308 \& }
309 \& BIO_puts(cbio, "GET / HTTP/1.0\en\en");
310 \& for (;;) {
311 \&     len = BIO_read(cbio, tmpbuf, 1024);
312 \&     if (len <= 0)
313 \&         break;
314 \&     BIO_write(out, tmpbuf, len);
315 \& }
316 \& BIO_free(cbio);
317 \& BIO_free(out);
318 .Ve
319 .SH "SEE ALSO"
320 .IX Header "SEE ALSO"
321 \&\s-1\fIBIO_ADDR\s0\fR\|(3)
322 .SH "HISTORY"
323 .IX Header "HISTORY"
324 \&\fIBIO_set_conn_int_port()\fR, \fIBIO_get_conn_int_port()\fR, \fIBIO_set_conn_ip()\fR, and \fIBIO_get_conn_ip()\fR
325 were removed in OpenSSL 1.1.0.
326 Use \fIBIO_set_conn_address()\fR and \fIBIO_get_conn_address()\fR instead.
327 .SH "COPYRIGHT"
328 .IX Header "COPYRIGHT"
329 Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved.
330 .PP
331 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
332 this file except in compliance with the License.  You can obtain a copy
333 in the file \s-1LICENSE\s0 in the source distribution or at
334 <https://www.openssl.org/source/license.html>.