Commit Graph

8462 Commits

Author SHA1 Message Date
Donald Sharp
3cc2066899 Merge pull request #926 from opensourcerouting/tcp-zebra
remove `--enable-tcp-zebra`
2017-08-09 14:43:48 -04:00
David Lamparter
2c3699c0eb Merge pull request #940 from qlyoung/hashtable-expansion-lf
lib: use load factor as hash expansion trigger
2017-08-09 20:43:40 +02:00
David Lamparter
4e1fd26a5e Merge remote-tracking branch 'frr/master' into tcp-zebra 2017-08-09 20:42:27 +02:00
Donald Sharp
fc73dd4bdf Merge pull request #911 from opensourcerouting/non-recursive-2
more non-recursive build, fix cross-compile, & doc build mangling
2017-08-09 14:38:07 -04:00
Donald Sharp
f790234f2f Merge pull request #892 from opensourcerouting/watchfrr-simplify
simplify watchfrr, add --terminal, improve startup logging
2017-08-09 14:32:44 -04:00
Quentin Young
75d837ac60 Merge pull request #942 from lunn/eigrpd-debug
eigrpd: Add missing install_element for debug eigrp transmit
2017-08-09 13:59:48 -04:00
David Lamparter
83112201a7 Merge pull request #944 from qlyoung/ignore-disrtamp
*: ignore .dirstamp
2017-08-09 19:55:20 +02:00
Quentin Young
bed7ad8387
lib: use load factor as hash expansion trigger
Previous strategy was to resize the hash table when the length of any
one bucket exceeded a certain size, with some logic for intelligently
stopping resizes when the gains from doing so weren't sufficient. While
this was a good idea that attempted to optimize both space and lookup
time, unfortunately under transient degenerate conditions this led to
some issues with the tables not resizing when they should have,
harming performance. The resizing restriction was lifted, but this had
the result of exacerbating degenerate behavior and caused out of memory
conditions.

This patch changes the hash expansion criterion to be based on the
number of elements in the table. Once the # of elements in the table
exceeds the number of buckets, the table size is doubled. While the
space efficiency of this method decreases relative to the perfectness of
the hash function, at least this strategy puts the table performance
squarely in the hands of the hash function.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-09 13:53:11 -04:00
Quentin Young
19c9f07691
*: ignore .dirstamp
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-09 13:48:31 -04:00
David Lamparter
d258b1df2b Merge pull request #883 from daveolson53/master
Switch to using syslog for logging as the default
2017-08-09 19:29:16 +02:00
Andrew Lunn
af83cb12f9 eigrpd: Add missing install_element for debug eigrp transmit
debug eigrp transmit command is added to the ENABLE_NODE list, but not
CONFIG_NODE. As a result the command cannot be used in the
configuration file. Add the missing call.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
2017-08-09 12:02:01 -05:00
David Lamparter
9cdce038c5 Merge branch 'stable/3.0'
... with a lot of fixups.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 14:35:17 +02:00
David Lamparter
0e236c6cd7 Merge branch 'stable/3.0' into tmp-3.0-master-merge
Marker (--strategy=ours) merge to record which point in history master
is in sync with related to stable/3.0.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 13:13:01 +02:00
David Lamparter
69965f533a zebra: fix pseudowire code re. upstream changes
- VTY_NEWLINE is out
- thread API changed with the extra arg
- struct rib got renamed to struct route_entry
- MPLS_NO_LABEL was removed
- RB-tree implementation has some extra args

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 13:03:39 +02:00
Renato Westphal
2dd0d72624 zebra: add support for static pseudowires
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 13:03:36 +02:00
David Lamparter
c47b10cae1 release: FRR 3.0-rc1 2017-08-09 12:56:09 +02:00
Renato Westphal
b4fcca6bf2 ldpd: fix missing label mappings
In some scenarios, it's possible to send a Label Withdraw to a neighbor
and not receive a corresponding Label Release right away. This can happen
during reconvergence after a network failure or configuration change.

When this happens, the list of upstream mappings of a given FEC might
not be empty even after sending a Label Withdraw to all neighbors. This
situation holds until all neighbors either send a Label Release or are
torn down (e.g. keepalive timeout).

With that said, we shouldn't check for 'RB_EMPTY(&fn->upstream)'
in lde_kernel_update() because it can prevent ldpd from sending label
mappings in such circumstances. This check was introduced to avoid sending
the same label mapping more than once to the same neighbor, but we need
to remove this optimization for now until we find a better solution (which
probably involves refactoring the whole zebra<->ldpd communication).

While here, add a new debug message in lde_send_labelmapping() which
can aid in troubleshooting label problems in the future.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:16 +02:00
Renato Westphal
d42127daf3 zebra: add support to openbsd's mpw(4) for pseudowires
Thanks to rzalamena@ for writing mpw(4) :)

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:16 +02:00
Renato Westphal
87b5f1b77b ldpd: integrate with the pseudowire manager in zebra
If we receive a notification from zebra indicating that the installation
of a pseudowire has failed (e.g. no reachability), send a PW Status
notification to the remote peer (or a Label Withdraw if the remote peer
doesn't support the PW Status TLV).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:16 +02:00
Renato Westphal
332ad71388 zebra: add new flag to detect nexthop label updates
With the introduction of the pseudowire manager, the NHT tracking code
needs to detect label updates as well.

Create a specific nexthop flag for that. We can't reuse the
RIB_ENTRY_NEXTHOPS_CHANGED flag for this porpose because this flag is
always cleared and reevaluated in rib_process(), setting it outside that
function is a nop.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:15 +02:00
Renato Westphal
731a75fef1 zebra: add nexthop tracking for pseudowires
If the remote end of a pseudowire becomes unreachable (no route or an
unlabeled route), then it must be uninstalled. In the same way, when
the remote end becomes reachable, the pseudowire must be installed.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:15 +02:00
ßingen
6833ae01bc zebra: add pseudowire manager
Base framework for supporting MPLS pseudowires in FRR.

A consistent zserv interface is provided so that any client daemon
(e.g. ldpd, bgpd) can install/uninstall pseudowires in a standard
way. Static pseudowires can also be implemented by using the same
interface.

When zebra receives a request to install a pseudowire and the installation
in the kernel or hardware fails, a notification is sent back to the
client daemon and a new install attempt is made every 60 seconds (until
it succeeds).

Support for external dataplanes is provided by the use of hooks to
install/uninstall pseudowires.

Signed-off-by: ßingen <bingen@voltanet.io>
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:15 +02:00
Renato Westphal
2f9c59f031 zebra: add implicit-null labels to the rib
Implicit-null labels are never installed in the FIB but we need to keep
track of them because of L2/L3 VPN nexthop resolution.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:35:15 +02:00
David Lamparter
211ee93ffb Merge commit '78986c0' into tmp-3.0-master-merge
Marker (--strategy=ours) merge to record which point in history master
is in sync with related to stable/3.0.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 12:09:04 +02:00
ßingen
ea4ecfb351 ospf: Fix segfault if compiled with DEBUG
If OSPF_LS_REFRESH_TIME is 60, min_delay in ospf_refresher_register_lsa
function (ospf_lsa.c) would be negative, so index (which is unsigned)
would be out of range, causing a segfault.

Signed-off-by: ßingen <bingen@voltanet.io>
2017-08-09 12:07:58 +02:00
ßingen
c811f101e7 ospf6: Fix DEBUG compiling error
struct ospf6_lsa doesn't have next nor prev, so it was raising a
compiling error if DEBUG is set.

Signed-off-by: ßingen <bingen@voltanet.io>
2017-08-09 12:07:34 +02:00
Renato Westphal
6e4762e1cc ldpd: fix bug with dual-stack neighbors
We were assuming that a neighbor can be deleted only when all of its
adjacencies are dead. This is not the case for dual-stack neighbors. If
the transport-preference is IPv4 and all adjacencies are IPv6 (or
vice-versa), then it should be deleted and everything cleaned-up
accordingly.

Bug exposed by the new RB tree implementation on master, but the fix
also applies to stable/3.0.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:06:13 +02:00
Renato Westphal
04427fcb48 zebra: fetch interface speed on *BSD
Fixes #407 for FreeBSD and NetBSD.

OpenBSD uses ioctl to fetch interface information on startup and the
SIOCGIFMEDIA command is just too cumbersome to use.

The best way to fix the problem for OpenBSD is probably to stop treating
it differently from the other BSDs for no apparent reason.  There should
be nothing preventing us to make OpenBSD use the routing socket to fetch
interface information on startup (we already do it to detect runtime
changes). This is something that should be done in a separate commit
after a careful analysis.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-09 12:06:06 +02:00
whitespace / reindent
ac4d0be587 *: reindent
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 12:03:17 +02:00
David Lamparter
999f153ece watchfrr: print specific error for removed options
... and document them in the man page.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 11:30:58 +02:00
David Lamparter
64a249ad9e watchfrr: remove STATEDIR preprocessor define
use frr_vtydir from libfrr instead.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 11:30:58 +02:00
David Lamparter
b8c1fde3cb lib: don't mkdir state paths in watchfrr
watchfrr doesn't know if there will be -u/-g options on the individual
daemons, so it doesn't know what the appropriate ownership is.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-09 10:55:03 +02:00
David Lamparter
5d13cd091a lib: thoroughly disable tcp-zebra
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>
2017-08-08 20:11:10 +02:00
Lou Berger
11f3bfdd71 Merge pull request #930 from qlyoung/fix-masters-list-reachable
lib: fix still reachable linked list in thread.c
2017-08-08 13:58:06 -04:00
Donald Sharp
76a8685418 Merge pull request #920 from opensourcerouting/static-routes-ifindex-update-3.0
[3.0] fixup static routes' ifindexes when interfaces (dis)appear
2017-08-08 13:39:38 -04:00
Donald Sharp
d3d9c86f54 Merge pull request #919 from opensourcerouting/static-routes-ifindex-update
fixup static routes' ifindexes when interfaces (dis)appear
2017-08-08 13:39:19 -04:00
Quentin Young
eff09c66a4
lib: fix still reachable linked list in thread.c
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-08 12:54:28 -04:00
David Lamparter
d178328163 Merge pull request #927 from donaldsharp/one_day_second
*: Define the number of seconds in a Day, Week and year
2017-08-08 16:19:29 +02:00
Donald Sharp
99a6a31e50 *: Define the number of seconds in a Day, Week and year
The defines:

ONE_DAY_SECOND
ONE_WEEK_SECOND
ONE_YEAR_SECOND

were being defined all over the system, move the
define to a central location.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-08 09:06:22 -04:00
Donald Sharp
f66e92bc48 Merge pull request #783 from opensourcerouting/pw-manager-2
Add Pseudowire management in Zebra
2017-08-08 07:54:32 -04:00
David Lamparter
689f5a8c84 *: remove --enable-tcp-zebra, rework ZAPI path
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>
2017-08-08 11:14:05 +02:00
David Lamparter
00857b241e Merge pull request #924 from qlyoung/deprecate-ospf-lsa-min-arrival
ospfd: deprecate `timers lsa arrival ...`
2017-08-08 04:17:00 +02:00
David Lamparter
e8a53dbc52 Merge pull request #923 from devicenull/master
rhel: Don't obsolete bird
2017-08-08 04:16:08 +02:00
Renato Westphal
9074ba8423 Merge pull request #925 from qlyoung/ldpd-no-str
ldpd: use NO_STR
2017-08-07 18:27:52 -03:00
Quentin Young
455066581f
ldpd: use NO_STR
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-07 16:22:59 -04:00
Quentin Young
0e88de35b9
ospfd: deprecate timers lsa arrival ...
Don't need two of these that do the exact same thing.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-07 16:11:10 -04:00
Brian Rak
5d82c57b76 rhel: Don't obsolete bird
The FRR RPM was obsoleting BIRD, which meant that as soon as you added a FRR RPM to a repository, you could no longer install BIRD.  This patch switches it over to Conflicts instead, which should be much nicer behavior
2017-08-07 14:37:21 -04:00
Jafar Al-Gharaibeh
68b39ad41b Merge pull request #922 from qlyoung/pim-cli
pimd: some pim cli fixes
2017-08-07 13:19:11 -05:00
Quentin Young
9643e2c75b
pimd: some pim cli fixes
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-07 12:42:05 -04:00
Jafar Al-Gharaibeh
ac3da8fa5b Merge pull request #916 from donaldsharp/eigrp_various
Eigrp various
2017-08-07 11:22:36 -05:00