Commit Graph

12582 Commits

Author SHA1 Message Date
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
F. Aragon
4149ef7c0f
ldpd: buffer underflow, thread safety (PVS-Studio)
This commit fixes two issues:
- memcpy() using containers of different sizes when using addr2sa(), mixing
  'struct sockaddr_storage' and 'union sockunion'.
- addr2sa() function not being thread safe (using a local static variable as
  container.

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-04 00:01:22 +02:00
Quentin Young
4adc8f6852
Merge pull request #2620 from pacovn/PVS-Studio_null_check_2
bgpd lib ospfd pimd ripngd: null chk (PVS-Studio)
2018-07-03 17:38:09 -04:00
Jafar Al-Gharaibeh
94adf8d33e
Merge pull request #2610 from qlyoung/fix-zebra-pthread-crash-shutdown-min
zebra: remove asserts on task nullity
2018-07-03 15:47:23 -05:00
Jafar Al-Gharaibeh
7f04893904
Merge pull request #2619 from pguibert6WIND/show_ipv6_bgp_wrong
doc: bgp wrong command displayed
2018-07-03 10:47:27 -05:00
Lou Berger
3ebe5e5091
Merge pull request #2615 from chiragshah6/evpn_dev
bgpd: l3vni del to free ip prefix routes from vrf
2018-07-03 11:45:53 -04:00
Quentin Young
9c8726a33e doc: clean up flowspec.rst
* 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>
2018-07-03 17:42:41 +02:00
Lou Berger
b0b3080e0f
Merge pull request #2598 from dslicenc/cm21429-vrf-dup
zebra: duplicate nexthops for cross-vrf static routes on vrf bounce
2018-07-03 11:39:38 -04:00