summaryrefslogtreecommitdiff
path: root/docs/nng_zerotier.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/nng_zerotier.adoc')
-rw-r--r--docs/nng_zerotier.adoc209
1 files changed, 0 insertions, 209 deletions
diff --git a/docs/nng_zerotier.adoc b/docs/nng_zerotier.adoc
deleted file mode 100644
index d28b1884..00000000
--- a/docs/nng_zerotier.adoc
+++ /dev/null
@@ -1,209 +0,0 @@
-= nng_zerotier(7)
-//
-// Copyright 2018 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_zerotier - ZeroTier transport for nng
-
-== SYNOPSIS
-
-[source,c]
-----------
-#include <nng/transport/zerotier/zerotier.h>
-
-int nng_zt_register(void);
-----------
-
-== DESCRIPTION
-
-The _nng_zerotier_ transport provides communication support for
-_nng_ applications over a http://www.zerotier.com[ZeroTier] network,
-using a Virtual Layer 2 packet facility.
-
-CAUTION: This transport is very experimental. To utilize it at
-present, the library must be built with support, and the
-ZeroTierOne `dev` branch must be included; this will require
-linking against a suitable `libzerotiercore` static library.
-
-NOTE: The `libzerotiercore` library at present is covered under different
-license terms than the rest of _nng_. Please be careful to review
-and adhere to the licensing terms.
-
-While ZeroTier makes use of the host's IP stack (and UDP in particular),
-this transport does not use or require an IP stack on the virtual
-network; thereby mitigating any considerations about IP address management.
-
-This service uses Ethernet type 901 to transport packets. Network rules
-must permit this Ethernet type to pass in order to have a functional
-network.
-
-NOTE: This document assumes that the reader is familiar with ZeroTier
-concepts and administration.
-
-=== Registration
-
-Depending upon how the library was built, it may be necessary to
-register the transport by calling `nng_zt_register`. This function
-returns zero on success, or an nng error value if the transport
-cannot be initialized for any reason.
-
-=== URI Format
-
-This transport uses URIs using the scheme `zt://`, followed by a node
-number (ten hexadecimal digits) followed by a `.` delimited, and then
-a network address (sixteen hexadecimal digits), followed by a colon (`.`)
-and service or port number (decimal value, up to 24-bits).
-For example, the URI `zt://fedcba9876.0123456789abdef:999` indicates
-that node fedcba9876 on network 0123456789abcdef is listening on port 999.
-
-The special value `*` can be used in lieu of a node number to represent
-the node's own node number.
-
-Listeners may use port 0 to indicate that a suitable port
-number be selected automatically. Applications using this must determine the
-selected port number using the `nng_listener_getopt` function.
-
-=== Socket Address
-
-When using an `nng_sockaddr` structure, the actual structure is of type
-`struct nng_sockaddr_zt`. This type has the following definition:
-
-[source,c]
---------
-#define NNG_AF_ZT 5
-
-struct nng_sockaddr_zt {
- uint16_t sa_family; // must be NNG_AF_ZT
- uint64_t sa_nwid; // 64-bit network ID
- uint64_t sa_nodeid; // 40-bit node ID
- uint32_t sa_port; // 24-bit application port
-}
---------
-
-The `sa_family` member will have the value `NNG_AF_ZT` (5). The remaining
-members are, unlike TCP socket address, in native byte order. Only the
-lower 24-bits of the `sa_port` may be used. Likewise only the lower 40-bits
-of the `sa_nodeid` may be used.
-
-=== Node Presence
-
-By default this transport creates an "ephemeral" node, and used the
-same ephemeral node for any additional endpoints created. As this node
-is ephemeral, the keys associated with it and all associated data are
-located in memory and are discarded upon application termination. If
-a persistent node is desired, please see the `NNG_OPT_ZT_HOME` option
-below.
-
-It is possible for a single application to join multiple networks
-using the same node, or using separate nodes.
-
-=== Transport Options
-
-The following transport options are available:
-
-`NNG_OPT_ZT_HOME`::
-
- This is a string representing the "home directory", where the transport
- can store (and reuse) persistent state, such as key materials, node
- identity, and federation membership. This option must be set before the
- ZeroTier transport is first used. If this value is empty, then an ephemeral
- ZeroTier node is created, and no persistent state is used. The default
- is to use an ephemeral node.
-+
-NOTE: If this option is set to different values on different sockets,
-dialers, or listeners, then separate nodes will be created. It
-is perfectly valid for an application to have multiple node identities
-in this fashion.
-
-`NNG_OPT_ZT_NWID`::
-
- This is a read-only option for listeners, dialers, and pipes, and
- provides a `uint64_t` in native byte order representing the 64-bit ZeroTier
- network number.
-
-`NNG_OPT_ZT_NODE`::
-
- This is a read-only option for listeners, dialers, and pipes, and
- provides a `uint64_t` in native byte order representing the ZeroTier
- 40-bit node address.
-
-`NNG_OPT_ZT_NETWORK_STATUS`::
-
- This is a read-only integer, representing the ZeroTier network status.
- Valid values for this are:
-+
-[cols="1,2"]
-|===
-
-| `nng_zt_network_status_configuring`
-| The ZeroTier node is still configuring, network services are not available.
-
-| `nng_zt_network_status_ok`
-| The ZeroTier network is up.
-
-| `nng_zt_network_status_denied`
-| The node does not have permission to join the ZeroTier network.
-
-| `nng_zt_network_status_notfound`
-| The ZeroTier network is not found.
-
-| `nng_zt_network_status_error`
-| Some other ZeroTier error has occurred; the network is not available.
-
-| `nng_zt_network_status_obsolete`
-| The node is running obsolete software; the network is not available.
-
-|===
-
-
-`NNG_OPT_ZT_NETWORK_NAME`::
-
- This is a read-only ASCIIZ string containing the name of the network
- as established by the ZeroTier network administrator.
-
-`NNG_OPT_ZT_PING_TIME`::
-
- If no traffic has been received from the ZeroTier peer after this
- period of time, then a "ping" message is sent to check if the peer
- is still alive. This is an `nng_duration` (msec).
-
-`NNG_OPT_ZT_PING_COUNT`::
-
- If this number (`int`) of consecutive "ping" requests are sent to the
- peer with no response (and no other intervening traffic), then the
- peer is assumed to be dead and the connection is closed. Note that
- if any traffic is received from the peer, then the underlying counter
- is reset to zero.
-
-`NNG_OPT_ZT_MTU`::
-
- This is a read-only size (`size_t`) representing the ZeroTier virtual
- network MTU; this is the Virtual Layer 2 MTU. The headers used by
- this transport and the protocols consume some of this for each message
- sent over the network. (The transport uses 20-bytes of this, and each
- protocol may consume additional space, typically not more than 16-bytes.)
-
-`NNG_OPT_ZT_ORBIT`::
-
- This is a write-only option that takes an array of two `uint64_t` values,
- indicating the ID of a ZeroTier "moon", and the node ID of the root server
- for that moon. (The ID may be zero if the moon ID is the same as it's
- root server ID, which is conventional.)
-
-`NNG_OPT_ZT_DEORBIT`::
-
- This write-only option takes a single `uint64_t` indicating the moon
- ID to "deorbit". If the node is not already orbiting the moon, then
- this has no effect.
-
-== SEE ALSO
-
-<<nng#,nng(7)>>