summaryrefslogtreecommitdiff
path: root/doc/man
diff options
context:
space:
mode:
Diffstat (limited to 'doc/man')
-rw-r--r--doc/man/fccntl.342
-rw-r--r--doc/man/flow_alloc.326
-rw-r--r--doc/man/flow_read.335
-rw-r--r--doc/man/fqueue.340
-rw-r--r--doc/man/fset.38
-rw-r--r--doc/man/ouroboros-glossary.78
-rw-r--r--doc/man/ouroboros-tutorial.728
-rw-r--r--doc/man/ouroboros.8161
8 files changed, 224 insertions, 124 deletions
diff --git a/doc/man/fccntl.3 b/doc/man/fccntl.3
index bec506ec..767342b9 100644
--- a/doc/man/fccntl.3
+++ b/doc/man/fccntl.3
@@ -1,8 +1,8 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
-.TH FCCNTL 3 2018-02-28 Ouroboros "Ouroboros Programmer's Manual"
+.TH FCCNTL 3 2018-10-04 Ouroboros "Ouroboros Programmer's Manual"
.SH NAME
@@ -40,8 +40,8 @@ disables the timeout.
\fBFLOWGQOSSPEC\fR - retrieve the current QoS specification of the
flow. Takes a \fBqosspec_t * \fIqs\fR as third argument.
-\fBFLOWSFLAGS\fR - set flow flags. Takes flow flags as third
-argument. Supported flags are:
+\fBFLOWSFLAGS\fR - set flow flags. Takes flow \fBuint32_t\fR
+\fIflags\fR as third argument. Supported flags are:
.RS 8
\fIFLOWFRDONLY\fR - set flow to read-only.
@@ -60,36 +60,36 @@ argument. Supported flags are:
\fIFLOWFRNOPART\fR - disable partial reading.
-\fIFLOWFDEFAULT\fR - set flow defaults (blocking, read-write).
+\fIFLOWFWNOPART\fR - disable partial writing.
+
+\fIFLOWFDEFAULT\fR - set flow defaults (blocking, read-write,
+no partial writes).
.RE
-\fBFLOWGFLAGS\fR - get the current flow flags. Takes an \fBuint32_t
+\fBFLOWGFLAGS\fR - get the current flow flags. Takes an \fBuint32_t *
\fIflags\fR as third argument.
\fBFLOWGRXQLEN\fR - get the current number of packets in the receive
-buffer. Takes a \fBsize_t \fIqlen\fR as third argument.
+buffer. Takes a \fBsize_t \fIqlen\fR * as third argument.
\fBFLOWGTXQLEN\fR - get the current number of packets in the transmit
-buffer. Takes a \fBsize_t \fIqlen\fR as third argument.
+buffer. Takes a \fBsize_t \fIqlen\fR * as third argument.
-\fBFRCTSFLAGS\fR - set FRCT flags. Takes FRCT flags as third
-argument. Supported flags are:
+\fBFRCTSFLAGS\fR - set the current flow flags. Takes an \fBuint16_t
+\fIflags\fR as third argument. Supported flags are:
.RS 8
-\fIFRCTFRESCNTRL\fR - enable resource control.
-
-\fIFRCTFRTX\fR - enable retransmission.
-
-\fIFRCTFERRCHCK\fR - enable checksum (CRC32).
+\fIFRCTFRESCNTL\fR - resource control enabled.
-\fIFRCTFORDERING\fR - enable packet in-order delivery.
+\fIFRCTFRTX\fR - retransmission enabled. Cannot be modified and will
+be ignored on set.
-\fIFRCTFPARTIAL\fR - enable partial delivery.
+\fIFRCTFLINGER\fR - finish connection on flow deallocation.
.RE
-\fBFRCTGFLAGS\fR - get the current flow flags. Takes an \fBuint16_t
+\fBFRCTGFLAGS\fR - get the current flow flags. Takes an \fBuint16_t *
\fIflags\fR as third argument.
.SH RETURN VALUE
@@ -140,7 +140,7 @@ ouroboros (8)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/flow_alloc.3 b/doc/man/flow_alloc.3
index dda0c877..dbe5323c 100644
--- a/doc/man/flow_alloc.3
+++ b/doc/man/flow_alloc.3
@@ -1,8 +1,8 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
-.TH FLOW_ALLOC 3 2017-12-02 Ouroboros "Ouroboros Programmer's Manual"
+.TH FLOW_ALLOC 3 2018-10-05 Ouroboros "Ouroboros Programmer's Manual"
.SH NAME
@@ -19,6 +19,9 @@ const struct timespec * \fItimeo\fB);
int flow_alloc(const char * \fIdst_name\fB, qosspec_t * \fIqs\fB,
const struct timespec * \fItimeo\fB);
+int flow_join(const char * \fIdst_name\fB, qosspec_t * \fIqs\fB, const
+struct timespec * \fItimeo\fB);
+
\fBint flow_dealloc(int \fIfd\fB);\fR
Compile and link with \fI-louroboros-dev\fR.
@@ -52,8 +55,12 @@ The \fBflow_accept\fR() and \fBflow_alloc\fR() take a \fBconst struct
timespec * \fItimeo\fR to specify a timeout. If \fItimeo\fR is NULL,
the call will block indefinitely or until some error condition occurs.
+The \fBflow_join\fR() function allows applications to join a broadcast
+flow provided by a broadcast layer. The dst is the layer name.
+
The \fBflow_dealloc\fR() function will release any resources
-associated with the flow.
+associated with the flow. This call may block and keep reliable flows
+active until all packets are acknowledged.
A \fBqosspec_t\fR specifies the following QoS characteristics of a
flow:
@@ -80,7 +87,7 @@ Failed to contact an IRMd instance.
\fBflow_accept\fR() and \fBflow_alloc\fR() can also return
.B -EBADF
-No more flow desciptors or port_ids available.
+No more flow desciptors or flow_ids available.
.B -ENOMEM
Not enough system memory resources available to allocate the flow.
@@ -88,6 +95,9 @@ Not enough system memory resources available to allocate the flow.
.B -ETIMEDOUT
Flow allocation timed out.
+.B -ECRYPT
+The requested encryption is not supported.
+
.SH ATTRIBUTES
For an explanation of the terms used in this section, see \fBattributes\fR(7).
@@ -102,6 +112,8 @@ _
_
\fBflow_alloc\fR() & Thread safety & MT-Safe
_
+\fBflow_join\fR() & Thread safety & MT-Safe
+_
\fBflow_dealloc\fR() & Thread safety & MT-Safe
.TE
@@ -115,7 +127,7 @@ ouroboros (8)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/flow_read.3 b/doc/man/flow_read.3
index 20f5b976..acc1f61e 100644
--- a/doc/man/flow_read.3
+++ b/doc/man/flow_read.3
@@ -1,6 +1,6 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
.TH FLOW_READ 3 2017-04-10 Ouroboros "Ouroboros Programmer's Manual"
@@ -12,9 +12,9 @@ flow_read, flow_write \- read and write from/to a flow
.B #include <ouroboros/dev.h>
-\fBint flow_read(int \fIfd\fB, void * \fIbuf\fB, size_t \fIcount\fB);\fR
+\fBssize_t flow_read(int \fIfd\fB, void * \fIbuf\fB, size_t \fIcount\fB);\fR
-\fBint flow_write(int \fIfd\fB, const void * \fIbuf\fB, size_t \fIcount\fB);\fR
+\fBssize_t flow_write(int \fIfd\fB, const void * \fIbuf\fB, size_t \fIcount\fB);\fR
Compile and link with \fI-louroboros-dev\fR.
@@ -30,15 +30,17 @@ from the supplied buffer \fIbuf\fR to the flow specified by \fIfd\fR.
.SH RETURN VALUE
On success, \fBflow_read\fR() returns the number of bytes read. On
-failure, a negative value indicating the error will be returned. If
-the number of bytes read equals count, a subsequent call to
-\fBflow_read\fR() should be performed to check if there were more
-bytes to read. This call to \fBflow_read\fR will return 0 if there was
-no more data and mark the end of the datagram.
-
-On success, \fBflow_write\fR() returns 0. On failure, a negative value
-indicating the error will be returned. Passing a NULL pointer for
-\fIbuf\fR returns 0 with no other effects.
+failure, a negative value indicating the error will be
+returned. Partial reads are enabled by default. If the number of bytes
+read equals count, a subsequent call to \fBflow_read\fR() should be
+performed to check if there were more bytes to read. This call to
+\fBflow_read\fR will return 0 if there was no more data and mark the
+end of the datagram.
+
+On success, \fBflow_write\fR() returns the number of bytes written. On
+failure, a negative value indicating the error will be returned.
+Partial writes needs to be explicitly enabled. Passing a
+NULL pointer for \fIbuf\fR returns 0 with no other effects.
.SH ERRORS
.B -EINVAL
@@ -56,6 +58,9 @@ The flow was not allocated.
.B -EFLOWDOWN
The flow has been reported down.
+.B -EFLOWPEER
+The flow's peer is unresponsive (flow timed out).
+
.B -EMSGSIZE
The buffer was too large to be written.
@@ -84,7 +89,7 @@ ouroboros (8)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/fqueue.3 b/doc/man/fqueue.3
index 00c28d4c..72a0bc25 100644
--- a/doc/man/fqueue.3
+++ b/doc/man/fqueue.3
@@ -1,6 +1,6 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
.TH FQUEUE 3 2017-08-29 Ouroboros "Ouroboros Programmer's Manual"
@@ -19,7 +19,9 @@ on flows
\fBint fqueue_next(fqueue_t * \fIfq\fB);
-\fBint fevent(fset_t * \fIset\fB, fqueue_t * \fIfq\fB,
+\fBint fqueue_type(fqueue_t * \fIfq\fB);
+
+\fBssize_t fevent(fset_t * \fIset\fB, fqueue_t * \fIfq\fB,
const struct timespec * \fItimeo\fB);
Compile and link with \fI-louroboros-dev\fR.
@@ -36,6 +38,22 @@ an \fBfqueue_t\fR \fIfq\fR.
The \fBfqueue_next\fR() function retrieves the next event (a \fIflow
descriptor\fR) that is ready within the event queue \fIfq\fR.
+The \fBfqueue_type\fR() function retrieves the type for the current
+event on the fd that was returned by \fBfqueue_next\fR(). Event types
+are:
+.RS 4
+FLOW_PKT: A new packet arrived on this flow and is ready for reading.
+
+FLOW_UP: The flow is now marked UP and ready for read/write.
+
+FLOW_DOWN: The flow is now marked DOWN and cannot be written to.
+
+FLOW_ALLOC: A pending flow is now allocated.
+
+FLOW_DEALLOC: The flow is deallocated by the other (N+1 or N-1)
+process.
+.RE
+
The \fBfevent\fR() function retrieves all events that occured on any
\fIflow descriptor\fR within \fIset\fR and returns them in the event
queue \fBfq\fR. If a \fBstruct timespec *\fI timeo\fR can be provided,
@@ -50,7 +68,13 @@ On success, \fBfqueue_create\fR() returns a pointer to an
\fBfqueue_destroy\fR() has no return value.
-On success, \fBfevent\fR() returns the number of events that occured in \fIset\fR.
+On success, \fBfevent\fR() returns 1.
+
+On success, \fBfqueue_next\fR() returns the next file descriptor for
+which an event occurred.
+
+On success, \fBfqueue_type\fR() returns the event type for the last
+event returned by \fBfqueue_next\fR().
.SH ERRORS
@@ -62,10 +86,10 @@ were available to create the \fBfqueue_t\fR.
.B -EINVAL
An invalid argument was passed (\fIfq\fR or \fIset\fR was \fINULL\fR).
-In addition, \fBfqueue_next\fR() can return
+In addition, \fBfqueue_next\fR() or \fBqueue_type\fR() can return
.B -EPERM
-No more fds available in \fIfq\fR.
+No more fds available or no current event in \fIfq\fR.
and \fBfevent\fR() can return
@@ -102,7 +126,7 @@ fset "(3), " ouroboros (8)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/fset.3 b/doc/man/fset.3
index a2094158..87a7dc87 100644
--- a/doc/man/fset.3
+++ b/doc/man/fset.3
@@ -1,6 +1,6 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
.TH FSET 3 2017-04-10 Ouroboros "Ouroboros Programmer's Manual"
@@ -108,7 +108,7 @@ fqueue "(3), " ouroboros (8)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/ouroboros-glossary.7 b/doc/man/ouroboros-glossary.7
index c0d89738..1f7ad882 100644
--- a/doc/man/ouroboros-glossary.7
+++ b/doc/man/ouroboros-glossary.7
@@ -1,6 +1,6 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
.TH OUROBOROS-GLOSSARY 7 2017-12-02 Ouroboros "Ouroboros User Manual"
@@ -113,7 +113,7 @@ the process that manages local IPC and IPCPs (providing remote IPC).
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/ouroboros-tutorial.7 b/doc/man/ouroboros-tutorial.7
index 98e27254..1fc02a02 100644
--- a/doc/man/ouroboros-tutorial.7
+++ b/doc/man/ouroboros-tutorial.7
@@ -1,8 +1,8 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
-.TH OUROBOROS-TUTORIAL 7 2017-12-02 Ouroboros "Ouroboros User Manual"
+.TH OUROBOROS-TUTORIAL 7 2018-10-05 Ouroboros "Ouroboros User Manual"
.SH NAME
@@ -108,31 +108,31 @@ Pinging my.oping.server with 64 bytes of data:
--- my.oping.server ping statistics ---
.br
-3 SDUs transmitted, 3 received, 0% packet loss, time: 3001.011 ms
+3 packets transmitted, 3 received, 0% packet loss, time: 3001.011 ms
.br
rtt min/avg/max/mdev = 0.304/0.392/0.475/0.086 ms
.RE
That's all there is to it! The IRMd should log the flow
-allocation. There are two endpoints of the flow (port_id's 0 and 1),
+allocation. There are two endpoints of the flow (flow_id's 0 and 1),
one for the server (1) and one for the client (0). After the flow
-request, a new port_id is created at the server side (port_id 1) and
-then a previously pending flow (on port_id 0) is allocated following
+request, a new flow_id is created at the server side (flow_id 1) and
+then a previously pending flow (on flow_id 0) is allocated following
the response from the server.
When the communication is done, the flow is deallocated and the
-resources (port_id's 0 and 1) are released.
+resources (flow_id's 0 and 1) are released.
.RS 4
==23918== irmd(II): Flow request arrived for my.oping.server.
.br
-==23918== irmd(II): Flow on port_id 1 allocated.
+==23918== irmd(II): Flow on flow_id 1 allocated.
.br
-==23918== irmd(II): Flow on port_id 0 allocated.
+==23918== irmd(II): Flow on flow_id 0 allocated.
.br
-==23918== irmd(II): Completed deallocation of port_id 0 by process 23932.
+==23918== irmd(II): Completed deallocation of flow_id 0 by process 23932.
.br
-==23918== irmd(II): Completed deallocation of port_id 1 by process 23932.
+==23918== irmd(II): Completed deallocation of flow_id 1 by process 23932.
.RE
.SH TERMINOLOGY
@@ -143,7 +143,7 @@ Please see \fBouroboros-glossary\fR(7).
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
diff --git a/doc/man/ouroboros.8 b/doc/man/ouroboros.8
index 95d17a05..df328fcc 100644
--- a/doc/man/ouroboros.8
+++ b/doc/man/ouroboros.8
@@ -1,8 +1,8 @@
-.\" Ouroboros man pages CC-BY 2017 - 2018
-.\" Dimitri Staessens <dimitri.staessens@ugent.be>
-.\" Sander Vrijders <sander.vrijders@ugent.be>
+.\" Ouroboros man pages CC-BY 2017 - 2024
+.\" Dimitri Staessens <dimitri@ouroboros.rocks>
+.\" Sander Vrijders <sander@ouroboros.rocks>
-.TH OUROBOROS 8 2018-03-10 Ouroboros "Ouroboros User Manual"
+.TH OUROBOROS 8 2020-11-29 Ouroboros "Ouroboros User Manual"
.SH NAME
@@ -36,9 +36,9 @@ superuser):
$ irmd
-or, if your system uses systemd, the IRM can be started as a service:
+or, if your system uses systemd, Ouroboros can be started as a service:
-$ systemctl start irmd
+$ systemctl start ouroboros
When started from the command line, the IRM has the following options:
.PP
@@ -69,7 +69,8 @@ order.
certain \fIprogram\fR or \fIprocess\fR will respond to \fIflow
allocation\fR requests for the bound name. Multiple programs and
processes can be bound to the same name, and a program or process can
-be bound to multiple names.
+be bound to multiple names. This only works for programs that use the
+Ouroboros API.
\fBCreating an IPC Process\fR will instantiate a new IPCP in the
system. This IPCP will be empty, with only a name and type specified,
@@ -90,7 +91,7 @@ may not have connections to the layer.
layer, the name can be used as a destination handle for \fIflow
allocation\fR.
-Ouroboros normal IPCPs are just like any other process, and will need
+Ouroboros unicast IPCPs are just like any other process, and will need
to be bound and registered in a lower-rank layer before they can be
accessed by other processes.
@@ -98,10 +99,9 @@ In order to enroll an IPC process in a layer, some other member will
have to be reachable over a lower layer. IPCPs that wrap a legacy
transmission technology are all bootstrapped and thus need not enroll
as they work directly over a physical connection. Ouroboros currently
-supports IPCPs over shared memory (local), L1 (raptor, experimental),
-L2 (eth-llc and eth-dix) and L3 (udp). The normal layer requires
-connections to be established between IPCP components for its
-operation.
+supports IPCPs over shared memory (local), L2 (eth-llc and eth-dix)
+and L3 (udp). The unicast and broadcast layers require connections to
+be established between IPCP components for its operation.
\fBConnecting the management components\fR using \fImanagement
flows\fR allows management information to be sent between IPCPs so
@@ -121,17 +121,17 @@ that rely on data transfer flows are the \fIdirectory\fR and the
creates an IPCP process of type \fItype\fR in the system with name
\fIname\fR. Allowable values for \fItype\fR are:
.PP
-\fBlocal\fR - create a loopback IPCP.
+\fBlocal\fR - create a loopback IPCP.
.PP
-\fBraptor\fR - create an IPCP that attaches to a raptor NetFPGA device.
+\fBeth-llc\fR - create an IPCP that attaches to Ethernet using LLC frames.
.PP
-\fBeth-llc\fR - create an IPCP that attaches to Ethernet using LLC frames.
+\fBeth-dix\fR - create an IPCP that attaches to Ethernet using DIX frames.
.PP
-\fBeth-dix\fR - create an IPCP that attaches to Ethernet using DIX frames.
+\fBudp\fR - create an IPCP that attaches to a UDP socket.
.PP
-\fBudp\fR - create an IPCP that attaches to a UDP socket.
+\fBunicast\fR - create a unicast IPCP that uses lower level layers.
.PP
-\fBnormal\fR - create a normal IPCP that uses lower level layers.
+\fBbroadcast\fR - create a broadcast IPCP that uses lower level layers.
.RE
.PP
@@ -159,19 +159,10 @@ Values for [\fIparam\fR] are dependent on \fItype\fR:
default: SHA3_256.
.RE
-\fBraptor\fR
-.RS 4
-.PP
-[hash \fIpolicy\fR] specifies the hash function used for the directory,
-.br
-\fIpolicy\fR: SHA3_224, SHA3_256, SHA3_384, SHA3_512.
-.br
-default: SHA3_256.
-.RE
-
.PP
\fBeth-llc\fR
.RS 4
+.PP
dev \fIinterface\fR specifies the interface to bind the IPCP to.
.PP
[hash \fIpolicy\fR] specifies the hash function used for the directory,
@@ -184,6 +175,7 @@ default: SHA3_256.
.PP
\fBeth-dix\fR
.RS 4
+.PP
dev \fIinterface\fR specifies the interface to bind the IPCP to.
.PP
[ethertype \fIethertype\fR] specifies the ethertype used for the layer.
@@ -200,15 +192,25 @@ default: SHA3_256.
.PP
\fBudp\fR
.RS 4
+.PP
ip \fIip\fR specifies the local IP address to bind to
-
-[dns \fdns\fR] specifies an optional DDNS server that will be used for
+.PP
+[dns \fIdns\fR] specifies an optional DDNS server that will be used for
the directory.
+.PP
+[port \fIport\fR] specifies a UDP port that is used for sending and
+receiving ouroboros traffic. This must be the same for the entire UDP
+layer. Parallel UDP layers should use different ports. This UDP port
+needs to be forwarded if the server is behind a NAT and wants to
+receive incoming requests.
+.br
+default: 3435
.RE
.PP
-\fBnormal\fR
+\fBunicast\fR
.RS 4
+.PP
[addr \fIaddress_size\fR] specifies the size of an address in bytes.
.br
default: 4 bytes.
@@ -228,31 +230,64 @@ default: flat.
.PP
[routing \fIpolicy\fR] specifies the routing policy.
.br
-\fIpolicy\fR: link_state, lfa.
+\fIpolicy\fR:
+.RS 4
+link_state: default shortest-path link-state routing.
+.br
+lfa: loop-free alternate resilient routing.
+.br
+ecmp: equal-cost multipath routing.
+.RE
.br
default: link_state.
.PP
-[pff \fIpolicy\fR] specifies the pdu forwarding function policy.
+[congestion \fIpolicy\fR] specifies the congestion avoidance policy.
.br
-\fIpolicy\fR: simple, alternate.
+\fIpolicy\fR:
+.RS 4
+none: no congestion avoidance.
+.br
+mb-ecn: Multi-bit explicit congestion notification and avoidance.
+.RE
.br
-default: simple.
+default: mb-ecn.
.PP
-[hash \fIpolicy\fR] specifies the hash function used for the directory,
+[hash \fIpolicy\fR] specifies the hash function used for the directory.
.br
\fIpolicy\fR: SHA3_224, SHA3_256, SHA3_384, SHA3_512.
.br
default: SHA3_256.
.PP
-[autobind] will automatically bind a normal IPCP to its name and the layer name.
+[autobind] will automatically bind a unicast or broadcast IPCP to its
+name and the layer name.
+.RE
+
+.PP
+\fBbroadcast\fR
+.RS 4
+.PP
+[hash \fIpolicy\fR] specifies the hash function used for the layer name.
+.br
+\fIpolicy\fR: SHA3_224, SHA3_256, SHA3_384, SHA3_512.
+.br
+default: SHA3_256.
.RE
.RE
.PP
-\fBirm ipcp enroll\fR name \fIname\fR layer \fIlayer\fR [\fIautobind\fR]
+\fBirm ipcp enroll\fR name \fIname\fR [type \fItype\fR] [dst \fIdst\fR] \
+[layer \fIlayer\fR] [\fIautobind\fR]
.RS 4
-enrolls a normal IPCP \fIname\fR to a layer for which the IPCPs accept flows for
-\fIname\fR.
+enrolls a unicast ot broadcast IPCP \fIname\fR with a dst IPCP into a
+layer. Either dst or layer need to be specified.
+.PP
+[type \fItype\fR] specifies the IPCP type (unicast or broadcast).
+.PP
+[dst \fIdst\fR] specifies the destination name to enroll with
+.PP
+[layer \fIlayer\fR] specifies the name of the layer. Only specifying
+the layer name is a shorthand for the destination name being the same
+as the layer name.
.PP
[autobind] will automatically bind this IPCP to its name and the layer name.
.RE
@@ -260,17 +295,17 @@ enrolls a normal IPCP \fIname\fR to a layer for which the IPCPs accept flows for
\fBirm ipcp connect\fR name \fIname\fR component \fIcomponent\fR dst
\fIdestination\fR
.RS 4
-connects a \fIcomponent\fR (\fBdt\fR or \fBmgmt\fR) of a normal IPCP
-with name \fIname\fR to that component of the destination IPCP within the
-same layer.
+connects a \fIcomponent\fR (\fBdt\fR or \fBmgmt\fR) of a unicast or
+broadcast IPCP with name \fIname\fR to that component of the
+destination IPCP within the same layer.
.RE
\fBirm ipcp disconnect\fR name \fIname\fR component \fIcomponent\fR dst
\fIdestination\fR
.RS 4
-disconnects \fIcomponent\fR (\fBdt\fR or \fBmgmt\fR) of a normal IPCP
-with name \fIname\fR from that component of the destination IPCP within the
-same layer.
+disconnects \fIcomponent\fR (\fBdt\fR or \fBmgmt\fR) of a unicast or
+broadcast IPCP with name \fIname\fR from that component of the
+destination IPCP within the same layer.
.RE
\fBirm ipcp list\fR type \fItype\fR name \fIname\fR layer \fIlayer\fR
@@ -279,7 +314,7 @@ lists IPCPs in the system. You can filter by type, by name or by layer.
.RE
.RE
-.SH IRM COMMANDS
+.SH IRM BIND COMMANDS
.PP
\fBirm bind\fR program \fiprogram\fR name \fIname\fR [[\fIauto\fR] -- \
[\fIparam\fR] [\fIparam\fR] ... [\fIparam\fR]]
@@ -333,20 +368,44 @@ remove the binding between \fIipcp\fR and \fIname\fR. This IPCP will
not accept future flow allocation requests for \fIname\fR.
.RE
+.SH IRM NAME COMMANDS
+.PP
+\fBirm name create \fIname\fR \fIlb\fR policy
+.RS 4
+Create a name \fIname\fR with a load-balancing policy
+.br
+\fIpolicy\fR: round-robin, spillover
+.br
+.RE
+
.PP
-\fBirm reg\fR name \fIname\fR \fIipcp\fR ipcp [\fIipcp\fR ...]
+\fBirm name destroy \fIname\fR
+.RS 4
+Destroy name \fIname\fR. This does not unregister or unbind it.
+.RE
+
+.PP
+\fBirm name register \fIname\fR \fIipcp\fR ipcp [\fIipcp\fR ...]
layer [layer \fIlayer\fR ...]
.RS 4
Register name \fIname\fR in ipcps \fIipcp\fR ipcp and layers \fIlayer\fR.
.RE
.PP
-\fBirm unreg\fR name \fIname\fR \fIipcp\fR ipcp [\fIipcp\fR ...]
+\fBirm name unregister \fIname\fR \fIipcp\fR ipcp [\fIipcp\fR ...]
layer [layer \fIlayer\fR ...]
.RS 4
Unregister name \fIname\fR in ipcps \fIipcp\fR ipcp and layers \fIlayer\fR.
.RE
+.PP
+\fBirm name list \fIname\fR
+.RS 4
+List names in the system. \fIname\fR can be used as a prefix to filter
+the names.
+.RE
+
+
.SH TERMINOLOGY
Please see \fBouroboros-glossary\fR(7).
@@ -355,14 +414,14 @@ Ouroboros was started and is currently maintained by Dimitri Staessens
and Sander Vrijders.
.SH REPORTING BUGS
-Report bugs on the bugzilla tracker at https://ouroboros.ilabt.imec.be/bugzilla
+Report bugs on the bugzilla tracker at https://ouroboros.rocks/bugzilla
.SH SEE ALSO
.BR flow_alloc "(3), " ouroboros-tutorial "(7), " ouroboros-glossary (7)
.SH COLOPHON
This page is part of the Ouroboros project, found at
-http://ouroboros.ilabt.imec.be
+http://ouroboros.rocks
These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit