xref: /netbsd-src/crypto/external/bsd/openssl.old/dist/doc/man3/BIO_ADDRINFO.pod (revision 4724848cf0da353df257f730694b7882798e5daf)
1*4724848cSchristos=pod
2*4724848cSchristos
3*4724848cSchristos=head1 NAME
4*4724848cSchristos
5*4724848cSchristosBIO_lookup_type,
6*4724848cSchristosBIO_ADDRINFO, BIO_ADDRINFO_next, BIO_ADDRINFO_free,
7*4724848cSchristosBIO_ADDRINFO_family, BIO_ADDRINFO_socktype, BIO_ADDRINFO_protocol,
8*4724848cSchristosBIO_ADDRINFO_address,
9*4724848cSchristosBIO_lookup_ex,
10*4724848cSchristosBIO_lookup
11*4724848cSchristos- BIO_ADDRINFO type and routines
12*4724848cSchristos
13*4724848cSchristos=head1 SYNOPSIS
14*4724848cSchristos
15*4724848cSchristos #include <sys/types.h>
16*4724848cSchristos #include <openssl/bio.h>
17*4724848cSchristos
18*4724848cSchristos typedef union bio_addrinfo_st BIO_ADDRINFO;
19*4724848cSchristos
20*4724848cSchristos enum BIO_lookup_type {
21*4724848cSchristos     BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
22*4724848cSchristos };
23*4724848cSchristos
24*4724848cSchristos int BIO_lookup_ex(const char *host, const char *service, int lookup_type,
25*4724848cSchristos                   int family, int socktype, int protocol, BIO_ADDRINFO **res);
26*4724848cSchristos int BIO_lookup(const char *node, const char *service,
27*4724848cSchristos                enum BIO_lookup_type lookup_type,
28*4724848cSchristos                int family, int socktype, BIO_ADDRINFO **res);
29*4724848cSchristos
30*4724848cSchristos const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai);
31*4724848cSchristos int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai);
32*4724848cSchristos int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai);
33*4724848cSchristos int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai);
34*4724848cSchristos const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai);
35*4724848cSchristos void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);
36*4724848cSchristos
37*4724848cSchristos=head1 DESCRIPTION
38*4724848cSchristos
39*4724848cSchristosThe B<BIO_ADDRINFO> type is a wrapper for address information
40*4724848cSchristostypes provided on your platform.
41*4724848cSchristos
42*4724848cSchristosB<BIO_ADDRINFO> normally forms a chain of several that can be
43*4724848cSchristospicked at one by one.
44*4724848cSchristos
45*4724848cSchristosBIO_lookup_ex() looks up a specified B<host> and B<service>, and
46*4724848cSchristosuses B<lookup_type> to determine what the default address should
47*4724848cSchristosbe if B<host> is B<NULL>. B<family>, B<socktype> and B<protocol> are used to
48*4724848cSchristosdetermine what protocol family, socket type and protocol should be used for
49*4724848cSchristosthe lookup.  B<family> can be any of AF_INET, AF_INET6, AF_UNIX and
50*4724848cSchristosAF_UNSPEC. B<socktype> can be SOCK_STREAM, SOCK_DGRAM or 0. Specifying 0
51*4724848cSchristosindicates that any type can be used. B<protocol> specifies a protocol such as
52*4724848cSchristosIPPROTO_TCP, IPPROTO_UDP or IPPORTO_SCTP. If set to 0 than any protocol can be
53*4724848cSchristosused. B<res> points at a pointer to hold the start of a B<BIO_ADDRINFO>
54*4724848cSchristoschain.
55*4724848cSchristos
56*4724848cSchristosFor the family B<AF_UNIX>, BIO_lookup_ex() will ignore the B<service>
57*4724848cSchristosparameter and expects the B<node> parameter to hold the path to the
58*4724848cSchristossocket file.
59*4724848cSchristos
60*4724848cSchristosBIO_lookup() does the same as BIO_lookup_ex() but does not provide the ability
61*4724848cSchristosto select based on the protocol (any protocol may be returned).
62*4724848cSchristos
63*4724848cSchristosBIO_ADDRINFO_family() returns the family of the given
64*4724848cSchristosB<BIO_ADDRINFO>.  The result will be one of the constants
65*4724848cSchristosAF_INET, AF_INET6 and AF_UNIX.
66*4724848cSchristos
67*4724848cSchristosBIO_ADDRINFO_socktype() returns the socket type of the given
68*4724848cSchristosB<BIO_ADDRINFO>.  The result will be one of the constants
69*4724848cSchristosSOCK_STREAM and SOCK_DGRAM.
70*4724848cSchristos
71*4724848cSchristosBIO_ADDRINFO_protocol() returns the protocol id of the given
72*4724848cSchristosB<BIO_ADDRINFO>.  The result will be one of the constants
73*4724848cSchristosIPPROTO_TCP and IPPROTO_UDP.
74*4724848cSchristos
75*4724848cSchristosBIO_ADDRINFO_address() returns the underlying B<BIO_ADDR>
76*4724848cSchristosof the given B<BIO_ADDRINFO>.
77*4724848cSchristos
78*4724848cSchristosBIO_ADDRINFO_next() returns the next B<BIO_ADDRINFO> in the chain
79*4724848cSchristosfrom the given one.
80*4724848cSchristos
81*4724848cSchristosBIO_ADDRINFO_free() frees the chain of B<BIO_ADDRINFO> starting
82*4724848cSchristoswith the given one.
83*4724848cSchristos
84*4724848cSchristos=head1 RETURN VALUES
85*4724848cSchristos
86*4724848cSchristosBIO_lookup_ex() and BIO_lookup() return 1 on success and 0 when an error
87*4724848cSchristosoccurred, and will leave an error indication on the OpenSSL error stack in that
88*4724848cSchristoscase.
89*4724848cSchristos
90*4724848cSchristosAll other functions described here return 0 or B<NULL> when the
91*4724848cSchristosinformation they should return isn't available.
92*4724848cSchristos
93*4724848cSchristos=head1 NOTES
94*4724848cSchristos
95*4724848cSchristosThe BIO_lookup_ex() implementation uses the platform provided getaddrinfo()
96*4724848cSchristosfunction. On Linux it is known that specifying 0 for the protocol will not
97*4724848cSchristosreturn any SCTP based addresses when calling getaddrinfo(). Therefore, if an SCTP
98*4724848cSchristosaddress is required then the B<protocol> parameter to BIO_lookup_ex() should be
99*4724848cSchristosexplicitly set to IPPROTO_SCTP. The same may be true on other platforms.
100*4724848cSchristos
101*4724848cSchristos=head1 HISTORY
102*4724848cSchristos
103*4724848cSchristosThe BIO_lookup_ex() function was added in OpenSSL 1.1.1.
104*4724848cSchristos
105*4724848cSchristos=head1 COPYRIGHT
106*4724848cSchristos
107*4724848cSchristosCopyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
108*4724848cSchristos
109*4724848cSchristosLicensed under the OpenSSL license (the "License").  You may not use
110*4724848cSchristosthis file except in compliance with the License.  You can obtain a copy
111*4724848cSchristosin the file LICENSE in the source distribution or at
112*4724848cSchristosL<https://www.openssl.org/source/license.html>.
113*4724848cSchristos
114*4724848cSchristos=cut
115