doc: streamline NFD homepage and README documentation
refs: #1905
Change-Id: I7e03c05467cadd440efc0e0b1deb3abac930fd78
diff --git a/docs/FAQ.rst b/docs/FAQ.rst
index 146cbdc..0709ef8 100644
--- a/docs/FAQ.rst
+++ b/docs/FAQ.rst
@@ -191,97 +191,14 @@
How to start using NDN MacPorts repository on OSX?
--------------------------------------------------
-OSX users have an opportunity to seamlessly install and run NFD and other related
-applications via `MacPorts <https://www.macports.org/>`_. If you are not using MacPorts
-yet, go to `MacPorts website <https://www.macports.org/install.php>`_ and download and
-install the MacPorts package.
-
-NFD and related ports are not part of the official MacPorts repository and in order to use
-it, you need to add NDN MacPorts repository to the local configuration. In particular,
-you will need to modify the list of source URLs for MacPorts. For example, if your
-MacPorts are installed in ``/opt/local``, add the following line
-`/opt/local/etc/macports/sources.conf` before or after the default port repository:
-
-::
-
- rsync://macports.named-data.net/macports/
-
-After this step, you can use ``sudo port selfupdate`` to fetch updated port definitions.
-
-The following command will install NFD using MacPorts:
-
-::
-
- sudo port install nfd
-
-.. note::
- You have to have XCode installed on your machine. For latest versions of OSX (Lion or
- Mountain Lion) you can install it from AppStore for free, for older versions you have to
- go to developer.apple.com and download old version of XCode that is appropriate for your
- system.
-
-
-One of the advantages of using MacPorts is that you can easily upgrade NFD and other
-packages to the most recent version available. The following commands will do this job:
-
-::
-
- sudo port selfupdate
- sudo port upgrade nfd
+Please see :ref:`Install NFD Using the NDN MacPorts Repository on OS X`.
.. _How to start using NDN PPA repository on Ubuntu Linux:
How to start using NDN PPA repository on Ubuntu Linux?
------------------------------------------------------
-NFD binaries and related tools for Ubuntu 12.04, 13.10, and 14.04 can be installed using
-PPA packages from named-data repository. First, you will need to add ``named-data/ppa``
-repository to binary package sources and update list of available packages.
-
-Preliminary steps if you haven't used PPA packages before
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To simplify adding new PPA repositories, Ubuntu provides ``add-apt-repository`` tool, which
-is not installed by default on some platforms.
-
-On Ubuntu **12.04**:
-
-::
-
- sudo apt-get install python-software-properties
-
-On Ubuntu **13.10** and **14.04**:
-
-::
-
- sudo apt-get install software-properties-common
-
-
-Adding NDN PPA
-++++++++++++++
-
-After installing ``add-apt-repository``, run the following command to add `NDN PPA repository`_.
-
-::
-
- sudo add-apt-repository ppa:named-data/ppa
- sudo apt-get update
-
-Installing NFD and other NDN packages
-+++++++++++++++++++++++++++++++++++++
-
-After you have added `NDN PPA repository`_, NFD and other NDN packages can be easily
-installed in a standard way, i.e., either using ``apt-get`` as shown below or using any
-other package manager, such as Synaptic Package Manager:
-
-::
-
- sudo apt-get install nfd
-
-For the list of available packages, refer to `NDN PPA repository`_ homepage.
-
-.. _NDN PPA repository: https://launchpad.net/~named-data/+archive/ppa
-
+Please see :ref:`Install NFD Using the NDN PPA Repository on Ubuntu Linux`.
.. _How to start using NDN Overlay on Gentoo Linux:
diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst
index dd38f18..e28d227 100644
--- a/docs/INSTALL.rst
+++ b/docs/INSTALL.rst
@@ -1,27 +1,161 @@
-.. _NFD Installation Instructions:
+Getting Started with NFD
+========================
-NFD Installation Instructions
-=============================
+Installing NFD from Binaries
+----------------------------
+
+We provide NFD binaries for the supported platforms, which are the preferred installation
+method. In addition to simplifying installation, the binary release also includes
+automatic initial configuration and platform-specific tools to automatically start NFD and
+related daemons. In particular, on OS X NFD is controlled using `launchd
+<https://github.com/named-data/NFD/tree/master/contrib/osx-launchd>`__ and on Ubuntu using
+`upstart <https://github.com/named-data/NFD/tree/master/contrib/upstart>`__ mechanisms.
+In both cases, `nfd-start` and `nfd-stop` scripts are convenience wrappers for launchd and
+upstart.
+
+On OS X, NFD can be installed with MacPorts. Refer to :ref:`Install NFD Using the NDN
+MacPorts Repository on OS X` for more details.
+
+On Ubuntu 12.04, 13.10, or 14.04, NFD can be installed from NDN PPA repository. Refer to
+:ref:`Install NFD Using the NDN PPA Repository on Ubuntu Linux`.
+
+Future releases could include support for other platforms. Please send us feedback on the
+platforms you're using, so we can prioritize our goals. We would also appreciate help
+packaging the current NFD release for other platforms.
+
+
+.. _Install NFD Using the NDN MacPorts Repository on OS X:
+
+Install NFD Using the NDN MacPorts Repository on OS X
+-----------------------------------------------------
+
+OS X users have the opportunity to seamlessly install and run NFD as well as other related
+applications via `MacPorts <https://www.macports.org/>`_. If you are not using MacPorts
+yet, go to the `MacPorts website <https://www.macports.org/install.php>`_ and install the
+MacPorts package.
+
+NFD and related ports are not part of the official MacPorts repository. In order to use
+these ports, you will need to add the NDN MacPorts repository to your local configuration.
+In particular, you will need to modify the list of source URLs for MacPorts. For example,
+if your MacPorts are installed in ``/opt/local``, add the following line to
+`/opt/local/etc/macports/sources.conf` before or after the default port repository:
+
+::
+
+ rsync://macports.named-data.net/macports/
+
+After this step, you can use ``sudo port selfupdate`` to fetch updated port definitions.
+
+The following command will install NFD using MacPorts:
+
+::
+
+ sudo port install nfd
+
+.. note::
+
+ You have to have XCode installed on your machine. This can be installed from the
+ AppStore (free) on OS X 10.7 or later. Older editions of OS X can download an
+ appropriate version of XCode from http://developer.apple.com.
+
+
+One advantage of using MacPorts is that you can easily upgrade NFD and other packages to
+the latest version. The following commands will do this job:
+
+::
+
+ sudo port selfupdate
+ sudo port upgrade nfd
+
+.. _Install NFD Using the NDN PPA Repository on Ubuntu Linux:
+
+Install NFD Using the NDN PPA Repository on Ubuntu Linux
+--------------------------------------------------------
+
+NFD binaries and related tools for Ubuntu 12.04 and 14.04 can be installed using PPA
+packages from named-data repository. First, you will need to add ``named-data/ppa``
+repository to binary package sources and update list of available packages.
+
+Preliminary steps if you haven't used PPA packages before
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To simplify adding new PPA repositories, Ubuntu provides ``add-apt-repository`` tool,
+which is not installed by default on some platforms.
+
+On Ubuntu **12.04**:
+
+::
+
+ sudo apt-get install python-software-properties
+
+On Ubuntu **14.04**:
+
+::
+
+ sudo apt-get install software-properties-common
+
+
+Adding NDN PPA
+~~~~~~~~~~~~~~
+
+After installing ``add-apt-repository``, run the following command to add `NDN PPA
+repository`_.
+
+::
+
+ sudo add-apt-repository ppa:named-data/ppa
+ sudo apt-get update
+
+Installing NFD and other NDN packages
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After you have added `NDN PPA repository`_, NFD and other NDN packages can be easily
+installed in a standard way, i.e., either using ``apt-get`` as shown below or using any
+other package manager, such as Synaptic Package Manager:
+
+::
+
+ sudo apt-get install nfd
+
+For the list of available packages, refer to `NDN PPA repository`_ homepage.
+
+.. _NDN PPA repository: https://launchpad.net/~named-data/+archive/ppa
+
+Building from Source
+--------------------
+
+Downloading from Git
+~~~~~~~~~~~~~~~~~~~~
+
+The first step is to obtain the source code for ``NFD`` and, its main dependency, the
+``ndn-cxx`` library. If you are not planning to work with the bleeding edge code, make
+sure you checkout the correct release tag (e.g., ``*-0.2.0``) for both repositories:
+
+::
+
+ # Download ndn-cxx
+
+ git clone https://github.com/named-data/ndn-cxx
+ cd ndn-cxx
+ git checkout ndn-cxx-0.2.0
+
+ cd ..
+
+ # Download NFD
+
+ git clone --recursive https://github.com/named-data/NFD
+ cd NFD
+ git checkout NFD-0.2.0
Prerequisites
--------------
+~~~~~~~~~~~~~
-- `ndn-cxx library <https://github.com/named-data/ndn-cxx>`__
- and its requirements:
-
- - ``libcrypto``
- - ``libsqlite3``
- - ``libcrypto++``
- - ``pkg-config``
- - Boost libraries (>= 1.48)
- - OSX Security framework (on OSX platform only)
-
- Refer to `Getting started with ndn-cxx <http://named-data.net/doc/ndn-cxx/current/INSTALL.html>`_
- for detailed installation instructions of the library.
+- Install the `ndn-cxx library <http://named-data.net/doc/ndn-cxx/current/INSTALL.html>`_
+ and its requirements
- ``libpcap``
- Comes with base on OS X 10.8 and 10.9:
+ Comes with the base system on OS X 10.8 and 10.9.
On Ubuntu >= 12.04:
@@ -35,7 +169,7 @@
- ``graphviz``
- ``python-sphinx``
- On OS X 10.8 and 10.9 with macports:
+ On OS X 10.8 and 10.9 with MacPorts:
::
@@ -48,10 +182,18 @@
sudo apt-get install doxygen graphviz python-sphinx
-Build
------
-The following commands should be used to build NFD:
+Besides officially supported platforms, NFD is known to work on: Fedora 20, CentOS 6, Gentoo Linux,
+Raspberry Pi, OpenWRT, FreeBSD 10.0, and several other platforms. We are soliciting help
+with documenting common problems / pitfalls in installing/using NFD on different platforms
+on `NFD Wiki
+<http://redmine.named-data.net/projects/nfd/wiki/Wiki#Installation-experiences-for-selected-platforms>`__.
+
+
+Build
+~~~~~
+
+The following basic commands should be used to build NFD on Ubuntu:
::
@@ -59,12 +201,10 @@
./waf
sudo ./waf install
-Refer to ``./waf --help`` for more options that can be used during ``configure`` stage and
-how to properly configure and run NFD.
+Some platforms, such as OS X with MacPorts and certain Linux distributions (e.g., Fedora)
+require setting the ``PKG_CONFIG_PATH`` before running configure.
-In some configurations, configuration step may require small modification. For example, on
-OSX that uses macports (correct the path if macports was not installed in the default path
-``/opt/local``):
+For example, on OS X with MacPorts (assuming the default ``/opt/local`` MacPorts path):
::
@@ -73,7 +213,7 @@
./waf
sudo ./waf install
-On some Linux distributions (e.g., Fedora 20):
+or some Linux distributions:
::
@@ -82,8 +222,12 @@
./waf
sudo ./waf install
+
+Refer to ``./waf --help`` for more options that can be used during ``configure`` stage and
+how to properly configure and run NFD.
+
Debug symbols
-+++++++++++++
+~~~~~~~~~~~~~
The default compiler flags enable debug symbols to be included in binaries. This
potentially allows more meaningful debugging if NFD or other tools happen to crash.
@@ -99,7 +243,7 @@
sudo ./waf install
Building documentation
-----------------------
+~~~~~~~~~~~~~~~~~~~~~~
NFD tutorials and API documentation can be built using the following commands:
@@ -115,11 +259,128 @@
./waf doxgyen
-Manpages are automatically created and installed during the normal build process
-(e.g., during ``./waf`` and ``./waf install``), if ``python-sphinx`` module is detected
-during ``./waf configure`` stage. By default, manpages are installed into
+Manpages are automatically created and installed during the normal build process (e.g.,
+during ``./waf`` and ``./waf install``), if ``python-sphinx`` module is detected during
+``./waf configure`` stage. By default, manpages are installed into
``${PREFIX}/share/man`` (where default value for ``PREFIX`` is ``/usr/local``). This
location can be changed during ``./waf configure`` stage using ``--prefix``,
``--datarootdir``, or ``--mandir`` options.
For more details, refer to ``./waf --help``.
+
+
+Initial configuration
+---------------------
+
+.. note::
+ If you have installed NFD from binary packages, the package manager has already
+ installed initial configuration and you can safely skip this section.
+
+General
+~~~~~~~
+
+After installing NFD from source, you need to create a proper config file. If default
+location for ``./waf configure`` was used, this can be accomplished by simply copying the
+sample configuration file:
+
+::
+
+ sudo cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
+
+NFD Security
+~~~~~~~~~~~~
+
+NFD provides mechanisms to enable strict authorization for all management commands. In
+particular, one can authorize only specific public keys to create new Faces or change the
+forwarding strategy for specific namespaces. For more information about how to generate
+private/public key pair, generate self-signed certificate, and use this self-signed
+certificate to authorize NFD management commands refer to :ref:`How to configure NFD
+security` FAQ question.
+
+In the sample configuration file, all authorizations are disabled, effectively allowing
+anybody on the local machine to issue NFD management commands. **The sample file is
+intended only for demo purposes and MUST NOT be used in a production environment.**
+
+Running
+-------
+
+**You should not run ndnd or ndnd-tlv, otherwise NFD will not work correctly**
+
+Starting
+~~~~~~~~
+
+In order to use NFD, you need to start two separate daemons: ``nfd`` (the forwarder
+itself) and ``nrd`` (RIB manager that will manage all prefix registrations). The
+recommended way is to use `nfd-start` script:
+
+::
+
+ nfd-start
+
+On OS X it may ask for your keychain password or ask ``nfd/nrd wants to sign using key in
+your keychain.`` Enter your keychain password and click Always Allow.
+
+Later, you can stop NFD with ``nfd-stop`` or by simply killing the ``nfd`` process.
+
+
+Connecting to remote NFDs
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To create a UDP or TCP tunnel to remote NFD and create route toward it, use the following
+command in terminal:
+
+::
+
+ nfdc register /ndn udp://<other host>
+
+where ``<other host>`` is the name or IP address of the other host (e.g.,
+``udp://spurs.cs.ucla.edu``). This outputs:
+
+::
+
+ Successful in name registration: ControlParameters(Name: /ndn, FaceId: 260, Origin: 255, Cost: 0, Flags: 1, )
+
+The ``/ndn`` means that NFD will forward all Interests that start with ``/ndn`` through
+the face to the other host. If you only want to forward Interests with a certain prefix,
+use it instead of ``/ndn``. This only forwards Interests to the other host, but there is
+no "back route" for the other host to forward Interests to you. For that, you must go to
+the other host and use ``nfdc`` to add the route.
+
+The "back route" can also be automatically configured with ``nfd-autoreg``. For more
+information refer to :doc:`manpages/nfd-autoreg`.
+
+Playing with NFD
+----------------
+
+After you haved installed, configured, and started NFD, you can try to install and play
+with the following:
+
+Sample applications:
+
+- `Simple examples in ndn-cxx
+ library <http://named-data.net/doc/ndn-cxx/0.2.0/examples.html>`__.
+ If you have installed ndn-cxx from source, you already have compiled
+ these:
+
+ + examples/producer
+ + examples/consumer
+ + examples/consumer-with-timer
+
+ + tools/ndncatchunks3
+ + tools/ndnputchunks3
+
+- `Introductory examples of
+ NDN-CCL <http://redmine.named-data.net/projects/nfd/wiki/Getting_Started_-_Common_Client_Libraries#Install-the-Common-Client-Library>`__
+
+Real applications and libraries:
+
+ + `ndn-tlv-ping - Reachability Testing Tool for NDN
+ <https://github.com/named-data/ndn-tlv-ping>`__
+ + `ndn-traffic-generator - Traffic Generator For
+ NDN <https://github.com/named-data/ndn-traffic-generator>`__
+ + `repo-ng - Next generation of NDN
+ repository <https://github.com/named-data/repo-ng>`__
+ + `ChronoChat - Multi-user NDN chat
+ application <https://github.com/named-data/ChronoChat>`__
+ + `ChronoSync - Sync library for multiuser realtime applications for
+ NDN <https://github.com/named-data/ChronoSync>`__
diff --git a/docs/getting-started.rst b/docs/getting-started.rst
deleted file mode 100644
index 57d0d57..0000000
--- a/docs/getting-started.rst
+++ /dev/null
@@ -1,169 +0,0 @@
-Getting Started with NFD
-========================
-
-A more recent version of this document may be available on `NFD Wiki
-<http://redmine.named-data.net/projects/nfd/wiki/Getting_Started>`_.
-
-.. toctree::
- :maxdepth: 2
-
- INSTALL
-
-Installing
-----------
-
-From source
-~~~~~~~~~~~
-
-To install NFD from source:
-
-- install ``ndn-cxx`` according to `ndn-cxx installation
- instructions <http://named-data.net/doc/ndn-cxx/0.2.0/INSTALL.html>`__
-- install ``NFD`` according to :doc:`these
- instructions <INSTALL>`
-
-If downloading code using git, don't forget to checkout the correct
-branch for both ``ndn-cxx`` and ``NFD``
-
-::
-
- git clone https://github.com/named-data/ndn-cxx
- cd ndn-cxx
- git checkout ndn-cxx-0.2.0
- ...
- # continue with ndn-cxx installation instructions
-
- git clone --recursive https://github.com/named-data/NFD
- cd NFD
- git checkout NFD-0.2.0
- ...
- # continue with NFD installation instructions
-
-From binaries
-~~~~~~~~~~~~~
-
-On OSX, NFD can be installed with MacPorts. Refer to :ref:`How to start using NDN
-MacPorts repository on OSX` FAQ question for more details.
-
-On Ubuntu 12.04, 13.10, or 14.04, NFD can be installed from NDN PPA repository. Refer to
-:ref:`How to start using NDN PPA repository on Ubuntu Linux` FAQ question.
-
-
-Initial configuration
----------------------
-
-.. note::
- If you have installed NFD from binary packages, the package manager has already
- installed initial configuration and you can safely skip this section.
-
-General
-~~~~~~~
-
-After installing NFD from source, you need to create a proper config file. If default
-location for ``./waf configure`` was used, this can be accomplished by simply copying the
-sample configuration file:
-
-::
-
- sudo cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
-
-NFD Security
-~~~~~~~~~~~~
-
-NFD provides mechanisms to enable strict authorization for all management commands. In
-particular, one can authorize only specific public keys to create new Faces or change the
-forwarding strategy for specific namespaces. For more information about how to generate
-private/public key pair, generate self-signed certificate, and use this self-signed
-certificate to authorize NFD management commands refer to :ref:`How to configure NFD
-security` FAQ question.
-
-In the sample configuration file, all authorizations are disabled, effectively allowing
-anybody on the local machine to issue NFD management commands. **The sample file is
-intended only for demo purposes and MUST NOT be used in a production environment.**
-
-Running
--------
-
-**You should not run ndnd or ndnd-tlv, otherwise NFD will not work
-correctly**
-
-Starting
-~~~~~~~~
-
-In order to use NFD, you need to start two separate daemons: ``nfd`` (the forwarder
-itself) and ``nrd`` (RIB manager that will manage all prefix registrations). The
-recommended way is to use `nfd-start` script:
-
-::
-
- nfd-start
-
-On OS X it may ask for your keychain password or ask ``nfd/nrd wants to sign using key in
-your keychain.`` Enter your keychain password and click Always Allow.
-
-Later, you can stop NFD with ``nfd-stop`` or by simply killing the ``nfd`` process.
-
-
-
-Connecting to remote NFDs
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To create a UDP or TCP tunnel to remote NFD and create route toward it,
-use the following command in terminal:
-
-::
-
- nfdc register /ndn udp://<other host>
-
-where ``<other host>`` is the name or IP address of the other host
-(e.g., ``udp://spurs.cs.ucla.edu``). This outputs:
-
-::
-
- Successful in name registration: ControlParameters(Name: /ndn, FaceId: 10, Origin: 0, Cost: 0, Flags: 1, ExpirationPeriod: 3600000 milliseconds, )
-
-The ``/ndn`` means that NFD will forward all Interests that start with ``/ndn`` through
-the face to the other host. If you only want to forward Interests with a certain prefix,
-use it instead of ``/ndn``. This only forwards Interests to the other host, but there is
-no "back route" for the other host to forward Interests to you. For that, you must go to
-the other host and use ``nfdc`` to add the route.
-
-The "back route" can also be automatically configured with ``nfd-autoreg``. For more
-information refer to `nfd-autoreg manpage
-<http://named-data.net/doc/NFD/current/manpages/nfd-autoreg.html>`_.
-
-Playing with NFD
-----------------
-
-After you installed, configured, and started NFD, you can try to install
-and play with the following:
-
-Sample applications:
-
-- `Simple examples in ndn-cxx
- library <http://named-data.net/doc/ndn-cxx/0.2.0/examples.html>`__.
- If you have installed ndn-cxx from source, you already have compiled
- these:
-
- + examples/producer
- + examples/consumer
- + examples/consumer-with-timer
-
- + tools/ndncatchunks3
- + tools/ndnputchunks3
-
-- `Introductory examples of
- NDN-CCL <http://redmine.named-data.net/projects/nfd/wiki/Getting_Started_-_Common_Client_Libraries#Install-the-Common-Client-Library>`__
-
-Real applications and libraries:
-
- + `ndn-tlv-ping - Ping Application For
- NDN <https://github.com/named-data/ndn-tlv-ping>`__
- + `ndn-traffic-generator - Traffic Generator For
- NDN <https://github.com/named-data/ndn-traffic-generator>`__
- + `repo-ng - Next generation of NDN
- repository <https://github.com/named-data/repo-ng>`__
- + `ChronoChat - Multi-user NDN chat
- application <https://github.com/named-data/ChronoChat>`__
- + `ChronoSync - Sync library for multiuser realtime applications for
- NDN <https://github.com/named-data/ChronoSync>`__
diff --git a/docs/index.rst b/docs/index.rst
index 45f126a..74f568d 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -13,41 +13,43 @@
:hidden:
:maxdepth: 3
- README
- getting-started
+ overview
+ INSTALL
FAQ
manpages
-..
- INSTALL
+* :doc:`overview`
-* :doc:`README`
+ A brief overview of NFD and its major modules.
-* :doc:`getting-started`
+* :doc:`INSTALL`
+
+ Instructions for obtaining, installing, and running NFD.
* :doc:`FAQ`
+ Suggestions for configuring and running non-standard NFD setups.
+
* :doc:`manpages`
**Additional documentation**
* `NFD Developer's Guide <http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_
+ A comprehensive guide to the design and implementation of NFD. The developer's guide also contains
+ suggestions and hints for anyone wanting to modify or extend NFD.
+
* `NFD Wiki <http://redmine.named-data.net/projects/nfd/wiki>`_
+ `NFD Management protocol <http://redmine.named-data.net/projects/nfd/wiki/Management>`_
+ `NFD Configuration file format <http://redmine.named-data.net/projects/nfd/wiki/ConfigFileFormat>`_
-* `API documentation (doxygen) <doxygen/annotated.html>`_
+ The NFD Wiki contains detailed protocol specifications and
+ information for building on unsupported platforms.
-Downloading
------------
+* `API Documentation (doxygen) <doxygen/annotated.html>`_
-* `Source code GitHub git repository <https://github.com/named-data/NFD>`_.
-
-* :ref:`MacPorts NDN repository <How to start using NDN MacPorts repository on OSX>`
-
-* :ref:`Ubuntu NDN PPA repository <How to start using NDN PPA repository on Ubuntu Linux>`
+* `Release Notes <RELEASE_NOTES.html>`_
License
-------
diff --git a/docs/README.rst b/docs/overview.rst
similarity index 100%
rename from docs/README.rst
rename to docs/overview.rst