diff options
Diffstat (limited to 'doc/user')
| -rw-r--r-- | doc/user/Makefile | 16 | ||||
| -rw-r--r-- | doc/user/Makefile.am | 55 | ||||
| -rw-r--r-- | doc/user/_static/overrides.css | 18 | ||||
| -rw-r--r-- | doc/user/overview.rst | 98 | ||||
| -rw-r--r-- | doc/user/subdir.am | 110 | ||||
| -rw-r--r-- | doc/user/zebra.rst | 39 |
6 files changed, 227 insertions, 109 deletions
diff --git a/doc/user/Makefile b/doc/user/Makefile new file mode 100644 index 0000000000..840ee5b8a9 --- /dev/null +++ b/doc/user/Makefile @@ -0,0 +1,16 @@ +all: ALWAYS + @$(MAKE) -s -C ../.. doc-user +help: ALWAYS + @$(MAKE) -s -C ../.. doc/help +pdf: ALWAYS + @$(MAKE) -s -C ../.. doc/user/_build/latexpdf +info: ALWAYS + @$(MAKE) -s -C ../.. doc/user/_build/texinfo/frr.info +%: ALWAYS + @$(MAKE) -s -C ../.. doc/user/_build/$@ + +Makefile: + #nothing +ALWAYS: +.PHONY: ALWAYS makefiles +.SUFFIXES: diff --git a/doc/user/Makefile.am b/doc/user/Makefile.am deleted file mode 100644 index 64af2ff145..0000000000 --- a/doc/user/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -# This is necessary to support VPATH builds. -srcdir = @srcdir@ -VPATH = @srcdir@ - -# This variable is used as the documentation source location in frr-sphinx.mk -SOURCESDIR = @srcdir@ - -include @srcdir@/../frr-sphinx.mk - -# ----------------------------------------------------------------------------- -# Automake requires that 3rd-party Makefiles recognize these targets. -# ----------------------------------------------------------------------------- -# install -# install-data -# install-exec -# uninstall -# install-dvi -# install-html -# install-info -# install-ps -# install-pdf -# installdirs -# check -# installcheck -# mostlyclean -# clean -# distclean -# maintainer-clean -# dvi -# pdf -# ps -# info -# html -# tags -# ctags - -# When building 'all', the logic is that we want to make docs that are easily -# readable by the person that just built them. Technically the reST source is -# readable in its own right, but we'll also build info and html because those -# offer sequentially better reading experiences. PDF is not built by default -# because it takes quite a while. -all: info - -# info and html already have built-in sphinx rules; pdf goes to latexpdf -pdf: latexpdf - -# install user manual as info file -install-info: info - install -d ${DESTDIR}${infodir} - gzip < _build/texinfo/frr.info > ${DESTDIR}${infodir}/frr.info.gz - install-info _build/texinfo/frr.info ${DESTDIR}${infodir}/dir - -install-data: install-info - -install: install-data diff --git a/doc/user/_static/overrides.css b/doc/user/_static/overrides.css index 3143f8bb65..41fcc66f8d 100644 --- a/doc/user/_static/overrides.css +++ b/doc/user/_static/overrides.css @@ -19,11 +19,6 @@ table.mark th { table.mark td { vertical-align: middle; } -table.mark td[colspan="7"] { - text-align: center; - padding-top: 8pt; - padding-bottom: 2pt; -} table.mark cite { font-weight: bold; } @@ -32,6 +27,13 @@ table.mark cite { td.mark { width: 4.5em; } +table.mark strong { + display:block; + text-align: center; + margin:auto; + padding-top: 8pt; + padding-bottom: 2pt; +} td.mark span { display: block; padding: 3px 1px; @@ -39,6 +41,12 @@ td.mark span { width: 36pt; margin:auto; } +table.mark tr td:first-child { + padding-left:1.5em; +} +table.mark tr td:first-child cite { + margin-left:-1.5em; +} span.mark-y { background-color: #77ffaa; } span.mark-geq { background-color: #aaff77; } span.mark-cp { background-color: #ffbb55; } diff --git a/doc/user/overview.rst b/doc/user/overview.rst index 51bd6228e3..e90b84b02b 100644 --- a/doc/user/overview.rst +++ b/doc/user/overview.rst @@ -166,69 +166,69 @@ features with system dependencies are included here. will look somewhat shoddy on other sphinx targets like PDF or info (but should still be readable.) -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ | Daemon / Feature | Linux | OpenBSD | FreeBSD | NetBSD | Solaris | -+==+================================+================+==============+============+============+============+ -| FRR Core | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++===================================+================+==============+============+============+============+ +| **FRR Core** | | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `zebra` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | VRF | :mark:`≥4.8` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | MPLS | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| VRF | :mark:`≥4.8` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| MPLS | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `pbrd` (Policy Routing) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| WAN / Carrier protocols | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| **WAN / Carrier protocols** | | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `bgpd` (BGP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | VRF / L3VPN | :mark:`≥4.8` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | -| | | :mark:`†4.3` | | | | | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | EVPN | :mark:`≥4.18` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | -| | | :mark:`†4.9` | | | | | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | VNC (Virtual Network Control) | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | Flowspec | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| VRF / L3VPN | :mark:`≥4.8` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | +| | :mark:`†4.3` | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| EVPN | :mark:`≥4.18` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | +| | :mark:`†4.9` | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| VNC (Virtual Network Control) | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| Flowspec | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `ldpd` (LDP) | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | VPWS / PW | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | VPLS | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| VPWS / PW | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| VPLS | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `nhrpd` (NHRP) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| Link-State Routing | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| **Link-State Routing** | | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `ospfd` (OSPFv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | Segment Routing | :mark:`≥4.12` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| Segment Routing | :mark:`≥4.12` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `ospf6d` (OSPFv3) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `isisd` (IS-IS) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| Distance-Vector Routing | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| **Distance-Vector Routing** | | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `ripd` (RIPv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `ripngd` (RIPng) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `babeld` (BABEL) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `eigrpd` (EIGRP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| Multicast Routing | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| **Multicast Routing** | | | | | | ++-----------------------------------+----------------+--------------+------------+------------+------------+ | `pimd` (PIM) | :mark:`≥4.18` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | SSM (Source Specific) | :mark:`Y` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ -| | ASM (Any Source) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | -+--+--------------------------------+----------------+--------------+------------+------------+------------+ ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| SSM (Source Specific) | :mark:`Y` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ +| ASM (Any Source) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` | ++-----------------------------------+----------------+--------------+------------+------------+------------+ The indicators have the following semantics: diff --git a/doc/user/subdir.am b/doc/user/subdir.am new file mode 100644 index 0000000000..6e51eed9d1 --- /dev/null +++ b/doc/user/subdir.am @@ -0,0 +1,110 @@ +# +# doc/user +# + +user_RSTFILES = \ + doc/user/babeld.rst \ + doc/user/ldpd.rst \ + doc/user/basic.rst \ + doc/user/bgp.rst \ + doc/user/bugs.rst \ + doc/user/conf.py \ + doc/user/eigrpd.rst \ + doc/user/filter.rst \ + doc/user/glossary.rst \ + doc/user/index.rst \ + doc/user/installation.rst \ + doc/user/ipv6.rst \ + doc/user/isisd.rst \ + doc/user/kernel.rst \ + doc/user/nhrpd.rst \ + doc/user/ospf6d.rst \ + doc/user/ospfd.rst \ + doc/user/ospf_fundamentals.rst \ + doc/user/overview.rst \ + doc/user/packet-dumps.rst \ + doc/user/pim.rst \ + doc/user/ripd.rst \ + doc/user/pbr.rst \ + doc/user/ripngd.rst \ + doc/user/routemap.rst \ + doc/user/routeserver.rst \ + doc/user/rpki.rst \ + doc/user/setup.rst \ + doc/user/sharp.rst \ + doc/user/snmp.rst \ + doc/user/snmptrap.rst \ + doc/user/static.rst \ + doc/user/vnc.rst \ + doc/user/vtysh.rst \ + doc/user/zebra.rst \ + doc/user/bfd.rst \ + doc/user/flowspec.rst \ + # end + +EXTRA_DIST += \ + $(user_RSTFILES) \ + doc/user/Useful_Sysctl_Settings.md \ + # end + +USERBUILD = doc/user/_build +$(USERBUILD)/.doctrees/environment.pickle: $(user_RSTFILES) + +# +# automake integration (things that should be built in "all") +# + +if DOC +nodist_noinst_DATA += $(USERBUILD)/texinfo/frr.info +endif +if DOC_HTML +nodist_noinst_DATA += $(USERBUILD)/html/.buildinfo +endif + +# +# standard targets +# + +.PHONY: info html pdf +info: $(USERBUILD)/texinfo/frr.info +html: $(USERBUILD)/html/.buildinfo +pdf: $(USERBUILD)/latexpdf + +# +# hook-ins for clean / install / doc +# + +.PHONY: clean-userdocs +clean-local: clean-userdocs +clean-userdocs: + -rm -rf "$(USERBUILD)" + +# INSTALL_INFO=install-info +.PHONY: install-info uninstall-info install-html uninstall-html + +install-info: $(USERBUILD)/texinfo/frr.info + $(MKDIR_P) "$(DESTDIR)$(infodir)" + $(INSTALL_DATA) "$<" "$(DESTDIR)$(infodir)" + [ -z "${DESTDIR}" ] && $(INSTALL_INFO) --info-dir="$(DESTDIR)$(infodir)" "$<" || true +uninstall-info: $(USERBUILD)/texinfo/frr.info + -rm -f "$(DESTDIR)$(infodir)/$<" + [ -z "${DESTDIR}" ] && $(INSTALL_INFO) --delete --info-dir="$(DESTDIR)$(infodir)" "$<" || true + +install-html: $(USERBUILD)/html/.buildinfo + $(MKDIR_P) "$(DESTDIR)$(htmldir)" + cp -r "$(USERBUILD)/html" "$(DESTDIR)$(htmldir)" +uninstall-html: + -rm -rf "$(DESTDIR)$(htmldir)/html" + +.PHONY: install-data-local uninstall-local +if DOC +DOC_INFO=info +install-data-local: install-info +uninstall-local: uninstall-info +endif +if DOC_HTML +DOC_HTML=html +install-data-local: install-html +uninstall-local: uninstall-html +endif +doc: $(DOC_INFO) $(DOC_HTML) diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index af8e4b8d47..e3e5d1325a 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -48,6 +48,13 @@ Besides the common invocation options (:ref:`common-invocation-options`), the .. seealso:: :ref:`zebra-vrf` +.. option:: -o, --vrfdefaultname + + When *Zebra* starts with this option, the default VRF name is changed to the + parameter. + + .. seealso:: :ref:`zebra-vrf` + .. option:: --v6-rr-semantics The linux kernel is receiving the ability to use the same route @@ -355,6 +362,38 @@ commands in relationship to VRF. Here is an extract of some of those commands: will dump the routing table ``TABLENO`` of the *Linux network namespace* ``VRF``. +By using the :option:`-n` option, the *Linux network namespace* will be mapped +over the *Zebra* VRF. One nice feature that is possible by handling *Linux +network namespace* is the ability to name default VRF. At startup, *Zebra* +discovers the available *Linux network namespace* by parsing folder +`/var/run/netns`. Each file stands for a *Linux network namespace*, but not all +*Linux network namespaces* are available under that folder. This is the case for +default VRF. It is possible to name the default VRF, by creating a file, by +executing following commands. + +.. code-block:: shell + + touch /var/run/netns/vrf0 + mount --bind /proc/self/ns/net /var/run/netns/vrf0 + +Above command illustrates what happens when the default VRF is visible under +`var/run/netns/`. Here, the default VRF file is `vrf0`. +At startup, FRR detects the presence of that file. It detects that the file +statistics information matches the same file statistics information as +`/proc/self/ns/net` ( through stat() function). As statistics information +matches, then `vrf0` stands for the new default namespace name. +Consequently, the VRF naming `Default` will be overriden by the new discovered +namespace name `vrf0`. + +For those who don't use VRF backend with *Linux network namespace*, it is +possible to statically configure and recompile FRR. It is possible to choose an +alternate name for default VRF. Then, the default VRF naming will automatically +be updated with the new name. To illustrate, if you want to recompile with +`global` value, use the following command: + +.. code-block:: linux + + ./configure --with-defaultvrfname=global .. _zebra-mpls: |
