Commit Graph

9055 Commits

Author SHA1 Message Date
David Lamparter
0d510865ec Merge pull request #842 from qlyoung/update-style-guide
Update COMMUNITY.md
2017-07-26 18:20:17 +02:00
Brian Rak
bf0526b919 redhat: Update documentation about frr-reload 2017-07-26 11:47:07 -04:00
Renato Westphal
163076686e bgpd/ospfd: fix json leaks and blank output
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-26 12:28:56 -03:00
Renato Westphal
66a43eb221 babeld: remove redundant startup message
The frr_run() function already logs a startup message (and after reading
the config so the "log" commands are honored).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-26 11:54:52 -03:00
Renato Westphal
dd8765cad5 babel: fix crashes and improve the redistribute command
Fixes the following crashes:
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "no redistribute pim"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "no redistribute eigrp"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "no redistribute nhrp"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "no redistribute table"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "no redistribute vnc"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "redistribute pim"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "redistribute eigrp"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "redistribute nhrp"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "redistribute table"
babeld aborted: vtysh -c "configure terminal" -c "router babel" -c "redistribute vnc"

While here, add an option to chose if we want to redistribute IPv4 or
IPv6 routes (e.g. we might want static IPv4 routes only). Also, join the
"no" version of the command in the same DEFUN (Yes We Can).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-26 11:51:44 -03:00
Renato Westphal
493c8ac787 eigrpd: minor fix in the redistribute command
Commands like "redistribute stati" and "redistribute osp" were being
silently ignored.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-26 11:51:00 -03:00
Daniel Walton
1ac79ce8df zebra: static route cleanup
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

- The 'reject' keyword was being lost
- Hide the "ip route A.B.C.D A.B.C.D" config options since these will be
  displayed as "ip route A.B.C.D/X"
2017-07-25 13:24:45 -07:00
Quentin Young
f1423462b1
COMMUNITY.md: rewrap paragraphs, update PR section
* Wrap paragraphs at 80 lines
* Update Github PR section to remove mention of develop branch

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:53:05 -04:00
Brian Rak
651db60ff4 redhat: Make the init script flush routes for all associated protocols on stop 2017-07-25 15:51:30 -04:00
Quentin Young
4b8ac525ff COMMUNITY.md: minor grammatical fixes
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:46:00 -04:00
Quentin Young
a03e352668 COMMUNITY.md: document documentation
Add guidelines for documentation to COMMUNITY.md

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:45:55 -04:00
Quentin Young
b0ff7312a4 COMMUNITY.md: miscellaneous documentation
Also:
- Add documentation on mailing list
- Update mentions of unit tests
- Update process description

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:37:21 -04:00
Quentin Young
c545559d4a COMMUNITY.md: s/PROJECT/FRRouting
Also:
* Make headers consistently capitalized
* Some extra backticks where needed

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:37:21 -04:00
Quentin Young
6058ea8cb1 COMMUNITY.md: update style guide
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-25 15:37:21 -04:00
Daniel Walton
ba9d46ff14 zebra: debug cleanup
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-07-25 12:07:07 -07:00
Donald Sharp
9fb302f41d pimd: Setup hash names appropriately
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-25 14:22:15 -04:00
Donald Sharp
7c59195031 pimd: NHT upstream list is inefficient
The NHT upstream list at scale is horribly inefficient due to keeping
a sorted list of upstream entries.  The attempting to find
the upstream and the insertion of it into the upstream_list
was consuming a large amount of cpu cycles.

Convert to a hash, allow add/deletions to effectively become
O(1) events.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-25 14:18:57 -04:00
Donald Sharp
6e1ef388f3 pimd: Clean PNC cache handling on shutdown
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-25 14:18:57 -04:00
Renato Westphal
9b86009a38 bgpd/eigrpd: fix crashes found by the CLI fuzzer
Fixes the following crashes:
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1 json"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1 json"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 2001:db8::1/128 json"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 2001:db8::1/128 json"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show vnc responses 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show vnc responses 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show vnc responses 11:11:11:11:11:11"
* bgpd aborted: vtysh  -c "show vnc responses"
* eigrpd aborted: vtysh -c "configure terminal" -c "no router eigrp 65535"

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-25 13:58:23 -03:00
Donald Sharp
c6413dd394 Merge pull request #848 from opensourcerouting/rb-tree-fix
Fix corrupted RB trees
2017-07-25 11:11:33 -04:00
David Lamparter
d5eb795965 Merge pull request #847 from donaldsharp/cmd_success
Cmd success
2017-07-25 16:23:48 +02:00
David Lamparter
4ff218ac39 Merge pull request #838 from dwalton76/lib-copy-nexthops
lib: copy_nexthops() only copies the first nexthop
2017-07-25 16:20:08 +02:00
David Lamparter
533450e4b9 Merge pull request #837 from qlyoung/fix-eigrp-routemap-cli
eigrpd, vtysh: add dummy route-map cli
2017-07-25 16:15:54 +02:00
David Lamparter
c8ac4457c0 Merge pull request #836 from dwalton76/zebra-debug-packet-send-detail
zebra: "debug zebra packet" config display
2017-07-25 16:01:40 +02:00
Donald Sharp
f5da2cc2d8 pimd: Use JSON_STR
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-25 08:19:57 -04:00
Donald Sharp
f82e85067d Merge pull request #851 from opensourcerouting/bsd-speed
zebra: fetch interface speed on *BSD
2017-07-25 08:14:39 -04:00
Renato Westphal
f766e29c4b 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-07-25 02:11:30 -03:00
Renato Westphal
dc4ccdd901 zebra: add label information to json output
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-25 01:12:22 -03:00
Renato Westphal
d807f1c3fb 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-07-25 00:53:23 -03:00
Renato Westphal
a9389c9758 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-07-25 00:53:23 -03:00
Renato Westphal
49416a9947 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-07-25 00:53:23 -03:00
Renato Westphal
8d05ef64d8 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-07-25 00:53:23 -03:00
Renato Westphal
8cbeaaa228 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-07-25 00:53:23 -03:00
ßingen
6da80de983 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-07-25 00:53:23 -03:00
Renato Westphal
b557e0b6df 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-07-25 00:53:23 -03:00
Renato Westphal
69f93be55a 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-07-24 19:43:09 -03:00
Renato Westphal
145b205177 lib: fix corrupted RB trees
Commit 8f942af90 introduced a bug while silencing a clang warning. Silence
the warning in a different way to fix our red-black tree implementation.

Fixes #841.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-24 18:50:45 -03:00
Renato Westphal
52535beec1 lib: revert reindent of files imported from OpenBSD
We should preserve the original indentation to make it easier to keep
these files in sync with the upstream.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-24 18:40:24 -03:00
Donald Sharp
9c9d843baa ripd: Fix debug config failures
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 16:00:20 -04:00
Donald Sharp
40e344cc4b ripngd: Fix failure returned with some debug commands
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 15:59:36 -04:00
Donald Sharp
d5c5e362b2 pimd: Warn to stderr in failure case for test_igmpv3_join
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:57:51 -04:00
Donald Sharp
467c85f730 pimd: Cleanup unused assignment
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
bd4d05c577 pimd: Fix missing docstring in 'no debug pim trace detail'
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
49fde801fa pimd: Fix linux build on older kernels
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
1b5f8a1a21 pimd: Stop looking when we find a matching nexthop
When we receive a new ecmp path and the old nexthop is still
valid.  There existed some cases where we would continue looking
for a nexthop( and thus loose the fact that we had found it )
after found.

Ticket: CM-16983
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
aabb9a2f07 pimd: Allow installation of NULL mroute in some situations
When we receive a S,G,RPT prune as part of a *,G tree, install
the NULL oil S,G mroute.  This will cause the traffic to stop
flowing for this particular S,G as we expect.

Ticket: CM-16978
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
5c3aac90d9 pimd: Fix 'show ip mroute vrf all count' crash
'show ip mroute vrf all count' crashes currently

This commit fixes that issue

Ticket: CM-17052
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
bd8b9272b4 zebra: Convert get_stats to use new kernel interface
Convert the XXX_get_stats functions to use the new
kernel interface.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:57 -04:00
Donald Sharp
a25de56b58 pimd: Add 'vrf all' commands where needed
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:52:55 -04:00
Donald Sharp
74d1799ae6 pimd: Fix unininitialized data usage found by clang
clang 5.0 to the rescue!

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24 13:51:41 -04:00