Commit Graph

17839 Commits

Author SHA1 Message Date
Donald Sharp
f0c459f006 zebra: FPM should have a way of shutting down
When we shut down zebra, we were not doing anything to shut
down the FPM.  Perform the necessary occult rituals and
stop the threads from running during early shutdown.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-18 14:49:46 -05:00
Jafar Al-Gharaibeh
c449e2b45c
Merge pull request #5360 from donaldsharp/pim_crash_rp
Pim crash rp
2019-11-18 13:43:14 -06:00
Mitch Skiba
d4a0d83bfd bgpd: Fix per afi/safi addpath peer counting
The total_peercount table was created as a short cut for queries about
if addpath was enabled at all on a particular afi/safi. However, the
values weren't updated, so BGP would act as if addpath wasn't enabled
when determining if updates should be sent out. The error in behavior
was much more noticeable in tx-all than best-per-as, since changes in
what is sent by best-per-as would often trigger updates even if addpath
wasn't enabled.

Signed-off-by: Mitchell Skiba <mskiba@amazon.com>
2019-11-18 19:22:04 +00:00
Donatas Abraitis
990a0b15bb
Merge pull request #5359 from donaldsharp/pim_rp_static
pimd: Tighten up `show ip pim rp-info`
2019-11-18 19:31:43 +02:00
Donald Sharp
0f39cb4cb9 pimd: Create pimreg interface when we start any interface config
When you configure interface configuration without explicitly
configuring pim on that interface, we were not creating the pimreg
interface and as such we would crash in an attempted register
since the pimreg device is non-existent.

The crash is this:
==8823== Invalid read of size 8
==8823==    at 0x468614: pim_channel_add_oif (pim_oil.c:392)
==8823==    by 0x46D0F1: pim_register_join (pim_register.c:61)
==8823==    by 0x449AB3: pim_mroute_msg_nocache (pim_mroute.c:242)
==8823==    by 0x449AB3: pim_mroute_msg (pim_mroute.c:661)
==8823==    by 0x449AB3: mroute_read (pim_mroute.c:707)
==8823==    by 0x4FC0676: thread_call (thread.c:1549)
==8823==    by 0x4EF3A2F: frr_run (libfrr.c:1064)
==8823==    by 0x40DCB5: main (pim_main.c:162)
==8823==  Address 0xc8 is not stack'd, malloc'd or (recently) free'd

pim_register_join calls pim_channel_add_oif with:

	pim_channel_add_oif(up->channel_oil, pim->regiface,
			    PIM_OIF_FLAG_PROTO_PIM);

We just need to make srue pim->regiface exists once we start configuring
pim.

Fixes: #5358
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-18 11:43:52 -05:00
Donald Sharp
1e0d1c25e5 pimd: Dissallow obvious addresses from being the RP
When configuring a RP, dissallow the choice of 0.0.0.0 or
255.255.255.255 as the address as that they make no sense
what so ever.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-18 10:48:49 -05:00
Donald Sharp
d6593fc56d pimd: Tighten up show ip pim rp-info
We were adding a newline for the source in some cases
but not others and tighten up the display of data

eva# show ip pim rp-info
RP address       group/prefix-list   OIF               I am RP    Source
10.254.0.1       224.0.0.0/4         lo                yes        Static
4.4.4.4          225.1.2.3/32        abcdefghijklmno   yes        Static
10.0.20.45       226.200.100.100/32  r1-eth0           no         Static
eva#

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-18 09:06:56 -05:00
Donatas Abraitis
839bdd0f45
Merge pull request #5334 from adharkar/frr-master-nexthop_check
bgpd: Add nexthop of received EVPN RT-5 for nexthop tracking
2019-11-18 09:57:01 +02:00
Donatas Abraitis
cabf6c7141
Merge pull request #5357 from qlyoung/doc-overview-cleanup
doc: clean up overview.rst
2019-11-17 11:03:13 +02:00
Quentin Young
83621c63d3 doc: add link to developer docs
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-11-16 21:46:49 -05:00
Quentin Young
3252e3c801 doc: clean up overview.rst
Move the "how to get" blurb to a more obvious place and include a link
to the apt repo.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-11-16 21:25:19 -05:00
Donatas Abraitis
75b3bd3534
Merge pull request #5327 from lkrishnamoor/rm_rd_filter
bgpd: route-map support for evpn RD filter
2019-11-16 08:55:24 +02:00
Sri Mohana Singamsetty
670812fd13
Merge pull request #5312 from chiragshah6/evpn_dev2
bgpd: fix memory leak in vni-vrf route tables for evpn routes
2019-11-15 15:39:53 -08:00
Sri Mohana Singamsetty
c3ccfcfaaa
Merge pull request #5335 from opensourcerouting/ldpd-buffer-overflow
ldpd: add missing sanity check in the parsing of label messages
2019-11-15 15:37:33 -08:00
Ameya Dharkar
7c312383ba bgpd: Add nexthop of received EVPN RT-5 for nexthop tracking
Problem statement:
When IPv4/IPv6 prefixes are received in BGP, bgp_update function registers the
nexthop of the route with nexthop tracking module. The BGP route is marked as
valid only if the nexthop is resolved.

Even for EVPN RT-5, route should be marked as valid only if the the nexthop is
resolvable.

Code changes:
1. Add nexthop of EVPN RT-5 for nexthop tracking. Route will be marked as valid
only if the nexthop is resolved.
2. Only the valid EVPN routes are imported to the vrf.
3. When nht update is received in BGP, make sure that the EVPN routes are
imported/unimported based on the route becomes valid/invalid.

Testcases:
1. At rtr-1, advertise EVPN RT-5 with a nexthop 10.100.0.2.
10.100.0.2 is resolved at rtr-2 in default vrf.
At rtr-2, remote EVPN RT-5 should be marked as valid and should be imported into
vrfs.

2. Make the nexthop 10.100.0.2 unreachable at rtr-2
Remote EVPN RT-5 should be marked as invalid and should be unimported from the
vrfs. As this code change deals with EVPN type-5 routes only, other EVPN routes
should be valid.

3. At rtr-2, add a static route to make nexthop 10.100.0.2 reachable.
EVPN RT-5 should again become valid and should be imported into the vrfs.

Signed-off-by: Ameya Dharkar <adharkar@vmware.com>
2019-11-15 10:15:14 -08:00
Rafael Zalamena
1e5fe0e258
Merge pull request #5303 from taspelund/special_interface_error
staticd: Make blackhole keyword errors more straightforward
2019-11-15 13:35:13 -03:00
Donatas Abraitis
a6f6907031
Merge pull request #5330 from dslicenc/tools-bfd-timers
tools: stop repeating lines to delete for multiple bfd timer changes
2019-11-15 15:12:18 +02:00
Donatas Abraitis
e3126b3225
Merge pull request #5320 from donaldsharp/pim_igmp_ignore_from_ourself
Pim igmp ignore from ourself
2019-11-15 14:41:52 +02:00
Donald Sharp
d5b0f7372d
Merge pull request #5351 from ton31337/fix/add_missing_whitespace
bgpd: Add missing whitespace in update_subgroup_remove_peer_internal()
2019-11-15 07:38:07 -05:00
Donatas Abraitis
7a7d97f4e7
Merge pull request #5324 from lkrishnamoor/advertise-routes-bug
bgpd: Bug fix in "show bgp l2vpn evpn ... advertised-routes'
2019-11-15 14:08:43 +02:00
Donatas Abraitis
4882d29695 bgpd: Add missing whitespace in update_subgroup_remove_peer_internal()
Before the fix:

2019/11/14 19:52:21 BGP: peer 192.168.2.5 deleted from subgroup s4peer
cnt 0 - missing space after s4 before peer

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-15 11:09:17 +02:00
Trey Aspelund
a88be39939 staticd: Make blackhole keyword errors more straightforward
Previous error was misleading and made it seem like Null0,
reject, or blackhole nexthops on static routes are invalid.
This commit makes it more clear as to why the error is seen.

Signed-off-by: Trey Aspelund <taspelund@cumulusnetworks.com>
2019-11-14 17:39:02 -05:00
Sri Mohana Singamsetty
c445bbfd03
Merge pull request #5342 from satheeshkarra/ospf_dbgs
ospfd: Adding Debugs to Track OSPF DD Exchange
2019-11-14 14:17:36 -08:00
Lakshman Krishnamoorthy
196c6b092d bgpd: route-map support for evpn RD filter
With this code change, we can now filter evpn routes based on RD using the
match statement: "match evpn rd XX"

Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
2019-11-14 13:40:25 -08:00
Rafael Zalamena
afc46806d0
Merge pull request #5300 from ton31337/feature/add_a_test_case_for_sender-as-path-loop-detection
tests: Add a test case for `sender-as-path-loop-detection`
2019-11-14 16:14:11 -03:00
Rafael Zalamena
b3aa92f289
Merge pull request #5345 from mjstapp/fix_bfd_packet_sa
bfdd: remove unused initialization sa warning
2019-11-14 16:10:38 -03:00
Jafar Al-Gharaibeh
48cb555d4e
Merge pull request #5276 from donaldsharp/pim_double
pimd: No need to add then remove the oif if not DR
2019-11-14 09:38:44 -06:00
Mark Stapp
f7b3ca193b bfdd: remove unused initialization sa warning
There's a variable initialization that's triggering an SA
warning - don't do that.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-11-14 08:29:09 -05:00
Satheesh Kumar K
e6a22aeb42 ospfd: Adding Debugs to dump OSPF DD Seqnumber
Recently Lot of issues are seen in  OSPF adjacnecy establishements,
sessions was tear down because of DD Sequence Number mismatch.

adding Debugs to capture Master & slave generated sequence numbers.

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-14 01:16:05 -08:00
Donatas Abraitis
8b54bc30f0 tests: Test if distance bgp (1-255) (1-255) (1-255) works
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-14 10:13:02 +02:00
Satheesh Kumar K
67fa73f29a Zebra: ADD Protobuf Encoding & Decoding for MLAG Messages
1. add the Mlag ProtoBuf Lib to Zebra Compilation
2. Encode the messages with protobuf before writing to MLAG
3. Decode the MLAG Messages using protobuf and write to clients
   based on their subscrption.

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-13 22:47:32 -08:00
Satheesh Kumar K
e05ab0b0c8 lib,mlag : Defining MLAG Proto file
Defining the message structures between Zebra & MLAG

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-13 20:52:00 -08:00
Satheesh Kumar K
ee235396b9 Zebra: adding support for Zebra MLAG Functionality
This includes:
1. Processing client Registrations for MLAG
2. storing client Interests for MLAG updates
3. Opening communication channel to MLAG  with First client reg
4. Closing Communication channel with last client De-reg
5. Spawning a new thread for handling MLAG updates peocessing
6. adding Test code
7. advertising MLAG Updates to clients based on their interests

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-13 20:50:37 -08:00
Satheesh Kumar K
46c2687c72 pimd, lib: adding support for MLAG Message processing at PIM
This includes:
1. Defining message formats
2. Stream Decoding after receiving the message at PIM
3. Handling MLAG UP & Down Notifications

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-13 20:43:15 -08:00
Satheesh Kumar K
36b5b98fef pimd : Add support for MLAG Register & Un-register
when ever a FRR Client wants to send any data to another node
using MLAG Channel, uses below mechanisam.

1. sends  a MLAG Registration to zebra with interested messages that
   it is intended to receive from peer.
2. In response to this request, Zebra opens communication channel with
   MLAG. and also in Rx. diretion zebra forwards only those messages which
   client shown interest during registration
3. when client is no-longer interested in communicating with MLAG, client
   posts De-register to Zebra
4. if this is the last client which is interested for MLAG Communication,
   zebra closes the channel.

why PIM Needs MLAG Communication
================================
1. In general on LAN Networks elecetd DR will send the Join towards
   Multicast RP in case of a LHR and Register in case of FHR.
2. But in case DR Goes down, traffic will be re-converged only after
   the New DR is elected, but this can take time based on Hold Timer to
   detect the DR down.
3. this can be optimised by using MLAG Mecganisam.
4. and also Traffic can be forwarded more efficiently by knowing the cost
   towards RP using MLAG

Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-11-13 19:46:52 -08:00
Sri Mohana Singamsetty
53d19f2d6e
Merge pull request #5309 from donaldsharp/install_nhg_kernel
zebra: Allow zebra to install nexthop groups into linux kernel
2019-11-13 17:00:51 -08:00
Renato Westphal
f2e8b73572 ldpd: add missing sanity check in the parsing of label messages
Validate that the FEC prefix length is within the allowed limit
(depending on the FEC address family) in order to prevent possible
buffer overflows.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-11-13 21:51:06 -03:00
Mark Stapp
b6af40b98a
Merge pull request #5321 from sworleys/Zebra-Dplane-Thread-Cancel-Async
zebra: dplane cancel update thread from correct pthread
2019-11-13 16:46:36 -05:00
Mark Stapp
4e389d9836
Merge pull request #5315 from sworleys/SR-Zebra-NHG-Fixes
zebra: Some Zebra_NHG fixes found with the ISIS-SR topotests
2019-11-13 11:54:02 -05:00
Don Slice
c32ab5cfef tools: stop repeating lines to delete for multiple bfd timer changes
Problem reported with tracebacks seen when making multiple bfd timer
changes in frr.conf and applying via frr-reload.py.  Found that when
multiple bfd timer changes are made, the same line can be added for
deletion more than once, causing the traceback when the deletion is
performed.  This fix verifies the correct line is being appended for
deletion.

Ticket: CM-27233
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-11-13 15:19:36 +00:00
Donatas Abraitis
df12a3a2ab tests: Add a test case for sender-as-path-loop-detection
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-13 08:50:46 +02:00
Lakshman Krishnamoorthy
10d5be75aa bgpd: Bug fix in "show bgp l2vpn evpn ... advertised-routes'
The bug:
As part of displaying advertised routes to a peer, in the outer loop, we
iterate through all prefixes in the evpn table. In the inner loop,
we iterate through adj_out of each prefix.

If a prefix which is present in the evpn table is not advertised to a peer,
its corresponding attr == NULL. Checking for this condition is the fix.

Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
2019-11-12 14:02:05 -08:00
Stephen Worley
9344d3fcd3 zebra: dplane cancel update thread from correct pthread
This code is called from the zebra main pthread during shutdown
but the thread event is scheduled via the zebra dplane pthread.

Hence, we should be using the `thread_cancel_async()` API to
cancel the thread event on a different pthread.

This is only ever hit in the rare case that we still have work left
to do on the update queue during shutdown.

Found via zebra crash:

```
(gdb) bt
\#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
\#1  0x00007f4e4d3f7535 in __GI_abort () at abort.c:79
\#2  0x00007f4e4d3f740f in __assert_fail_base (fmt=0x7f4e4d559ee0 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7f4e4d9071d0 "master->owner == pthread_self()",
    file=0x7f4e4d906cf8 "lib/thread.c", line=1185, function=<optimized out>) at assert.c:92
\#3  0x00007f4e4d405102 in __GI___assert_fail (assertion=assertion@entry=0x7f4e4d9071d0 "master->owner == pthread_self()", file=file@entry=0x7f4e4d906cf8 "lib/thread.c",
    line=line@entry=1185, function=function@entry=0x7f4e4d906b68 <__PRETTY_FUNCTION__.15817> "thread_cancel") at assert.c:101
\#4  0x00007f4e4d8d095a in thread_cancel (thread=0x55b40d01a640) at lib/thread.c:1185
\#5  0x000055b40c291845 in zebra_dplane_shutdown () at zebra/zebra_dplane.c:3274
\#6  0x000055b40c27ee13 in zebra_finalize (dummy=<optimized out>) at zebra/main.c:202
\#7  0x00007f4e4d8d1416 in thread_call (thread=thread@entry=0x7ffcbbc08870) at lib/thread.c:1599
\#8  0x00007f4e4d8a1ef8 in frr_run (master=0x55b40ce35510) at lib/libfrr.c:1024
\#9  0x000055b40c270916 in main (argc=8, argv=0x7ffcbbc08c78) at zebra/main.c:483
(gdb) down
\#4  0x00007f4e4d8d095a in thread_cancel (thread=0x55b40d01a640) at lib/thread.c:1185
1185		assert(master->owner == pthread_self());
(gdb)
```

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-11-12 15:16:18 -05:00
Donald Sharp
a6ac9df8ea
Merge pull request #5307 from ton31337/fix/bgp_dampening_per_afi_safi
bgpd: Rework BGP dampening to be per AFI/SAFI
2019-11-12 15:11:27 -05:00
Renato Westphal
220e485b4d
Merge pull request #5209 from ton31337/feature/banner_motd_from_input
vtysh: Add an option to set banner motd from an input
2019-11-12 13:39:46 -03:00
Renato Westphal
7b6b97edcd
Merge pull request #5302 from qlyoung/static-stnradsjfsacasecmppnullLLL000
staticd: exact match on magic interface names
2019-11-12 13:21:19 -03:00
Renato Westphal
4027970a0b
Merge pull request #5296 from qlyoung/vtysh-be-helpful-and-kind
vtysh: be helpful and kind to unprivileged users
2019-11-12 13:07:45 -03:00
Stephen Worley
7c6d5f255e zebra: Put freeing code in nhg_ctx_free()
Put the code to free the data held by a nhg_ctx
in nhg_ctx_free() as well. We do it similiarly for
the dplane_ctx.

Let nhg_ctx_fini() be any other routines that need to
be handled before freeing.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-11-12 10:29:16 -05:00
Stephen Worley
606fa9e58d zebra: handle depends_find() NULL nexthop
SA warned us lookup could be NULL dereferenced in some
paths. Handle the case where we are passed a NULL
nexthop before we try to copy it.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-11-12 10:28:46 -05:00
Donald Sharp
ff5d5005a2
Merge pull request #5313 from mjstapp/fix_bsd_addr_of_packed
ospfd,eigrpd: don't take address of packed struct member
2019-11-12 10:08:50 -05:00