summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--etc/dbus-1/system.d/meson.build23
-rw-r--r--etc/dbus-1/system.d/org.nvmexpress.stac.in.conf37
-rw-r--r--etc/dbus-1/system.d/org.nvmexpress.staf.in.conf37
-rw-r--r--etc/stas/stacd.conf322
-rw-r--r--etc/stas/stafd.conf277
-rw-r--r--etc/stas/sys.conf.doc62
6 files changed, 758 insertions, 0 deletions
diff --git a/etc/dbus-1/system.d/meson.build b/etc/dbus-1/system.d/meson.build
new file mode 100644
index 0000000..b9bc858
--- /dev/null
+++ b/etc/dbus-1/system.d/meson.build
@@ -0,0 +1,23 @@
+# Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+# See the LICENSE file for details.
+#
+# This file is part of NVMe STorage Appliance Services (nvme-stas).
+#
+# Authors: Martin Belanger <Martin.Belanger@dell.com>
+#
+dbus_conf_dir = datadir / 'dbus-1' / 'system.d'
+
+configure_file(
+ input: 'org.nvmexpress.staf.in.conf',
+ output: 'org.nvmexpress.staf.conf',
+ configuration: conf,
+ install_dir: dbus_conf_dir,
+)
+
+configure_file(
+ input: 'org.nvmexpress.stac.in.conf',
+ output: 'org.nvmexpress.stac.conf',
+ configuration: conf,
+ install_dir: dbus_conf_dir,
+)
diff --git a/etc/dbus-1/system.d/org.nvmexpress.stac.in.conf b/etc/dbus-1/system.d/org.nvmexpress.stac.in.conf
new file mode 100644
index 0000000..56b4228
--- /dev/null
+++ b/etc/dbus-1/system.d/org.nvmexpress.stac.in.conf
@@ -0,0 +1,37 @@
+<!--
+ Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
+ SPDX-License-Identifier: Apache-2.0
+ See the LICENSE file for details.
+
+ This file is part of NVMe STorage Appliance Services (nvme-stas).
+
+ Authors: Martin Belanger <Martin.Belanger@dell.com>
+-->
+
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- Only allow root to own the bus. -->
+ <policy user="root">
+ <allow own_prefix="@STACD_DBUS_NAME@"/>
+ </policy>
+
+ <!-- Allow anyone to invoke most methods on the bus, but deny setting properties. -->
+ <policy context="default">
+ <allow send_destination="@STACD_DBUS_NAME@"/>
+
+ <deny send_destination="@STACD_DBUS_NAME@"
+ send_interface="org.freedesktop.DBus.Properties"
+ send_member="Set"
+ send_type="method_call"/>
+ </policy>
+
+ <!-- Allow root to invoke everything on the bus. -->
+ <policy user="root">
+ <allow send_destination="@STACD_DBUS_NAME@"/>
+ </policy>
+
+</busconfig>
+
diff --git a/etc/dbus-1/system.d/org.nvmexpress.staf.in.conf b/etc/dbus-1/system.d/org.nvmexpress.staf.in.conf
new file mode 100644
index 0000000..a04877a
--- /dev/null
+++ b/etc/dbus-1/system.d/org.nvmexpress.staf.in.conf
@@ -0,0 +1,37 @@
+<!--
+ Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
+ SPDX-License-Identifier: Apache-2.0
+ See the LICENSE file for details.
+
+ This file is part of NVMe STorage Appliance Services (nvme-stas).
+
+ Authors: Martin Belanger <Martin.Belanger@dell.com>
+-->
+
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- Only allow root to own the bus. -->
+ <policy user="root">
+ <allow own_prefix="@STAFD_DBUS_NAME@"/>
+ </policy>
+
+ <!-- Allow anyone to invoke most methods on the bus, but deny setting properties. -->
+ <policy context="default">
+ <allow send_destination="@STAFD_DBUS_NAME@"/>
+
+ <deny send_destination="@STAFD_DBUS_NAME@"
+ send_interface="org.freedesktop.DBus.Properties"
+ send_member="Set"
+ send_type="method_call"/>
+ </policy>
+
+ <!-- Allow root to invoke everything on the bus. -->
+ <policy user="root">
+ <allow send_destination="@STAFD_DBUS_NAME@"/>
+ </policy>
+
+</busconfig>
+
diff --git a/etc/stas/stacd.conf b/etc/stas/stacd.conf
new file mode 100644
index 0000000..d03f0b1
--- /dev/null
+++ b/etc/stas/stacd.conf
@@ -0,0 +1,322 @@
+# Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+# See the LICENSE file for details.
+#
+# This file is part of NVMe STorage Appliance Services (nvme-stas).
+
+# ==============================================================================
+# STorage Appliance Connector Daemon (stacd) - configuration file
+#
+# In this file, options that are commented represent the default values used.
+# Uncommented options override the default value.
+
+
+[Global]
+# tron: Trace-ON. Enable additional debug info
+# Type: boolean
+# Range: [false, true]
+#tron=false
+
+# hdr-digest: Protocol Data Unit (PDU) Header Digest. NVMe/TCP facilitates an
+# optional PDU Header digest. Digests are calculated using the
+# CRC32C algorithm.
+# Type: boolean
+# Range: [false, true]
+#hdr-digest=false
+
+# data-digest: Protocol Data Unit (PDU) Data Digest. NVMe/TCP facilitates an
+# optional PDU Data digest. Digests are calculated using the
+# CRC32C algorithm.
+# Type: boolean
+# Range: [false, true]
+#data-digest=false
+
+# kato: Keep Alive Timeout (KATO): This field specifies the timeout value
+# for the Keep Alive feature in seconds. The default value for this
+# field is 30 seconds (2 minutes).
+# Type: Unsigned integer
+# Range: 0..N
+# Unit: Seconds
+#kato=30
+
+# nr-io-queues: Overrides the default number of I/O queues create by the
+# driver.
+# Type: Unsigned integer
+# Range: 1..N
+# Default: Depends on kernel and other run time
+# factors (e.g. number of CPUs).
+
+# nr-write-queues: Adds additional queues that will be used for write I/O.
+# Type: Unsigned integer
+# Range: 1..N
+# Default: Depends on kernel and other run time
+# factors (e.g. number of CPUs).
+
+# nr-poll-queues: Adds additional queues that will be used for polling
+# latency sensitive I/O.
+# Type: Unsigned integer
+# Range: 1..N
+# Default: Depends on kernel and other run time
+# factors (e.g. number of CPUs).
+
+# queue-size: Overrides the default number of elements in the I/O queues
+# created by the driver.
+# Type: Unsigned integer
+# Range: 16..1024
+# Default: 128
+#queue-size=128
+
+# reconnect-delay: Overrides the default delay, in seconds, before reconnect
+# is attempted after a connect loss.
+# Type: Unsigned integer
+# Range: 1..N
+# Unit: Seconds
+# Default: 10 (retry to connect every 10 seconds)
+#reconnect-delay=10
+
+# ctrl-loss-tmo: Overrides the default controller loss timeout period in
+# seconds.
+# Type: Unsigned integer
+# Range: -1, 0..N where -1 means retry forever
+# Unit: Seconds
+# Default: 600 (retry to connect for up to 10 minutes)
+#ctrl-loss-tmo=600
+
+# disable-sqflow: Disables SQ flow control to omit head doorbell update for
+# submission queues when sending nvme completions.
+# Type: boolean
+# Range: [false, true]
+# Default: false
+#disable-sqflow=false
+
+# ignore-iface: This option controls whether connections with I/O Controllers
+# (IOC) will be forced on a specific interface or will rely on
+# the routing tables to determine the interface.
+#
+# See the man pages for details: man stacd.conf
+#
+# Type: boolean
+# Range: [false, true]
+# Default: true
+#ignore-iface=false
+
+# ip-family: With this you can specify whether stacd will support IPv4, IPv6,
+# or both when connecting to I/O Controllers (IOC).
+#
+# See the man pages for details: man stacd.conf
+#
+# Type: String
+# Range: [ipv4, ipv6, ipv4+ipv6]
+# Default: ipv4+ipv6
+#ip-family=ipv4+ipv6
+
+
+# ==============================================================================
+[I/O controller connection management]
+# This section contains parameters to manage I/O controller connections.
+# For example, parameters are provided to control disconnect policy. In other
+# words, whether stacd will disconnect from IOCs on DLPE removal and which
+# connections will be affected.
+#
+# Also, what should stacd do when a DLPE NCC bit (Not Connected to CDC) is
+# asserted. Should stacd stop trying to connect to an I/O controller after a
+# certain number of unsuccessful attempts.
+#
+# See the man pages for details: man stacd.conf
+
+# disconnect-scope: Determines which connections, if any, will be the target of
+# a potential disconnect on DLPE removal.
+#
+# Type: String
+# Range: [only-stas-connections | all-connections-matching-disconnect-trtypes | no-disconnect]
+# Default: only-stas-connections
+#disconnect-scope=only-stas-connections
+
+# disconnect-trtypes: Specify which connections should be audited based on the
+# transport type. This parameter only applies when
+# "disconnect-scope = all-connections-matching-disconnect-trtypes".
+#
+# Type: String
+# Range: [tcp, rdma, fc, tcp+rdma, tcp+fc, rdma+fc, tcp+rdma+fc]
+# Default: tcp
+#disconnect-trtypes=tcp
+
+# connect-attempts-on-ncc: The NCC bit (Not Connected to CDC) returned in a
+# DLPE indicates whether a connection is currently
+# established between the CDC and the subsystem listed
+# in the DLPE.
+#
+# When the NCC bit is asserted, it may mean that the
+# subsystem is offline or that fabrics connectivity is
+# momentarily lost. If the host is also unable to
+# connect to the subsystem, then there is no point in
+# continuing to try to connect. In fact, the CDC will
+# monitor the situation an inform the host (AEN) when
+# connectivity is restored.
+#
+# This field is used to tell stacd how to behave when
+# the NCC bit is asserted. How many times should it try
+# to connect before give-up, or whether to keep trying
+# indefinitely.
+#
+# Type: Integer
+# Range: [0, 2..N], 0 means "Never stop trying". A
+# non-0 value indicates the number of attempts
+# before giving up. This value should never be
+# set to 1. A value of 1 will automatically be
+# increased to 2. That's because a single
+# failure may be normal and a mimimum of 2
+# attempts is required to conclude that a
+# connection is not possible.
+# Default: 0
+#connect-attempts-on-ncc=0
+
+# ==============================================================================
+[Controllers]
+# controller: I/O Controllers (IOC) are specified with this keyword.
+#
+# Syntax:
+# controller = transport=<trtype>;traddr=<traddr>;trsvcid=<trsvcid>;host-traddr=<traddr>;host-iface=<iface>,nqn=<subnqn>
+#
+# transport=<trtype> [MANDATORY]
+# This field specifies the network fabric being used for a NVMe-over-
+# Fabrics network. Current string values include:
+#
+# Value Definition
+# ------- -----------------------------------------------------------
+# rdma The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
+# fc The network fabric is a Fibre Channel network.
+# tcp The network fabric is a TCP/IP network.
+# loop Connect to a NVMe over Fabrics target on the local host
+#
+# traddr=<traddr> [MANDATORY]
+# This field specifies the network address of the Controller. For
+# transports using IP addressing (e.g. rdma) this should be an IP-
+# based address (ex. IPv4, IPv6). It could also be a resolvable host
+# name (e.g. localhost).
+#
+# nqn=<subnqn> [MANDATORY]
+# This field specifies the Subsystem's NVMe Qualified Name.
+#
+# trsvcid=<trsvcid> [OPTIONAL]
+# This field specifies the transport service id. For transports using
+# IP addressing (e.g. rdma) this field is the port number.
+#
+# Depending on the transport type, this field will default to either
+# 8009 or 4420 as follows.
+#
+# UDP port 4420 and TCP port 4420 have been assigned by IANA
+# for use by NVMe over Fabrics. NVMe/RoCEv2 controllers use UDP port
+# 4420 by default. NVMe/iWARP controllers use TCP port 4420 by
+# default.
+#
+# TCP port 4420 has been assigned for use by NVMe over Fabrics and TCP
+# port 8009 has been assigned by IANA for use by NVMe over Fabrics
+# discovery. TCP port 8009 is the default TCP port for NVMe/TCP
+# discovery controllers. There is no default TCP port for NVMe/TCP I/O
+# controllers, the Transport Service Identifier (TRSVCID) field in the
+# Discovery Log Entry indicates the TCP port to use.
+#
+# The TCP ports that may be used for NVMe/TCP I/O controllers include
+# TCP port 4420, and the Dynamic and/or Private TCP ports (i.e., ports
+# in the TCP port number range from 49152 to 65535). NVMe/TCP I/O
+# controllers should not use TCP port 8009. TCP port 4420 shall not be
+# used for both NVMe/iWARP and NVMe/TCP at the same IP address on the
+# same network.
+#
+# host-traddr=<traddr> [OPTIONAL]
+# This field specifies the network address used on the host to connect
+# to the Controller. For TCP, this sets the source address on the
+# socket.
+#
+# host-iface=<iface> [OPTIONAL]
+# This field specifies the network interface used on the host to
+# connect to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da).
+# This forces the connection to be made on a specific interface
+# instead of letting the system decide.
+#
+# dhchap-ctrl-secret [OPTIONAL]
+# NVMe In-band authentication controller secret (i.e. key) for
+# bi-directional authentication; needs to be in ASCII format as
+# specified in NVMe 2.0 section 8.13.5.8 'Secret representation'.
+# Bi-directional authentication will be attempted when present.
+#
+# hdr-digest [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# data-digest [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# nr-io-queues [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# nr-write-queues [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# nr-poll-queues [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# queue-size [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# kato [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# reconnect-delay [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# ctrl-loss-tmo [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# disable-sqflow [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# Multiple DCs may be specified on separate lines like this (this is
+# just an example and does not represent default values):
+#
+# controller = transport=tcp;traddr=localhost;nqn=nqn.1988-11.com.dell:PowerSANxxx:01:20210225100113-454f73093ceb4847a7bdfc6e34ae8e28
+# controller = transport=tcp;traddr=2001:db8::370:7334;host-iface=enp0s8;nqn=nqn.starship-enterprise
+# controller = transport=fc;traddr=nn-0x204600a098cbcac6:pn-0x204700a098cbcac6;nqn=nqn.romulan-empire
+# ...
+# Type: String
+#
+# Default: There is no default controller. STAC will not try to
+# connect to a default I/O Controller.
+#controller=
+
+
+# exclude: Excluded controllers. This keyword allows configuring I/O
+# controllers that should not be connected to (whatever the
+# reason may be).
+#
+# The syntax is the same as for "controller=", except that the key
+# host-traddr does not apply. Multiple "exclude=" keywords may
+# appear in the config file to define the exclusion list.
+#
+# Note 1: A minimal match approach is used to eliminate unwanted
+# controllers. That is, you do not need to specify all the
+# parameters to identify a controller. Just specifying the
+# host-iface, for example, can be used to exclude all controllers
+# on an interface.
+#
+# Note 2: "exclude=" takes precedence over "controller=". A
+# controller specified by the "controller=" keyword, can be
+# eliminated by the "exclude=" keyword.
+#
+# Syntax: Same as "controller=" above.
+# Type: String
+#
+# Example:
+# exclude = transport=tcp;traddr=fe80::2c6e:dee7:857:26bb # Eliminate a specific address
+# exclude = host-iface=enp0s8 # Eliminate everything on this interface
+#exclude=
diff --git a/etc/stas/stafd.conf b/etc/stas/stafd.conf
new file mode 100644
index 0000000..22b3f96
--- /dev/null
+++ b/etc/stas/stafd.conf
@@ -0,0 +1,277 @@
+# Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+# See the LICENSE file for details.
+#
+# This file is part of NVMe STorage Appliance Services (nvme-stas).
+
+# ==============================================================================
+# STorage Appliance Finder Daemon (stafd) - configuration file
+#
+# In this file, options that are commented represent the default values used.
+# Uncommented options override the default value.
+
+
+[Global]
+# tron: Trace-ON. Enable additional debug info
+# Type: boolean
+# Range: [false, true]
+#tron=false
+
+# hdr-digest: Protocol Data Unit (PDU) Header Digest. NVMe/TCP facilitates an
+# optional PDU Header digest. Digests are calculated using the
+# CRC32C algorithm.
+# Type: boolean
+# Range: [false, true]
+#hdr-digest=false
+
+# data-digest: Protocol Data Unit (PDU) Data Digest. NVMe/TCP facilitates an
+# optional PDU Data digest. Digests are calculated using the
+# CRC32C algorithm.
+# Type: boolean
+# Range: [false, true]
+#data-digest=false
+
+# kato: Keep Alive Timeout (KATO): This field specifies the timeout value
+# for the Keep Alive feature in seconds. The default value for this
+# field is 30 seconds.
+# Type: Unsigned integer
+# Range: 0..N
+# Unit: Seconds
+#kato=30
+
+# queue-size: Overrides the default number of elements in the I/O queues
+# created by the driver.
+# Type: Unsigned integer
+# Range: 16..1024
+# Default: 128
+#queue-size=128
+
+# reconnect-delay: Overrides the default delay, in seconds, before reconnect
+# is attempted after a connect loss.
+# Type: Unsigned integer
+# Range: 1..N
+# Unit: Seconds
+# Default: 10 (retry to connect every 10 seconds)
+#reconnect-delay=10
+
+# ctrl-loss-tmo: Overrides the default controller loss timeout period in
+# seconds.
+# Type: Unsigned integer
+# Range: -1, 0..N where -1 means retry forever
+# Unit: Seconds
+# Default: 600 (retry to connect for up to 10 minutes)
+#ctrl-loss-tmo=600
+
+# disable-sqflow: Disables SQ flow control to omit head doorbell update for
+# submission queues when sending nvme completions.
+# Type: boolean
+# Range: [false, true]
+# Default: false
+#disable-sqflow=false
+
+# ignore-iface: This option controls whether connections with Discovery
+# Controllers (DC) will be forced on a specific interface or
+# will rely on the routing tables to determine the interface.
+#
+# See the man pages for details: man stafd.conf
+#
+# Type: boolean
+# Range: [false, true]
+# Default: true
+#ignore-iface=false
+
+# ip-family: With this you can specify whether stafd will support IPv4, IPv6,
+# or both when connecting to Discovery Controllers (DC).
+#
+# See the man pages for details: man stafd.conf
+#
+# Type: String
+# Range: [ipv4, ipv6, ipv4+ipv6]
+# Default: ipv4+ipv6
+#ip-family=ipv4+ipv6
+
+# pleo: Port Local Entries Only. If enabled and supported, when connected to a
+# Direct Discovery Controller (DDC), stafd will ask the DDC to return
+# records for only NVM subsystem ports that are presented through the same
+# NVM subsystem port that received the Get Log Page command. When disabled
+# or not supported by the DDC, the DDC may return NVM subsystems that are
+# not even reachable by the host, including those using a transport
+# different from the transport used for the Get Log Page command (e.g. Get
+# Log Page using TCP and receiving FC subsystems). This configuration
+# parameter has no effect if the DDC does not support PLEO (see PLEOS).
+#
+# Type: String
+# Range: [disabled, enabled]
+# Default: enabled
+#pleo=enabled
+
+# ==============================================================================
+[Service Discovery]
+# zeroconf: Control whether DNS-SD/mDNS automatic discovery is enabled. This is
+# used to enable or disable automatic discovery of Discovery
+# Controllers using DNS-SD/mDNS.
+#
+# Type: String
+# Range: [disabled, enabled]
+# Default: enabled
+#zeroconf=enabled
+
+# ==============================================================================
+[Discovery controller connection management]
+# persistent-connections: Whether connections to Discovery Controllers (DC)
+# are persistent. If stafd is stopped, the connections
+# will persists. When this is set to false, stafd will
+# disconnect from all DCs it is connected to when stafd
+# is stopped.
+# Type: boolean
+# Range: [false, true]
+#persistent-connections=true
+
+# zeroconf-connections-persistence: DCs that are discovered with mDNS service
+# discovery which are later lost (i.e. no mDNS
+# and TCP connection fails), will be purged from
+# the configuration after this amount of time.
+# Type: Time specs.
+# Unit: Takes a unit-less value in seconds,
+# or a time span (TS) value such as
+# "3 days 5 hours".
+# Range: -1, 0, TS.
+# With "-1" equal to "no timeout" and
+# 0 equal to timeout immediately.
+# Default: 72 hours (3 days)
+#zeroconf-connections-persistence=72hours
+
+# ==============================================================================
+[Controllers]
+# controller: Discovery Controllers (DC) are specified with this keyword.
+#
+# Syntax:
+# controller = transport=[trtype];traddr=[traddr];trsvcid=[trsvcid];host-traddr=[traddr];host-iface=[iface];nqn=<dcnqn>
+#
+# transport=<trtype> [MANDATORY]
+# This field specifies the network fabric being used for a NVMe-over-
+# Fabrics network. Current string values include:
+#
+# Value Definition
+# ------- -----------------------------------------------------------
+# rdma The network fabric is an rdma network (RoCE, iWARP,
+# Infiniband, basic rdma, etc)
+# fc The network fabric is a Fibre Channel network.
+# tcp The network fabric is a TCP/IP network.
+# loop Connect to a NVMe over Fabrics target on the local host
+#
+# traddr=<traddr> [MANDATORY]
+# This field specifies the network address of the Controller. For
+# transports using IP addressing (e.g. rdma) this should be an IP-
+# based address (ex. IPv4, IPv6). It could also be a resolvable host
+# name (e.g. localhost).
+#
+# nqn=<dcnqn> [OPTIONAL]
+# This field specifies the Discovery Controller's NVMe Qualified
+# Name. If not specified, this will default to the well-known DC
+# NQN: "nqn.2014-08.org.nvmexpress.discovery".
+#
+# trsvcid=<trsvcid> [OPTIONAL]
+# This field specifies the transport service id. For transports using
+# IP addressing (e.g. rdma) this field is the port number.
+#
+# Depending on the transport type, this field will default to either
+# 8009 or 4420 as follows.
+#
+# UDP port 4420 and TCP port 4420 have been assigned by IANA
+# for use by NVMe over Fabrics. NVMe/RoCEv2 controllers use UDP port
+# 4420 by default. NVMe/iWARP controllers use TCP port 4420 by
+# default.
+#
+# TCP port 4420 has been assigned for use by NVMe over Fabrics and TCP
+# port 8009 has been assigned by IANA for use by NVMe over Fabrics
+# discovery. TCP port 8009 is the default TCP port for NVMe/TCP
+# discovery controllers. There is no default TCP port for NVMe/TCP I/O
+# controllers, the Transport Service Identifier (TRSVCID) field in the
+# Discovery Log Entry indicates the TCP port to use.
+#
+# The TCP ports that may be used for NVMe/TCP I/O controllers include
+# TCP port 4420, and the Dynamic and/or Private TCP ports (i.e., ports
+# in the TCP port number range from 49152 to 65535). NVMe/TCP I/O
+# controllers should not use TCP port 8009. TCP port 4420 shall not be
+# used for both NVMe/iWARP and NVMe/TCP at the same IP address on the
+# same network.
+#
+# Ref: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=nvme
+#
+# host-traddr=<traddr> [OPTIONAL]
+# This field specifies the network address used on the host to connect
+# to the Controller. For TCP, this sets the source address on the
+# socket.
+#
+# host-iface=<iface> [OPTIONAL]
+# This field specifies the network interface used on the host to
+# connect to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da).
+# This forces the connection to be made on a specific interface
+# instead of letting the system decide.
+#
+# hdr-digest [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# data-digest [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# kato [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# reconnect-delay [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# ctrl-loss-tmo [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# disable-sqflow [OPTIONAL]
+# See definition in [Global] section. This is used to override
+# the value specified in the [Global] section.
+#
+# Multiple DCs may be specified on separate lines like this (this is
+# just an example and does not represent default values):
+#
+# controller = transport=tcp;traddr=localhost;trsvcid=8009
+# controller = transport=tcp;traddr=2001:db8::370:7334;host-iface=enp0s8
+# controller = transport=fc;traddr=nn-0x204600a098cbcac6:pn-0x204700a098cbcac6
+# ...
+#
+# Type: String
+#
+# Default: There is no default controller. STAF will not try to
+# connect to a default Discovery Controller.
+#controller=
+
+
+# exclude: Excluded controllers. Using mDNS to automatically detect
+# and connect controllers, can result in unintentional connections
+# being made. This keyword allows configuring the controllers that
+# should not be connected to (whatever the reason may be).
+#
+# The syntax is the same as for "controller=", except that the key
+# host-traddr does not apply. Multiple "exclude=" keywords may
+# appear in the config file to define the exclusion list.
+#
+# Note 1: A minimal match approach is used to eliminate unwanted
+# controllers. That is, you do not need to specify all the
+# parameters to identify a controller. Just specifying the
+# host-iface, for example, can be used to exclude all controllers
+# on an interface.
+#
+# Note 2: "exclude=" takes precedence over "controller=". A
+# controller specified by the "controller=" keyword, can be
+# eliminated by the "exclude=" keyword.
+#
+# Syntax: Same as "controller=" above.
+# Type: String
+#
+# Example:
+# exclude = transport=tcp;traddr=fe80::2c6e:dee7:857:26bb # Eliminate a specific address
+# exclude = host-iface=enp0s8 # Eliminate everything on this interface
+#exclude=
diff --git a/etc/stas/sys.conf.doc b/etc/stas/sys.conf.doc
new file mode 100644
index 0000000..5850028
--- /dev/null
+++ b/etc/stas/sys.conf.doc
@@ -0,0 +1,62 @@
+# Copyright (c) 2022, Dell Inc. or its subsidiaries. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+# See the LICENSE file for details.
+#
+# This file is part of NVMe STorage Appliance Services (nvme-stas).
+
+# ==============================================================================
+# STorage Appliance Services (stas) - System configuration file
+#
+# In this file, options that are commented represent the default values used.
+# Uncommented options override the default value.
+
+
+[Host]
+# nqn: The host's unique Non-Qualified Name. A value starting with "file://"
+# indicates that the Host NQN can be retrieved from a separate file.
+# Typically, nvme-cli saves the Host NQN in /etc/nvme/hostnqn. For
+# compatibility with nvme-cli, nvme-stas defaults to looking for the
+# existance of this file and will read the NQN from it. Otherwise, you
+# can overwrite the default NQN by specifying its value here or
+# specifying another file that contains the Host NQN to use.
+# Type: string
+# Default: file:///etc/nvme/hostnqn
+#nqn=file:///etc/nvme/hostnqn
+
+
+# id: The host's unique Identifier (ID). A value starting with "file://"
+# indicates that the Host ID can be retrieved from a separate file.
+# Typically, nvme-cli saves the Host ID in /etc/nvme/hostid. For
+# compatibility with nvme-cli, nvme-stas defaults to looking for the
+# existance of this file and will read the ID from it. Otherwise, you
+# can overwrite the default ID by specifying its value here or
+# specifying another file that contains the Host ID to use.
+# Type: string
+# Default: file:///etc/nvme/hostid
+#id=file:///etc/nvme/hostid
+
+
+# key: The host's DHCHAP key to be used for authentication. This is an
+# optional parameter only required when authentication is needed.
+# A value starting with "file://" indicates that the Host Key can
+# be retrieved from a separate file. Typically, nvme-cli saves the
+# Host Key in /etc/nvme/hostkey. For compatibility with nvme-cli,
+# nvme-stas defaults to looking for the existance of this file and
+# will read the Key from it. Otherwise, you can overwrite the default
+# Key by specifying its value here or specifying another file that
+# contains an alternate Host Key to use.
+# Type: string
+# Default: file:///etc/nvme/hostkey
+#key=file:///etc/nvme/hostkey
+
+
+# symname: The host's symbolic name. This can be a string or the name of a file
+# containing the symbolic name. A value starting with "file://"
+# indicates that the Symbolic Name can be retrieved from a separate
+# file.
+# Type: string
+# Default: There is no default. The symbolic name is undefined by
+# default.
+#symname=
+
+