diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-17 10:52:33 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-17 10:52:33 +0000 |
commit | 2c3307fb903f427be3d021c5780b75cac9af2ce8 (patch) | |
tree | 65cf431f40b7481d81ae2dfce9576342686448f7 /upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl | |
parent | Releasing progress-linux version 4.22.0-1~progress7.99u1. (diff) | |
download | manpages-l10n-2c3307fb903f427be3d021c5780b75cac9af2ce8.tar.xz manpages-l10n-2c3307fb903f427be3d021c5780b75cac9af2ce8.zip |
Merging upstream version 4.23.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl')
-rw-r--r-- | upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl b/upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl new file mode 100644 index 00000000..b33402f3 --- /dev/null +++ b/upstream/debian-unstable/man3/BIO_s_dgram_pair.3ssl @@ -0,0 +1,265 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "BIO_S_DGRAM_PAIR 3SSL" +.TH BIO_S_DGRAM_PAIR 3SSL 2024-04-04 3.2.2-dev OpenSSL +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +BIO_s_dgram_pair, BIO_new_bio_dgram_pair, BIO_dgram_set_no_trunc, +BIO_dgram_get_no_trunc, BIO_dgram_get_effective_caps, BIO_dgram_get_caps, +BIO_dgram_set_caps, BIO_dgram_set_mtu, BIO_dgram_get_mtu \- datagram pair BIO +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/bio.h> +\& +\& const BIO_METHOD *BIO_s_dgram_pair(void); +\& +\& int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, +\& BIO **bio2, size_t writebuf2); +\& int BIO_dgram_set_no_trunc(BIO *bio, int enable); +\& int BIO_dgram_get_no_trunc(BIO *bio); +\& uint32_t BIO_dgram_get_effective_caps(BIO *bio); +\& uint32_t BIO_dgram_get_caps(BIO *bio); +\& int BIO_dgram_set_caps(BIO *bio, uint32_t caps); +\& int BIO_dgram_set_mtu(BIO *bio, unsigned int mtu); +\& unsigned int BIO_dgram_get_mtu(BIO *bio); +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +\&\fBBIO_s_dgram_pair()\fR returns the method for a BIO datagram pair. A BIO datagram +pair is similar to a BIO pair (see \fBBIO_s_bio\fR\|(3)) but has datagram semantics. +Broadly, this means that the length of the buffer passed to a write call will +match that retrieved by a read call. If the buffer passed to a read call is too +short, the datagram is truncated or the read fails, depending on how the BIO is +configured. +.PP +The BIO datagram pair attaches certain metadata to each write, such as source +and destination addresses. This information may be retrieved on read. +.PP +A typical application of a BIO datagram pair is to allow an application to keep +all datagram network I/O requested by libssl under application control. +.PP +The BIO datagram pair is designed to support multithreaded use where certain +restrictions are observed; see THREADING. +.PP +The BIO datagram pair allows each half of a pair to signal to the other half +whether they support certain capabilities; see CAPABILITY INDICATION. +.PP +\&\fBBIO_new_bio_dgram_pair()\fR combines the calls to \fBBIO_new\fR\|(3), +\&\fBBIO_make_bio_pair\fR\|(3) and \fBBIO_set_write_buf_size\fR\|(3) to create a connected +pair of BIOs \fBbio1\fR, \fBbio2\fR with write buffer sizes \fBwritebuf1\fR and +\&\fBwritebuf2\fR. If either size is zero then the default size is used. +.PP +\&\fBBIO_make_bio_pair\fR\|(3) may be used to join two datagram pair BIOs into a pair. +The two BIOs must both use the method returned by \fBBIO_s_dgram_pair()\fR and neither +of the BIOs may currently be associated in a pair. +.PP +\&\fBBIO_destroy_bio_pair\fR\|(3) destroys the association between two connected BIOs. +Freeing either half of the pair will automatically destroy the association. +.PP +\&\fBBIO_reset\fR\|(3) clears any data in the write buffer of the given BIO. This means +that the opposite BIO in the pair will no longer have any data waiting to be +read. +.PP +The BIO maintains a fixed size internal write buffer. When the buffer is full, +further writes will fail until the buffer is drained via calls to +\&\fBBIO_read\fR\|(3). The size of the buffer can be changed using +\&\fBBIO_set_write_buf_size\fR\|(3) and queried using \fBBIO_get_write_buf_size\fR\|(3). +.PP +Note that the write buffer is partially consumed by metadata stored internally +which is attached to each datagram, such as source and destination addresses. +The size of this overhead is undefined and may change between releases. +.PP +The standard \fBBIO_ctrl_pending\fR\|(3) call has modified behaviour and returns the +size of the next datagram waiting to be read in bytes. An application can use +this function to ensure it provides an adequate buffer to a subsequent read +call. If no datagram is waiting to be read, zero is returned. +.PP +This BIO does not support sending or receiving zero-length datagrams. Passing a +zero-length buffer to BIO_write is treated as a no-op. +.PP +\&\fBBIO_eof\fR\|(3) returns 1 only if the given BIO datagram pair BIO is not currently +connected to a peer BIO. +.PP +\&\fBBIO_get_write_guarantee\fR\|(3) and \fBBIO_ctrl_get_write_guarantee\fR\|(3) return how +large a datagram the next call to \fBBIO_write\fR\|(3) can accept. If there is not +enough space in the write buffer to accept another datagram equal in size to the +configured MTU, zero is returned (see below). This is intended to avoid a +situation where an application attempts to read a datagram from a network +intending to write it to a BIO datagram pair, but where the received datagram +ends up being too large to write to the BIO datagram pair. +.PP +\&\fBBIO_dgram_set_no_trunc()\fR and \fBBIO_ctrl_get_no_trunc()\fR set and retrieve the +truncation mode for the given half of a BIO datagram pair. When no-truncate mode +is enabled, \fBBIO_read()\fR will fail if the buffer provided is inadequate to hold +the next datagram to be read. If no-truncate mode is disabled (the default), the +datagram will be silently truncated. This default behaviour maintains +compatibility with the semantics of the Berkeley sockets API. +.PP +\&\fBBIO_dgram_set_mtu()\fR and \fBBIO_dgram_get_mtu()\fR may be used to set an informational +MTU value on the BIO datagram pair. If \fBBIO_dgram_set_mtu()\fR is used on a BIO +which is currently part of a BIO datagram pair, the MTU value is set on both +halves of the pair. The value does not affect the operation of the BIO datagram +pair (except for \fBBIO_get_write_guarantee()\fR; see above) but may be used by other +code to determine a requested MTU. When a BIO datagram pair BIO is created, the +MTU is set to an unspecified but valid value. +.PP +\&\fBBIO_flush\fR\|(3) is a no-op. +.SH NOTES +.IX Header "NOTES" +The halves of a BIO datagram pair have independent lifetimes and must be +separately freed. +.SH THREADING +.IX Header "THREADING" +\&\fBBIO_recvmmsg\fR\|(3), \fBBIO_sendmmsg\fR\|(3), \fBBIO_read\fR\|(3), \fBBIO_write\fR\|(3), +\&\fBBIO_pending\fR\|(3), \fBBIO_get_write_guarantee\fR\|(3) and \fBBIO_flush\fR\|(3) may be used +by multiple threads simultaneously on the same BIO datagram pair. Specific +\&\fBBIO_ctrl\fR\|(3) operations (namely BIO_CTRL_PENDING, BIO_CTRL_FLUSH and +BIO_C_GET_WRITE_GUARANTEE) may also be used. Invoking any other BIO call, or any +other \fBBIO_ctrl\fR\|(3) operation, on either half of a BIO datagram pair while any +other BIO call is also in progress to either half of the same BIO datagram pair +results in undefined behaviour. +.SH "CAPABILITY INDICATION" +.IX Header "CAPABILITY INDICATION" +The BIO datagram pair can be used to enqueue datagrams which have source and +destination addresses attached. It is important that the component consuming one +side of a BIO datagram pair understand whether the other side of the pair will +honour any source and destination addresses it attaches to each datagram. For +example, if datagrams are queued with destination addresses set but simply read +by simple calls to \fBBIO_read\fR\|(3), the destination addresses will be discarded. +.PP +Each half of a BIO datagram pair can have capability flags set on it which +indicate whether source and destination addresses will be honoured by the reader +and whether they will be provided by the writer. These capability flags should +be set via a call to \fBBIO_dgram_set_caps()\fR, and these capabilities will be +reflected in the value returned by \fBBIO_dgram_get_effective_caps()\fR on the +opposite BIO. If necessary, the capability value previously set can be retrieved +using \fBBIO_dgram_get_caps()\fR. Note that \fBBIO_dgram_set_caps()\fR on a given BIO +controls the capabilities advertised to the peer, and +\&\fBBIO_dgram_get_effective_caps()\fR on a given BIO determines the capabilities +advertised by the peer of that BIO. +.PP +The following capabilities are available: +.IP \fBBIO_DGRAM_CAP_HANDLES_SRC_ADDR\fR 4 +.IX Item "BIO_DGRAM_CAP_HANDLES_SRC_ADDR" +The user of the datagram pair BIO promises to honour source addresses provided +with datagrams written to the BIO pair. +.IP \fBBIO_DGRAM_CAP_HANDLES_DST_ADDR\fR 4 +.IX Item "BIO_DGRAM_CAP_HANDLES_DST_ADDR" +The user of the datagram pair BIO promises to honour destination addresses provided +with datagrams written to the BIO pair. +.IP \fBBIO_DGRAM_CAP_PROVIDES_SRC_ADDR\fR 4 +.IX Item "BIO_DGRAM_CAP_PROVIDES_SRC_ADDR" +The user of the datagram pair BIO advertises the fact that it will provide source +addressing information with future writes to the BIO pair, where available. +.IP \fBBIO_DGRAM_CAP_PROVIDES_DST_ADDR\fR 4 +.IX Item "BIO_DGRAM_CAP_PROVIDES_DST_ADDR" +The user of the datagram pair BIO advertises the fact that it will provide +destination addressing information with future writes to the BIO pair, where +available. +.PP +If a caller attempts to specify a destination address (for example, using +\&\fBBIO_sendmmsg\fR\|(3)) and the peer has not advertised the +\&\fBBIO_DGRAM_CAP_HANDLES_DST_ADDR\fR capability, the operation fails. Thus, +capability negotiation is mandatory. +.PP +If a caller attempts to specify a source address when writing, or requests a +destination address when receiving, and local address support has not been +enabled, the operation fails; see \fBBIO_dgram_set_local_addr_enable\fR\|(3). +.PP +If a caller attempts to enable local address support using +\&\fBBIO_dgram_set_local_addr_enable\fR\|(3) and \fBBIO_dgram_get_local_addr_cap\fR\|(3) +does not return 1 (meaning that the peer has not advertised both the +\&\fBBIO_DGRAM_CAP_HANDLES_SRC_ADDR\fR and the \fBBIO_DGRAM_CAP_PROVIDES_DST_ADDR\fR +capability), the operation fails. +.PP +\&\fBBIO_DGRAM_CAP_PROVIDES_SRC_ADDR\fR and \fBBIO_DGRAM_CAP_PROVIDES_DST_ADDR\fR +indicate that the application using that half of a BIO datagram pair promises to +provide source and destination addresses respectively when writing datagrams to +that half of the BIO datagram pair. However, these capability flags do not +affect the behaviour of the BIO datagram pair. +.SH "RETURN VALUES" +.IX Header "RETURN VALUES" +\&\fBBIO_new_bio_dgram_pair()\fR returns 1 on success, with the new BIOs available in +\&\fBbio1\fR and \fBbio2\fR, or 0 on failure, with NULL pointers stored into the +locations for \fBbio1\fR and \fBbio2\fR. Check the error stack for more information. +.PP +\&\fBBIO_dgram_set_no_trunc()\fR, \fBBIO_dgram_set_caps()\fR and \fBBIO_dgram_set_mtu()\fR return 1 +on success and 0 on failure. +.PP +\&\fBBIO_dgram_get_no_trunc()\fR returns 1 if no-truncate mode is enabled on a BIO, or 0 +if no-truncate mode is not enabled or not supported on a given BIO. +.PP +\&\fBBIO_dgram_get_effective_caps()\fR and \fBBIO_dgram_get_caps()\fR return zero if no +capabilities are supported. +.PP +\&\fBBIO_dgram_get_mtu()\fR returns the MTU value configured on the BIO, or zero if the +operation is not supported. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBBIO_s_bio\fR\|(3), \fBbio\fR\|(7) +.SH COPYRIGHT +.IX Header "COPYRIGHT" +Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +<https://www.openssl.org/source/license.html>. |