BIO_ADDRINFO.3ossl 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. .\" -*- mode: troff; coding: utf-8 -*-
  2. .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
  3. .\"
  4. .\" Standard preamble:
  5. .\" ========================================================================
  6. .de Sp \" Vertical space (when we can't use .PP)
  7. .if t .sp .5v
  8. .if n .sp
  9. ..
  10. .de Vb \" Begin verbatim text
  11. .ft CW
  12. .nf
  13. .ne \\$1
  14. ..
  15. .de Ve \" End verbatim text
  16. .ft R
  17. .fi
  18. ..
  19. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  20. .ie n \{\
  21. . ds C` ""
  22. . ds C' ""
  23. 'br\}
  24. .el\{\
  25. . ds C`
  26. . ds C'
  27. 'br\}
  28. .\"
  29. .\" Escape single quotes in literal strings from groff's Unicode transform.
  30. .ie \n(.g .ds Aq \(aq
  31. .el .ds Aq '
  32. .\"
  33. .\" If the F register is >0, we'll generate index entries on stderr for
  34. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  35. .\" entries marked with X<> in POD. Of course, you'll have to process the
  36. .\" output yourself in some meaningful fashion.
  37. .\"
  38. .\" Avoid warning from groff about undefined register 'F'.
  39. .de IX
  40. ..
  41. .nr rF 0
  42. .if \n(.g .if rF .nr rF 1
  43. .if (\n(rF:(\n(.g==0)) \{\
  44. . if \nF \{\
  45. . de IX
  46. . tm Index:\\$1\t\\n%\t"\\$2"
  47. ..
  48. . if !\nF==2 \{\
  49. . nr % 0
  50. . nr F 2
  51. . \}
  52. . \}
  53. .\}
  54. .rr rF
  55. .\" ========================================================================
  56. .\"
  57. .IX Title "BIO_ADDRINFO 3ossl"
  58. .TH BIO_ADDRINFO 3ossl 2025-01-17 3.4.0 OpenSSL
  59. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  60. .\" way too many mistakes in technical documents.
  61. .if n .ad l
  62. .nh
  63. .SH NAME
  64. BIO_lookup_type,
  65. BIO_ADDRINFO, BIO_ADDRINFO_next, BIO_ADDRINFO_free,
  66. BIO_ADDRINFO_family, BIO_ADDRINFO_socktype, BIO_ADDRINFO_protocol,
  67. BIO_ADDRINFO_address,
  68. BIO_lookup_ex,
  69. BIO_lookup
  70. \&\- BIO_ADDRINFO type and routines
  71. .SH SYNOPSIS
  72. .IX Header "SYNOPSIS"
  73. .Vb 2
  74. \& #include <sys/types.h>
  75. \& #include <openssl/bio.h>
  76. \&
  77. \& typedef union bio_addrinfo_st BIO_ADDRINFO;
  78. \&
  79. \& enum BIO_lookup_type {
  80. \& BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
  81. \& };
  82. \&
  83. \& int BIO_lookup_ex(const char *host, const char *service, int lookup_type,
  84. \& int family, int socktype, int protocol, BIO_ADDRINFO **res);
  85. \& int BIO_lookup(const char *host, const char *service,
  86. \& enum BIO_lookup_type lookup_type,
  87. \& int family, int socktype, BIO_ADDRINFO **res);
  88. \&
  89. \& const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai);
  90. \& int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai);
  91. \& int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai);
  92. \& int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai);
  93. \& const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai);
  94. \& void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);
  95. .Ve
  96. .SH DESCRIPTION
  97. .IX Header "DESCRIPTION"
  98. The \fBBIO_ADDRINFO\fR type is a wrapper for address information
  99. types provided on your platform.
  100. .PP
  101. \&\fBBIO_ADDRINFO\fR normally forms a chain of several that can be
  102. picked at one by one.
  103. .PP
  104. \&\fBBIO_lookup_ex()\fR looks up a specified \fBhost\fR and \fBservice\fR, and
  105. uses \fBlookup_type\fR to determine what the default address should
  106. be if \fBhost\fR is \fBNULL\fR. \fBfamily\fR, \fBsocktype\fR and \fBprotocol\fR are used to
  107. determine what protocol family, socket type and protocol should be used for
  108. the lookup. \fBfamily\fR can be any of AF_INET, AF_INET6, AF_UNIX and
  109. AF_UNSPEC. \fBsocktype\fR can be SOCK_STREAM, SOCK_DGRAM or 0. Specifying 0
  110. indicates that any type can be used. \fBprotocol\fR specifies a protocol such as
  111. IPPROTO_TCP, IPPROTO_UDP or IPPORTO_SCTP. If set to 0 than any protocol can be
  112. used. \fBres\fR points at a pointer to hold the start of a \fBBIO_ADDRINFO\fR
  113. chain.
  114. .PP
  115. For the family \fBAF_UNIX\fR, \fBBIO_lookup_ex()\fR will ignore the \fBservice\fR
  116. parameter and expects the \fBhost\fR parameter to hold the path to the socket file.
  117. .PP
  118. \&\fBBIO_lookup()\fR does the same as \fBBIO_lookup_ex()\fR but does not provide the ability
  119. to select based on the protocol (any protocol may be returned).
  120. .PP
  121. \&\fBBIO_ADDRINFO_family()\fR returns the family of the given
  122. \&\fBBIO_ADDRINFO\fR. The result will be one of the constants
  123. AF_INET, AF_INET6 and AF_UNIX.
  124. .PP
  125. \&\fBBIO_ADDRINFO_socktype()\fR returns the socket type of the given
  126. \&\fBBIO_ADDRINFO\fR. The result will be one of the constants
  127. SOCK_STREAM and SOCK_DGRAM.
  128. .PP
  129. \&\fBBIO_ADDRINFO_protocol()\fR returns the protocol id of the given
  130. \&\fBBIO_ADDRINFO\fR. The result will be one of the constants
  131. IPPROTO_TCP and IPPROTO_UDP.
  132. .PP
  133. \&\fBBIO_ADDRINFO_address()\fR returns the underlying \fBBIO_ADDR\fR
  134. of the given \fBBIO_ADDRINFO\fR.
  135. .PP
  136. \&\fBBIO_ADDRINFO_next()\fR returns the next \fBBIO_ADDRINFO\fR in the chain
  137. from the given one.
  138. .PP
  139. \&\fBBIO_ADDRINFO_free()\fR frees the chain of \fBBIO_ADDRINFO\fR starting
  140. with the given one. If the argument is NULL, nothing is done.
  141. .SH "RETURN VALUES"
  142. .IX Header "RETURN VALUES"
  143. \&\fBBIO_lookup_ex()\fR and \fBBIO_lookup()\fR return 1 on success and 0 when an error
  144. occurred, and will leave an error indication on the OpenSSL error stack in that
  145. case.
  146. .PP
  147. All other functions described here return 0 or \fBNULL\fR when the
  148. information they should return isn't available.
  149. .SH NOTES
  150. .IX Header "NOTES"
  151. The \fBBIO_lookup_ex()\fR implementation uses the platform provided \fBgetaddrinfo()\fR
  152. function. On Linux it is known that specifying 0 for the protocol will not
  153. return any SCTP based addresses when calling \fBgetaddrinfo()\fR. Therefore, if an SCTP
  154. address is required then the \fBprotocol\fR parameter to \fBBIO_lookup_ex()\fR should be
  155. explicitly set to IPPROTO_SCTP. The same may be true on other platforms.
  156. .SH HISTORY
  157. .IX Header "HISTORY"
  158. The \fBBIO_lookup_ex()\fR function was added in OpenSSL 1.1.1.
  159. .SH COPYRIGHT
  160. .IX Header "COPYRIGHT"
  161. Copyright 2016\-2024 The OpenSSL Project Authors. All Rights Reserved.
  162. .PP
  163. Licensed under the Apache License 2.0 (the "License"). You may not use
  164. this file except in compliance with the License. You can obtain a copy
  165. in the file LICENSE in the source distribution or at
  166. <https://www.openssl.org/source/license.html>.