Merge pull request #2913 from opensourcerouting/non-recursive-prep

pre-final non-recursive make
This commit is contained in:
Quentin Young 2018-08-31 11:43:59 -04:00 committed by GitHub
commit 04f04f0fa5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 1003 additions and 866 deletions

View File

@ -8,6 +8,62 @@ AM_CPPFLAGS += -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \
DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -DCONFDATE=$(CONFDATE)
LIBCAP = @LIBCAP@
# these two targets are provided to easily grab autoconf/Makefile variables
# you can use either:
# eval `make VARFD=3 shvar-CFLAGS 3>&1 1>&2`
# CFLAGS="`make VARFD=3 var-CFLAGS 3>&1 1>&2`"
# where the former can be used to set several variables at once. Note the
# fd redirections -- this is to prevent garbage from make rebuilding other
# targets from causing issues.
.PHONY: shvar-% var-%
VARFD ?= 1
shvar-%:
@echo "$*=\"$($*)\"" >&$(VARFD)
var-%:
@echo "$($*)" >&$(VARFD)
# overwriting these vars breaks cross-compilation. let's be helpful and warn.
#
# note: "#AUTODERP# " will be removed from Makefile by configure. These are
# GNU make directives & automake will f*ck them up by trying to process them
# as automake directives.
#
#AUTODERP# null=
#AUTODERP# SPACE=$(null) $(null)
#AUTODERP# mkcheck_CC = $(findstring $(SPACE)CC=, $(SPACE)$(MAKEOVERRIDES))
#AUTODERP# mkcheck_CFLAGS = $(findstring $(SPACE)CFLAGS=, $(SPACE)$(MAKEOVERRIDES))
#AUTODERP# mkcheck_CPPFLAGS = $(findstring $(SPACE)CPPFLAGS=,$(SPACE)$(MAKEOVERRIDES))
#AUTODERP# mkcheck_CCLD = $(findstring $(SPACE)CCLD=, $(SPACE)$(MAKEOVERRIDES))
#AUTODERP# mkcheck_LD = $(findstring $(SPACE)LD=, $(SPACE)$(MAKEOVERRIDES))
#AUTODERP# mkcheck_LDFLAGS = $(findstring $(SPACE)LDFLAGS=, $(SPACE)$(MAKEOVERRIDES))
#AUTODERP# #
#AUTODERP# ifneq ($(mkcheck_CC),)
#AUTODERP# $(warning WARNING: you have overwritten the "CC" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# ifneq ($(mkcheck_CFLAGS),)
#AUTODERP# $(warning WARNING: you have overwritten the "CFLAGS" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# ifneq ($(mkcheck_CPPFLAGS),)
#AUTODERP# $(warning WARNING: you have overwritten the "CPPFLAGS" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# ifneq ($(mkcheck_CCLD),)
#AUTODERP# $(warning WARNING: you have overwritten the "CCLD" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# ifneq ($(mkcheck_LD),)
#AUTODERP# $(warning WARNING: you have overwritten the "LD" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# ifneq ($(mkcheck_LDFLAGS),)
#AUTODERP# $(warning WARNING: you have overwritten the "LDFLAGS" variable on the make command line.)
#AUTODERP# endif
#AUTODERP# #
#AUTODERP# ifneq ($(mkcheck_CC)$(mkcheck_CFLAGS)$(mkcheck_CPPFLAGS)$(mkcheck_CCLD)$(mkcheck_LD)$(mkcheck_LDFLAGS),)
#AUTODERP# $(warning ------)
#AUTODERP# $(warning While overwriting these variables works most of the time, it is not recommended and can cause confusing build errors.)
#AUTODERP# $(warning This is especially problematic when cross-compiling, since tools that run on the build system during the build process will not be compiled correctly.)
#AUTODERP# $(warning All of these variables should be supplied to 'configure', and they will be remembered and correctly applied during 'make'.)
#AUTODERP# $(warning ------)
#AUTODERP# endif
EXTRA_DIST =
BUILT_SOURCES =
CLEANFILES =
@ -20,11 +76,13 @@ sbin_SCRIPTS =
noinst_PROGRAMS =
noinst_HEADERS =
noinst_LIBRARIES =
nodist_noinst_DATA =
lib_LTLIBRARIES =
module_LTLIBRARIES =
pkginclude_HEADERS =
nodist_pkginclude_HEADERS =
dist_examples_DATA =
man_MANS =
## libtool, the self-made GNU scourge
## ... this should fix relinking
@ -34,6 +92,10 @@ $(AUTOMAKE_DUMMY)install-moduleLTLIBRARIES: install-libLTLIBRARIES
$(AUTOMAKE_DUMMY)install-binPROGRAMS: install-libLTLIBRARIES
$(AUTOMAKE_DUMMY)install-sbinPROGRAMS: install-libLTLIBRARIES
include doc/subdir.am
include doc/user/subdir.am
include doc/manpages/subdir.am
include doc/developer/subdir.am
include include/subdir.am
include lib/subdir.am
include zebra/subdir.am
@ -41,6 +103,8 @@ include watchfrr/subdir.am
include qpb/subdir.am
include fpm/subdir.am
include tools/subdir.am
include debianpkg/subdir.am
include solaris/subdir.am
include ripd/subdir.am
include ripngd/subdir.am
@ -60,14 +124,13 @@ include bfdd/subdir.am
SUBDIRS = . @LIBRFP@ @RFPTEST@ \
@BGPD@ \
@VTYSH@ @DOC@ \
@SOLARIS@ tests
@VTYSH@ \
tests
DIST_SUBDIRS = . bgpd \
vtysh doc tests \
solaris bgpd/rfp-example/librfp \
vtysh tests \
bgpd/rfp-example/librfp \
bgpd/rfp-example/rfptest \
debianpkg \
# end
if PKGSRC
@ -108,6 +171,11 @@ EXTRA_DIST += \
\
vtysh/Makefile.am \
vtysh/Makefile.in \
\
doc/Makefile \
doc/developer/Makefile \
doc/manpages/Makefile \
doc/user/Makefile \
# end
ACLOCAL_AMFLAGS = -I m4

View File

@ -2,8 +2,8 @@
# Automake fragment intended to be shared by Makefile.am files in the
# tree. When used, should be included at the very top of the file.
#
AM_CPPFLAGS = @ASAN_FLAGS@ @TSAN_FLAGS@ @MSAN_FLAGS@ @WERROR@
AM_CFLAGS = @ASAN_FLAGS@ @TSAN_FLAGS@ @MSAN_FLAGS@ @WERROR@
AM_CPPFLAGS = @ASAN_FLAGS@ @TSAN_FLAGS@ @MSAN_FLAGS@
AM_CFLAGS = @ASAN_FLAGS@ @TSAN_FLAGS@ @MSAN_FLAGS@ $(WERROR)
AM_V_CLIPPY = $(am__v_CLIPPY_$(V))
am__v_CLIPPY_ = $(am__v_CLIPPY_$(AM_DEFAULT_VERBOSITY))

View File

@ -132,25 +132,29 @@ dnl - specifically, options to control warnings
AC_USE_SYSTEM_EXTENSIONS
AC_DEFUN([AC_C_FLAG], [{
m4_pushdef([cachename],[m4_translit([frr_cv_$1],[ =-],[___])])
AC_CACHE_CHECK([[whether $CC supports $1]], cachename, [
AC_LANG_PUSH(C)
ac_c_flag_save="$CFLAGS"
CFLAGS="$CFLAGS $1"
AC_MSG_CHECKING([[whether $CC supports $1]])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[]])],
[
AC_MSG_RESULT([yes])
m4_if([$3], [], [], [
CFLAGS="$ac_c_flag_save"
$3
])
cachename=yes
], [
CFLAGS="$ac_c_flag_save"
AC_MSG_RESULT([no])
$2
cachename=no
])
CFLAGS="$ac_c_flag_save"
AC_LANG_POP(C)
}])
])
if test "${cachename}" = yes; then
m4_if([$3], [], [CFLAGS="$CFLAGS $1"], [$3])
else
:
$2
fi
m4_popdef([cachename])
}])
AC_DEFUN([AC_LINK_IFELSE_FLAGS], [{
AC_LANG_PUSH(C)
@ -343,6 +347,8 @@ AC_ARG_ENABLE(vtysh,
AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for FRR]))
AC_ARG_ENABLE(doc,
AS_HELP_STRING([--disable-doc], [do not build docs]))
AC_ARG_ENABLE(doc-html,
AS_HELP_STRING([--enable-doc-html], [build HTML docs]))
AC_ARG_ENABLE(zebra,
AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
AC_ARG_ENABLE(bgpd,
@ -525,6 +531,46 @@ AM_CONDITIONAL([FPM], [test "x$enable_fpm" = "xyes"])
#
# Python for clippy
#
AC_DEFUN([FRR_PYTHON_CHECK_WORKING], [
AC_MSG_CHECKING([whether we found a working Python version])
AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
#error python too old
#endif
int main(void);
],
[
{
Py_Initialize();
return 0;
}
])], [
# some python installs are missing the zlib dependency...
PYTHON_LIBS="${PYTHON_LIBS} -lz"
AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
#error python too old
#endif
int main(void);
],
[
{
Py_Initialize();
return 0;
}
])], [
m4_if([$1], [], [
PYTHONCONFIG=""
unset PYTHON_LIBS
unset PYTHON_CFLAGS
], [$1])
])
])
])
AS_IF([test "$host" = "$build"], [
PYTHONCONFIG=""
@ -532,60 +578,40 @@ AS_IF([test "$host" = "$build"], [
# 1. try python3, but respect the user's preference on which minor ver
# 2. try python, which might be py3 or py2 again on the user's preference
# 3. try python2 (can really only be 2.7 but eh)
# 4. try 3.5 > 3.4 > 3.3 > 3.2 > 2.7 through pkg-config (no user pref)
# 4. try 3.6 > 3.5 > 3.4 > 3.3 > 3.2 > 2.7 through pkg-config (no user pref)
#
# (AX_PYTHON_DEVEL has no clue about py3 vs py2)
# (AX_PYTHON does not do what we need)
AC_CHECK_TOOLS([PYTHONCONFIG], [python3-config python-config python2-config])
AC_CHECK_TOOLS([PYTHONCONFIG], [ \
python3-config \
python-config \
python2-config \
python3.6-config \
python3.5-config \
python3.4-config \
python3.3-config \
python3.2-config \
python2.7-config ])
if test -n "$PYTHONCONFIG"; then
PYTHON_CFLAGS="`\"${PYTHONCONFIG}\" --includes`"
PYTHON_LIBS="`\"${PYTHONCONFIG}\" --libs`"
PYTHON_LIBS="`\"${PYTHONCONFIG}\" --ldflags`"
AC_MSG_CHECKING([whether we found a working Python version])
AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
#error python too old
#endif
int main(void);
],
[
{
Py_Initialize();
return 0;
}
])], [
PYTHONCONFIG=""
unset PYTHON_LIBS
unset PYTHON_CFLAGS
])
FRR_PYTHON_CHECK_WORKING([])
fi
if test -z "$PYTHONCONFIG"; then
PKG_CHECK_MODULES([PYTHON], python-3.5, [], [
PKG_CHECK_MODULES([PYTHON], python-3.4, [], [
PKG_CHECK_MODULES([PYTHON], python-3.3, [], [
PKG_CHECK_MODULES([PYTHON], python-3.2, [], [
PKG_CHECK_MODULES([PYTHON], python-2.7, [], [
AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
])])])])])
PKG_CHECK_MODULES([PYTHON], python-3.6, [], [
PKG_CHECK_MODULES([PYTHON], python-3.5, [], [
PKG_CHECK_MODULES([PYTHON], python-3.4, [], [
PKG_CHECK_MODULES([PYTHON], python-3.3, [], [
PKG_CHECK_MODULES([PYTHON], python-3.2, [], [
PKG_CHECK_MODULES([PYTHON], python-2.7, [], [
AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
])])])])])])
AC_MSG_CHECKING([whether we found a working Python version])
AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
#error python too old
#endif
int main(void);
],
[
{
Py_Initialize();
return 0;
}
])], [
FRR_PYTHON_CHECK_WORKING([
AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
])
fi
@ -1313,12 +1339,9 @@ FRR_INCLUDES
])dnl
dnl disable doc check
if test "${enable_doc}" = "no";then
DOC=""
else
AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
DOC="doc"
fi
AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
AM_CONDITIONAL(DOC, test "${enable_doc}" != "no")
AM_CONDITIONAL(DOC_HTML, test "${enable_doc_html}" = "yes")
dnl --------------------
dnl Daemon disable check
@ -1434,7 +1457,6 @@ fi
# set
AM_CONDITIONAL([ENABLE_BGP_VNC], [test x${enable_bgp_vnc} != xno])
AC_SUBST(DOC)
AC_SUBST(RFPTEST)
AC_SUBST(LIBRFP)
AC_SUBST(RFPINC)
@ -1518,8 +1540,8 @@ AC_SEARCH_LIBS(dlopen, [dl dld], [], [
AC_CHECK_HEADERS([link.h])
AC_MSG_CHECKING([for dlinfo(RTLD_DI_ORIGIN)])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
AC_CACHE_CHECK([for dlinfo(RTLD_DI_ORIGIN)], [frr_cv_rtld_di_origin], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h>
#ifdef HAVE_LINK_H
#include <link.h>
@ -1529,14 +1551,17 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
char origin[1];
dlinfo (NULL, RTLD_DI_ORIGIN, &origin);
]])], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DLINFO_ORIGIN, 1, [Have dlinfo RTLD_DI_ORIGIN])
], [
AC_MSG_RESULT(no)
frr_cv_rtld_di_origin=yes
], [
frr_cv_rtld_di_origin=no
])
])
if test "$frr_cv_rtld_di_origin" = yes; then
AC_DEFINE(HAVE_DLINFO_ORIGIN, 1, [Have dlinfo RTLD_DI_ORIGIN])
fi
AC_MSG_CHECKING([for dlinfo(RTLD_DI_LINKMAP)])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
AC_CACHE_CHECK([for dlinfo(RTLD_DI_LINKMAP)], [frr_cv_rtld_di_linkmap], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h>
#ifdef HAVE_LINK_H
#include <link.h>
@ -1546,12 +1571,14 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
struct link_map *lm = NULL;
dlinfo (NULL, RTLD_DI_LINKMAP, &lm);
]])], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DLINFO_LINKMAP, 1, [Have dlinfo RTLD_DI_LINKMAP])
], [
AC_MSG_RESULT(no)
frr_cv_rtld_di_linkmap=yes
], [
frr_cv_rtld_di_linkmap=no
])
])
if test "$frr_cv_rtld_di_linkmap" = yes; then
AC_DEFINE(HAVE_DLINFO_LINKMAP, 1, [Have dlinfo RTLD_DI_LINKMAP])
fi
AM_CONDITIONAL(SNMP, test "x$SNMP_METHOD" = "xagentx")
@ -1808,8 +1835,8 @@ dnl mallinfo, e.g. such as Umem on Solaris.
dnl -----------------------------------------
AC_CHECK_HEADERS([malloc.h malloc/malloc.h],,, [FRR_INCLUDES])
AC_MSG_CHECKING(whether mallinfo is available)
AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
AC_CACHE_CHECK([whether mallinfo is available], [frr_cv_mallinfo], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
@ -1819,11 +1846,14 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
]], [[
struct mallinfo ac_x; ac_x = mallinfo ();
]])], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_MALLINFO,,mallinfo)
], [
AC_MSG_RESULT(no)
frr_cv_mallinfo=yes
], [
frr_cv_mallinfo=no
])
])
if test "$frr_cv_mallinfo" = yes; then
AC_DEFINE(HAVE_MALLINFO,,mallinfo)
fi
AC_MSG_CHECKING(whether malloc_usable_size is available)
AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
@ -1983,18 +2013,16 @@ AC_CACHE_VAL(ac_cv_htonl_works,
)
AC_MSG_RESULT($ac_cv_htonl_works)
AC_CONFIG_FILES([Makefile
AC_CONFIG_FILES([Makefile],[sed -e 's/^#AUTODERP# //' -i Makefile])
AC_CONFIG_FILES([
bgpd/Makefile
vtysh/Makefile
doc/Makefile
doc/user/Makefile
doc/manpages/Makefile
doc/developer/Makefile
tests/Makefile
bgpd/rfp-example/rfptest/Makefile
bgpd/rfp-example/librfp/Makefile
redhat/frr.spec
debianpkg/Makefile
solaris/Makefile
debianpkg/changelog
alpine/APKBUILD
snapcraft/snapcraft.yaml
@ -2010,8 +2038,6 @@ if test "${enable_bgp_vnc}" != "no"; then
fi
fi
AC_CONFIG_FILES([solaris/Makefile])
AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
AC_CONFIG_COMMANDS([lib/route_types.h], [

View File

@ -1,47 +0,0 @@
EXTRA_DIST = README.Debian README.Maintainer \
changelog compat control copyright \
rules source/format tests/control \
tests/daemons watchfrr.rc \
backports/README backports/rules \
backports/debian8/debian/source/format \
backports/debian8/exclude \
backports/debian8/versionext \
backports/debian9/debian/source/format \
backports/debian9/exclude \
backports/debian9/versionext \
backports/ubuntu12.04/debian/control \
backports/ubuntu12.04/debian/frr.install \
backports/ubuntu12.04/debian/frr.postinst \
backports/ubuntu12.04/debian/frr.postrm \
backports/ubuntu12.04/debian/rules \
backports/ubuntu12.04/debian/source/format \
backports/ubuntu12.04/exclude \
backports/ubuntu12.04/versionext \
backports/ubuntu14.04/debian/control \
backports/ubuntu14.04/debian/frr.install \
backports/ubuntu14.04/debian/frr.postinst \
backports/ubuntu14.04/debian/frr.postrm \
backports/ubuntu14.04/debian/rules \
backports/ubuntu14.04/debian/source/format \
backports/ubuntu14.04/exclude \
backports/ubuntu14.04/versionext \
backports/ubuntu16.04/debian/source/format \
backports/ubuntu16.04/exclude \
backports/ubuntu16.04/versionext \
backports/ubuntu17.10/debian/control \
backports/ubuntu17.10/debian/source/format \
backports/ubuntu17.10/exclude \
backports/ubuntu17.10/versionext \
backports/ubuntu18.04/debian/control \
backports/ubuntu18.04/debian/source/format \
backports/ubuntu18.04/exclude \
backports/ubuntu18.04/versionext \
frr-doc.docs frr-doc.info frr-doc.install \
frr-doc.lintian-overrides frr.conf \
frr-dbg.lintian-overrides \
frr.dirs frr.docs frr.install \
frr.lintian-overrides frr.logrotate \
frr.manpages frr.pam frr.postinst frr.postrm \
frr.preinst frr.prerm \
frr-pythontools.install

72
debianpkg/subdir.am Normal file
View File

@ -0,0 +1,72 @@
#
# debianpkg
#
EXTRA_DIST += \
debianpkg/README.Debian \
debianpkg/README.Maintainer \
debianpkg/changelog \
debianpkg/compat \
debianpkg/control \
debianpkg/copyright \
debianpkg/rules \
debianpkg/source/format \
debianpkg/tests/control \
debianpkg/tests/daemons \
debianpkg/watchfrr.rc \
\
debianpkg/backports/README \
debianpkg/backports/rules \
debianpkg/backports/debian8/debian/source/format \
debianpkg/backports/debian8/exclude \
debianpkg/backports/debian8/versionext \
debianpkg/backports/debian9/debian/source/format \
debianpkg/backports/debian9/exclude \
debianpkg/backports/debian9/versionext \
debianpkg/backports/ubuntu12.04/debian/control \
debianpkg/backports/ubuntu12.04/debian/frr.install \
debianpkg/backports/ubuntu12.04/debian/frr.postinst \
debianpkg/backports/ubuntu12.04/debian/frr.postrm \
debianpkg/backports/ubuntu12.04/debian/rules \
debianpkg/backports/ubuntu12.04/debian/source/format \
debianpkg/backports/ubuntu12.04/exclude \
debianpkg/backports/ubuntu12.04/versionext \
debianpkg/backports/ubuntu14.04/debian/control \
debianpkg/backports/ubuntu14.04/debian/frr.install \
debianpkg/backports/ubuntu14.04/debian/frr.postinst \
debianpkg/backports/ubuntu14.04/debian/frr.postrm \
debianpkg/backports/ubuntu14.04/debian/rules \
debianpkg/backports/ubuntu14.04/debian/source/format \
debianpkg/backports/ubuntu14.04/exclude \
debianpkg/backports/ubuntu14.04/versionext \
debianpkg/backports/ubuntu16.04/debian/source/format \
debianpkg/backports/ubuntu16.04/exclude \
debianpkg/backports/ubuntu16.04/versionext \
debianpkg/backports/ubuntu17.10/debian/control \
debianpkg/backports/ubuntu17.10/debian/source/format \
debianpkg/backports/ubuntu17.10/exclude \
debianpkg/backports/ubuntu17.10/versionext \
debianpkg/backports/ubuntu18.04/debian/control \
debianpkg/backports/ubuntu18.04/debian/source/format \
debianpkg/backports/ubuntu18.04/exclude \
debianpkg/backports/ubuntu18.04/versionext \
\
debianpkg/frr-dbg.lintian-overrides \
debianpkg/frr-doc.docs \
debianpkg/frr-doc.info \
debianpkg/frr-doc.install \
debianpkg/frr-doc.lintian-overrides \
debianpkg/frr-pythontools.install \
debianpkg/frr.conf \
debianpkg/frr.dirs \
debianpkg/frr.docs \
debianpkg/frr.install \
debianpkg/frr.lintian-overrides \
debianpkg/frr.logrotate \
debianpkg/frr.manpages \
debianpkg/frr.pam \
debianpkg/frr.postinst \
debianpkg/frr.postrm \
debianpkg/frr.preinst \
debianpkg/frr.prerm \
# end

3
doc/.gitignore vendored
View File

@ -1,5 +1,4 @@
Makefile
Makefile.in
!Makefile
mdate-sh
draft-zebra-00.txt
*.pdf

18
doc/Makefile Normal file
View File

@ -0,0 +1,18 @@
all: ALWAYS
@$(MAKE) -s -C .. doc
%: ALWAYS
@$(MAKE) -s -C .. doc/$@
html:
@$(MAKE) -s -C .. doc/user/_build/html/.buildinfo
info:
@$(MAKE) -s -C .. doc/user/_build/texinfo/frr.info
pdf:
@$(MAKE) -s -C .. doc/user/_build/latexpdf
frr.info: info
frr.pdf: pdf
Makefile:
#nothing
ALWAYS:
.PHONY: ALWAYS makefiles html info frr.info pdf frr.pdf
.SUFFIXES:

View File

@ -1,293 +0,0 @@
## Process this file with automake to produce Makefile.in.
# Pass down make invocation to each subdirectory.
#
# Each of these directories contains a Sphinx-generated Makefile that has been
# modified to implement all the targets required by Automake, as documented in
# the 'Third-Party Makefiles' section of the Automake docs.
#
# Note the absence of the 'developer' directory here; development docs are
# never built as part of a regular build. They are only built when explicitly
# asked for. See comment further down.
# Sphinx is not designed to be invoked multiple times against the same toctree.
.NOTPARALLEL:
SUBDIRS = manpages user
AM_MAKEFLAGS = DESTDIR=${DESTDIR} infodir=${infodir}
MANPAGE_BUILDDIR = manpages/_build/man
# This is a hack, see comment further down.
man_MANS = $(MANPAGE_BUILDDIR)/frr.1
if PIMD
man_MANS += $(MANPAGE_BUILDDIR)/pimd.8
man_MANS += $(MANPAGE_BUILDDIR)/mtracebis.8
endif
if PBRD
man_MANS += $(MANPAGE_BUILDDIR)/pbrd.8
endif
if BGPD
man_MANS += $(MANPAGE_BUILDDIR)/bgpd.8
endif
if ISISD
man_MANS += $(MANPAGE_BUILDDIR)/isisd.8
endif
if OSPF6D
man_MANS += $(MANPAGE_BUILDDIR)/ospf6d.8
endif
if OSPFCLIENT
man_MANS += $(MANPAGE_BUILDDIR)/ospfclient.8
endif
if OSPFD
man_MANS += $(MANPAGE_BUILDDIR)/ospfd.8
endif
if LDPD
man_MANS += $(MANPAGE_BUILDDIR)/ldpd.8
endif
if RIPD
man_MANS += $(MANPAGE_BUILDDIR)/ripd.8
endif
if RIPNGD
man_MANS += $(MANPAGE_BUILDDIR)/ripngd.8
endif
if NHRPD
man_MANS += $(MANPAGE_BUILDDIR)/nhrpd.8
endif
if VTYSH
man_MANS += $(MANPAGE_BUILDDIR)/vtysh.1
endif
if WATCHFRR
man_MANS += $(MANPAGE_BUILDDIR)/watchfrr.8
endif
if ZEBRA
man_MANS += $(MANPAGE_BUILDDIR)/zebra.8
endif
if EIGRPD
man_MANS += $(MANPAGE_BUILDDIR)/eigrpd.8
endif
if SHARPD
man_MANS += $(MANPAGE_BUILDDIR)/sharpd.8
endif
if STATICD
man_MANS += $(MANPAGE_BUILDDIR)/staticd.8
endif
if BFDD
man_MANS += $(MANPAGE_BUILDDIR)/bfdd.8
endif
# Automake is particular about manpages. It is aware of them and has some
# special facilities for handling them, but it assumes that manpages are always
# given in groff source and so these facilities are limited to simply
# specifying the path to the groff sources in a special variable. There is no
# target for building manpages that can be extended, as there are for pdf,
# html, dvi, etc. Unfortunately this leaves us with hijacking the
# 'install-data' and 'all' targets in the 3rd-party Makefile in manpages/ to
# make sure manpages are always built, and then using the special Automake
# variable defined above in order to take advantage of automatic installation.
#
# However, it is conceivable that someone may want to build just the manpages,
# so here's an explicit target for that.
man:
$(MAKE) -C manpages man
# Automake automatically defines targets for various document formats. All of
# the child 3rd-party Makefiles are aware of all Automake targets and implement
# the ones we are interested in.
#
# The SUBDIRS variable at the top of this Makefile.am causes the following
# implicit Automake targets to only build user documentation, and not developer
# documentation:
# - info
# - html
# - pdf
#
# If you wish to build developer documentation, use these targets:
developer-info:
$(MAKE) -C developer info
developer-pdf:
$(MAKE) -C developer latexpdf
developer-html:
$(MAKE) -C developer html
# If you want to build the developer's docs in other formats, try the
# following:
#
# $ cd developer
# $ make help
# dist tarballs want doc sources
EXTRA_DIST = frr-sphinx.mk \
manpages/bgpd.rst \
manpages/common-options.rst \
manpages/conf.py \
manpages/defines.rst \
manpages/eigrpd.rst \
manpages/epilogue.rst \
manpages/frr.rst \
manpages/index.rst \
manpages/isisd.rst \
manpages/ldpd.rst \
manpages/Makefile.am \
manpages/mtracebis.rst \
manpages/nhrpd.rst \
manpages/ospf6d.rst \
manpages/ospfclient.rst \
manpages/ospfd.rst \
manpages/pimd.rst \
manpages/ripd.rst \
manpages/pbrd.rst \
manpages/ripngd.rst \
manpages/sharpd.rst \
manpages/staticd.rst \
manpages/vtysh.rst \
manpages/watchfrr.rst \
manpages/zebra.rst \
manpages/bfdd.rst \
manpages/bfd-options.rst \
developer/bgpd.rst \
developer/bgp-typecodes.rst \
developer/building-frr-for-openwrt.rst \
developer/building-frr-on-alpine.rst \
developer/building-frr-on-centos6.rst \
developer/building-frr-on-centos7.rst \
developer/building-frr-on-debian8.rst \
developer/building-frr-on-debian9.rst \
developer/building-frr-on-fedora24.rst \
developer/building-frr-on-freebsd10.rst \
developer/building-frr-on-freebsd11.rst \
developer/building-frr-on-freebsd9.rst \
developer/building-frr-on-netbsd6.rst \
developer/building-frr-on-netbsd7.rst \
developer/building-frr-on-omnios.rst \
developer/building-frr-on-openbsd6.rst \
developer/building-frr-on-ubuntu1204.rst \
developer/building-frr-on-ubuntu1404.rst \
developer/building-frr-on-ubuntu1604.rst \
developer/building-frr-on-ubuntu1804.rst \
developer/building.rst \
developer/cli.rst \
developer/conf.py \
developer/draft-zebra-00.ms \
developer/hooks.rst \
developer/index.rst \
developer/ldpd-basic-test-setup.md \
developer/library.rst \
developer/logging.rst \
developer/Makefile.in \
developer/maintainer-release-build.rst \
developer/memtypes.rst \
developer/modules.rst \
developer/next-hop-tracking.rst \
developer/ospf-api.rst \
developer/ospf.rst \
developer/ospf-sr.rst \
developer/workflow.rst \
developer/zebra.rst \
user/babeld.rst \
user/ldpd.rst \
user/basic.rst \
user/bgp.rst \
user/bugs.rst \
user/conf.py \
user/eigrpd.rst \
user/filter.rst \
user/glossary.rst \
user/index.rst \
user/installation.rst \
user/ipv6.rst \
user/isisd.rst \
user/kernel.rst \
user/Makefile.am \
user/nhrpd.rst \
user/ospf6d.rst \
user/ospfd.rst \
user/ospf_fundamentals.rst \
user/overview.rst \
user/packet-dumps.rst \
user/pim.rst \
user/ripd.rst \
user/pbr.rst \
user/ripngd.rst \
user/routemap.rst \
user/routeserver.rst \
user/rpki.rst \
user/setup.rst \
user/sharp.rst \
user/snmp.rst \
user/snmptrap.rst \
user/static.rst \
user/Useful_Sysctl_Settings.md \
user/vnc.rst \
user/vtysh.rst \
user/zebra.rst \
user/bfd.rst \
user/flowspec.rst \
mpls/ChangeLog.opaque.txt \
mpls/ospfd.conf \
mpls/cli_summary.txt \
mpls/opaque_lsa.txt \
figures/cligraph.png \
figures/cligraph.svg \
figures/fig-normal-processing.dia \
figures/fig-normal-processing.png \
figures/fig-normal-processing.txt \
figures/fig-rs-processing.dia \
figures/fig-rs-processing.png \
figures/fig-rs-processing.txt \
figures/fig_topologies_full.dia \
figures/fig_topologies_full.png \
figures/fig_topologies_full.txt \
figures/fig_topologies_rs.dia \
figures/fig_topologies_rs.png \
figures/fig_topologies_rs.txt \
figures/fig-vnc-commercial-route-reflector.dia \
figures/fig-vnc-commercial-route-reflector.png \
figures/fig-vnc-commercial-route-reflector.txt \
figures/fig-vnc-frr-route-reflector.dia \
figures/fig-vnc-frr-route-reflector.png \
figures/fig-vnc-frr-route-reflector.txt \
figures/fig-vnc-gw.dia \
figures/fig-vnc-gw.png \
figures/fig-vnc-gw-rr.dia \
figures/fig-vnc-gw-rr.png \
figures/fig-vnc-gw-rr.txt \
figures/fig-vnc-gw.txt \
figures/fig-vnc-mesh.dia \
figures/fig-vnc-mesh.png \
figures/fig-vnc-mesh.txt \
figures/fig-vnc-redundant-route-reflectors.dia \
figures/fig-vnc-redundant-route-reflectors.png \
figures/fig-vnc-redundant-route-reflectors.txt \
figures/frr-icon.svg \
figures/frr-logo-icon.png \
figures/frr-logo-medium.png \
figures/frr-logo.png \
figures/frr-logo-small.png \
figures/git_branches.png \
figures/git_branches.svg \
figures/ospf_api_architecture.png \
figures/ospf_api_msghdr.png \
figures/ospf_api_msgs1.png \
figures/ospf_api_msgs2.png \
extra/frrlexer.py

16
doc/developer/Makefile Normal file
View File

@ -0,0 +1,16 @@
all: ALWAYS
@$(MAKE) -s -C ../.. developer-html
help: ALWAYS
@$(MAKE) -s -C ../.. doc/help
pdf: ALWAYS
@$(MAKE) -s -C ../.. doc/developer/_build/latexpdf
info: ALWAYS
@$(MAKE) -s -C ../.. doc/developer/_build/texinfo/frr.info
%: ALWAYS
@$(MAKE) -s -C ../.. doc/developer/_build/$@
Makefile:
#nothing
ALWAYS:
.PHONY: ALWAYS makefiles
.SUFFIXES:

View File

@ -1,8 +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

72
doc/developer/subdir.am Normal file
View File

@ -0,0 +1,72 @@
#
# doc/developer
#
dev_RSTFILES = \
doc/developer/bgp-typecodes.rst \
doc/developer/bgpd.rst \
doc/developer/building-frr-for-openwrt.rst \
doc/developer/building-frr-on-alpine.rst \
doc/developer/building-frr-on-centos6.rst \
doc/developer/building-frr-on-centos7.rst \
doc/developer/building-frr-on-debian8.rst \
doc/developer/building-frr-on-debian9.rst \
doc/developer/building-frr-on-fedora24.rst \
doc/developer/building-frr-on-freebsd10.rst \
doc/developer/building-frr-on-freebsd11.rst \
doc/developer/building-frr-on-freebsd9.rst \
doc/developer/building-frr-on-netbsd6.rst \
doc/developer/building-frr-on-netbsd7.rst \
doc/developer/building-frr-on-omnios.rst \
doc/developer/building-frr-on-openbsd6.rst \
doc/developer/building-frr-on-ubuntu1204.rst \
doc/developer/building-frr-on-ubuntu1404.rst \
doc/developer/building-frr-on-ubuntu1604.rst \
doc/developer/building-frr-on-ubuntu1804.rst \
doc/developer/building.rst \
doc/developer/cli.rst \
doc/developer/conf.py \
doc/developer/hooks.rst \
doc/developer/index.rst \
doc/developer/library.rst \
doc/developer/logging.rst \
doc/developer/maintainer-release-build.rst \
doc/developer/memtypes.rst \
doc/developer/modules.rst \
doc/developer/next-hop-tracking.rst \
doc/developer/ospf-api.rst \
doc/developer/ospf-sr.rst \
doc/developer/ospf.rst \
doc/developer/workflow.rst \
doc/developer/zebra.rst \
# end
EXTRA_DIST += \
$(dev_RSTFILES) \
doc/developer/draft-zebra-00.ms \
doc/developer/ldpd-basic-test-setup.md \
# end
DEVBUILD = doc/developer/_build
$(DEVBUILD)/.doctrees/environment.pickle: $(dev_RSTFILES)
#
# nothing built automatically for "all" target.
#
#
# standard targets
#
developer-info: $(DEVBUILD)/texinfo/frr.info
developer-html: $(DEVBUILD)/html/.buildinfo
developer-pdf: $(DEVBUILD)/latexpdf
#
# hook-in for clean
#
.PHONY: clean-devdocs
clean-local: clean-devdocs
clean-devdocs:
-rm -rf "$(DEVBUILD)"

View File

@ -1,229 +0,0 @@
# Makefile for Sphinx documentation
#
# Sphinx is not designed to be invoked multiple times against the same toctree.
.NOTPARALLEL:
# You can set these variables from the command line.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
PAPER ?=
BUILDDIR = _build
# This is a custom FRR variable just for this docs subdirectory used to support
# VPATH builds. Makefiles which include this file should override it to point
# to the correct sources path.
SOURCESDIR ?= .
# User-friendly check for sphinx-build
ifneq ($(MAKECMDGOALS), clean)
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
SPHINXBUILD = sphinx-1.0-build
endif
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD make variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/")
endif
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCESDIR)
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCESDIR)
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: dirhtml
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/FRR.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/FRR.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/FRR"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/FRR"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
$(MAKE) -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

12
doc/manpages/Makefile Normal file
View File

@ -0,0 +1,12 @@
all: ALWAYS
@$(MAKE) -s -C ../.. doc/manpages/man.stamp
help: ALWAYS
@$(MAKE) -s -C ../.. doc/help
%: ALWAYS
@$(MAKE) -s -C ../.. doc/manpages/_build/$@
Makefile:
#nothing
ALWAYS:
.PHONY: ALWAYS makefiles
.SUFFIXES:

View File

@ -1,48 +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
# These targets are automatically generated by Sphinx but conflict with
# implicitly defined Automake rules, so we manually override them to nothing.
# The other option is deleting the Sphinx-generated rules, which suppresses the
# warning but kinda screws up the symmetry between Makefiles.
info: ;
html: ;
all: man
install-data: man
install: install-data

139
doc/manpages/subdir.am Normal file
View File

@ -0,0 +1,139 @@
#
# doc/manpages
#
man_RSTFILES = \
doc/manpages/bgpd.rst \
doc/manpages/common-options.rst \
doc/manpages/conf.py \
doc/manpages/defines.rst \
doc/manpages/eigrpd.rst \
doc/manpages/epilogue.rst \
doc/manpages/frr.rst \
doc/manpages/index.rst \
doc/manpages/isisd.rst \
doc/manpages/ldpd.rst \
doc/manpages/mtracebis.rst \
doc/manpages/nhrpd.rst \
doc/manpages/ospf6d.rst \
doc/manpages/ospfclient.rst \
doc/manpages/ospfd.rst \
doc/manpages/pimd.rst \
doc/manpages/ripd.rst \
doc/manpages/pbrd.rst \
doc/manpages/ripngd.rst \
doc/manpages/sharpd.rst \
doc/manpages/staticd.rst \
doc/manpages/vtysh.rst \
doc/manpages/watchfrr.rst \
doc/manpages/zebra.rst \
doc/manpages/bfdd.rst \
doc/manpages/bfd-options.rst \
# end
EXTRA_DIST += $(man_RSTFILES)
MANBUILD = doc/manpages/_build/man
doc/manpages/_build/.doctrees/environment.pickle: $(man_RSTFILES)
#
# automake integration
#
rstman1dir = $(mandir)/man1
rstman8dir = $(mandir)/man8
rstman1_DATA =
rstman8_DATA =
rstman1_DATA += $(MANBUILD)/frr.1
if PIMD
rstman8_DATA += $(MANBUILD)/pimd.8
rstman8_DATA += $(MANBUILD)/mtracebis.8
endif
if PBRD
rstman8_DATA += $(MANBUILD)/pbrd.8
endif
if BGPD
rstman8_DATA += $(MANBUILD)/bgpd.8
endif
if ISISD
rstman8_DATA += $(MANBUILD)/isisd.8
endif
if OSPF6D
rstman8_DATA += $(MANBUILD)/ospf6d.8
endif
if OSPFCLIENT
rstman8_DATA += $(MANBUILD)/ospfclient.8
endif
if OSPFD
rstman8_DATA += $(MANBUILD)/ospfd.8
endif
if LDPD
rstman8_DATA += $(MANBUILD)/ldpd.8
endif
if RIPD
rstman8_DATA += $(MANBUILD)/ripd.8
endif
if RIPNGD
rstman8_DATA += $(MANBUILD)/ripngd.8
endif
if NHRPD
rstman8_DATA += $(MANBUILD)/nhrpd.8
endif
if VTYSH
rstman1_DATA += $(MANBUILD)/vtysh.1
endif
if WATCHFRR
rstman8_DATA += $(MANBUILD)/watchfrr.8
endif
if ZEBRA
rstman8_DATA += $(MANBUILD)/zebra.8
endif
if EIGRPD
rstman8_DATA += $(MANBUILD)/eigrpd.8
endif
if SHARPD
rstman8_DATA += $(MANBUILD)/sharpd.8
endif
if STATICD
rstman8_DATA += $(MANBUILD)/staticd.8
endif
if BFDD
rstman8_DATA += $(MANBUILD)/bfdd.8
endif
# dependency
$(rstman8_DATA) $(rstman1_DATA): $(MANBUILD)/man.stamp
#
# hook-ins for clean / doc
# (install is handled by automake _DATA)
#
clean-local: clean-manpages
.PHONY: clean-manpages
clean-manpages:
-rm -rf $(MANBUILD)
doc: doc-man
.PHONY: doc-man
doc-man: $(rstman8_DATA) $(rstman1_DATA)

176
doc/subdir.am Normal file
View File

@ -0,0 +1,176 @@
#
# doc
#
# You can set these variables from the command line.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
PAPER ?=
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
###
AM_V_SPHINX = $(am__v_SPHINX_$(V))
am__v_SPHINX_ = $(am__v_SPHINX_$(AM_DEFAULT_VERBOSITY))
am__v_SPHINX_0 = @echo " SPHINX " $@;
am__v_SPHINX_1 =
AM_V_MAKEINFO = $(am__v_MAKEINFO_$(V))
am__v_MAKEINFO_ = $(am__v_MAKEINFO_$(AM_DEFAULT_VERBOSITY))
am__v_MAKEINFO_0 = @echo " MAKEINFO" $@;
am__v_MAKEINFO_1 =
#
# real-file sphinx targets that work for dependencies
#
doc/%/_build/.doctrees/environment.pickle:
$(AM_V_SPHINX) ( \
subdoc="$@"; subdoc="$${subdoc#doc/}"; subdoc="doc/$${subdoc%%/*}"; \
$(SPHINXBUILD) -a -q -b text -d "$${subdoc}/_build/.doctrees" \
$(ALLSPHINXOPTS) "$(top_srcdir)/$${subdoc}" "$${subdoc}/_build/text" \
)
doc/%/_build/html/.buildinfo: doc/%/_build/.doctrees/environment.pickle
$(AM_V_SPHINX) ( \
subdoc="$@"; subdoc="$${subdoc#doc/}"; subdoc="doc/$${subdoc%%/*}"; \
$(SPHINXBUILD) -q -b html -d "$${subdoc}/_build/.doctrees" \
$(ALLSPHINXOPTS) "$(top_srcdir)/$${subdoc}" "$${subdoc}/_build/html" \
)
.PRECIOUS: doc/%/_build/texinfo/frr.texi
doc/%/_build/texinfo/frr.texi: doc/%/_build/.doctrees/environment.pickle
$(AM_V_SPHINX) ( \
subdoc="$@"; subdoc="$${subdoc#doc/}"; subdoc="doc/$${subdoc%%/*}"; \
$(SPHINXBUILD) -q -b texinfo -d "$${subdoc}/_build/.doctrees" \
$(ALLSPHINXOPTS) "$(top_srcdir)/$${subdoc}" "$${subdoc}/_build/texinfo" \
)
doc/%/_build/texinfo/frr.info: doc/%/_build/texinfo/frr.texi
$(AM_V_MAKEINFO)$(MAKEINFO) --no-split -o '$@' '$<'
doc/%/_build/man/man.stamp: doc/%/_build/.doctrees/environment.pickle
$(AM_V_SPHINX) ( \
subdoc="$@"; subdoc="$${subdoc#doc/}"; subdoc="doc/$${subdoc%%/*}"; \
$(MKDIR_P) "$${subdoc}/_build/man"; touch $@.tmp; \
$(SPHINXBUILD) -a -q -b man -d "$${subdoc}/_build/.doctrees" \
$(ALLSPHINXOPTS) "$(top_srcdir)/$${subdoc}" "$${subdoc}/_build/man" && \
mv $@.tmp $@ \
)
#
# auxiliary sphinx targets (output name = directory,
# deps will not work very well)
#
SPHINXTARGETS = \
html dirhtml singlehtml pickle json \
htmlhelp qthelp applehelp devhelp \
epub latex text man texinfo gettext \
changes linkcheck doctest coverage \
xml pseudoxml \
# end
M_SPHINXTARGETS = $(addprefix doc/%/_build/,$(SPHINXTARGETS))
.PRECIOUS: $(M_SPHINXTARGETS)
$(M_SPHINXTARGETS): doc/%/_build/.doctrees/environment.pickle
$(AM_V_SPHINX) ( \
target="$@"; \
builder="$${target##*/}"; \
subdoc="$${target#doc/}"; subdoc="doc/$${subdoc%%/*}"; \
rm -rf "$@"; \
$(SPHINXBUILD) -q -b $${builder} -d $${subdoc}/_build/.doctrees \
$(ALLSPHINXOPTS) $(top_srcdir)/$${subdoc} $@ \
)
.PHONY: doc/%/_build/latexpdf
doc/%/_build/latexpdf: doc/%/_build/latex
@make -C $< all-pdf
# If you want to build the developer's docs in other formats, try the
# following:
#
# $ cd developer
# $ make help
# dist tarballs want doc sources
EXTRA_DIST += \
doc/mpls/ChangeLog.opaque.txt \
doc/mpls/ospfd.conf \
doc/mpls/cli_summary.txt \
doc/mpls/opaque_lsa.txt \
doc/figures/cligraph.png \
doc/figures/cligraph.svg \
doc/figures/fig-normal-processing.dia \
doc/figures/fig-normal-processing.png \
doc/figures/fig-normal-processing.txt \
doc/figures/fig-rs-processing.dia \
doc/figures/fig-rs-processing.png \
doc/figures/fig-rs-processing.txt \
doc/figures/fig_topologies_full.dia \
doc/figures/fig_topologies_full.png \
doc/figures/fig_topologies_full.txt \
doc/figures/fig_topologies_rs.dia \
doc/figures/fig_topologies_rs.png \
doc/figures/fig_topologies_rs.txt \
doc/figures/fig-vnc-commercial-route-reflector.dia \
doc/figures/fig-vnc-commercial-route-reflector.png \
doc/figures/fig-vnc-commercial-route-reflector.txt \
doc/figures/fig-vnc-frr-route-reflector.dia \
doc/figures/fig-vnc-frr-route-reflector.png \
doc/figures/fig-vnc-frr-route-reflector.txt \
doc/figures/fig-vnc-gw.dia \
doc/figures/fig-vnc-gw.png \
doc/figures/fig-vnc-gw-rr.dia \
doc/figures/fig-vnc-gw-rr.png \
doc/figures/fig-vnc-gw-rr.txt \
doc/figures/fig-vnc-gw.txt \
doc/figures/fig-vnc-mesh.dia \
doc/figures/fig-vnc-mesh.png \
doc/figures/fig-vnc-mesh.txt \
doc/figures/fig-vnc-redundant-route-reflectors.dia \
doc/figures/fig-vnc-redundant-route-reflectors.png \
doc/figures/fig-vnc-redundant-route-reflectors.txt \
doc/figures/frr-icon.svg \
doc/figures/frr-logo-icon.png \
doc/figures/frr-logo-medium.png \
doc/figures/frr-logo.png \
doc/figures/frr-logo-small.png \
doc/figures/git_branches.png \
doc/figures/git_branches.svg \
doc/figures/ospf_api_architecture.png \
doc/figures/ospf_api_msghdr.png \
doc/figures/ospf_api_msgs1.png \
doc/figures/ospf_api_msgs2.png \
doc/extra/frrlexer.py \
# end
.PHONY: doc/help
doc/help:
@echo "Please use \`make doc/{user,manpages,developer}/<target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"

16
doc/user/Makefile Normal file
View File

@ -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:

View File

@ -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

View File

@ -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; }

View File

@ -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:

110
doc/user/subdir.am Normal file
View File

@ -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)

View File

@ -293,7 +293,7 @@ if GIT_VERSION
# (even if gitversion.h's file timestamp doesn't change, make will think it
# did, because of .PHONY...)
.PHONY: lib/gitversion.h.tmp
PHONY_GITVERSION=lib/gitversion.h.tmp
.SILENT: lib/gitversion.h lib/gitversion.h.tmp
GITH=lib/gitversion.h
lib/gitversion.h.tmp: $(top_srcdir)/.git
@ -302,7 +302,8 @@ lib/gitversion.h: lib/gitversion.h.tmp
{ test -f ${GITH} && diff -s -q ${GITH}.tmp ${GITH}; } || cp ${GITH}.tmp ${GITH}
else
.PHONY: lib/gitversion.h
PHONY_GITVERSION=lib/gitversion.h
lib/gitversion.h:
true
endif
.PHONY: $(PHONY_GITVERSION)

View File

@ -277,4 +277,4 @@ if __name__ == '__main__':
process_file(args.cfile, ofd, dumpfd, args.all_defun)
if args.o is not None:
clippy.wrdiff(args.o, ofd, [args.cfile, os.path.realpath(__file__)])
clippy.wrdiff(args.o, ofd, [args.cfile, os.path.realpath(__file__), sys.executable])

4
solaris/.gitignore vendored
View File

@ -1,5 +1,5 @@
Makefile
Makefile.in
!Makefile.in
?.manifest
*.xml
pkginfo.*.full
@ -19,4 +19,4 @@ frr.init
*.pkg.gz
*~
*.loT
*.a
*.a

View File

@ -2,13 +2,56 @@
# XXX This file uses GNU make extensions.
.PHONY: packages
.PHONY: packages all all-files
all: all-files
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datarootdir = @datarootdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
includedir = @includedir@
infodir = @infodir@
mandir = @mandir@
frr_statedir = @frr_statedir@
builddir = @builddir@
srcdir = @srcdir@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
enable_user = @enable_user@
enable_group = @enable_group@
enable_vty_group = @enable_vty_group@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
CONFDATE = @CONFDATE@
host_cpu = @host_cpu@
host_os = @host_os@
SED = @SED@
MAKE = @MAKE@
# the names of the various subpackages, and some convenient
# derived variables.
pkg_names = daemons dev doc libs smf
pkg_frr_daemons = zebra bgpd ospfd ospf6d ripd ripngd
pkg_name_rev = @PACKAGE_VERSION@-@CONFDATE@-@target_os@-@target_cpu@
pkg_name_rev = $(PACKAGE_VERSION)-$(CONFDATE)-$(host_os)-$(host_cpu)
pkg_depends = $(pkg_names:%=depend.%)
pkg_packages = $(pkg_names:%=@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg)
pkg_pkginfos = $(pkg_names:%=pkginfo.%.full)
@ -36,29 +79,28 @@ edit = $(SED) \
-e 's,@enable_group\@,$(enable_group),g' \
-e 's,@enable_vty_group\@,$(enable_vty_group),g' \
-e 's,@frr_statedir\@,$(frr_statedir),g' \
-e 's,[@]PACKAGE_NAME[@],@PACKAGE_NAME@,g' \
-e 's,[@]PACKAGE_TARNAME[@],@PACKAGE_TARNAME@,g' \
-e 's,[@]PACKAGE_VERSION[@],@PACKAGE_VERSION@,g' \
-e 's,[@]PACKAGE_BUGREPORT[@],@PACKAGE_BUGREPORT@,g' \
-e 's,[@]CONFDATE[@],@CONFDATE@,g' \
-e 's,[@]target_cpu[@],$(target_cpu),g' \
-e 's,[@]target_host[@],$(target_host),g' \
-e 's,[@]target_os[@],$(target_os),g'
-e 's,[@]PACKAGE_NAME[@],$(PACKAGE_NAME),g' \
-e 's,[@]PACKAGE_TARNAME[@],$(PACKAGE_TARNAME),g' \
-e 's,[@]PACKAGE_VERSION[@],$(PACKAGE_VERSION),g' \
-e 's,[@]PACKAGE_BUGREPORT[@],$(PACKAGE_BUGREPORT),g' \
-e 's,[@]CONFDATE[@],$(CONFDATE),g' \
-e 's,[@]host_cpu[@],$(host_cpu),g' \
-e 's,[@]host_os[@],$(host_os),g'
# common options for pkgmk
pkg_make_vars = exec_prefix=@exec_prefix@ prefix=@prefix@ \
builddir=@builddir@ srcdir=@srcdir@ \
top_builddir=@top_builddir@ top_srcdir=@top_srcdir@ \
abs_builddir=@abs_builddir@ abs_srcdir=@abs_srcdir@ \
abs_top_builddir=@abs_top_builddir@ abs_top_srcdir=@abs_top_srcdir@
pkg_make_vars = exec_prefix=$(exec_prefix) prefix=$(prefix) \
builddir=$(builddir) srcdir=$(srcdir) \
top_builddir=$(top_builddir) top_srcdir=$(top_srcdir) \
abs_builddir=$(abs_builddir) abs_srcdir=$(abs_srcdir) \
abs_top_builddir=$(abs_top_builddir) abs_top_srcdir=$(abs_top_srcdir)
# pkgmk: write the package to spool in build dir, to avoid root dependencies
pkg_make = pkgmk -o -d @abs_builddir@ \
pkg_make = pkgmk -o -d $(abs_builddir) \
-f $< DESTDIR="$(DESTDIR)/" $(pkg_make_vars)
# pkgtrans: write a pkg file stream, shame we cant pipe directly to it from
# pkgmk..
pkg_trans = pkgtrans -s @abs_builddir@ "@abs_builddir@/$@"
pkg_trans = pkgtrans -s $(abs_builddir) "$(abs_builddir)/$@"
# pkgmk can only cope with a single pkginfo, cant 'stack' various
# pkginfo template files and a package specific pkginfo file in the prototype
@ -95,7 +137,7 @@ frr.init: $(srcdir)/frr.init.in Makefile
$(edit) $< > $@
# construct the pkg
@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg: prototype.% \
$(PACKAGE_TARNAME)-%-$(pkg_name_rev).pkg: prototype.% \
depend.% frr.init pkginfo.%.full
($(pkg_make) && \
$(pkg_trans) "FRR$*")
@ -103,22 +145,11 @@ frr.init: $(srcdir)/frr.init.in Makefile
%.pkg.gz : %.pkg
(gzip -c $< > $@)
# pkginfo.package and prototype.package are all built sources
#BUILT_SOURCES = pkginfo.daemons pkginfo.dev pkginfo.doc pkginfo.libs \
# prototype.daemons prototype.dev prototype.doc prototype.libs
BUILT_SOURCES = $(pkg_pkginfos) pkginfo.tmpl $(pkg_prototypes) \
$(pkg_manifests) $(pkg_depends) frr.init
CLEANFILES = $(BUILT_SOURCES) $(pkg_packages)
EXTRA_DIST = $(pkg_manifests:%=%.in) $(pkg_prototypes:%=%.in) \
$(pkg_names:%=pkginfo.%.tmpl.in) $(srcdir)/pkginfo.tmpl.in \
$(pkg_depends:%=%.in) frr.init.in README.txt
pkg-root-install:
(cd $(top_builddir) && \
$(MAKE) DESTDIR=$(abs_builddir)/frr-root install)
packages: $(pkg_packages)
#nodist_pkgdata_DATA = $(pkg_packages)
all-files: $(pkg_pkginfos) pkginfo.tmpl $(pkg_prototypes) \
$(pkg_manifests) $(pkg_depends) frr.init

View File

@ -1,4 +1,4 @@
ARCH="@target_cpu@"
ARCH="@host_cpu@"
CATEGORY="system"
VERSION="@PACKAGE_VERSION@,REV=@CONFDATE@"
VENDOR="http://www.frrouting.org/"

53
solaris/subdir.am Normal file
View File

@ -0,0 +1,53 @@
#
# solaris
#
.PHONY: solaris/all
if SOLARIS
all: solaris/all
solaris/all:
@make -s -C solaris all
endif
CLEANFILES += \
solaris/frr.xml \
solaris/frr.init \
solaris/pkginfo.tmpl \
solaris/prototype.daemons \
solaris/prototype.dev \
solaris/prototype.doc \
solaris/prototype.libs \
solaris/prototype.smf \
solaris/pkginfo.daemons.tmpl \
solaris/pkginfo.dev.tmpl \
solaris/pkginfo.doc.tmpl \
solaris/pkginfo.libs.tmpl \
solaris/pkginfo.smf.tmpl \
solaris/depend.daemons \
solaris/depend.dev \
solaris/depend.doc \
solaris/depend.libs \
solaris/depend.smf \
# end
EXTRA_DIST += \
solaris/frr.xml.in \
solaris/frr.init.in \
solaris/pkginfo.tmpl.in \
solaris/prototype.daemons.in \
solaris/prototype.dev.in \
solaris/prototype.doc.in \
solaris/prototype.libs.in \
solaris/prototype.smf.in \
solaris/pkginfo.daemons.tmpl.in \
solaris/pkginfo.dev.tmpl.in \
solaris/pkginfo.doc.tmpl.in \
solaris/pkginfo.libs.tmpl.in \
solaris/pkginfo.smf.tmpl.in \
solaris/depend.daemons.in \
solaris/depend.dev.in \
solaris/depend.doc.in \
solaris/depend.libs.in \
solaris/depend.smf.in \
solaris/README.txt \
# end