## Process this file with automake to produce Makefile.in.
-# Dia, the version i have at least, doesn't do very good EPS output
-# (some of the text is scaled strangely). So this will work, but
-# it is probably better to use something like gimp to convert the
-# dia exported PNG files to EPS manually.
-#
-# Here we use 'convert' from the well known 'ImageMagick' package
-# to do conversion from png to eps/pdf for figures.
-# PDF form is required for frr.pdf, using PDFTex at least.
-#
-# TeX implementation, which we depend on already anyway.
-#
-# dia -> (dia) -> png -> (convert) -> eps -> (epstopdf) -> pdf
-SUFFIXES = .png .eps .dia .pdf
-DIATOPNG = dia -t png -e
-DIATOEPS = dia -t eps -e
-PNGTOEPS = convert -antialias -contrast -despeckle
-PNGTOPDF = $(PNGTOEPS)
-EPSTOPDF = epstopdf
-
-VNCFIGURES_PNG =
-VNCFIGURES_DIA = -vnc-mesh -vnc-frr-route-reflector \
--vnc-commercial-route-reflector -vnc-redundant-route-reflectors \
--vnc-gw -vnc-gw-rr
-
-# TODO: A target that creates an empty text file for each member of
-# VNCFIGURES_TXT
-VNCFIGURES_TXT = $(VNCFIGURES:%.png=%.txt)
-
-# The figure sources
-figures_names_parts = -normal-processing -rs-processing \
- _topologies_full _topologies_rs \
- $(VNCFIGURES_DIA)
-
-figures_sources = $(figures_names_parts:%=fig%.dia)
-figures_png = $(figures_names_parts:%=fig%.png) $(VNCFIGURES_PNG)
-figures_pdf = $(figures_names_parts:%=fig%.pdf) $(VNCFIGURES_PNG:%.png=%.pdf)
-figures_eps = $(figures_names_parts:%=fig%.eps) $(VNCFIGURES_PNG:%.png=%.eps)
-figures_txt = $(figures_names_parts:%=fig%.txt)
-
-# rather twisted logic because we have to build PDFs of the EPS figures for
-# PDFTex and yet build one PDF, frr.pdf, from texi source. Which means we
-# cant rely on a single automatic rule for *.pdf, eg the one automatically
-# provided by automake. If you are an automake wizard, please feel free to
-# compact it somehow.
-
-info_TEXINFOS = frr.texi
-
-# Have to manually specify the frr.pdf rule in order to allow
-# us to have a generic automatic .pdf rule to build the figure sources
-# because it cant just work from the png's directly it seems - contrary
-# to the documentation...
-frr.pdf: $(info_TEXINFOS) $(figures_pdf) $(frr_TEXINFOS) defines.texi
- $(TEXI2PDF) -o "$@" $< || true
-
-# don't ask me why the info file is in srcdir
-$(srcdir)/frr.info: $(frr_TEXINFOS) defines.texi
-frr.dvi: $(frr_TEXINFOS) defines.texi
-frr.html: $(frr_TEXINFOS) defines.texi
-
-frr_TEXINFOS = \
- appendix.texi \
- basic.texi \
- bgpd.texi \
- isisd.texi \
- filter.texi \
- vnc.texi \
- babeld.texi \
- install.texi \
- ipv6.texi \
- kernel.texi \
- main.texi \
- nhrpd.texi \
- eigrpd.texi \
- ospf6d.texi \
- ospfd.texi \
- overview.texi \
- protocol.texi \
- ripd.texi \
- ripngd.texi \
- routemap.texi \
- snmp.texi \
- vtysh.texi \
- routeserver.texi \
- $(figures_png) \
- snmptrap.texi \
- ospf_fundamentals.texi \
- isisd.texi $(figures_txt) \
- rpki.texi \
- pimd.texi \
- #END
-
-.png.eps:
- $(PNGTOEPS) $< "$@"
-
-.png.pdf:
- $(PNGTOPDF) $< "$@"
-
-.dia.png:
- $(DIATOPNG) "$@" $<
-
-man_MANS = frr.1 frr-args.8
+# Tell Automake to invoke 'make' in the manpages directory with argument 'man'
+SUBDIRS = manpages
+AM_MAKEFLAGS = man
+
+MANPAGE_BUILDDIR = manpages/_build/man
+
+# Once that is done these will all exist
+man_MANS = $(MANPAGE_BUILDDIR)/frr.1
if PIMD
-man_MANS += pimd.8
-man_MANS += mtracebis.8
+man_MANS += $(MANPAGE_BUILDDIR)/pimd.8
++man_MANS += $(MANPAGE_BUILDDIR)/mtracebis.8
endif
if BGPD
endif
if EIGRPD
-man_MANS += eigrpd.8
+man_MANS += $(MANPAGE_BUILDDIR)/eigrpd.8
endif
-EXTRA_DIST = BGP-TypeCode draft-zebra-00.ms draft-zebra-00.txt \
- \
- bgpd.8.in \
- isisd.8.in \
- ospf6d.8.in \
- ospfclient.8.in \
- ospfd.8.in \
- ldpd.8.in \
- ripd.8.in \
- ripngd.8.in \
- pimd.8.in \
- mtracebis.8.in \
- nhrpd.8.in \
- vtysh.1.in \
- watchfrr.8.in \
- zebra.8.in \
- frr.1.in \
- eigrpd.8.in \
- \
- mpls/ChangeLog.opaque.txt mpls/cli_summary.txt \
- mpls/opaque_lsa.txt mpls/ospfd.conf \
- $(figures_sources) $(figures_png) $(figures_txt)
-
-draft-zebra-00.txt: draft-zebra-00.ms
- groff -T ascii -ms $< > $@
-
-# Ensure that all of the figures are copied into the html directory
-html-local: $(HTMLS)
- if test -d $(HTMLS) ; then \
- cp -p $(figures_png) $(HTMLS) ; \
- else \
- echo "$(HTMLS) is not a directory. Make it so, the rerun make."; \
- fi
+# handled by subdir target
+man: ;
+
+# explicit targets
+frr.info:
+ $(MAKE) -C user info
+
+user.pdf:
+ $(MAKE) -C user latexpdf
+
+user.html:
+ $(MAKE) -C user html
+
+developer.pdf:
+ $(MAKE) -C developer latexpdf
+
+developer.html:
+ $(MAKE) -C developer html
+
+# info target, handled by automake installation
+install-data-local: frr.info
+ install -d ${DESTDIR}${infodir}
+ gzip < user/_build/texinfo/frr.info > ${DESTDIR}${infodir}/frr.info.gz
+ install-info user/_build/texinfo/frr.info ${DESTDIR}${infodir}/dir
+
+# include sources for shipped docs
+EXTRA_DIST = manpages/defines.rst \
+ manpages/ldpd.rst \
+ manpages/index.rst \
+ manpages/bgpd.rst \
+ manpages/watchfrr.rst \
+ manpages/ospfclient.rst \
+ manpages/ripd.rst \
+ manpages/zebra.rst \
+ manpages/epilogue.rst \
+ manpages/eigrpd.rst \
+ manpages/isisd.rst \
+ manpages/ospf6d.rst \
+ manpages/common-options.rst \
+ manpages/ospfd.rst \
+ manpages/vtysh.rst \
+ manpages/nhrpd.rst \
+ manpages/pimd.rst \
++ manpages/mtracebis.rst \
+ manpages/ripngd.rst \
+ manpages/frr.rst \
+ manpages/conf.py \
+ manpages/Makefile \
+ developer/Building_FRR_on_NetBSD7.rst \
+ developer/ldpd-basic-test-setup.md \
+ developer/cli.rst \
+ developer/index.rst \
+ developer/library.rst \
+ developer/memtypes.rst \
+ developer/bgpd.rst \
+ developer/draft-zebra-00.ms \
+ developer/dev-modules.md \
+ developer/conf.py \
+ developer/next-hop-tracking.rst \
+ developer/Building_FRR_on_FreeBSD11.rst \
+ developer/building.rst \
+ developer/Building_FRR_on_CentOS6.rst \
+ developer/Building_FRR_on_Ubuntu1604.rst \
+ developer/ospf-api.rst \
+ developer/ospf-sr.rst \
+ developer/Building_FRR_on_OpenBSD6.rst \
+ developer/Building_FRR_on_Debian8.rst \
+ developer/Building_FRR_on_NetBSD6.rst \
+ developer/Building_FRR_on_Debian9.rst \
+ developer/Building_FRR_on_LEDE-OpenWRT.rst \
+ developer/modules.rst \
+ developer/Building_FRR_on_FreeBSD10.rst \
+ developer/Building_FRR_on_Ubuntu1204.rst \
+ developer/Building_FRR_on_Fedora24.rst \
+ developer/Makefile \
+ developer/Building_FRR_on_FreeBSD9.rst \
+ developer/BGP-TypeCode \
+ developer/Building_FRR_on_OmniOS.rst \
+ developer/Building_FRR_on_CentOS7.rst \
+ developer/hooks.rst \
+ developer/OSPF-API.md \
+ developer/workflow.rst \
+ developer/Building_FRR_on_Ubuntu1404.rst \
+ user/ospf_fundamentals.rst \
+ user/routemap.rst \
+ user/index.rst \
+ user/conf.py \
+ user/ipv6.rst \
+ user/ripd.rst \
+ user/vnc.rst \
+ user/zebra.rst \
+ user/installation.rst \
+ user/overview.rst \
+ user/protocol.rst \
+ user/eigrpd.rst \
+ user/rpki.rst \
+ user/kernel.rst \
+ user/isisd.rst \
+ user/ospf6d.rst \
+ user/Useful_Sysctl_Settings.md \
+ user/basic.rst \
+ user/ospfd.rst \
+ user/vtysh.rst \
+ user/filter.rst \
+ user/nhrpd.rst \
+ user/Makefile \
+ user/routeserver.rst \
+ user/appendix.rst \
+ user/bgp.rst \
+ user/babeld.rst \
+ user/snmp.rst \
+ user/pim.rst \
+ user/ripngd.rst \
+ user/snmptrap.rst \
+ user/glossary.rst \
+ mpls/ChangeLog.opaque.txt \
+ mpls/ospfd.conf \
+ mpls/cli_summary.txt \
+ mpls/opaque_lsa.txt \
+ figures/frr-logo.png \
+ figures/fig-vnc-commercial-route-reflector.dia \
+ figures/ospf_api_msghdr.png \
+ figures/fig-normal-processing.txt \
+ figures/fig-vnc-gw-rr.txt \
+ figures/fig-vnc-mesh.dia \
+ figures/frr-logo-medium.png \
+ figures/git_branches.svg \
+ figures/fig-vnc-commercial-route-reflector.txt \
+ figures/fig_topologies_rs.txt \
+ figures/git_branches.png \
+ figures/fig-vnc-mesh.txt \
+ figures/ospf_api_msgs1.png \
+ figures/fig-vnc-redundant-route-reflectors.txt \
+ figures/fig-vnc-commercial-route-reflector.png \
+ figures/fig-vnc-gw.png \
+ figures/fig_topologies_rs.png \
+ figures/fig_topologies_full.txt \
+ figures/fig-vnc-frr-route-reflector.txt \
+ figures/fig-normal-processing.dia \
+ figures/fig-vnc-redundant-route-reflectors.png \
+ figures/fig-vnc-frr-route-reflector.dia \
+ figures/fig_topologies_full.png \
+ figures/fig-vnc-redundant-route-reflectors.dia \
+ figures/fig-normal-processing.png \
+ figures/fig-rs-processing.dia \
+ figures/ospf_api_msgs2.png \
+ figures/fig-vnc-gw.dia \
+ figures/fig-rs-processing.txt \
+ figures/frr-logo-icon.png \
+ figures/ospf_api_architecture.png \
+ figures/fig-vnc-gw.txt \
+ figures/fig-rs-processing.png \
+ figures/frr-icon.svg \
+ figures/fig_topologies_rs.dia \
+ figures/fig-vnc-frr-route-reflector.png \
+ figures/fig-vnc-gw-rr.png \
+ figures/fig-vnc-gw-rr.dia \
+ figures/fig_topologies_full.dia \
+ figures/frr-logo-small.png \
+ figures/fig-vnc-mesh.png
--- /dev/null
- perl-XML-LibXML python-devel python-sphinx
+CentOS 7
+========================================
+
+(As an alternative to this installation, you may prefer to create a FRR
+rpm package yourself and install that package instead. See instructions
+in redhat/README.rpm\_build.md on how to build a rpm package)
+
+CentOS 7 restrictions:
+----------------------
+
+- MPLS is not supported on ``CentOS 7`` with default kernel. MPLS
+ requires Linux Kernel 4.5 or higher (LDP can be built, but may have
+ limited use without MPLS)
+
+Install required packages
+-------------------------
+
+Add packages:
+
+::
+
+ sudo yum install git autoconf automake libtool make gawk \
+ readline-devel texinfo net-snmp-devel groff pkgconfig \
+ json-c-devel pam-devel bison flex pytest c-ares-devel \
++ perl-XML-LibXML python-devel systemd-devel python-sphinx
+
+Get FRR, compile it and install it (from Git)
+---------------------------------------------
+
+**This assumes you want to build and install FRR from source and not
+using any packages**
+
+Add frr groups and user
+~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo groupadd -g 92 frr
+ sudo groupadd -r -g 85 frrvt
+ sudo useradd -u 92 -g 92 -M -r -G frrvt -s /sbin/nologin \
+ -c "FRR FRRouting suite" -d /var/run/frr frr
+
+Download Source, configure and compile it
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(You may prefer different options on configure statement. These are just
+an example.)
+
+::
+
+ git clone https://github.com/frrouting/frr.git frr
+ cd frr
+ ./bootstrap.sh
+ ./configure \
+ --bindir=/usr/bin \
+ --sbindir=/usr/lib/frr \
+ --sysconfdir=/etc/frr \
+ --libdir=/usr/lib/frr \
+ --libexecdir=/usr/lib/frr \
+ --localstatedir=/var/run/frr \
+ --with-moduledir=/usr/lib/frr/modules \
+ --enable-pimd \
+ --enable-snmp=agentx \
+ --enable-multipath=64 \
+ --enable-ospfclient=yes \
+ --enable-ospfapi=yes \
+ --enable-user=frr \
+ --enable-group=frr \
+ --enable-vty-group=frrvt \
+ --enable-rtadv \
++ --enable-systemd=yes \
+ --disable-exampledir \
+ --enable-watchfrr \
+ --disable-ldpd \
+ --enable-fpm \
+ --enable-nhrpd \
+ --enable-eigrpd \
+ --enable-babeld \
+ --with-pkg-git-version \
+ --with-pkg-extra-version=-MyOwnFRRVersion
+ make
+ make check
+ sudo make install
+
+Create empty FRR configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo mkdir /var/log/frr
+ sudo mkdir /etc/frr
+ sudo touch /etc/frr/zebra.conf
+ sudo touch /etc/frr/bgpd.conf
+ sudo touch /etc/frr/ospfd.conf
+ sudo touch /etc/frr/ospf6d.conf
+ sudo touch /etc/frr/isisd.conf
+ sudo touch /etc/frr/ripd.conf
+ sudo touch /etc/frr/ripngd.conf
+ sudo touch /etc/frr/pimd.conf
+ sudo touch /etc/frr/nhrpd.conf
+ sudo touch /etc/frr/eigrpd.conf
+ sudo touch /etc/frr/babeld.conf
+ sudo chown -R frr:frr /etc/frr/
+ sudo touch /etc/frr/vtysh.conf
+ sudo chown frr:frrvt /etc/frr/vtysh.conf
+ sudo chmod 640 /etc/frr/*.conf
+
+Install daemon config file
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo install -p -m 644 redhat/daemons /etc/frr/
+ sudo chown frr:frr /etc/frr/daemons
+
+Edit /etc/frr/daemons as needed to select the required daemons
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Look for the section with ``watchfrr_enable=...`` and ``zebra=...`` etc.
+Enable the daemons as required by changing the value to ``yes``
+
+Enable IP & IPv6 forwarding
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Create a new file ``/etc/sysctl.d/90-routing-sysctl.conf`` with the
+following content:
+
+::
+
+ # Sysctl for routing
+ #
+ # Routing: We need to forward packets
+ net.ipv4.conf.all.forwarding=1
+ net.ipv6.conf.all.forwarding=1
+
+Load the modifed sysctl's on the system:
+
+::
+
+ sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf
+
+Install frr Service and redhat init files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo install -p -m 644 redhat/frr.service /usr/lib/systemd/system/frr.service
+ sudo install -p -m 755 redhat/frr.init /usr/lib/frr/frr
+
+Register the systemd files
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo systemctl preset frr.service
+
+Enable required frr at startup
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo systemctl enable frr
+
+Reboot or start FRR manually
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ sudo systemctl start frr
--- /dev/null
+# -*- coding: utf-8 -*-
+#
+# FRR documentation build configuration file, created by
+# sphinx-quickstart on Tue Jan 31 16:00:52 2017.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+import re
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+needs_sphinx = '1.0'
+
+# prolog for various variable substitutions
+rst_prolog = ''
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = ['sphinx.ext.todo']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst']
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'FRR'
+copyright = u'2017, FRR'
+author = u'Kunihiro Ishiguro, et al.'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+
+# The short X.Y version.
+version = u'?.?'
+# The full version, including alpha/beta/rc tags.
+release = u'?.?-?'
+
+
+# -----------------------------------------------------------------------------
+# Extract values from codebase for substitution into docs.
+# -----------------------------------------------------------------------------
+
+# Various installation prefixes. Reasonable defaults are set where possible.
+# Values are overridden by logic below.
+replace_vars = {
+ 'AUTHORS': author,
+ 'COPYRIGHT_YEAR': '1999-2005',
+ 'COPYRIGHT_STR': None,
+ 'PACKAGE_NAME': project.lower(),
+ 'PACKAGE_TARNAME': project.lower(),
+ 'PACKAGE_STRING': None,
+ 'PACKAGE_URL': 'https://frrouting.org/',
+ 'PACKAGE_VERSION': None,
+ 'INSTALL_PREFIX_ETC': None,
+ 'INSTALL_PREFIX_SBIN': None,
+ 'INSTALL_PREFIX_STATE': None,
+ 'INSTALL_PREFIX_MODULES': None,
+ 'INSTALL_USER': None,
+ 'INSTALL_GROUP': None,
+ 'INSTALL_VTY_GROUP': None,
+ 'GROUP': 'frr',
+ 'USER': 'frr',
+}
+
+# extract version information, installation location, other stuff we need to
+# use when building final documents
+val = re.compile('^S\["([^"]+)"\]="(.*)"$')
+with open('../../config.status', 'r') as cfgstatus:
+ for ln in cfgstatus.readlines():
+ m = val.match(ln)
+ if not m or m.group(1) not in replace_vars.keys(): continue
+ replace_vars[m.group(1)] = m.group(2)
+
+# manually fill out some of these we can't get from config.status
+replace_vars['COPYRIGHT_STR'] = "Copyright (c)"
+replace_vars['COPYRIGHT_STR'] += ' {0}'.format(replace_vars['COPYRIGHT_YEAR'])
+replace_vars['COPYRIGHT_STR'] += ' {0}'.format(replace_vars['AUTHORS'])
+release = replace_vars['PACKAGE_VERSION']
+version = release.split('-')[0]
+
+# add substitutions to prolog
+for key, value in replace_vars.items():
+ rst_prolog += '.. |{0}| replace:: {1}\n'.format(key, value)
+
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build', 'common-options.rst', 'epilogue.rst', 'defines.rst']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'sphinx_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Language to be used for generating the HTML full-text search index.
+# Sphinx supports the following languages:
+# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
+# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
+#html_search_language = 'en'
+
+# A dictionary with options for the search language support, empty by default.
+# Now only 'ja' uses this config value
+#html_search_options = {'type': 'default'}
+
+# The name of a javascript file (relative to the configuration directory) that
+# implements a search results scorer. If empty, the default will be used.
+#html_search_scorer = 'scorer.js'
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'FRRdoc'
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+
+# Latex figure (float) alignment
+#'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, 'FRR.tex', u'FRR User Manual',
+ u'FRR', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+fwfrr = "{0} routing engine for use with FRRouting."
+
+man_pages = [
+ ('bgpd', 'bgpd', fwfrr.format("a BGPv4, BGPv4+, BGPv4- "), [], 8),
+ ('eigrpd', 'eigrpd', fwfrr.format("an EIGRP "), [], 8),
+ ('ospf6d', 'ospf6d', fwfrr.format("an OSPFv3 "), [], 8),
+ ('ospfd', 'ospfd', fwfrr.format("an OSPFv2 "), [], 8),
+ ('isisd', 'isisd', fwfrr.format("an IS-IS "), [], 8),
+ ('ospfclient', 'ospfclient', 'an example ospf-api client', [], 8),
+ ('ldpd', 'ldpd', fwfrr.format("an LDP "), [], 8),
+ ('nhrpd', 'nhrpd', fwfrr.format("a Next Hop Routing Protocol "), [], 8),
+ ('pimd', 'pimd', fwfrr.format("a PIM "), [], 8),
++ ('mtracebis', 'mtracebis', "a multicast trace client", [], 8),
+ ('ripd', 'ripd', fwfrr.format("a RIP "), [], 8),
+ ('ripngd', 'ripngd', fwfrr.format("a RIPNG "), [], 8),
+ ('zebra', 'zebra', 'a routing manager for use with associated FRRouting components.', [], 8),
+ ('watchfrr', 'watchfrr', 'a program to monitor the status of FRRouting daemons', [], 8),
+ ('vtysh', 'vtysh', 'an integrated shell for FRRouting.', [], 1),
+ ('frr', 'frr', 'a systemd interaction script', [], 1),
+]
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
+
+# custom extensions here
--- /dev/null
- .. |seealso-programs| replace:: zebra(8), vtysh(1), ripd(8), ripngd(8), ospfd(8), ospf6d(8), bgpd(8), isisd(8), babeld(8), nhrpd(8), pimd(8), ldpd(8), eigrpd(8)
+.. |synopsis-options| replace:: [-d|-t|-dt] [-C] [-f config-file] [-i pid-file] [-z zclient-path] [-u user] [-g group] [-A vty-addr] [-P vty-port] [-M module[:options]] [-N pathspace] [--vty_socket vty-path] [--moduledir module-path]
+.. |synopsis-options-hv| replace:: [-h] [-v]
++.. |seealso-programs| replace:: zebra(8), vtysh(1), ripd(8), ripngd(8), ospfd(8), ospf6d(8), bgpd(8), isisd(8), babeld(8), nhrpd(8), pimd(8), ldpd(8), eigrpd(8), mtracebis(8)
--- /dev/null
- zebra(8), vtysh(1), ripd(8), ripngd(8), ospfd(8), ospf6d(8), bgpd(8), isisd(8), babeld(8), nhrpd(8), pimd(8), ldpd(8), eigrpd(8)
+WARNING
+=======
+This man page is intended to be a quick reference for command line options. The definitive document is the info file |PACKAGE_STRING| or the documentation available on the project website at |PACKAGE_URL|.
+
+DIAGNOSTICS
+===========
+The daemon may log to standard output, to a VTY, to a log file, or through syslog to the system logs. FRR supports many debugging options, see the Info file, web docs or source for details.
+
+SEE ALSO
+========
++|seealso-programs|
+|PACKAGE_URL|
+
+BUGS
+====
+FRR eats bugs for breakfast. If you have food for the maintainers, please email <dev@lists.frrouting.org>.
--- /dev/null
+***
+FRR
+***
+
++.. include:: defines.rst
++
+SYNOPSIS
+========
+frr [ start ]
+
+frr [ stop ]
+
+frr [ reload ]
+
+frr [ restart ]
+
+frr [ status ]
+
+
+DESCRIPTION
+===========
+frr is a systemd interaction script for the FRRouting routing engine.
+
+OPTIONS
+=======
+Options available for the frr command:
+
+start
+ Start enabled FRR daemons
+
+stop
+ Stop enabled FRR daemons
+
+reload
+ Reload modified configuration files
+
+restart
+ Stop all running daemons and then restart them
+
+status
+ Status of all the daemon
+
+.. include:: epilogue.rst
+
--- /dev/null
+.. FRR documentation master file, created by
+ sphinx-quickstart on Wed Jan 31 12:00:55 2018.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Welcome to FRR's documentation!
+===============================
+
+.. toctree::
+ :maxdepth: 2
+
+ bgpd
+ eigrpd
+ isisd
+ ldpd
+ nhrpd
+ ospf6d
+ ospfclient
+ ospfd
+ pimd
++ mtracebis
+ ripd
+ ripngd
+ watchfrr
+ zebra
+ vtysh
+ frr
--- /dev/null
--- /dev/null
++*********
++MTRACEBIS
++*********
++
++.. include:: defines.rst
++.. |PROGRAM| replace:: mtracebis
++
++SYNOPSIS
++========
++|PROGRAM| |synopsis-options-hv|
++
++|PROGRAM| <multicast source>
++
++DESCRIPTION
++===========
++|PROGRAM| is a program to initiate multicast traceroute, or "mtrace", queries.
++
++The initial version of the program requires multicast source IP address and
++initiates a weak traceroute across the network. This tests whether the
++interfaces towards the source are multicast enabled. The first query sent is a
++full query, capable of crossing the network all the way to the source. If this
++fails, hop-by-hop queries are initiated.
++
++Hop-by-hop queries start by requesting only a response from the nearest router.
++Following that, next query is extended to the next two routers, and so on...
++until a set of routers is tested for connectivity.
++
++FILES
++=====
++
++|INSTALL_PREFIX_SBIN|/|PROGRAM|
++ The default location of the |PROGRAM| binary.
++
++.. include:: epilogue.rst
++
++AUTHORS
++=======
++
++Mladen Sablic
--- /dev/null
+**********
+OSPFCLIENT
+**********
+
++.. include:: defines.rst
++
+SYNOPSIS
+========
+ospfclient <ospfd> <lsatype> <opaquetype> <opaqueid> <ifaddr> <areaid>
+
+DESCRIPTION
+===========
+ospfclient is an example ospf-api client to test the ospfd daemon.
+
+OPTIONS
+=======
+
+.. option:: ospfd
+
+ A router where the API-enabled OSPF daemon is running.
+
+.. option:: lsatype
+
+ The value has to be either "9", "10", or "11", depending on the flooding scope.
+
+.. option:: opaquetype
+
+ The value has to be in the range of 0-255 (for example, experimental applications might use opaquetype larger than 128).
+
+.. option:: opaqueid
+
+ Arbitrary application instance (24 bits).
+
+.. option:: ifaddr
+
+ Interface IP address for type 9, otherwise it will be ignored.
+
+.. option:: areaid
+
+ Area in the IP address format for type 10, otherwise it will be ignored.
+
+
+.. include:: epilogue.rst
--- /dev/null
+*****
+ZEBRA
+*****
+
+.. include:: defines.rst
+.. |DAEMON| replace:: zebra
+
+SYNOPSIS
+========
+|DAEMON| |synopsis-options-hv|
+
+|DAEMON| |synopsis-options|
+
+DESCRIPTION
+===========
+|DAEMON| is a routing manager that implements the zebra route engine. zebra supports all protocol daemons in the FRRouting suite.
+
+OPTIONS
+=======
+OPTIONS available for the |DAEMON| command:
+
+.. include:: common-options.rst
+
+.. option:: -b, --batch
+
+ Runs in batch mode, zebra parses its config and exits.
+
+.. option:: -k, --keep_kernel
+
+ On startup, don't delete self inserted routes.
+
+.. option:: -s, --nl-bufsize <netlink-buffer-size>
+
+ Set netlink receive buffer size. There are cases where zebra daemon can't handle flood of netlink messages from kernel. If you ever see "recvmsg overrun" messages in zebra log, you are in trouble.
+
+ Solution is to increase receive buffer of netlink socket. Note that kernel < 2.6.14 doesn't allow to increase it over maximum value defined in /proc/sys/net/core/rmem_max. If you want to do it, you have to increase maximum before starting zebra.
+
+ Note that this affects Linux only.
+
++
++.. option:: -n, --vrfwnetns
++
++ Enable namespace VRF backend. By default, the VRF backend relies on VRF-lite support from the Linux kernel. This option permits discovering Linux named network namespaces and mapping it to FRR VRF contexts.
++
+FILES
+=====
+
+|INSTALL_PREFIX_SBIN|/|DAEMON|
+ The default location of the |DAEMON| binary.
+
+|INSTALL_PREFIX_ETC|/|DAEMON|.conf
+ The default location of the |DAEMON| config file.
+
+$(PWD)/|DAEMON|.log
+ If the |DAEMON| process is configured to output logs to a file, then you
+ will find this file in the directory where you started |DAEMON|.
+
+.. include:: epilogue.rst
+