summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-03-30 23:07:20 -0700
committerGarrett D'Amore <garrett@damore.org>2024-03-30 23:07:20 -0700
commitf73cd76f54b8aead38689e0ea805d5d805dfbe96 (patch)
tree0f6643e955770a9e96a8bbd900ca957a73fe1182
parent6f8944a96a5acd509014caae4e57dafbba51e126 (diff)
downloadnng-f73cd76f54b8aead38689e0ea805d5d805dfbe96.tar.gz
nng-f73cd76f54b8aead38689e0ea805d5d805dfbe96.tar.bz2
nng-f73cd76f54b8aead38689e0ea805d5d805dfbe96.zip
Staging work. converted nng_ipc.
-rw-r--r--docs/man/nng_ipc.7.adoc126
-rw-r--r--docs/reference/book.toml16
-rw-r--r--docs/reference/src/SUMMARY.md1
-rw-r--r--docs/reference/src/old/nng_dialer_getopt.3.adoc (renamed from docs/man/nng_dialer_getopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_dialer_setopt.3.adoc (renamed from docs/man/nng_dialer_setopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_getopt.3.adoc (renamed from docs/man/nng_getopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_inproc_register.3.adoc (renamed from docs/man/nng_inproc_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_ipc_register.3.adoc (renamed from docs/man/nng_ipc_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_listener_getopt.3.adoc (renamed from docs/man/nng_listener_getopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_listener_setopt.3.adoc (renamed from docs/man/nng_listener_setopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_pipe_getopt.3.adoc (renamed from docs/man/nng_pipe_getopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_setopt.3.adoc (renamed from docs/man/nng_setopt.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_tcp_register.3.adoc (renamed from docs/man/nng_tcp_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_tls_register.3.adoc (renamed from docs/man/nng_tls_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_ws_register.3.adoc (renamed from docs/man/nng_ws_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_wss_register.3.adoc (renamed from docs/man/nng_wss_register.3.adoc)0
-rw-r--r--docs/reference/src/old/nng_zt_register.3.adoc (renamed from docs/man/nng_zt_register.3.adoc)0
-rw-r--r--docs/reference/src/refs.md14
-rw-r--r--docs/reference/src/stream/nng_stream_close.3str.adoc (renamed from docs/man/nng_stream_close.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer.5.adoc (renamed from docs/man/nng_stream_dialer.5.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_alloc.3str.adoc (renamed from docs/man/nng_stream_dialer_alloc.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_close.3str.adoc (renamed from docs/man/nng_stream_dialer_close.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_dial.3str.adoc (renamed from docs/man/nng_stream_dialer_dial.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_free.3str.adoc (renamed from docs/man/nng_stream_dialer_free.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_get.3str.adoc (renamed from docs/man/nng_stream_dialer_get.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_dialer_set.3str.adoc (renamed from docs/man/nng_stream_dialer_set.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_free.3str.adoc (renamed from docs/man/nng_stream_free.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_get.3str.adoc (renamed from docs/man/nng_stream_get.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener.5.adoc (renamed from docs/man/nng_stream_listener.5.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_accept.3str.adoc (renamed from docs/man/nng_stream_listener_accept.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_alloc.3str.adoc (renamed from docs/man/nng_stream_listener_alloc.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_close.3str.adoc (renamed from docs/man/nng_stream_listener_close.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_free.3str.adoc (renamed from docs/man/nng_stream_listener_free.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_get.3str.adoc (renamed from docs/man/nng_stream_listener_get.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_listen.3str.adoc (renamed from docs/man/nng_stream_listener_listen.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_listener_set.3str.adoc (renamed from docs/man/nng_stream_listener_set.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_recv.3str.adoc (renamed from docs/man/nng_stream_recv.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_send.3str.adoc (renamed from docs/man/nng_stream_send.3str.adoc)0
-rw-r--r--docs/reference/src/stream/nng_stream_set.3str.adoc (renamed from docs/man/nng_stream_set.3str.adoc)0
-rw-r--r--docs/reference/src/tran/ipc.md95
40 files changed, 123 insertions, 129 deletions
diff --git a/docs/man/nng_ipc.7.adoc b/docs/man/nng_ipc.7.adoc
deleted file mode 100644
index c085e4d2..00000000
--- a/docs/man/nng_ipc.7.adoc
+++ /dev/null
@@ -1,126 +0,0 @@
-= nng_ipc(7)
-//
-// Copyright 2023 Staysail Systems, Inc. <info@staysail.tech>
-// Copyright 2018 Capitar IT Group BV <info@capitar.com>
-//
-// This document is supplied under the terms of the MIT License, a
-// copy of which should be located in the distribution where this
-// file was obtained (LICENSE.txt). A copy of the license may also be
-// found online at https://opensource.org/licenses/MIT.
-//
-
-== NAME
-
-nng_ipc - IPC transport
-
-== SYNOPSIS
-
-[source,c]
-----
-#include <nng/transport/ipc/ipc.h>
-
-int nng_ipc_register(void);
-----
-
-== DESCRIPTION
-
-(((IPC)))(((transport, _ipc_)))
-The ((_ipc_ transport)) provides communication support between
-sockets within different processes on the same host.
-For POSIX platforms, this is implemented using ((UNIX domain sockets)).
-For Windows, this is implemented using Windows ((Named Pipes)).
-Other platforms may have different implementation strategies.
-
-// We need to insert a reference to the nanomsg RFC.
-
-=== Registration
-
-This transport is generally built-in to the core, so
-no extra steps to use it should be necessary.
-
-=== URI Formats
-
-==== Traditional Names
-
-(((URI, `ipc://`)))
-This transport uses URIs using the scheme `ipc://`, followed by a path
-name in the file system where the socket or named pipe should be created.
-
-TIP: On Windows, all names are prefixed by `\\.\pipe\` and do not
-reside in the normal file system.
-On POSIX platforms, the path is taken literally, and is relative to
-the current directory, unless it begins with `/`, in which case it is
-relative to the root directory.
-
-NOTE: When using relative paths on POSIX systems, the address used and returned
-in properties like `NNG_OPT_LOCADDR` and `NNG_OPT_URL` will also be relative.
-Consequently, they will only be interpreted the same by processes that have
-the same working directory.
-To ensure maximum portability and safety, absolute paths are recommended
-whenever possible.
-
-NOTE: If compatibility with legacy _nanomsg_ applications is required,
-then path names must not be longer than 122 bytes, including the final
-`NUL` byte.
-This is because legacy versions of _nanomsg_ cannot express URLs
-longer than 128 bytes, including the `ipc://` prefix.
-
-==== UNIX Aliases
-
-(((URI, `unix://`)))
-The `unix://` scheme is an alias for `ipc://` and can be used inter-changeably, but only
-on POSIX systems.
-
-The purpose of this scheme is to support a future transport making use of `AF_UNIX`
-on Windows systems, at which time it will be necessary to discriminate between
-the Named Pipes and the `AF_UNIX` based transports.
-
-==== Abstract Names
-
-(((URI, `abstract://`)))
-On Linux, this transport also can support abstract sockets.
-Abstract sockets use a URI-encoded name after the scheme, which allows arbitrary values to be conveyed
-in the path, including embedded `NUL` bytes.
-For example, the name `"a\0b"` would be represented as `abstract://a%00b`.
-
-TIP: An empty name may be used with a listener to request "`auto bind`" be used to select a name.
-In this case the system will allocate a free name.
-The name assigned may be retrieved using `NNG_OPT_LOCADDR`.
-
-NOTE: _NNG_ cannot represent an abstract socket with the empty name.
-
-NOTE: Abstract names do not include the leading `NUL` byte used in the low-level socket address.
-
-Abstract sockets do not have any representation in the file system, and are automatically freed by
-the system when no longer in use.
-Abstract sockets ignore socket permissions, but it is still possible to determine the credentials
-of the peer with `NNG_OPT_PEER_UID`, etc.
-
-=== Socket Address
-
-When using an xref:nng_sockaddr.5.adoc[`nng_sockaddr`] structure,
-the actual structure is of type xref:nng_sockaddr_ipc.5.adoc[`nng_sockaddr_ipc`],
-except for abstract sockets, which use xref:nng_sockaddr_abstract.5.adoc[`nng_sockaddr_abstract`].
-
-=== Transport Options
-
-The following transport options are supported by this transport,
-where supported by the underlying platform.
-
-* xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PERMISSIONS[`NNG_OPT_IPC_PERMISSIONS`]
-* xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_SECURITY_DESCRIPTOR[`NNG_OPT_IPC_SECURITY_DESCRIPTOR`]
-* xref:nng_options.5.adoc#NNG_OPT_LOCADDR[`NNG_OPT_LOCADDR`]
-* xref:nng_options.5.adoc#NNG_OPT_REMADDR[`NNG_OPT_REMADDR`]
-* xref:nng_options.5.adoc#NNG_OPT_PEER_GID[`NNG_OPT_PEER_GID`]
-* xref:nng_options.5.adoc#NNG_OPT_PEER_PID[`NNG_OPT_PEER_PID`]
-* xref:nng_options.5.adoc#NNG_OPT_PEER_UID[`NNG_OPT_PEER_UID`]
-* xref:nng_options.5.adoc#NNG_OPT_PEER_ZONEID[`NNG_OPT_PEER_ZONEID`]
-* xref:nng_options.5.adoc#NNG_OPT_URL[`NNG_OPT_URL`]
-
-== SEE ALSO
-
-[.text-left]
-xref:nng_sockaddr.5.adoc[nng_sockaddr(5)],
-xref:nng_ipc_options.5.adoc[nng_ipc_options(5)],
-xref:nng_options.5.adoc[nng_options(5)],
-xref:nng.7.adoc[nng(7)]
diff --git a/docs/reference/book.toml b/docs/reference/book.toml
index aeca51c3..d74117ea 100644
--- a/docs/reference/book.toml
+++ b/docs/reference/book.toml
@@ -15,6 +15,8 @@ fold.level = 1
[preprocessor.indexing.see_instead]
# "*PUSH* (protocol)" = "protocol, *PUSH*"
+"URI" = "URI"
+"option" = "Options"
[preprocessor.indexing.nest_under]
"body" = "message"
@@ -38,11 +40,25 @@ fold.level = 1
"*ws*" = "transport"
"*wss*" = "transport"
+"`abstract://`" = "URI"
"`inproc://`" = "URI"
"`ipc://`" = "URI"
"`tls+tcp://`" = "URI"
"`tcp://`" = "URI"
+"`unix://`" = "URI"
"`ws://`" = "URI"
"`wss://`" = "URI"
+"`NNG_OPT_LOCADDR`" = "option"
+"`NNG_OPT_REMADDR`" = "option"
+"`NNG_OPT_PEER_GID`" = "option"
+"`NNG_OPT_PEER_PID`" = "option"
+"`NNG_OPT_PEER_UID`" = "option"
+"`NNG_OPT_SUB_PREFNEW`" = "option"
+"`NNG_OPT_SUB_SUBSCRIBE`" = "option"
+"`NNG_OPT_SUB_UNSUBSCRIBE`" = "option"
+"`NNG_OPT_SURVEYOR_SURVEYTIME`" = "option"
+"`NNG_OPT_REQ_RESENDTIME`" = "option"
+"`NNG_OPT_REQ_RESENDTICK`" = "option"
+
[preprocessor.alerts]
diff --git a/docs/reference/src/SUMMARY.md b/docs/reference/src/SUMMARY.md
index 82187252..e81fec99 100644
--- a/docs/reference/src/SUMMARY.md
+++ b/docs/reference/src/SUMMARY.md
@@ -19,6 +19,7 @@
- [Transports](tran/index.md)
+ - [IPC](tran/ipc.md)
- [INPROC](tran/inproc.md)
- [TCP](tran/tcp.md)
diff --git a/docs/man/nng_dialer_getopt.3.adoc b/docs/reference/src/old/nng_dialer_getopt.3.adoc
index a4083819..a4083819 100644
--- a/docs/man/nng_dialer_getopt.3.adoc
+++ b/docs/reference/src/old/nng_dialer_getopt.3.adoc
diff --git a/docs/man/nng_dialer_setopt.3.adoc b/docs/reference/src/old/nng_dialer_setopt.3.adoc
index 3aaff1eb..3aaff1eb 100644
--- a/docs/man/nng_dialer_setopt.3.adoc
+++ b/docs/reference/src/old/nng_dialer_setopt.3.adoc
diff --git a/docs/man/nng_getopt.3.adoc b/docs/reference/src/old/nng_getopt.3.adoc
index 364d8f71..364d8f71 100644
--- a/docs/man/nng_getopt.3.adoc
+++ b/docs/reference/src/old/nng_getopt.3.adoc
diff --git a/docs/man/nng_inproc_register.3.adoc b/docs/reference/src/old/nng_inproc_register.3.adoc
index 8379a4e8..8379a4e8 100644
--- a/docs/man/nng_inproc_register.3.adoc
+++ b/docs/reference/src/old/nng_inproc_register.3.adoc
diff --git a/docs/man/nng_ipc_register.3.adoc b/docs/reference/src/old/nng_ipc_register.3.adoc
index 64da4b00..64da4b00 100644
--- a/docs/man/nng_ipc_register.3.adoc
+++ b/docs/reference/src/old/nng_ipc_register.3.adoc
diff --git a/docs/man/nng_listener_getopt.3.adoc b/docs/reference/src/old/nng_listener_getopt.3.adoc
index 828f440d..828f440d 100644
--- a/docs/man/nng_listener_getopt.3.adoc
+++ b/docs/reference/src/old/nng_listener_getopt.3.adoc
diff --git a/docs/man/nng_listener_setopt.3.adoc b/docs/reference/src/old/nng_listener_setopt.3.adoc
index 25411adc..25411adc 100644
--- a/docs/man/nng_listener_setopt.3.adoc
+++ b/docs/reference/src/old/nng_listener_setopt.3.adoc
diff --git a/docs/man/nng_pipe_getopt.3.adoc b/docs/reference/src/old/nng_pipe_getopt.3.adoc
index 648abbcc..648abbcc 100644
--- a/docs/man/nng_pipe_getopt.3.adoc
+++ b/docs/reference/src/old/nng_pipe_getopt.3.adoc
diff --git a/docs/man/nng_setopt.3.adoc b/docs/reference/src/old/nng_setopt.3.adoc
index 6c21cf95..6c21cf95 100644
--- a/docs/man/nng_setopt.3.adoc
+++ b/docs/reference/src/old/nng_setopt.3.adoc
diff --git a/docs/man/nng_tcp_register.3.adoc b/docs/reference/src/old/nng_tcp_register.3.adoc
index 3da671a9..3da671a9 100644
--- a/docs/man/nng_tcp_register.3.adoc
+++ b/docs/reference/src/old/nng_tcp_register.3.adoc
diff --git a/docs/man/nng_tls_register.3.adoc b/docs/reference/src/old/nng_tls_register.3.adoc
index bfe27e05..bfe27e05 100644
--- a/docs/man/nng_tls_register.3.adoc
+++ b/docs/reference/src/old/nng_tls_register.3.adoc
diff --git a/docs/man/nng_ws_register.3.adoc b/docs/reference/src/old/nng_ws_register.3.adoc
index 7a9cc1f3..7a9cc1f3 100644
--- a/docs/man/nng_ws_register.3.adoc
+++ b/docs/reference/src/old/nng_ws_register.3.adoc
diff --git a/docs/man/nng_wss_register.3.adoc b/docs/reference/src/old/nng_wss_register.3.adoc
index 856fe1c0..856fe1c0 100644
--- a/docs/man/nng_wss_register.3.adoc
+++ b/docs/reference/src/old/nng_wss_register.3.adoc
diff --git a/docs/man/nng_zt_register.3.adoc b/docs/reference/src/old/nng_zt_register.3.adoc
index 9c4a4ac4..9c4a4ac4 100644
--- a/docs/man/nng_zt_register.3.adoc
+++ b/docs/reference/src/old/nng_zt_register.3.adoc
diff --git a/docs/reference/src/refs.md b/docs/reference/src/refs.md
index ea27e96e..5d808e0b 100644
--- a/docs/reference/src/refs.md
+++ b/docs/reference/src/refs.md
@@ -7,9 +7,11 @@
[msg]: ../msg/index.md
[pipe]: ../overview/pipe.md
[socket]: ../sock/index.md
-[sockadddr]: ../overview/sockaddr.md
+[sockaddr]: ../overview/sockaddr.md
[sockaddr_in]: ../overview/sockaddr_in.md
[sockaddr_in6]: ../overview/sockaddr_in6.md
+[sockaddr_ipc]: ../overview/sockaddr_ipc.md
+[sockaddr_abstract]: ../overview/sockaddr_abstract.md
[raw]: ../overview/raw.md
[url]: ../overview/url.md
[transport]: ../tran/index.md
@@ -147,8 +149,14 @@
[NNG_OPT_SENDBUF]: ../opts/nng_opt_sendbuf.md
[NNG_OPT_LOCADDR]: ../opts/nng_opt_locaddr.md
[NNG_OPT_REMADDR]: ../api/nng_options.md#NNG_OPT_REMADDR
-[NNG_OPT_TCP_KEEPALIVE]: ../api/nng_tcp_options.md#NNG_OPT_TCP_KEEPALIVE
-[NNG_OPT_TCP_NODELAY]: ../api/nng_tcp_options.md#NNG_OPT_TCP_NODELAY
+[NNG_OPT_TCP_KEEPALIVE]: ../opts/tcp_options.md#NNG_OPT_TCP_KEEPALIVE
+[NNG_OPT_TCP_NODELAY]: ../opts/tcp_options.md#NNG_OPT_TCP_NODELAY
+[NNG_OPT_IPC_SECURITY_DESCRIPTOR]: ../opts/ipc_options.md
+[NNG_OPT_IPC_PERMISSIONS]: ../opts/ipc_options.md
+[NNG_OPT_PEER_GID]: ../opts/ipc_options.md
+[NNG_OPT_PEER_PID]: ../opts/ipc_options.md
+[NNG_OPT_PEER_UID]: ../opts/ipc_options.md
+[NNG_OPT_PEER_ZONEID]: ../opts/ipc_options.md
[NNG_OPT_URL]: ../api/nng_options.md#NNG_OPT_URL
<!-- External -->
diff --git a/docs/man/nng_stream_close.3str.adoc b/docs/reference/src/stream/nng_stream_close.3str.adoc
index 9e7b8d6a..9e7b8d6a 100644
--- a/docs/man/nng_stream_close.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_close.3str.adoc
diff --git a/docs/man/nng_stream_dialer.5.adoc b/docs/reference/src/stream/nng_stream_dialer.5.adoc
index eef23a3d..eef23a3d 100644
--- a/docs/man/nng_stream_dialer.5.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer.5.adoc
diff --git a/docs/man/nng_stream_dialer_alloc.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_alloc.3str.adoc
index 0c2db67c..0c2db67c 100644
--- a/docs/man/nng_stream_dialer_alloc.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_alloc.3str.adoc
diff --git a/docs/man/nng_stream_dialer_close.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_close.3str.adoc
index 59d9dec0..59d9dec0 100644
--- a/docs/man/nng_stream_dialer_close.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_close.3str.adoc
diff --git a/docs/man/nng_stream_dialer_dial.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_dial.3str.adoc
index 8dcd4ec2..8dcd4ec2 100644
--- a/docs/man/nng_stream_dialer_dial.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_dial.3str.adoc
diff --git a/docs/man/nng_stream_dialer_free.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_free.3str.adoc
index 6669ca1e..6669ca1e 100644
--- a/docs/man/nng_stream_dialer_free.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_free.3str.adoc
diff --git a/docs/man/nng_stream_dialer_get.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_get.3str.adoc
index 4023e56f..4023e56f 100644
--- a/docs/man/nng_stream_dialer_get.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_get.3str.adoc
diff --git a/docs/man/nng_stream_dialer_set.3str.adoc b/docs/reference/src/stream/nng_stream_dialer_set.3str.adoc
index bd4ac478..bd4ac478 100644
--- a/docs/man/nng_stream_dialer_set.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_dialer_set.3str.adoc
diff --git a/docs/man/nng_stream_free.3str.adoc b/docs/reference/src/stream/nng_stream_free.3str.adoc
index 30679458..30679458 100644
--- a/docs/man/nng_stream_free.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_free.3str.adoc
diff --git a/docs/man/nng_stream_get.3str.adoc b/docs/reference/src/stream/nng_stream_get.3str.adoc
index 606fcc09..606fcc09 100644
--- a/docs/man/nng_stream_get.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_get.3str.adoc
diff --git a/docs/man/nng_stream_listener.5.adoc b/docs/reference/src/stream/nng_stream_listener.5.adoc
index b774a1b9..b774a1b9 100644
--- a/docs/man/nng_stream_listener.5.adoc
+++ b/docs/reference/src/stream/nng_stream_listener.5.adoc
diff --git a/docs/man/nng_stream_listener_accept.3str.adoc b/docs/reference/src/stream/nng_stream_listener_accept.3str.adoc
index f5ffbca5..f5ffbca5 100644
--- a/docs/man/nng_stream_listener_accept.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_accept.3str.adoc
diff --git a/docs/man/nng_stream_listener_alloc.3str.adoc b/docs/reference/src/stream/nng_stream_listener_alloc.3str.adoc
index 966866ba..966866ba 100644
--- a/docs/man/nng_stream_listener_alloc.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_alloc.3str.adoc
diff --git a/docs/man/nng_stream_listener_close.3str.adoc b/docs/reference/src/stream/nng_stream_listener_close.3str.adoc
index a810509e..a810509e 100644
--- a/docs/man/nng_stream_listener_close.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_close.3str.adoc
diff --git a/docs/man/nng_stream_listener_free.3str.adoc b/docs/reference/src/stream/nng_stream_listener_free.3str.adoc
index aecd8895..aecd8895 100644
--- a/docs/man/nng_stream_listener_free.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_free.3str.adoc
diff --git a/docs/man/nng_stream_listener_get.3str.adoc b/docs/reference/src/stream/nng_stream_listener_get.3str.adoc
index 927e36a8..927e36a8 100644
--- a/docs/man/nng_stream_listener_get.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_get.3str.adoc
diff --git a/docs/man/nng_stream_listener_listen.3str.adoc b/docs/reference/src/stream/nng_stream_listener_listen.3str.adoc
index e8473b52..e8473b52 100644
--- a/docs/man/nng_stream_listener_listen.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_listen.3str.adoc
diff --git a/docs/man/nng_stream_listener_set.3str.adoc b/docs/reference/src/stream/nng_stream_listener_set.3str.adoc
index ccabe5ca..ccabe5ca 100644
--- a/docs/man/nng_stream_listener_set.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_listener_set.3str.adoc
diff --git a/docs/man/nng_stream_recv.3str.adoc b/docs/reference/src/stream/nng_stream_recv.3str.adoc
index 148be978..148be978 100644
--- a/docs/man/nng_stream_recv.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_recv.3str.adoc
diff --git a/docs/man/nng_stream_send.3str.adoc b/docs/reference/src/stream/nng_stream_send.3str.adoc
index 5a53e63c..5a53e63c 100644
--- a/docs/man/nng_stream_send.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_send.3str.adoc
diff --git a/docs/man/nng_stream_set.3str.adoc b/docs/reference/src/stream/nng_stream_set.3str.adoc
index e4a82a1a..e4a82a1a 100644
--- a/docs/man/nng_stream_set.3str.adoc
+++ b/docs/reference/src/stream/nng_stream_set.3str.adoc
diff --git a/docs/reference/src/tran/ipc.md b/docs/reference/src/tran/ipc.md
new file mode 100644
index 00000000..b2daa40e
--- /dev/null
+++ b/docs/reference/src/tran/ipc.md
@@ -0,0 +1,95 @@
+# IPC Transport
+
+## DESCRIPTION
+
+The {{i:*ipc* transport}}{{hi:*ipc*}} provides communication support between
+sockets within different processes on the same host.
+For POSIX platforms, this is implemented using {{i:UNIX domain sockets}}.
+For Windows, this is implemented using Windows {{i:named pipes}}.
+Other platforms may have different implementation strategies.
+
+### URI Formats
+
+#### Traditional Names
+
+This transport uses URIs using the scheme {{i:`ipc://`}}, followed by a path
+name in the file system where the socket or named pipe should be created.
+
+> [!TIP]
+> On Windows, all names are prefixed by `\\.\pipe\` and do not
+> reside in the normal file system.
+> On POSIX platforms, the path is taken literally, and is relative to
+> the current directory, unless it begins with `/`, in which case it is
+> relative to the root directory.
+
+> [!NOTE]
+> When using relative paths on POSIX systems, the address used and returned
+> in properties like `NNG_OPT_LOCADDR` and `NNG_OPT_URL` will also be relative.
+> Consequently, they will only be interpreted the same by processes that have
+> the same working directory.
+> To ensure maximum portability and safety, absolute paths are recommended
+> whenever possible.
+
+> [!NOTE]
+> If compatibility with legacy _nanomsg_ applications is required,
+> then path names must not be longer than 122 bytes, including the final
+> `NUL` byte.
+> This is because legacy versions of _nanomsg_ cannot express URLs
+> longer than 128 bytes, including the `ipc://` prefix.
+
+#### UNIX Aliases
+
+The {{i:`unix://`}} scheme is an alias for `ipc://` and can be used inter-changeably, but only on POSIX systems.[^1]
+
+[^1]:
+ The purpose of this scheme is to support a future transport making use of {{i:`AF_UNIX`}}
+ on Windows systems, at which time it will be necessary to discriminate between
+ the Named Pipes and the `AF_UNIX` based transports.
+
+#### Abstract Names
+
+On Linux, this transport also can support {{i:abstract sockets}}.
+Abstract sockets use a URI-encoded name after the {{i:`abstract://`}} scheme, which allows arbitrary values to be conveyed
+in the path, including embedded `NUL` bytes.
+For example, the name `"a\0b"` would be represented as `abstract://a%00b`.
+
+> [!TIP]
+> An empty name may be used with a listener to request "auto bind" be used to select a name.
+> In this case the system will allocate a free name.
+> The name assigned may be retrieved using [{{i:`NNG_OPT_LOCADDR`}}][NNG_OPT_LOCADDR].
+
+Abstract names do not include the leading `NUL` byte used in the low-level socket address.
+
+Abstract sockets do not have any representation in the file system, and are automatically freed by
+the system when no longer in use.
+
+Abstract sockets ignore socket permissions, but it is still possible to determine the credentials
+of the peer with [{{i:`NNG_OPT_PEER_UID`}}][NNG_OPT_PEER_UID], and similar options.[^2]
+
+[^2]:
+ This property makes it important that names be chosen randomly to
+ prevent unauthorized access, or that checks against the peer credentials
+ are made, or ideally, both.
+
+### Socket Address
+
+When using an [`nng_sockaddr`][sockaddr] structure,
+the actual structure is of type [`nng_sockaddr_ipc`][sockaddr_ipc],
+except for abstract sockets, which use [`nng_sockaddr_abstract`][sockaddr_abstract].
+
+### Transport Options
+
+The following transport options are supported by this transport,
+where supported by the underlying platform.
+
+- [`NNG_OPT_IPC_PERMISSIONS`][NNG_OPT_IPC_PERMISSIONS]
+- [`NNG_OPT_IPC_SECURITY_DESCRIPTOR`][NNG_OPT_IPC_SECURITY_DESCRIPTOR]
+- [`NNG_OPT_LOCADDR`][NNG_OPT_LOCADDR]
+- [`NNG_OPT_REMADDR`][NNG_OPT_REMADDR]
+- [`NNG_OPT_PEER_GID`][NNG_OPT_PEER_GID]
+- [`NNG_OPT_PEER_PID`][NNG_OPT_PEER_PID]
+- [`NNG_OPT_PEER_UID`][NNG_OPT_PEER_UID]
+- [`NNG_OPT_PEER_ZONEID`][NNG_OPT_PEER_ZONEID]
+- [`NNG_OPT_URL`][NNG_OPT_URL]
+
+{{#include ../refs.md}}