BIO_parse_hostserv.3ossl 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  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. .nr rF 0
  58. .if \n(.g .if rF .nr rF 1
  59. .if (\n(rF:(\n(.g==0)) \{\
  60. . if \nF \{\
  61. . de IX
  62. . tm Index:\\$1\t\\n%\t"\\$2"
  63. ..
  64. . if !\nF==2 \{\
  65. . nr % 0
  66. . nr F 2
  67. . \}
  68. . \}
  69. .\}
  70. .rr rF
  71. .\"
  72. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  73. .\" Fear. Run. Save yourself. No user-serviceable parts.
  74. . \" fudge factors for nroff and troff
  75. .if n \{\
  76. . ds #H 0
  77. . ds #V .8m
  78. . ds #F .3m
  79. . ds #[ \f1
  80. . ds #] \fP
  81. .\}
  82. .if t \{\
  83. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  84. . ds #V .6m
  85. . ds #F 0
  86. . ds #[ \&
  87. . ds #] \&
  88. .\}
  89. . \" simple accents for nroff and troff
  90. .if n \{\
  91. . ds ' \&
  92. . ds ` \&
  93. . ds ^ \&
  94. . ds , \&
  95. . ds ~ ~
  96. . ds /
  97. .\}
  98. .if t \{\
  99. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  100. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  101. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  102. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  103. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  104. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  105. .\}
  106. . \" troff and (daisy-wheel) nroff accents
  107. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  108. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  109. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  110. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  111. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  112. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  113. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  114. .ds ae a\h'-(\w'a'u*4/10)'e
  115. .ds Ae A\h'-(\w'A'u*4/10)'E
  116. . \" corrections for vroff
  117. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  118. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  119. . \" for low resolution devices (crt and lpr)
  120. .if \n(.H>23 .if \n(.V>19 \
  121. \{\
  122. . ds : e
  123. . ds 8 ss
  124. . ds o a
  125. . ds d- d\h'-1'\(ga
  126. . ds D- D\h'-1'\(hy
  127. . ds th \o'bp'
  128. . ds Th \o'LP'
  129. . ds ae ae
  130. . ds Ae AE
  131. .\}
  132. .rm #[ #] #H #V #F C
  133. .\" ========================================================================
  134. .\"
  135. .IX Title "BIO_PARSE_HOSTSERV 3ossl"
  136. .TH BIO_PARSE_HOSTSERV 3ossl "2024-09-03" "3.3.2" "OpenSSL"
  137. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  138. .\" way too many mistakes in technical documents.
  139. .if n .ad l
  140. .nh
  141. .SH "NAME"
  142. BIO_hostserv_priorities,
  143. BIO_parse_hostserv
  144. \&\- utility routines to parse a standard host and service string
  145. .SH "SYNOPSIS"
  146. .IX Header "SYNOPSIS"
  147. .Vb 1
  148. \& #include <openssl/bio.h>
  149. \&
  150. \& enum BIO_hostserv_priorities {
  151. \& BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV
  152. \& };
  153. \& int BIO_parse_hostserv(const char *hostserv, char **host, char **service,
  154. \& enum BIO_hostserv_priorities hostserv_prio);
  155. .Ve
  156. .SH "DESCRIPTION"
  157. .IX Header "DESCRIPTION"
  158. \&\fBBIO_parse_hostserv()\fR will parse the information given in \fBhostserv\fR,
  159. create strings with the hostname and service name and give those
  160. back via \fBhost\fR and \fBservice\fR. Those will need to be freed after
  161. they are used. \fBhostserv_prio\fR helps determine if \fBhostserv\fR shall
  162. be interpreted primarily as a hostname or a service name in ambiguous
  163. cases.
  164. .PP
  165. The syntax the \fBBIO_parse_hostserv()\fR recognises is:
  166. .PP
  167. .Vb 7
  168. \& host + \*(Aq:\*(Aq + service
  169. \& host + \*(Aq:\*(Aq + \*(Aq*\*(Aq
  170. \& host + \*(Aq:\*(Aq
  171. \& \*(Aq:\*(Aq + service
  172. \& \*(Aq*\*(Aq + \*(Aq:\*(Aq + service
  173. \& host
  174. \& service
  175. .Ve
  176. .PP
  177. The host part can be a name or an \s-1IP\s0 address. If it's a IPv6
  178. address, it \s-1MUST\s0 be enclosed in brackets, such as '[::1]'.
  179. .PP
  180. The service part can be a service name or its port number. A service name
  181. will be mapped to a port number using the system function \fBgetservbyname()\fR.
  182. .PP
  183. The returned values will depend on the given \fBhostserv\fR string
  184. and \fBhostserv_prio\fR, as follows:
  185. .PP
  186. .Vb 5
  187. \& host + \*(Aq:\*(Aq + service => *host = "host", *service = "service"
  188. \& host + \*(Aq:\*(Aq + \*(Aq*\*(Aq => *host = "host", *service = NULL
  189. \& host + \*(Aq:\*(Aq => *host = "host", *service = NULL
  190. \& \*(Aq:\*(Aq + service => *host = NULL, *service = "service"
  191. \& \*(Aq*\*(Aq + \*(Aq:\*(Aq + service => *host = NULL, *service = "service"
  192. \&
  193. \& in case no \*(Aq:\*(Aq is present in the string, the result depends on
  194. \& hostserv_prio, as follows:
  195. \&
  196. \& when hostserv_prio == BIO_PARSE_PRIO_HOST
  197. \& host => *host = "host", *service untouched
  198. \&
  199. \& when hostserv_prio == BIO_PARSE_PRIO_SERV
  200. \& service => *host untouched, *service = "service"
  201. .Ve
  202. .SH "RETURN VALUES"
  203. .IX Header "RETURN VALUES"
  204. \&\fBBIO_parse_hostserv()\fR returns 1 on success or 0 on error.
  205. .SH "SEE ALSO"
  206. .IX Header "SEE ALSO"
  207. \&\s-1\fBBIO_ADDRINFO\s0\fR\|(3)
  208. .SH "COPYRIGHT"
  209. .IX Header "COPYRIGHT"
  210. Copyright 2016\-2021 The OpenSSL Project Authors. All Rights Reserved.
  211. .PP
  212. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  213. this file except in compliance with the License. You can obtain a copy
  214. in the file \s-1LICENSE\s0 in the source distribution or at
  215. <https://www.openssl.org/source/license.html>.