Commit Graph

12539 Commits

Author SHA1 Message Date
Quentin Young
5931e2599b doc: cleanup maintainer release document
* 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>
2018-07-10 19:39:39 +00:00
Mark Stapp
d826a734af libs: add ALL_NEXTHOPS_PTR iterator macro
Because sometimes we have a pointer to a nexthop_group.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2018-07-10 14:07:43 -04:00
Philippe Guibert
fda8229965 lib: remove if_lookup_by_index portion of code with unknown vrf
This function should be called with a known vrf_id. All other cases, the
other API should be called.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-10 17:32:40 +02:00
Philippe Guibert
86f07f44c1 zebra: mpls entry interface lookup adaptation for vrf backend
The search algorithm for interface based on ifindex only is adapted to
vrf netns based too. Only the default netns will be used to search the
interface index.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-10 17:32:36 +02:00
Philippe Guibert
06432d4e4f zebra: pbr rule lookup index adaptation for vrf netns
the interface lookup based on ifindex in the case the target vrf is
unknown is using the generic vrf api. Like that, in the case of vrf
based netns, the search across different netns other than the default
one are not searched.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-10 17:32:23 +02:00
Philippe Guibert
fac4d51eea zebra: upon RTM_NEWROUTE/DELROUTE, find appropriate interface
The interface lookup algorithm is different according to if we are on
netns vrf or not. If we are on the former case, then we only have to
parse the interfaces of the netns, while if we are on the other case, we
have to parse all the interfaces of all the vrfs ( since index is not
overlapping in the latter case).

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-10 17:32:23 +02:00
Renato Westphal
c26178fe61
Merge pull request #2643 from qlyoung/doc-workflow-reviews
doc: add dev docs on code review practices
2018-07-10 10:47:43 -03:00
Philippe Guibert
d54600fa83 bgpd: ability to set vpnv4 nexthop with route-map
Ability to set nexthop IP pointer with route-map.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-10 15:22:13 +02:00
Philippe Guibert
4535bb2c1e doc: add Ldp user documentation
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>
2018-07-10 13:06:14 +02:00
Philippe Guibert
e6f594150a doc: add more information about show ip bgp and show bgp
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>
2018-07-10 12:54:37 +02:00
Martin Winter
20e9d2ccea doc: Add document for Release Build by maintainer
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-07-10 00:49:28 -07:00
Anuradha Karuppiah
51f4dab426 zebra: install EVPN gateway MAC as static/sticky
SVI interface ip/hw address is advertised by the GW VTEP (say TORC11) with
the default-GW community. And the rxing VTEP (say TORC21) installs the GW
MAC as a dynamic FDB entry. The problem with this is a rogue packet from a
server with the GW MAC as source can cause a station move resulting in
TORC21 hijacking the GW MAC address and blackholing all inter rack traffic.

Fix is to make the GW MAC "sticky" pinning it to the GW VTEP (TORC11). This
commit does it by installing the FDB entry as static if the MACIP route is
received with the default-GW community (mimics handling of
mac-mobility-with-sticky community)

Sample output with from TORC12 with TORC11 setup as gateway -
root@TORC21:~# net show evpn mac vni 1004 mac 00:00:5e:00:01:01
MAC: 00:00:5e:00:01:01
 Remote VTEP: 36.0.0.11 Remote-gateway Mac
 Neighbors:
    45.0.4.1
    fe80::200:5eff:fe00:101
    2001:fee1:0:4::1

root@TORC21:~# bridge fdb show |grep 00:00:5e:00:01:01|grep 1004
00:00:5e:00:01:01 dev vx-1004 vlan 1004 master bridge static
00:00:5e:00:01:01 dev vx-1004 dst 36.0.0.11 self static
root@TORC21:~#

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Ticket: CM-21508
2018-07-09 17:44:44 -07:00
Donald Sharp
75c61a1875 pimd: Do not create upstream state when not DR for igmp request
When we receive a IGMP report on an interface, do not create upstream
state for that request, unless we are the DR for the incoming interface.

This will prevent a interface on a LAN segment from causing traffic
to flow to itself.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-09 18:04:00 -04:00
Quentin Young
6b479dff80
Merge pull request #2636 from ppmathis/cleanup/bgpd
bgpd: Cleanup of bgp daemon code
2018-07-09 15:43:32 -04:00
Renato Westphal
fbde7f293e
Merge pull request #2637 from donaldsharp/pim_malloc_me
pimd: Remove unnecessary alloc failures
2018-07-09 16:02:47 -03:00
Quentin Young
590a7368df doc: add dev docs on code review practices
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-07-09 18:32:01 +00:00
Renato Westphal
b4d3968a68
Merge pull request #2642 from donaldsharp/deprecated
ospfd: Remove deprecated code
2018-07-09 15:29:33 -03:00
Quentin Young
7e5a4178e0
Merge pull request #2632 from ppmathis/bugfix/bgp-autoshut
bgpd: Fix bgp auto-shutdown behavior
2018-07-09 13:55:33 -04:00
Donald Sharp
ec50871f91 ospfd: Remove deprecated code
This code has been deprecated for over a year, let's remove it now.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-09 12:37:54 -04:00
Donald Sharp
2b57b94834 pimd: Remove unnecessary alloc failures
Remove from pim unnecessary alloc failure testing
as that alloc failure will cause an assert.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-08 12:09:21 -04:00
Pascal Mathis
3f54c705ec
bgpd: Cleanup of bgp daemon code
This commit removes various parts of the bgpd implementation code which
are unused/useless, e.g. unused functions, unused variable
initializations, unused structs, ...

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
2018-07-07 22:51:13 +02:00
Donald Sharp
ff5d90c2e9 pimd: Fix up > 80 columns
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 16:00:48 -04:00
Donald Sharp
53bc94b070 pimd: Make code consistent in regards to lookup
In places where we do a pim_ecmp_nexthop_search, also
use pim_ecmp_nexthop_lookup instead of the single path
case of pim_nexthop_lookup.

This is in preparation of more serious surgery to fix
the weird api of pim_find_or_track_nexthop.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 10:15:02 -04:00
Donald Sharp
b938537bdb pimd: Remove duplicate parameter to functions
Both pim_ecmp_nexthop_lookup and pim_ecmp_fib_lookup_if_vif_index
pass the address in 2 times.  Make function calls consistent
and just pass in the src once.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 10:15:02 -04:00
Donald Sharp
8a5134aaa6 pimd: Refactor function to use pim_ecmp_nexthop_lookup
The pim_ecmp_fib_looikup_if_vif_index does practically
the same work as pim_ecmp_nexthop_lookup, refactor to
use that function so that we do not have more code
that must parse the results from zclient_lookup_nexthop.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 10:13:28 -04:00
Donald Sharp
ab9ac14351 pimd: When doing nexthop-lookups don't allocate perm memory
When doing nexthop lookups do not permanently allocate
memory in zebra and pim to track the nexthop specified
on the cli.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 09:02:07 -04:00
Donald Sharp
1996712744 pimd: Figure neighbors -vs- paths when doing RPF
When we are looking up a RPF with a ecmp path, there
are situations where we are failing to find a path change
because we were not considering the actual number of neighbors
we have available to us at the start of the loop.

Example:

Suppose 2 way ecmp with a neighbor on each path.  We have
multiple upstreams that are strewn across both paths.
If we loose a pim neighbor on one of the paths we would
initiate a rescan of the upstreams.  If the neighbor
we lost happened to be the last ecmp path we rescanned
we would not successfully find a new path and leave
the upstream stranded.

This code change looks at the number of available neighbors
that we have -vs- the number of paths we have and chooses
the smaller of the two for figuring out what to do.

There probably exist other failure scenarios as well that
I am missing here and quite frankly the current code muddies
the water between a RPF lookup failure -vs- a RPF lookup succeeded
and there are no paths.  Further work is needed here imo.

Additionally this idea of a pim_ecmp_nexthop_lookup and
pim_ecmp_nexthop_search is bogus.  They are the same function and
should be merged at some point in time.

Ticket: CM-21599
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 09:02:07 -04:00
Donald Sharp
57695eb6ef pimd: There is no reason a IGMP src should need a neighbor
There is no reason that a IGMP src should need a upstream
pim neighbor when doing a RPF lookup.

Ticket: CM-21599
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-07 09:02:07 -04:00
Pascal Mathis
76af525b64
bgpd: Fix bgp auto-shutdown behavior
The current behavior of the `bgp default shutdown` command is to set the
state of all newly configured peers to shutdown. This leads to a problem
when restarting bgpd, because all peers will then be seen as newly
configured, which leads to all peers being set to shutdown after each
restart.

This behavior is undesired and not common when comparing the
implementation against other vendors. This commit moves the `bgp default
shutdown` configuration underneath the peer-group and peer
configuration, to ensure that existing peers will not be set to shutdown
after a daemon restart.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
2018-07-07 13:14:55 +02:00
Rafael Zalamena
76f17a8cc4
Merge pull request #2630 from donaldsharp/hashables
revert hash_walk/iterate optimizations
2018-07-06 12:30:06 -03:00
Quentin Young
9d90a86083
Merge pull request #2628 from pguibert6WIND/realpath_debug
lib: add the pathname to get the realpath in case of failure
2018-07-06 11:24:25 -04:00
Quentin Young
e8ec11787b
Merge pull request #2618 from pacovn/PVS-Studio_library_warnings
pimd: standard library usage (PVS-Studio)
2018-07-06 11:23:29 -04:00
Jafar Al-Gharaibeh
8c469c83bc
Merge pull request #2605 from pacovn/PVS-Studio_null_check
ospfd  pimd: null check (PVS-Studio)
2018-07-06 10:22:47 -05:00
Donald Sharp
d76345fa66 vtysh: Remove unused variable
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-06 10:22:34 -04:00
Donald Sharp
8b52179d2a lib: Add some documentation
Add some documentation to hash_walk/iterate to tell people
to not do something stupid.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-06 10:18:50 -04:00
Donald Sharp
df66eb2eeb Revert "lib: A small optimization for the hash iterate and walk functions"
This reverts commit fc61644e440c875eefa222ab34d726c6281ca806.
2018-07-06 10:18:11 -04:00
Philippe Guibert
0faeba264e lib: add the pathname to get the realpath in case of failure
Sometimes, the file under /var/run/netns may not be authorised to be
read ( because it is not read permission for frr user, for instance).
so it is good to know what happened.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-06 08:51:54 +02:00
F. Aragon
2e1cc43679
eigrpd lib pimd zebra: dead code (PVS-Studio)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-06 01:10:15 +02:00
F. Aragon
09ed14e887
pimd: standard library usage (PVS-Studio)
fread() function was not used properly.

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-06 01:09:00 +02:00
F. Aragon
2ffc213bf8
ospfd pimd: null check (PVS-Studio)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-06 00:49:24 +02:00
Quentin Young
32ec4bc474
Merge pull request #2602 from pacovn/PVS-Studio_element_overflow
bgpd zebra: element overflow (PVS-Studio)
2018-07-05 17:49:49 -04:00
Quentin Young
b1b5a009c6
Merge pull request #2623 from pacovn/PVS-Studio_memcpy_source_underflow
ldpd: buffer underflow, thread safety (PVS-Studio)
2018-07-05 17:41:25 -04:00
Quentin Young
dad87073aa
Merge pull request #2568 from pguibert6WIND/doc_mpls
doc: add MPLS configuration commands
2018-07-05 14:56:34 -04:00
Marcel Röthke
a98b00ee3e bgpd: add test for bgp_table_range_lookup
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2018-07-05 16:06:37 +02:00
Marcel Röthke
1dacdd8b25 bgpd: add support for rpki revalidation on rpki updates
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2018-07-05 16:06:37 +02:00
Jafar Al-Gharaibeh
262c829d7e
Merge pull request #2624 from donaldsharp/PIM_ZOMILY_ZOM
pimd: Use generated interface name
2018-07-04 18:42:51 -05:00
Arthur Jones
8328420909 unit tests: support code coverage instrumentation and reports
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>
2018-07-04 11:06:11 -07:00
Philippe Guibert
b03d34322d doc: add MPLS configuration commands
Add MPLS information to statically handle label from zebra.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-07-04 19:11:20 +02:00
Donald Sharp
db20e34f09 pimd: Use generated interface name
When we have a generated interface name, use it instead of the actual
pointer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-03 21:31:11 -04:00
Donald Sharp
732c8da348
Merge pull request #2614 from rtrlib/2018-07-02-master-bugfix
bgpd: fix rpki validation for ipv6 (master)
2018-07-03 20:32:30 -04:00