Introduce new cli commands ip igmp last-member-query-count <1-7>
ip igmp last-member-query-interval <1-255> deciseconds.
Display the config in show running config and show ip igmp interface
Signed-off-by: Sarita Patra <saritap@vmware.com>
Introduced a new command "show ip mroute summary"
to display total number of (*, G) and (S, G) mroutes
created and number of mroutes installed in the kernel.
Signed-off-by: Sarita Patra <saritap@vmware.com>
The `bgp bestpath prefix-validate disallow-invalid` command referenced in
the rpki documentation does not actually exist, remove the erroneous docs
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The lists documentation had not been updated to represent
the for_eachXXX to frr_eachXXX changes. Make it so.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Place in the code the ability for end operators to know how
to modify MAX_FDS so that they can run large scale operations.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This code doees this:
a) Imagine ospf installs a route into zebra. Zebra crashes and
we restart FRR. If we are using the -k option on zebra than
all routes are re-read in, including this OSPF route.
b) Now imagine at the same time that zebra is starting backup
ospf on a different router looses a link to the this route.
c) Since zebra was run with -k this OSPF route is read back
in but never replaced and we now have a route pointing out
an interface to other routers that cannot handle it.
We should never allow users to implement bad options from zebra's
perspective that allow them to put themselves into a clear problem
state and additionally we have *absolutely* no mechanism to ever
fix that broken route without special human interaction.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
<Initial Code from Praveen Chaudhary>
Add the a `--graceful_restart X` flag to zebra start that
now creates a timer that pops in X seconds and will go
through and remove all routes that are older than startup.
If graceful_restart is not specified then we will just pop
a timer that cleans everything up immediately.
Signed-off-by: Praveen Chaudhary <pchaudhary@linkedin.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This is an 8-ary heap (cacheline optimized.) It works as a semi-sorted
kind of middle ground between unsorted and sorted datastructures; pop()
always returns the lowest item but ordering is only loosely enforced.
Signed-off-by: David Lamparter <equinox@diac24.net>
Turns out we need one of these. Same API as DECLARE_LIST, but deleting
random items is much faster.
Signed-off-by: David Lamparter <equinox@diac24.net>
The current wording can sometimes be misinterpreted to mean that this
command is optional, but for an MPLS-VPN to function a VPN label MUST be
assigned to routes exported from the VPN.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
this command is used when user wants to use the cbit value.
more information in the documentation.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
in ospf6d, the 'router-id' command must be prefixed with 'ospf6'.
Update the docs to reflect this.
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
The mpls-route module may be missing from Ubuntu 18.4. Provide info on
what pkg to install plus what directory py.test needs to be run from.
Signed-off-by: nikos <ntriantafillis@gmail.com>
now that bfd show commands have changed, update documentation so as to
reflect how to use vrf keyword in the show bfd commands.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Noticed that a couple of the `show zebra ...` commands are missing
from the zebra documentation that I use a bunch. Let's add them
in.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This command is broken and has been broken since the introduction
of vrf's. Since no-one has complained it is safe to assume that
there is no call for this specialized linux command. Remove
from the system with extreme prejudice.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Noticed during attempts at usage that the documentation
needed a couple small updates:
1) Tell the user which header to include
2) Some functions want the address of the data structure
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Noticed during attempts at usage that the documentation
needed a couple small updates:
1) Tell the user which header to include
2) Some functions want the address of the data structure
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ralph has kindly granted us GPLv2+ license to use this documentation,
and requests that we keep a reference to his name. Add these facts to
the documentation.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
The PIM-EVPN doc was not rendering very well on the
website. So Update documentation to allow it to render
better.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* Reflow to 80 columns
* Improve markup
* Add --apiserver option to example ospfd invocations
* Add note on requirement of this option to use api server
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
libyang defaults CMAKE_BUILD_TYPE to "Debug", which disables compiler
optimizations. We should instruct our users to build libyang in the
"Release" mode so that compiler optimizations are enabled and they
can benefit from the associated performance improvements.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Remove the following:
* gawk
* dejagnu
Add the following for FreeBSD 9 and OpenBSD 6:
* libexecinfo
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Update build package list
* Update ./configure options
* Fix some RST syntax errors
* Use monolithic config examples
* Use compile include snippet
* Reorganize a bit
Tested on Ubuntu 18.04
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Use compile include snippet
* Move daemons enable section to end
* Fix a couple syntax errors
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
We're going to use this same snippet across every build doc so let's
just pull it into its own include file now.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Tested these on Fedora 24 and 28, so they should be true for all
versions in-between as well as Fedora 29 and all upcoming versions.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Upstream libyang now works with FRR; use it
* Install libyang to system library directories to satisfy pkg-config
* Remove warnings about ABI version
* Remove outdated binary package links
* Cleanup formatting
Validated that these instructions work on:
- Fedora 24
- Fedora 28.
- Ubuntu 18.04
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
it is possible to do some ponctual backporting of bug fixes, on older
than the 2 last maintenance releases.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
watchfrr_enable is ignored, watchfrr_options is unneeded and the
valgrind options have been replaced with daemon_wrap/all_wrap.
Signed-off-by: David Lamparter <equinox@diac24.net>
Add build-essential and, for platforms with systemd, libsystemd-dev to
the package list for builds
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
When you are using the install/remove routes command, the
output goes to a log file. This command allows for ease
of dump of timing information from the vty or vtysh.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Starting with libyang 0.16.74, we can load internally embedded yang
extensions instead of going through the file system/dlopen. Detect
support for this at build time and use if available.
NB: the fallback mechanism will go away in a short while.
Signed-off-by: David Lamparter <equinox@diac24.net>
The modules.rst documents how to create a module, let's update
it a bit to reflect what an end user needs to do a bit more.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Unfortunately the first version of the FreeBSD libyang port contained
a bug in which the libyang pkginfo file wasn't being installed
correctly in the system, and this prevented the FRR build system from
detecting the library. This bug was already fixed months ago but some
FreeBSD package repositories still have the old bugged version of the
port. This means we can't suggest people to install libyang using
"pkg install" since this causes problems for most people. In this
case, suggest FreeBSD users to build and install libyang manually
as we suggest for other BSD platforms.
This commit should be reverted once all FreeBSD package repositories
are updated with the new version of the libyang port.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This doc is .. include::'d in snmp.rst and needs to be ignored as part
of the main toctree build. This patch squashes a Sphinx build warning.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
explain why GPLv3 must be permitted, and explicitly mention that code
not compatible with GPLv3 is prohibited.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
* Add full version history with header diagrams
* Update field descriptions
* Update overview section
* Update list of protocol commands
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Router Information needs to specify the area ID when flooding scope is set to
AREA. However, this authorize only one AREA. Thus, Area Border Router (ABR) are
unable to flood Router Information Opaque LSA in all areas they are belongs to.
The path implies that the area ID is no more necessary for the command
'router-info area'. It remains suported for compatibility, but mark as
deprecated. Documentation has been updated accordingly.
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
The --with-yangmodelsdir and --with-libyang-pluginsdir build-time options
pertain to FRR so they shouldn't be placed along with the libyang build
instructions. Move these instructions to where they belong to avoid
confusion.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
These instructions are intended to be temporary until we have libyang
packages available for all supported platforms.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This plugin leverages the northbound API to integrate FRR with Sysrepo,
a YANG-based configuration and operational state data store.
The plugin is linked to the libsysrepo library and communicates with
the sysrepod daemon using GPB (Google Protocol Buffers) over AF_UNIX
sockets. The integration consists mostly of glue code that calls the
appropriate FRR northbound callbacks in response to events triggered
by the sysrepod daemon (e.g. request to change the configuration or to
fetch operational data).
To build the sysrepo plugin, provide the --enable-sysrepo option to the
configure script while building FRR (the libsysrepo library needs to be
installed in the system).
When installed, the sysrepo plugin will be available for all FRR daemons
and can be loaded using the -M (or --module) command line option.
Example: bgpd -M sysrepo.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This plugin leverages the northbound API to integrate FRR with the ConfD
management agent.
The plugin is linked to the libconfd library and communicates with the
confd daemon using local TCP sockets. The integration consists mostly
of glue code that calls the appropriate FRR northbound callbacks in
response to events triggered by the confd daemon (e.g. request to change
the configuration or to fetch operational data).
By integrating FRR with the libconfd library, FRR can be managed using
all northbound interfaces provided by ConfD, including NETCONF, RESTCONF
and their Web API.
The ConfD CDB API is used to handle configuration changes and the ConfD
Data Provider API is used to provide operational data, process RPCs and
send notifications. Support for configuration management using the ConfD
Data Provider API is not available at this point.
The ConfD optional 'get_object()' and 'get_next_object()' callbacks were
implemented for optimal performance when fetching operational data.
This plugins requires ConfD 6.5 or later since it uses the new leaf-list
API introduced in ConfD 6.5.
To install the plugin, the --enable-confd option should be given to the
configure script, specifying the location where ConfD is installed.
Example: ./configure --enable-confd=/root/confd-6.6
When installed, the confd plugin will be available for all FRR daemons
and can be loaded using the -M (or --module) command line option.
Example: zebra -M confd.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
We weren't cleaning up some files (a whole lot of python foobar) and had
some files in the dist tarball that don't quite belong there.
Signed-off-by: David Lamparter <equinox@diac24.net>
For some reason, automake was "randomizing" the order of these few lines
in the generated output Makefile.in.
I have absolutely no clue what's going on, but it's the only thing
preventing me from building reproducible source tarballs (i.e.
bit-exactly identical), so... just slightly "rephrase" this.
Should behave exactly the same as before.
Signed-off-by: David Lamparter <equinox@diac24.net>
Some draft ietf are not handle by :rfc: keyword. A workaround is
proposed, like it has been done for flowspec.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Do a straight conversion of `struct bgp_info` to `struct bgp_path_info`.
This commit will setup the rename of variables as well.
This is being done because `struct bgp_info` is not descriptive
of what this data actually is. It is path information for routes
that we keep to build the actual routes nexthops plus some extra
information.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This corrects the route map documentation to add the missing "prefix-list"
keyword, which is necessary when matching against a prefix list (as opposed to
an access list).
Additionally, change hyphens for underscores in the variables the user is
supposed to substitute in those commands, to prevent any confusion with the
"prefix-list" keyword itself, and also to make it more consistent with the
other documented commands (which are already using underscores).
Signed-off-by: Tore Anderson <tore@redpill-linpro.com>
Documentation on how to use multiple autonomous systems was inaccurate
and a bit scattered. Clarify usage of VRFs with multiple autonomous
systems, how to configure them, and their distinction from views. Also
moves a block on L3VPN VRFs out of the 'Basic Concepts' section.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
The script simplifies the relatively lengthy procedure.
It should be invoked from the top level source directory, for example:
./tools/build-debian-package.sh
Signed-off-by: Daniil Baturin <daniil@baturin.org>
Sphinx always runs, even in the `make install` stage. When `make install`
is run as root and then another `make` is run by a nonprivileged user,
some versions of `mv` prompt like this:
mv: replace 'doc/manpages/_build/man/man.stamp',
overriding mode 0644 (rw-r--r--)?
Add -f to `mv` to avoid this. As `-f` is part of Posix, this should be
portable enough.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Corrections so that the BGP daemon can work with the label manager properly
through a label-manager proxy. Details:
- Correction so the BGP daemon behind a proxy label manager gets the range
correctly (-I added to the BGP daemon, to set the daemon instance id)
- For the BGP case, added an asynchronous label manager connect command so
the labels get recycled in case of a BGP daemon reconnection. With this,
BGPd and LDPd would behave similarly.
Signed-off-by: F. Aragon <paco@voltanet.io>
In some places we were using `frrvt` instead of `frrvty`. Make it consistent
with every other place and use frrvty.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Since we're now building through one large Makefile, we can easily put
things with their daemons and crossreference nicely.
Signed-off-by: David Lamparter <equinox@diac24.net>
Implement RFC 6232, optionally allowing to flood isisd's NET and
hostname in purges it originates.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
fabricd is built using the sources of isisd. To allow differentiation
in the code, -DFABRICD=1 is added to its preprocessor flags.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
The sphinx 'text' writer apparently doesn't support these, and the
'dummy' writer is only available on recent versions, and all of this
makes the build a bit annoying...
Signed-off-by: David Lamparter <equinox@diac24.net>
Sphinx actually does work with a parallel build, if the doctree creation
is a separate step (which the other builds will then just read
unmodified.) This can be done with the "dummy" target.
This also adds "-j6" to sphinx-build and adds a "--disable-doc-html"
switch on ./configure to turn on/off building HTML docs separately.
Also, HTML docs are now installed by "make install" to
/usr/share/doc/frr/html.
Signed-off-by: David Lamparter <equinox@diac24.net>
It is possible to dynamically change default VRF name, if vrf backend is
a netns backend. By creating a link to the default netns in
/var/run/netns folder, then the file name will be used to name the
default VRF. If no backend netns is chosen, it is explained that it is
still possible to statically configure the default vrf name to new
define.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Coded as part of #2684 and most code written while participating at
BornHack@2018.
bgp.rst: Explain what the communities does and a summarized edition of
the communities purpose.
Signed-off-by: Christoffer <netravnen@gmail.com>
The ZEBRA_IPV4_ROUTE_[ADD|DELETE] and ZEBRA_IPV6_ROUTE_[ADD|DELETE] functionality
has been deprecated for a year now, let's remove this code from the system.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The smux.c code has not been able to compile for 2+ years
and no-one has noticed. Additionally net-snmp has marked
smux integration as deprecated for quite some time as well.
Since no-one has noticed and it's been broken and smux integration
is deprecated let's just remove this from the code base.
From looking at the code, it sure looks like SNMP could use
a decent cleanup.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This roughly outlines when to use which logging function. It's
certainly something to have to point people to, so they get things nice
and right - and so we get at least somewhat consistent behaviour for the
user.
Signed-off-by: David Lamparter <equinox@diac24.net>
Since we removed --enable-tcp-zebra cleanup the last
remaining vestiges of that code from the system.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Improvements:
* Show command line as code, to avoid confusion about single dash (`-`)
and double dash;
* Tell the user where the BGP BFD commands can be found;
* Document OSPF/OSPF6/PIM BFD commands;
* Document JSON commands;
* Tell about session counters;
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Options must be documented before they can be cross-referenced, and the
scope for configure options is not present in rpki.rst. Remove the
option role tag from the `-M` option to remove the build warning.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Remove the ip route specific sections from zebra documenation and
create a specific one for the new staticd.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The parameter was missing in that vty command. Then it is being added.
Also some documentation is refreshed.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
It has not been properly documented yet how to enable the RPKI module with BGP when having installed FRR with RPKI support. This PR seeks to add a section to the user documentation about this. So users will not have to resolve to searching the internet and looking through the FROG mailing list threads for answers.
* Sphinx numbered lists use 1. not 1)
* Indents are three spaces
* Blocks under lists should be indented along with the rest of the list
content
* Sphinx converts :: to : when used as a code block marker
* Apply some preformatted markup to things that should be preformatted
* Remove trailing whitespace
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit gathers some basic information on how to configure and setup
Ldp, as well as depict some main principles for that protocol.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Add some information to inform the user that one can either display ipv4
or ipv6 routing table, with the above commands.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Currently, make check runs the unit tests and reports pass/fail,
but we have no way to guage how much of the code is covered by
these tests. gcov provides those statistics on a per source
file basis, but requires special CFLAGS and LDFLAGS. Here, we
add the --enable-gcov configure option to setup those options
correctly. We also add a make target called check-coverage,
which runs the unit tests, runs gcov and uploads the data to
the codecov.io cloud service for display.
Finally, we include a Dockerfile-coverage which creates a
container image in alpine linux to run the tests. To create
the image:
$ docker build \
--build-arg commit=`git rev-parse HEAD` \
--build-arg token=<upload token from codecov.io> \
-t frr-gcov:latest \
-f docker/alpine/Dockerfile-coverage .
and to create and upload the report:
$ docker run -it --rm frr-gcov:latest
Testing done:
Created and uploaded a report from my fork using alpine linux 3.7.
Non-coverage alpine 3.7 build still works.
Issue: https://github.com/FRRouting/frr/issues/2442
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
* Fix broken citations
* Remove trailing whitespace
* Rewrap to 80 lines
* Tweak capitalization of section headers
* Clean up a few indented blocks
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Rewrap lines to 80 characters
* Update some portions to reflect current practices
* Clean up some formatting (indent, markup, etc)
* Reorganize sections on patch submission
* Remove link to nonexistent github wiki page
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Older versions of Sphinx don't support toctree captions, so we can't use
them yet unfortunately.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Update the list of protocol daemons from 5 to the current 13
* Rewrap and clean up formatting for lots of miscellaneous code blocks
* Improve English in various spots
* Update architecture description and diagram
* Remove duplicate information on reporting bugs
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This doc needed (and still needs) a lot of love.
* Reorganize doc into logical sections
* Clean up lots of grammatical mistakes and misspellings
* Clean up lots of bad formatting
* Remove non-existent configuration options and commands
* Mark deprecated configuration options as deprecated
* Fix all cross-references to follow a standard format
* Fix capitalization on section and subsection titles
* Fix section and subsection level underlines
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
PIM documantation was missing commands relevant to PIM protocol
that were documented in COMMANDS file of pimd directory.
Signed-off-by: Mladen Sablic <mladen.sablic@gmail.com>
Note that these commands:
bgp config-type cisco
no bgp multiple-instance
are now deprecated and will be removed in a future version of FRR.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Keeping the config intact might be misunderstood. I say that even if VRF
netns is automatically discovered, it is possible for administrator to
save the netns information in the config file, to bring more clarity (
hence the config commands available).
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
To avoid some confusions, it is precised in the documentation that
the configuration not done from zebra will not be injected in the
configuration context. As consequence, the config file will not be
impacted by underlying network context. But also, this will not be
possible for *Zebra* to attempt to modify outside networking objects.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit brings some information about BGP VRF case with peering
using multiple VRF instances.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Apparently Automake has some undocumented logic somewhere that makes it
so any Makefile generated from an Automake Makefile.am is removed from
its secret list of things to delete that it deletes when performing a
recursive distclean before actually performing the recursive distclean
and since the secret list is automatically generated from the list of
things that Autoconf should generate in configure.ac we can't remove the
Makefile from that list or it will break Automake's list of things to
automatically generate that it generates from Autoconf's list of things
to automatically generate.
Thus, to prevent Automake from deleting Makefiles and then immediately
trying to use the Makefiles it just deleted to delete said Makefiles, we
must remove ourselves from the secret list, which is accomplished by
changing the file extension to '.am' instead of '.in'.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Add the documentation for match source-instance.
I also noticed that 'match source-protocol' was missing
add that in too.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Kernel 2.2 was released in 1999, I'm pretty sure everybody has it by
now. Plus these links don't even exist anymore.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
While we have docs on various pieces of the build system we don't have
any docs on how to actually get FRR running once it's installed, nor do
we have comprehensive documentation on the basic procedure for building
from source. This patch remedies both of those.
Also updated the services list in the docs and removed the SERVICES file
from the project root.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
The required packages list should be easier to parse. Updated the style so it's more similar to the ``./configure`` style later in the document.
Signed-off-by: Jarad Olson <brotherdust+github@gmail.com>
Names of the MPLS kernel modules changed slightly in recent kernel. Uses underscore instead of dash.
Signed-off-by: Jarad Olson <brotherdust+github@gmail.com>
The pull request #1545 from @donaldsharp introduced the command 'no
password' to remove an existing terminal connection password.
Additionally, warnings have been added to both 'no password' and 'no
enable password' to make the user aware of any security implications.
It seems that this specific pull request was never merged against master
and got lost. This commit is a cherry-pick of d4961273cb with fixed
conflicts and updated documentation.
Thanks to @donaldsharp and @pogojotz for the original PR.
Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
Updated the doc to cross-reference build documentation as well and
reformatted to RST. Removed stub section on how to configure daemons and
whatnot, as that's the domain of the user docs.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
As there are subtle differences between VRF-lite and VRF-netns,
some information is given to the operator on what can be/ can not be
done.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Explain the --enable-ecmp=X configure option as well as
modify the zebra user doc to explain the -e X option.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Documentation was not fully using Automake / Autoconf and therefore needs
modifications to support black magic VPATH builds.
* Convert Makefile's to Autoconf-controlled Makefile.in's
* Tweak loading of pygments lexer to handle runtime paths
* Update .gitignore's as necessary
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Adding to mtracebis querying with group address. Same change
to vtysh mtrace command. Support for querying (S,G) and (*,G)
state in mtrace router code. Further improvments to mtrace router
code with closer complience to IETF draft. More references in
comments to the draft. Man page has been updated accordingly.
Signed-off-by: Mladen Sablic <mladen.sablic@gmail.com>
* Run sphinxcontrib-spelling over docs
* Correct spelling errors
* Compile a dictionary for future spellchecking efforts
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Add support for CLI "auto" keyword in vrf->vpn export label:
router bgp NNN vrf FOO
address-family ipv4 unicast
label vpn export auto
exit-address-family
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
The docs extract various configuration values from config.status and
substitute them into placeholders throughout the docs. Add the ability
to build the docs with some reasonable defaults set instead of failing
when config.status doesn't exist.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Pygments 2.2+ has `load_lexer_from_file`, but it looks like some of our
build platforms are on an older version.
Also gotta include the new file in dist tarball.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Currently, we just package the frr daemons, but we don't run
them. This is fine for basic tests, but it is inconvenient to
orchestrate the daemons from downstream test environments.
Here, we follow the redhat and debianpkg formats more closely,
putting the daemons in /usr/lib/frr and including the frr user
and groups in the package. We also include a docker specific
startup script and a sysvinit link in /etc/init.d/frr for
openrc based alpine installs.
Testing done:
Built packages, built base images, everything seems to work fine.
Uninstalled the package, all the daemons stopped.
Issue: https://github.com/FRRouting/frr/issues/2030
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
Vincent Bernat has written a small Pygments lexer for IOS / Quagga
config files that works just as well on FRR stuff. Pulled that into our
docs with his blessing.
Also changed the background color on our code blocks away from that
kinda ugly green to gray, which looks way better with the syntax
highlighting changes that are about to happen in the next commit.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Use the proper section markup as defined in workflow.rst.
This helps Sphinx organize sections properly.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Short and long form options can be written on the same line, Sphinx
understands how to cross-reference using either one of them. Also
replace some - with _ where appropriate.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Currently, we tar up the git repo before building alpine packages.
This ensures that the packages we're building are exactly what is
checked in. But, in practice, this restriction causes us to not
be able to build off of git contexts, which is a convenient feature
especially when using docker-compose.
So, here, we build the alpine packages directly from the contents
of the current directory and we install the packages into a base
image to ease downstream consumption. There is still work to be
done in that area, as we need to package up the daemons, frr user
and all the rest, but that's for later...
Testing-done:
Built directly from the git repo, built from a reference to the
git repo and built using docker-compose, all seemed to work. Also,
tested by @leleobhz and seems to build fine.
Thanks to Leonardo Amaral (@leleobhz) for reporting the issue and for
the original idea for a fix.
Issue: https://github.com/FRRouting/frr/issues/2024
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
* Document modes & nodes
* Document walkup behavior
* Document struct cmd_node
* Add graph of node relationships
* Reorder sections to make more logical sense
* Rewrap sections to 80 lines
* Fix code block indent
* Specify language for code blocks in order to get syntax highlighting
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Adds support for V4 GoAway flag as described in
https://www.ietf.org/id/draft-bz-v4goawayflag-00.txt
This option allows advertising neighbors to indicate to recipients that
they should disable IPv4 on the link.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Ubuntu 18.04 build doc was not included in its toctree
* Duplicate definition of the same CLI command removed
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Add the documentation for 'remote-as [internal|external]`
Cleanup some old obsolete information
Specify that interfaces can be used as a peer in bgp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The following types are nonstandard:
- u_char
- u_short
- u_int
- u_long
- u_int8_t
- u_int16_t
- u_int32_t
Replace them with the C99 standard types:
- uint8_t
- unsigned short
- unsigned int
- unsigned long
- uint8_t
- uint16_t
- uint32_t
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Checkpatch.pl now checks for nonstandard integral types
* Add shell script to replace all nonstandard types with their standard
counterparts in C source files
* Document usage of types, mention conversion script
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
add note that author's shouldn't remove a comment or review.
also add a note that automatically generated comments can
be deleted by authors and others when such comments are not
the most results from that automated comment source.
Signed-off-by: Lou Berger <lberger@labn.net>
The default theme has a css rule that limits the body element width to
800px, which results in sizeable chunk of empty space to the right of
the docs. Add a small css override to remove this limit (like the Python
docs do).
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Translate plaintext stub documenting bgpd preprocessor constants for
attributes into a RST file and include it in the doctree
* Remove the Markdown version of the OSPF-API document, as I've already
translated it into RST
* Remove the Markdown version of the modules document, as I've already
translated it into RST
* Rename the various "Building_FRR_*" documents to match standard RST
file conventions
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
LaTeX doesn't know how to typeset SVG images, so use a png. Sphinx has a
plugin to automatically convert images to the right format for every
builder but it depends on imagemagick and God only knows what plugin
support is like on Centos 6...
Also correct the name of the BGP typecodes doc in its index file.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Translate plaintext stub documenting bgpd preprocessor constants for
attributes into a RST file and include it in the doctree
* Remove the Markdown version of the OSPF-API document, as I've already
translated it into RST
* Remove the Markdown version of the modules document, as I've already
translated it into RST
* Rename the various "Building_FRR_*" documents to match standard RST
file conventions
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Building alpine packages in a "standard" distro can be
complicated due to the limited scope of the distro (embedded
and small docker images). Building in a VM is one possibility,
but docker support for alpine is very good (default docker images
come in alpine due to the very small size).
Here, we want to package up the current git repo into apk packages
that can be easily installed in alpine linux using the apk tool.
This support is not intended to package released versions of
apk packages, that, if it comes to be, should be done here:
git://git.alpinelinux.org/aports
We're content here to build packages that can be used by developers
to try out frr in docker and other alpine environments.
This is a very minimal environment, we don't support importing
keys (so, installing the packages with apk requires the
--allow-untrusted option). In addition, we can't use the
git commit id in hex as version tag, as alpine doesn't support hex
digits in the version string. So, we need to convert the git hash
to decimal before tagging the package with the extra version.
This is yucky, but I can't think of another way to get a
unique version per package. The alpine way (using a numeric date),
only works for released packages, not for dev packages.
Issue: https://github.com/FRRouting/frr/issues/1859
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
The vtysh man page was referencing eigrp. Looked like a
cut-n-paste error?
Added some missing cli for the vtysh program, that users
might want to see.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Document the configure option to strip non-numeric characters from
the version string.
Testing done:
Build alpine packages in docker, run texinfo on the doc apk package.
Issue: https://github.com/FRRouting/frr/issues/1859
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
Since docs are rebuilt on every make invocation, don't bother building html by
default to save a bit of time.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Sphinx is not designed to be run in parallel and exhibits filesystem race
conditions if it is. Disable parallel build.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Iron out all of the glitches with recursive Automake, 3rd-party
autogenerated Sphinx makefiles, building and installing 3 different
document formats under different targets, and handling clean.
* Implement all Automake-required targets for 3rd-party Makefiles
* Setup subdirectories for 3rd-party Makefiles
* Override implicit Automake document targets
* Clean up explicit targets for developer docs
* Move Sphinx-generated Makefile to an include file
* Update targets for debian packaging
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Remove the various manpages & info related ignore rules so that git
clean can pick them up and delete them.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Unconditional automake subdirectory flag = 'man' causes manpages to
always be built regardless of target, which is undesirable for `clean`.
Remove unconditional flag and override automake targets that need to
build manpages instead.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
- Added warning for CentOS 6 support to be limited
- Added instructions for installing sphinx27-build manually
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
Error message for missing sphinx-build wasn't clear enough when
explaining how to change the path to the sphinx-build binary as it said
'environment variable' instead of 'make variable'
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* New manpage: mtracebis.rst
* Makefile.am includes mtracebis.rst
* configure.ac lines removed
* Debian packaging files updated
* Fixed up manpage |seealso-programs| in the process
* Centos7 build package list updated to include systemd-devel
* New paragraph on netns vrf support in zebra manpage
Conflicts:
configure.ac
debianpkg/backports/ubuntu14.04/debian/frr.install
debianpkg/frr.install
doc/Makefile.am
doc/developer/Building_FRR_on_CentOS7.rst
doc/zebra.8.in
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
- To ease checking the Segment Routing conformity in topotest,
add json output to 'show ip ospf database segment-routing' CLI.
- Update ospfd user guide accordingly
- Update OSPF-SR documentation with supported features and interoperability
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Update the centos7 build instructions to include
data on how to build w/ systemd. This is especially
useful because we tell the user to install the frr.service
file and the frr.service file expects systemd integration
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
BSD systems need gmake to build FRR, hence why we use $(MAKE) instead of
directly invoking make. It looks like Sphinx generated makefiles
understand this, but contain a bug where the target for info files
hardcodes make instead of using $(MAKE). Fix this.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Some platforms (actually just Centos6, again, of course) call
"sphinx-build" as "sphinx-1.0-build", and so to work around this
apparently useless name, fall back to sphinx-1.0-build when we can't
find sphinx-build before displaying an error message. I am not doing in
this the configure script because the sphinx makefiles are not Automake
files and the less Automake in tree the better.
Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
This commit is the implementation of weak multicast traceroute.
It consists of IGMP module dealing with mtrace type IGMP messages
and client program mtrace/mtracebis for initiating mtrace queries.
Signed-off-by: Mladen Sablic <mladen.sablic@gmail.com>
Incidentally this was all broken before anyway.
* Correctly ship all documents in frr-doc
* Ship manpages for all daemons in frr
* Update rules to build docs via Sphinx
* Use packaging install files correctly
Forgot to add a couple includes to the exclude list. Also move
defines.txt to defines.rst since I know how to properly ignore things
now.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Newer sphinx-build generated makefiles use an as-of-yet undocumented CLI
option that is not present in older versions.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Replaced stub definitions of CLI with references to their full
definitions so that Sphinx can properly cross reference them.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
At some point the routeserver docs got lost, converted those from texi
and put them back. Also fixed some broken cli xrefs.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Remove groff manpages
* Rewrite manpages in RST
* Clean up and standardize manpage content
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Move all developer related docs into developer/
* Move all figures into their own directory
* Move manpages to own directory
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Following various review, following files have been modfied:
- All: Change u_intXX_t typedef to standard uintXX_t types
- doc/OSPF-SR.rst: Update doc in particular the Linux Kernel configuration
section
- doc/ospfd.texi: Update CLI
- ospfd/ospf_dump.[c,h]: Add new 'debug ospf sr' when performing 'sh run'
- ospfd/ospf_ext.[c, h]: Various bug corrections notably to handle flooding of
Extended Prefix at startup. iFix TLVs size for LAN Adjacency.
Update Licence as per Community.md
- ospfd/ospf_opaque.c: Add proper termination function call to remove MPLS entries
- ospfd/ospf_ri.[c,h]: Bug corrections
- ospfd/ospf_sr.[c,h]: Various bug corrections, notably to determine the nexthop
SR Node. Add support to 'no-php-flag'.
Update Licence as per Community.md
- ospfd/ospfd.c: Add call to 'ospf_opaque_term()'
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Using /var/run/frr as a localstate directory will allow
debian9 to just delete that directory on every reboot.
This causes issues for people who are new to the system
in that FRR will just stop working on a reboot.
Instead just point people at a better spot.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
- Remove OSPD_SR route type
- Check that Segment Routing is enable only in default VRF
- Add comment for SRGB in lib/mpls.h
- Update documentation
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
This is an incomplete stub of a chapter and goes under BGP docs anyway.
Also fix an include statement for RPKI.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
In conf.py, extract & construct values for inline variables throughout
the docs. In the docs, use these inline variables in RST syntax.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
- In ospfd and isisd documentation, Traffic Engineering examples
are referring to old interface syntax. Update both examples to
'link-param' syntax.
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
- ospf_ext.c: Correct deferred pointer raised by valgrind
- ospf_sr.c: Correct deffered pointer raised by valgrind. Modify
Segment Routing shutdown. This is due to the fact that RI LSA
4.0.0.0 is flush prior to 7.0.0.X & 8.0.0.X LSA. This trigger
SR-Node deletion which also remove all Extended Link / Prefix
leaving them unavailable when there are referenced by 7.0.0.X
& 8.0.0.X LSA flushing.
- doc/OSPF-SR.rst: Correct Restructured Text syntax and add
Configuration example as well as Credit section
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
This is an implementation of draft-ietf-ospf-segment-routing-extensions-24
and RFC7684 for Extended Link & Prefix Opaque LSA.
Look to doc/OSPF_SR.rst for implementation details & known limitations.
New files:
- ospfd/ospf_sr.h: Segment Routing structure definition (SubTLVs + SRDB)
- ospfd/ospf_sr.c: Main functions for Segment Routing support
- ospfd/ospf_ext.h: TLVs and SubTLVs definition for RFC7684
- ospfd/ospf_ext.c: RFC7684 Extended Link / Prefix implementation
- doc/OSPF-SRr.rst: Documentation
Modified Files:
- doc/ospfd.texi: Add new Segment Routing CLI command definition
- lib/command.h: Add new string command for Segment Routing CLI
- lib/mpls.h: Add default value for SRGB
- lib/route_types.txt: Add new OSPF Segment Routing route type
- ospfd/ospf_dump.[c,h]: Add OSPF SR debug
- ospfd/ospf_memory.[c,h]: Add new Segment Routing memory type
- ospfd/ospf_opaque.[c,h]: Add ospf_sr_init() starting function
- ospfd/ospf_ri.c: Add new functions to Set/Get Segment Routing TLVs
Add new ospf_router_info_lsa_upadte() to send Opaque LSA to ospf_sr.c()
- ospfd/ospf_ri.h: Add new Router Information SR SubTLVs
- ospfd/ospf_spf.c: Add new scheduler when running SPF to trigger
update of NHLFE
- ospfd/ospfd.h: Add new thread for Segment Routing scheduler
- ospfd/subdir.am: Add new files
- vtysh/Makefile.am: Add new ospf_sr.c file for vtysh
- zebra/kernel_netlink.c: Add new OSPF_SR route type
- zebra/rt_netlink.[c,h]: Add new OSPF_SR route type
- zebra/zebra_mpls.h: Add new OSPF_SR route type
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
The old Texi docs had some Makefile-style variable substitutions they
used to pull in information like release date, configured install path,
etc. Sphinx has this ability as well, we start making use of it here.
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Automatically translated all Texinfo files to RST using a script found
on the GCC mailing list[0]. Some formatting manually corrected.
Also created index.rst for building as well as boilerplate Sphinx
conf.py and Makefile.
[0] https://gcc.gnu.org/ml/gcc-patches/2015-11/msg01095.html
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Add chapter on BGPD
* Add diagram for git workflow
* Convert next-hop tracking documents to ReST
* Update & organize workflow document
* Move ldpd docs back up to the parent directory
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* Move doc/code/ -> doc/developer/
* Move disparate code documentation to doc/developer/
* Convert Markdown docs to reStructuredText
* Organize docs into Sphinx tree
* Move build docs -> doc/developer/
* Change build doc titles to fit under Building subsection of manual
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit adds support for the RTR protocol to receive ROA
information from a RPKI cache server. That information can than be used
to validate the BGP origin AS of IP prefixes.
Both features are implemented using [rtrlib](http://rtrlib.realmv6.org/).
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
1) Write zserv api commands( one of each type ) to the side. This will allow
us to use them as input for a fuzzer.
2) Add -c <file to pass to zapi read process> into zebra as a run-time
option of we've turned on fuzzing.
While in and of itself these are not terribly useful( you still need
an external fuzzer ), they provide an infrastructure to allow
tools like afl to test the zapi.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Add the ability to match a specific prefix-length in zebra.
This command behaves in the same manner that the v4 version
of the command behaves.
Fixes: #1398
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Added python-ipaddr apt requirement to documentation.
Added clarification to install systemd service section
as commands assume are in frr directory.
Signed-off-by: Will McLendon <wimclend@gmail.com>
Turn on '-g3 and -O0' for compilation. Additionally
document the --enable-dev-build flag in our documentation.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
When matching user input against a CLI graph, we keep a stack of tokens
matched. Stack size was limited to 64, making the effective number of
tokens that could be entered on a line 64. This is too limiting in some
circumstances, so bump it to 256 (and document it).
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Regular expressions are used throughout in bgp commands, it
should not be in a section under as paths which cannot be
easily found.
Signed-off-by: Nigel Kukard <nkukard@lbsd.net>
Disable this in the code to make it hard for people to shoot themselves
in the foot. It's only left as a remnant for development use.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This adds "@tcp" as new choice on the -z option present in zebra and the
protocol daemons. The --enable-tcp-zebra option on configure is no
longer needed, both UNIX and TCP socket support is always available.
Note that @tcp should not be used by default (e.g. in an init script),
and --enable-tcp-zebra should never have been in any distro package
builds, because
**** TCP-ZEBRA IS A SECURITY PROBLEM ****
It allows arbitrary local users to mess with the routing table and
inject bogus data -- and also ZAPI is not designed to be robust against
attacks.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This inserts "\global \advance \brackcount by 1" into the frr.fn
(function index) for some reason, which causes the PDF build to fail.
It's somehow related to the [] brackets, but they work just fine in
other locations...
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Ditch version.texi, put PACKAGE_VERSION in defines.texi instead.
Also add a PACKAGE_URL variable and fix some leftover outdated URLs.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
BUILT_SOURCES doesn't do what the name suggests. What it actually means
is "these files should be built first when doing a 'make' without
explicit target" (or "make all").
It's pretty much almost always wrong to use BUILT_SOURCES, the only
correct use is when a file is needed by an unspecified / large set of
files.
Also remove version.h and route_types.h from dist tarball while we're at
it. configure will create them anyway.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Remove -R, -a, -A, -e and -z options. Also remove blocker in the code
that refuses to start if --dry is given together with -k / -s / -r.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
With the help of the WayBackMachine, add old documentation
about the OSPF API and basic Zebra hacking
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Several changes were made from the original patch to resolve conflicts
and also to fix various issues that were discovered during testing. Below
is the original commit message minus a few parts that correspond to code
that was dropped during bug fixing.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
ospfd: Extend 'ip ospf area' to take address argument + rationalise ospf enable
* ospfd.c: (general) Clean up the whole running of OSPF on interfaces.
(add_ospf_interface) taking (struct interface *) arg is pointless here.
(ospf_is_ready) new helper.
(ospf_network_run_subnet) Put all the code for choosing whether to enable
OSPF on a subnet, and if so which area configuration to use, here. If a
subnet should not be enabled, ensure an existing oi is freed.
(ospf_network_run_interface) Just call run_subnet for all subnets on an
interface.
(ospf_network_run) Just call run_interface for all interfaces.
(ospf_if_update) Just call run_interface for the given interface.
(ospf_network_unset) Just call run_subnet for existing ois.
(ospf_update_interface_area) helper: update area on an oi, or create it.
(ospf_interface_set) renamed to ospf_interface_area_set for clarity.
Ensures OSPF is created, then into if_update.
(ospf_interface_unset) renamed to ospf_interface_area_unset and collapses
down to simple loop to call run_subnet for all ois.
* ospf_interface.h: add a more general OSPF_IF_PARAM_IS_SET, which does the
right thing and takes default config into account.
* doc/ospfd.texi: add 'ip ospf area' command.
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
This patch has been part of Quagga since October 2015
Orignial Author: Paul Jakma <paul@quagga.net>
Date: Thu Aug 27 16:51:42 2009 +0100
The xml2cli.pl script was useful years ago when the vty code was very
rudimentary. This is not the case anymore, so convert all ldpd CLI
commands to use DEFUNs directly and get rid of the XML interface.
The benefits are:
* Consistency with the other daemons;
* One less build dependency (the LibXML perl module);
* Easier to add new commands.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
The 'struct rib' data structure is missnamed. It really
is a 'struct route_entry' as part of the 'struct route_node'.
We have 1 'struct route_entry' per route src. As such
1 route node can have multiple route entries if multiple
protocols attempt to install the same route.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The 'show zebra' command really shouldn't be owned
by ospf6. This command is a specialized command
to show some basic information about ospf6 and zebra
so limit it to ospf6.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This is a direct copy of:
https://github.com/boutier/quagga-merge
From the branch babel-merge
I copied the babeld directory into FRR and then fixed up everything to
compile.
Babeld at this point in time when run will more than likely crash and burn
in it's interfactions with zebra.
I might have messed up the cli, which will need to be looked at
extract.pl.in and vtysh.c need to be fixed up. Additionally we probably
need to work on DEFUN_NOSH conversion in babeld as well
This code comes from:
Matthieu Boutier <boutier@irif.fr>
Juliusz Chroboczek <jch@irif.fr>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The debian.conf file is to specific of a name towards
debian distributions. Rename to be daemons.conf
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* ldpd is built by default in all platforms, it's not necessary to
provide --enable-ldpd anymore;
* Remove comment about ldpd not being tested on OpenBSD, it works very
well on this platform;
* Provide instructions to enable MPLS forwarding in OpenBSD.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Update the ZEBRA_HEADER_MARKER to 254. This will differentiate
ourselves from Quagga. Zebra should not listen to people not
properly using the right programs now.
Update the ZAPI version number to 4.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
- "redist foo" parsing modified to check for foo==vnc and foo==vnc-direct
instead of just leading 'v' character
- string designating ZEBRA_ROUTE_VNC_DIRECT changed from "vpn" to "vnc-direct"
- route_types.pl parser recognizes 7th field to restrict availability
of a route type in the redist command to specific daemons
- restrict "vnc-direct" to bgpd only (doesn't make sense elsewhere)
- vnc documentation updated to match
Signed-off-by: Lou Berger <lberger@labn.net>
This makes the actual change to the manpages to get ./configure effects
applied into them.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
The manpages contain references to installation paths and thus should be
preprocessed by ./configure to get the actual paths.
This commit is an exact-rename so the changes for the preprocessing are
easier to review (diffs in renames are hard to read...)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This feature adds an L3 & L2 VPN application that makes use of the VPN
and Encap SAFIs. This code is currently used to support IETF NVO3 style
operation. In NVO3 terminology it provides the Network Virtualization
Authority (NVA) and the ability to import/export IP prefixes and MAC
addresses from Network Virtualization Edges (NVEs). The code supports
per-NVE tables.
The NVE-NVA protocol used to communicate routing and Ethernet / Layer 2
(L2) forwarding information between NVAs and NVEs is referred to as the
Remote Forwarder Protocol (RFP). OpenFlow is an example RFP. For
general background on NVO3 and RFP concepts see [1]. For information on
Openflow see [2].
RFPs are integrated with BGP via the RF API contained in the new "rfapi"
BGP sub-directory. Currently, only a simple example RFP is included in
Quagga. Developers may use this example as a starting point to integrate
Quagga with an RFP of their choosing, e.g., OpenFlow. The RFAPI code
also supports the ability import/export of routing information between
VNC and customer edge routers (CEs) operating within a virtual
network. Import/export may take place between BGP views or to the
default zebera VRF.
BGP, with IP VPNs and Tunnel Encapsulation, is used to distribute VPN
information between NVAs. BGP based IP VPN support is defined in
RFC4364, BGP/MPLS IP Virtual Private Networks (VPNs), and RFC4659,
BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN . Use
of both the Encapsulation Subsequent Address Family Identifier (SAFI)
and the Tunnel Encapsulation Attribute, RFC5512, The BGP Encapsulation
Subsequent Address Family Identifier (SAFI) and the BGP Tunnel
Encapsulation Attribute, are supported. MAC address distribution does
not follow any standard BGB encoding, although it was inspired by the
early IETF EVPN concepts.
The feature is conditionally compiled and disabled by default.
Use the --enable-bgp-vnc configure option to enable.
The majority of this code was authored by G. Paul Ziemba
<paulz@labn.net>.
[1] http://tools.ietf.org/html/draft-ietf-nvo3-nve-nva-cp-req
[2] https://www.opennetworking.org/sdn-resources/technical-library
Now includes changes needed to merge with cmaster-next.
When building from a 'make dist' allow
the proper distribution of the new
isisd.texi to build documentation properly.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
During one of our build processes we are getting
a refix directory in some places. Remove these
from files that git considers
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit 844cbf5d6cdfc6961e99e1c9ed35b826f3aa7562)
Use with interface command:
interface ppp0
ip ospf area 0.0.0.0
This will enable OSPF on ppp0 with area 0.0.0.0
Remove with "no ip ospf area"
* ospf_vty.c: add "ip ospf area (A.B.C.D|<0-4294967295>)" interface command
* ospfd.c: (ospf_interface_{un,}set) new helper function to enable/disable
OSPF on a specific interface.
(ospf_if_update) 2 possible paths now to deal with interface updates.
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
[DL: this restores the tree to deccaf9...]
This reverts commit e723861da1.
The code is from Joakim Tjernlund; this is just to fix the history (and
attribution) of it. The last commit will restore the exact same tree
state.
THIS COMMIT WILL PROBABLY NOT COMPILE.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
The quagga.1 file was not part of the distribution
and was not being included in the dist tar ball
which caused rpm builds to fail.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* bgpd.texi: The unmacro of mprec seems to be disliked by older texinfos.
Moving it to after the section fixes it. Even easier, just don't undef the
macro.
(cherry picked from commit f8113a2b10a97ba0d5e915b318cebea283d03169)
* bgpd.texi: Document the -l argument. Update the 'BGP decision process' table
to reflect what /actually/ is implemented. Add docs on 'compare-routerid' in
the bestpath section.
Add a section on MED, to highlight the issues it has by default, and to
highlight that it is terminally broken for its original purpose in many
modern iBGP topologies.
Mention the potential workarounds and fixes.
* routemap.texi: set an anchor on 'set metric' so bgpd.texi can reference it.
(cherry picked from commit d5062d218994885710fe02f516f0c06025b4fc9a)
* ospf_fundamentals.texi: New section explaining the fundamentals of OSPF
for system admins, to help them debug their networks.
* {Makefile.am,ospfd.texi}: include and build previous
Conflicts:
doc/Makefile.am
(cherry picked from commit e56aab94a615a2b676473fbd09145b444a348029)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit f16195c173f8e2e17ea35f143b6ffcd50c0619fb)
* quagga.texi: I'm getting warnings about stuff in defines.texi not being
defined when building quagga.info. Seems to be fixed by moving the include
of defines.texi to the end of the header. Also, the Texinfo docs suggest
setfilename must go first.
(cherry picked from commit 384d7ad98c109e92eaf65bf10a3256e5657639c3)
Welcome pimd to the Quagga daemon zoo!
This is a merge of commit 77ae369 ("pimd: Log ifindex found for an
interface when zebra lib reports a new connected address."), with
the intermediate "reconnect" changes removed (c9adf00...d274381).
d274381 is replaced with b162ab7, which includes some changes. In
addition, 4 reconnect-related changes and 1 cosmetic one have been
bumped out.
The rebase command used to produce the branch that is merged here is:
git rebase --onto b162ab7 c9adf00 77ae369
Note that 3 patches had their author rewritten from
"Anonymous SR#108542 <>" (which is not a valid git author ID)
to: "Savannah SR#108542 <nbahr@atcorp.com>" (which is the e-mail address
listed in the associated Savannah ticket)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Create the man page for the quagga systemctl script.
Ticket: CM-9748
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
This fix does two things:
1) If the ${HOME}/.history_quagga file does not exist, create it
for history storing.
2) Allow vtysh -c "..." commands to be stored in history file
as well
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Allow the bgp dump functionality to handle the Extended Time format
as specified in RFC 6396.
Fixes a segmentation fault with multiple dump rules as well.
Signed-off-by: Alexis Fasquel <alexis@pch.net>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
BGPd: Allow route-map policy modifications to also affect route reflectors.
By default, attribute modification via route-map policy out is ignored on
reflected routes. This patch provides an option to allow this modification
to occur. Once enabled, it affects all reflected routes.
Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
COMMAND:
table-map <route-map-name>
DESCRIPTION:
This feature is used to apply a route-map on route updates from BGP to Zebra.
All the applicable match operations are allowed, such as match on prefix,
next-hop, communities, etc. Set operations for this attach-point are limited
to metric and next-hop only. Any operation of this feature does not affect
BGPs internal RIB.
Supported for ipv4 and ipv6 address families. It works on multi-paths as well,
however, metric setting is based on the best-path only.
IMPLEMENTATION NOTES:
The route-map application at this point is not supposed to modify any of BGP
route's attributes (anything in bgp_info for that matter). To achieve that,
creating a copy of the bgp_attr was inevitable. Implementation tries to keep
the memory footprint low, code comments do point out the rationale behind a
few choices made.
bgp_zebra_announce() was already a big routine, adding this feature would
extend it further. Patch has created a few smaller routines/macros whereever
possible to keep the size of the routine in check without compromising on the
readability of the code/flow inside this routine.
For updating a partially filtered route (with its nexthops), BGP to Zebra
replacement semantic of the next-hops serves the purpose well. However, with
this patch there could be some redundant withdraws each time BGP announces a
route thats (all the nexthops) gets denied by the route-map application.
Handling of this case could be optimized by keeping state with the prefix and
the nexthops in BGP. The patch doesn't optimizing that case, as even with the
redundant withdraws the total number of updates to zebra are still be capped
by the total number of routes in the table.
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
quagga: nexthop-tracking.patch
Add next hop tracking support to Quagga. Complete documentation in doc/next-hop-tracking.txt.
Signed-off-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Signed-off-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
COMMAND:
'update-delay <max-delay in seconds> [<establish-wait in seconds>]'
DESCRIPTION:
This feature is used to enable read-only mode on BGP process restart or when
BGP process is cleared using 'clear ip bgp *'. When applicable, read-only mode
would begin as soon as the first peer reaches Established state and a timer
for <max-delay> seconds is started.
During this mode BGP doesn't run any best-path or generate any updates to its
peers. This mode continues until:
1. All the configured peers, except the shutdown peers, have sent explicit EOR
(End-Of-RIB) or an implicit-EOR. The first keep-alive after BGP has reached
Established is considered an implicit-EOR.
If the <establish-wait> optional value is given, then BGP will wait for
peers to reach establish from the begining of the update-delay till the
establish-wait period is over, i.e. the minimum set of established peers for
which EOR is expected would be peers established during the establish-wait
window, not necessarily all the configured neighbors.
2. max-delay period is over.
On hitting any of the above two conditions, BGP resumes the decision process
and generates updates to its peers.
Default <max-delay> is 0, i.e. the feature is off by default.
This feature can be useful in reducing CPU/network used as BGP restarts/clears.
Particularly useful in the topologies where BGP learns a prefix from many peers.
Intermediate bestpaths are possible for the same prefix as peers get established
and start receiving updates at different times. This feature should offer a
value-add if the network has a high number of such prefixes.
IMPLEMENTATION OBJECTIVES:
Given this is an optional feature, minimized the code-churn. Used existing
constructs wherever possible (existing queue-plug/unplug were used to achieve
delay and resume of best-paths/update-generation). As a result, no new
data-structure(s) had to be defined and allocated. When the feature is disabled,
the new node is not exercised for the most part.
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
Dinesh Dutt <ddutt@cumulusnetworks.com>
Quagga sources have inherited a slew of Page Feed (^L, \xC) characters
from ancient history. Among other things, these break patchwork's
XML-RPC API because \xC is not a valid character in XML documents.
Nuke them from high orbit.
Patches can be adapted simply by:
sed -e 's%^L%%' -i filename.patch
(you can type page feeds in some environments with Ctrl-V Ctrl-L)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
The command was mis-named in the documentation as "show ip protocols".
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Traditionally, ttl-security feature has been associated with EBGP
sessions as those identify directly connected external peers. The
GTSM RFC (rfc 5082) does not make any restrictions on type of
peering. In fact, it is beneficial to support ttl-security for both
EBGP and IBGP sessions. Specifically, in data centers, there are
directly connected IBGP peerings that will benefit from the protection
ttl-security provides.
Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
[DL: function refactoring split out into previous 2 patches. changes:
- bgp_set_socket_ttl(): ret type int -> void
- is_ebgp_multihop_configured(): stripped peer == NULL check
- comments/whitespace]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Compute multipath in BGP based on AS_PATH hop count match. If the knob
is turned on, it is not required to have an exact match of AS_PATHs
(provided other multipath conditions are met, of course).
Signed-off-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
commit d771020 "don't build tests unless make check is run" has made the
--{en,dis}able-tests switch completely useless. The differentiation is
now made by running "make check" or not doing so. The only effect of
the switch is an "empty" excursion of make into the tests/ directory.
(well, and it turns "make check" useless from the main directory if
--disable-tests is given, which I don't think makes sense either)
Acked-by: Greg Troxel <gdt@ir.bbn.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
libexecinfo is used to provide backtrace() on *BSD. The API is
compatible with glibc's, so this is a "free" improvement.
To improve configure behaviour, the following configure options are
modified/introduced:
* --enable-gcc-rdynamic now defaults to "on" if the compiler is gcc.
(I sadly wasn't able to find any documentation on the availability of
this option for llvm, even though at least the version I have
installed does support it)
* --enable-backtrace has been added. This behaves as off/auto/on
switch, i.e. giving either {dis,en}able will result in the requested
behaviour (or an error if support wasn't found)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This command allows the user to change to default reference bandwidth
for cost calculations. The default value is 100 Mbps. With a default
bandwidth of 10 MBps, the default cost becomes 10. Those values are
consistent with OSPFv2.
[DL: resolved conflicts in vty command additions & docs]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Previously, the interface cost was a fixed default value that a user
was allowed to change with "ipv6 ospf6 cost XX". As what is done with
OSPFv2, we change this behaviour to compute the default interface cost
from the interface bandwidth.
The user can still force a cost with "ipv6 ospf6 cost XX". He can get
the default value with "no ipv6 ospf6 cost". Moreover, the default
cost value was 1. The cost is now computed from the bandwidth and a
default reference bandwidth of 100 MBps (as for OSPFv2). Since the
default bandwidth for an interface is 10 MBps, the "default" cost
becomes 10 instead of 1.
[DL: resolved conflict in ospf6d/ospf6_interface.c]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>
Signed-off-by: Ayan Banerjee <ayabaner at gmail.com>
Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>
Reviewed-by: James Li <jli at cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
OSPV3 SPF triggers on every SPF-able event instead of using timers the way
OSPFv2 does. This patch makes SPF be triggered/throttled similar to OSPFv2.
It adds a command to quagga identical to the OSPFv2 equivalent to configure
these timers.
Summary:
Signed-off-by: Dinesh Dutt <ddutt at cumulusnetworks.com>
Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>
[DL: removed reference to oa->ts_spf for rebase]
[DL: killed timeval_subtract]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
commit 4afa50b added few lines that are syntactically incorrect
with leading plus sign.
Cc: Denis Ovsienko <infrastation@yandex.ru>
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
so net.core.rmem_max must not be adjusted. Requires
linux kernel >= 2.6.14, falls back to SO_RCVBUF on error
Signed-off-by: Ulrich Weber <ulrich.weber@sophos.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
in particular,
- add IS-IS to some listings
- list Solaris & OSX as "some work required"
- remove OS version numbers. We have no base to specify any of them.
- list supported C compilers (gcc, clang, icc)
- cut the Quagga 2.0 stuff that promises QoS and firewall functionality
Update documentation with some text on the zebra interface to the
optional Forwarding Path Manager component, and the related cli
commands.
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
configure parameters have changed quite a bit, several options are
enabled by default now and there's --disable-tests. Update
documentation to match.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This is the functionality described in Appendix C of RFC 6126. Its
main purpose is to avoid keeping a full source table, which makes it
possible to implement a subset of Babel in just a few hundred lines of
code. However, in Quagga the code for maintaining the source table is
already there, and a parasitic implementation can be simulated using
filtering -- so it makes little sense to keep the functionality.
The primary focus of this commit is to make "show running-config"
command display more current configuration, including some of the bits
previously seen in the output of "show babel running-config". Besides
that, the following commands were renamed for consistency with the
syntax of other components:
"debug *" to "debug babel *" (and moved to top level)
"show babel running-config" to "show babel parameters"
* babel_interface.c
* show_babel_running_config(): rename to show_babel_parameters(),
update syntax pattern, don't call show_babeld_configuration()
* babel_if_init(): update respectively
* babel_enable_if_config_write(): new VTY helper for static
babel_enable_if
* babel_interface.h: add extern declaration
* babel_main.c: unset all debug options by default
* show_babel_main_configuration(): remove debug options decoder
* babel_zebra.c
* babel_debug(): rename to debug_babel(), update syntax pattern
* no_babel_debug(): rename to no_debug_babel(), update syntax pattern
* babelz_zebra_init(): update respectively
* debug_babel_config_write() new VTY helper for static debug_type
* babel_zebra.h: add extern declaration
* babeld.c
* babel_config_write(): add the code to output "debug babel *",
"router babel", "redistribute *" and "network *" statements
* show_babeld_configuration(): dismiss
* babeld.h: remove extern declaration
* babeld.texi: update for renamed commands
* babeld.conf.sample: idem, add debug statements block
ipv6 nd ra-interval
ipv6 nd ra-lifetime
ipv6 nd reachable-time
ipv6 nd home-agent-preference
ipv6 nd home-agent-lifetime
ipv6 nd router-preference
Calls to atoi() and atol() are replaced with VTY_GET_INTEGER_RANGE()
macro, command patterns are clarified and aliases of some commands
are added for consistency. Other changes are listed below.
* zebra/rtadv.c
* ipv6_nd_ra_interval_msec(): resolve -Wsign-compare
* ipv6_nd_ra_interval(): idem
* rtadv_init(): update to list new aliases
* doc/ipv6.texi: update to match current implementation
This implements a new "ipv6 nd mtu <1-65535>" interface-level command.
* doc/ipv6.texi: add description
* zebra/rtadv.c
* rtadv_send_packet(): send option type 5, when configured
* ipv6_nd_mtu(): new VTY helper
* no_ipv6_nd_mtu(): ditto
* rtadv_config_write(): add new option
* rtadv_init(): list new helpers
* draft-ietf-idr-as-pathlimit doesn't seem to have gone anywhere, and its
author does not think it will make progress in IDR. Remove all support
introduced for it, but leave stubs for the commands to avoid breaking
any configurations.
Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d.
The man page for zebra(8) mentions as port number to connect to 2602,
but it's acutally 2601 (as shown in /etc/services). 2602 belongs to ripd.
Attached patch fixes this typo.
Some uses of GNU make extensions were not necessary. There are still some,
but they might exist as workarounds for older versions of autoconf that have
since been solved.
Lesson learned: implicit target rules have opposite order to pattern target
rules.
2007-10-14 Paul Jakma <paul.jakma@sun.com>
* NEWS: Note that MRT dumps are now version 2
* (general) Merge in Juergen Kammer's AS4 patch.
2007-09-27 Paul Jakma <paul.jakma@sun.com>
* bgp_aspath.c: (assegment_normalise) remove duplicates from
from sets.
(aspath_reconcile_as4) disregard a broken part of the RFC around
error handling in path reconciliation.
* aspath_test.c: Test dupe-weeding from sets.
Test that reconciliation merges AS_PATH and AS4_PATH where
former is shorter than latter.
2007-09-26 Paul Jakma <paul.jakma@sun.com>
* aspath_test.c: Test AS4_PATH reconcilation where length
of AS_PATH and AS4_PATH is same.
2007-09-25 Paul Jakma <paul.jakma@sun.com>
* bgp_open.c: (peek_for_as4_capability) Fix to work.
* bgp_packet.c: (bgp_open_receive) Fix sanity check of as4.
* tests/bgp_capability_test.c: (general) Extend tests to validate
peek_for_as4_capability.
Add test of full OPEN Option block, with multiple capabilities,
both as a series of Option, and a single option.
Add some crap to beginning of stream, to prevent code depending
on getp == 0.
2007-09-18 Paul Jakma <paul.jakma@sun.com>
* bgp_open.c: (bgp_capability_as4) debug printf inline with others.
(peek_for_as4_capability) There's no need to signal failure, as
failure is better dealt with through full capability parser -
just return the AS4, simpler.
* bgp_packet.c: (bgp_open_receive) Update to match
peek_for_as4_capability change.
Allow use of BGP_AS_TRANS by 2b speakers.
Use NOTIFY_OPEN_ERR rather than CEASE for OPEN parsing errors.
(bgp_capability_msg_parse) missing argument to debug print
(bgp_capability_receive) missing return values.
* tests/bgp_capability_test.c: (parse_test) update for changes to
peek_for_as4_capability
2007-07-25 Paul Jakma <paul.jakma@sun.com>
* Remove 2-byte size macros, just make existing macros take
argument to indicate which size to use.
Adjust all users - typically they want '1'.
* bgp_aspath.c: (aspath_has_as4) New, return 1 if there are any
as4's in a path.
(aspath_put) Return the number of bytes actually written, to
fix the bug Juergen noted: Splitting of segments will change
the number of bytes written from that already written to the
AS_PATH header.
(aspath_snmp_pathseg) Pass 2-byte flag to aspath_put. SNMP
is still defined as 2b.
(aspath_aggregate) fix latent bug.
(aspath_reconcile_as4) AS_PATH+NEW_AS_PATH reconciliation
function.
(aspath_key_make) Hash the AS_PATH string, rather than
just taking the addition of assegment ASes as the hash value,
hopefully sligthly more collision resistant.
(bgp_attr_munge_as4_attrs) Collide the NEW_ attributes
together with the OLD 2-byte forms, code Juergen
had in bgp_attr_parse but re-organised a bit.
(bgp_attr_parse) Bunch of code from Juergen moves
to previous function.
(bgp_packet_attribute) Compact significantly by
just /always/ using extended-length attr header.
Fix bug Juergen noted, by using aspath_put's
(new) returned size value for the attr header rather
than the (guesstimate) of aspath_size() - the two could
differ when aspath_put had to split large segments, unlikely
this bug was ever hit in the 'wild'.
(bgp_dump_routes_attr) Always use extended-len and
use aspath_put return for header length. Output 4b ASN
for AS_PATH and AGGREGATOR.
* bgp_ecommunity.c: (ecommunity_{hash_make,cmp}) fix
hash callback declarations to match prototypes.
(ecommunity_gettoken) Updated for ECOMMUNITY_ENCODE_AS4,
complete rewrite of Juergen's changes (no asdot support)
* bgp_open.c: (bgp_capability_as4) New, does what it says
on the tin.
(peek_for_as4_capability) Rewritten to use streams and
bgp_capability_as4.
* bgp_packet.c: (bgp_open_send) minor edit
checked (in the abstract at least) with Juergen.
Changes are to be more accepting, e.g, allow AS_TRANS on
a 2-byte session.
* (general) Update all commands to use CMD_AS_RANGE.
* bgp_vty.c: (bgp_clear) Fix return vals to use CMD_..
Remove stuff replicated by VTY_GET_LONG
(bgp_clear_vty) Return bgp_clear directly to vty.
* tests/aspath_test.c: Exercise 32bit parsing. Test reconcile
function.
* tests/ecommunity_test.c: New, test AS4 ecommunity changes,
positive test only at this time, error cases not tested yet.
2007-07-25 Juergen Kammer <j.kammer@eurodata.de>
* (general) AS4 support.
* bgpd.h: as_t changes to 4-bytes.
* bgp_aspath.h: Add BGP_AS4_MAX and BGP_AS_TRANS defines.
* bgp_aspath.c: AS_VALUE_SIZE becomes 4-byte, AS16_VALUE_SIZE
added for 2-byte.
Add AS16 versions of length calc macros.
(aspath_count_numas) New, count number of ASes.
(aspath_has_as4) New, return 1 if there are any as4's in a
path.
(assegments_parse) Interpret assegment as 4 or 2 byte,
according to how the caller instructs us, with a new
argument.
(aspath_parse) Add use32bit argument to pass to
assegments_parse. Adjust all its callers to pass 1, unless
otherwise noted.
(assegment_data_put) Adjust to be able to write 2 or 4 byte
AS, according to new use32bit argument.
(aspath_put) Adjust to write 2 or 4.
(aspath_gettoken) Use a long for passed in asno.
* bgp_attr.c: (attr_str) Add BGP_ATTR_AS4_PATH and
BGP_ATTR_AS4_AGGREGATOR.
(bgp_attr_aspath) Call aspath_parse with right 2/4 arg, as
determined by received-capability flag.
(bgp_attr_aspath_check) New, code previously in attr_aspath
but moved to new func so it can be run after NEW_AS_PATH
reconciliation.
(bgp_attr_as4_path) New, handle NEW_AS_PATH.
(bgp_attr_aggregator) Adjust to cope with 2/4 byte ASes.
(bgp_attr_as4_aggregator) New, read NEW_AGGREGATOR.
(bgp_attr_parse) Add handoffs to previous parsers for the two
new AS4 NEW_ attributes.
Various checks added for NEW/OLD reconciliation.
(bgp_packet_attribute) Support 2/4 for AS_PATH and
AGGREGATOR, detect when NEW_ attrs need to be sent.
* bgp_debug.{c,h}: Add 'debug bgp as4'.
* bgp_dump.c: MRTv2 support, unconditionally enabled, which
supports AS4. Based on patches from Erik (RIPE?).
* bgp_ecommunity.c: (ecommunity_ecom2str) ECOMMUNITY_ENCODE_AS4
support.
* bgp_open.c: (peek_for_as4_capability) New, peek for AS4
capability prior to full capability parsing, so we know which
ASN to use for struct peer lookup.
(bgp_open_capability) Always send AS4 capability.
* bgp_packet.c: (bgp_open_send) AS4 handling for AS field
(bgp_open_receive) Peek for AS4 capability first, and figure
out which AS to believe.
* bgp_vty.c: (bgp_show_peer) Print AS4 cap
* tests/aspath_test.c: Support asn32 changes, call aspath_parse
with 16 bit.
* vtysh/extract.pl: AS4 compatibility for router bgp ASNUMBER
* vtysh/extract.pl.in: AS4 compatibility for router bgp ASNUMBER
* vtysh/vtysh.c: AS4 compatibility for router bgp ASNUMBER
2007-07-31 Paul Jakma <paul.jakma@sun.com>
* (general) Support for draft-ietf-idr-as-pathlimit-03.
* bgp_attr.h: (struct attr) Add pathlimit struct
bgp_attr.c: (attr_str) Add BGP_ATTR_AS_PATHLIMIT string.
(attrhash_key_make) tally pathlimit too
(attrhash_cmp) cmp pathlimit attr
(bgp_attr_aspathlimit) New, parse AS_PATHLIMIT attr.
(bgp_attr_parse) ditto
(bgp_packet_attribute) Write out AS_PATHLIMIT when set
(bgp_dump_routes_attr) ditto
* bgp_route.h: (struct bgp_static) Add TTL field
* bgp_route.c: (bgp_announce_check) Drop paths that are over
their hop-count TTL before sending via EBGP.
Mangle ASN in pathlimit for confeds/private as best we can.
(bgp_static_update_{rsclient,main}) Add any configure pathlimit
information.
(bgp_pathlimit_update_parents) New, update atomic-aggr setting for
parents of an aspathlimit'ed static.
(bgp_static_set) Add TTL argument, for all the 'bgp network'
commands.
Call previous for TTL changed statics.
(bgp_static_unset) Call pathlimit_update_parents.
(various bgp network commands) Add 'pathlimit <0-255>' qualifier
to all the various forms, bar route-map - which can set ttl
itself.
* bgp_routemap.c: (general) Add support for 'set pathlimit ttl' and
'match pathlimit as'.
* doc/bgpd.texi: Document 'network ... pathlimit <ttl>'
2007-05-01 David L Stevens <dlstevens@us.ibm.com>
* (general) These changes collectively add route-map and
prefix-list support to zebra and fix a bug in "show
route-map" (with no argument).
* doc/main.texi: added route-map, prefix-list, ip protocol
and set src documentation
* lib/command.h: added PROTOCOL_NODE type
* lib/log.c: (proto_name2num) new function, protocol name to
number translation.
* lib/routemap.c: (vty_show_route_map) fixed "show route-map"
without route-map name
* lib/routemap.h: added RMAP_ZEBRA type
* lib/zebra.h: added proto_name2num() prototype
* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and
plist
* vtysh/Makefile.am: added zebra_routemap.c
* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP
* zebra/connected.c: (connected_up_ipv4) added src preference argument
to rib_add_ipv4()
* zebra/kernel_socket.c: (rtm_read) ditto
* zebra/main.c: added prefix list initialization
* zebra/Makefile.am: added zebra_routemap.c source file
* zebra/rib.h: added generic address union "g_addr" and use in
existing places that had an explicit union.
Added "src" to struct nexthop.
Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.
* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on
netlink messages.
(netlink_route_change) ditto
(netlink_route_multipath) ditto.
* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to
rib_add_ipv4() call.
* zebra/rtread_proc.c: (proc_route_read) ditto
* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.
(nexthop_ipv4_ifindex_add) ditto
(rib_add_ipv4) ditto
(nexthop_active_check) Add route-map processing.
* zebra/zebra_routemap.c: new file for zebra route-map commands.
* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol
(vty_show_ip_route_detail) added "src" printing
(vty_show_ip_route) ditto
(show_ip_protocol_cmd) new command, list routemaps.
(config_write_protocol) write out routemap protocl config.
(zebra_vty_init) Install the new routemap protocol commands.
* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg
(zebra_init) init zebra route-maps.
* zebra/zserv.h: add zebra_route_map_init
2007-04-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospfd/ospfd.c: (ospf_network_match_iface) Comment out
COMPATIBILITY_MODE. Going forward, the ospf "network" command
will use a simple test: does the network command prefix
contain the connected (destination) prefix of the interface?
* doc/ospfd.texi: Add a paragraph to the description of the OSPFv2
network command to explain how we handle interfaces with
peer addresses.
2006-07-28 Paul Jakma <paul.jakma@sun.com>
* main.texi: link-detect works on Solaris too.
* ospfd.texi: Twiddle around with anchors a bit more.
Clarify how setting MD5 auth by area and by interface interact,
and add cross-references, as well as to the required
command for setting key material.
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* quagga.texi: Remove unused index definitions
Add an Index node - for the concept index.
* routeserver.texi: Set exampleindex to 0, so the example configs
with long IPv6 addresses stand better chance of fitting.
* overview.texi: 'Supported RFC' -> 'Supported RFCs'
Remove paragraph indentation - texinfo does that.
Revise the supported OS list slightly.
Remove the IPv6 stack list, seems very dated and irrelevant.
Revise the 'How to get Quagga' section.
* ospfd.texi: minor tweaks: add some anchors, fix some minor
format issues.
Revise the help for 'abr-type'.
Note that text authentication is unwise, recc'd MD5.
Add some extra text for redistribute and passive-interface,
about how latter can substitute for redist connected.
2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vtysh.1: Document new options -d and -E, and note that now multiple
-c options may be supplied, with embedded linefeed now supported.
In BUGS section, remove warning about vtysh causing a daemon
to freeze, since this has been fixed.
* vtysh_main.c: (usage) Add new -d and -E options. And note that
-c can be used multiple times, possibly with embedded linefeeds.
(longopts) Add new -d and -E options.
(main) Add new -d and -E options, and create a linked list to
support multiple -c options. Do not call vtysh_connect_all until
after vtysh_read_config(config_default) and vtysh_auth have
succeeded. This prevents the vtysh.conf file from configuring
any daemons, and it ensures that authentication has been passed
before we send any commands to any daemons. Call vtysh_connect_all
with any daemon name supplied with -d. If it is unable to connect
to any daemons, issue an error message and exit immediately.
When used in -c mode, call vtysh_execute("enable") before
executing the commands in order to match interactive behavior.
And detect embedded linefeed chars in -c commands and break them up
appropriately.
* vtysh.h: (vtysh_connect_all) Fix proto to reflect new
daemon_name argument, and that it now returns an integer -- the
number of daemons to which we were able to connect.
* vtysh.c: (vtysh_connect_all) Add a new daemon_name argument.
If supplied, connect only to that daemon. And return
the number of daemons to which we were able to connect.
(vtysh_prompt): Performance enhancement -- make struct utsname
static so we call uname to get the hostname only once.
2006-07-04 Paul Jakma <paul.jakma@sun.com>
* quagga.info: remove auto-generated file. It will still be
present in dist tarballs, so shouldn't affect anyone but
direct users of CVS. Required texinfo version should be
widely available.
* .cvsignore: ignore quagga.info