]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
4 years agoMerge pull request #5381 from donaldsharp/zebra_100_is_no_good
Mark Stapp [Wed, 20 Nov 2019 12:35:03 +0000 (07:35 -0500)]
Merge pull request #5381 from donaldsharp/zebra_100_is_no_good

zebra: Router Advertisement socket mess up

4 years agoMerge pull request #5383 from donaldsharp/pim_buffer_fun
Donatas Abraitis [Wed, 20 Nov 2019 11:54:36 +0000 (13:54 +0200)]
Merge pull request #5383 from donaldsharp/pim_buffer_fun

pimd: Various buffer overflow reads and crashes

4 years agoMerge pull request #5385 from donaldsharp/nhrp_doc_update
Donatas Abraitis [Wed, 20 Nov 2019 09:21:04 +0000 (11:21 +0200)]
Merge pull request #5385 from donaldsharp/nhrp_doc_update

doc: Fix nhrp doc issue

4 years agopimd: fix bsm buflen check to include pim hdr
Quentin Young [Wed, 20 Nov 2019 02:47:40 +0000 (21:47 -0500)]
pimd: fix bsm buflen check to include pim hdr

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agodoc: Fix nhrp doc issue
Donald Sharp [Wed, 20 Nov 2019 02:42:13 +0000 (21:42 -0500)]
doc: Fix nhrp doc issue

The link to the strong swan patches was mumble snumped.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agopimd: Various buffer overflow reads and crashes
Donald Sharp [Wed, 20 Nov 2019 00:36:19 +0000 (19:36 -0500)]
pimd: Various buffer overflow reads and crashes

A variety of buffer overflow reads and crashes
that could occur if you fed bad info into pim.

1) When type is setup incorrectly we were printing the first 8 bytes
of the pim_parse_addr_source, but the min encoding length is
4 bytes.  As such we will read beyond end of buffer.

2) The RP(pim, grp) macro can return a NULL value
Do not automatically assume that we can deref
the data.

3) BSM parsing was not properly sanitizing data input from wire
and we could enter into situations where we would read beyond
the end of the buffer.  Prevent this from happening, we are
probably left in a bad way.

4) The received bit length cannot be greater than 32 bits,
refuse to allow it to happen.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #5372 from opensourcerouting/snap-vrrpd
Donald Sharp [Tue, 19 Nov 2019 22:47:03 +0000 (17:47 -0500)]
Merge pull request #5372 from opensourcerouting/snap-vrrpd

snapcraft: Add vrrpd to the snapcraft package

4 years agoMerge pull request #5224 from manuhalo/fix_frr_reload_paths
Quentin Young [Tue, 19 Nov 2019 22:12:38 +0000 (17:12 -0500)]
Merge pull request #5224 from manuhalo/fix_frr_reload_paths

Fixes and extensions to frr_reload.py

4 years agozebra: Router Advertisement socket mess up
Donald Sharp [Tue, 19 Nov 2019 20:46:42 +0000 (15:46 -0500)]
zebra: Router Advertisement socket mess up

The code for when a new vrf is created to properly handle
router advertisement for it is messed up in several ways:

1) Generation of the zrouter data structure should set the rtadv
socket to -1 so that we don't accidently close someone elses
open file descriptor
2) When you created a new zvrf instance *after* bootup we are XCALLOC'ing
the data structure so the zvrf->fd was 0.  The shutdown code was looking
for the >= 0 to know if the fd existed (since fd 0 is valid!)

This sequence of events would cause zebra to consume 100% of the
cpu:

Run zebra by itself ( no other programs )
ip link add vrf1 type vrf table 1003
ip link del vrf vrf1
vtysh -c "configure" -c "no interface vrf1"

This commit fixes this issue.

Fixes: #5376
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #5377 from dslicenc/tools-bfd-timer-fix
Sri Mohana Singamsetty [Tue, 19 Nov 2019 18:35:35 +0000 (10:35 -0800)]
Merge pull request #5377 from dslicenc/tools-bfd-timer-fix

tools: resolve issue with bfd timer change fix in frr-reload.py

4 years agoMerge pull request #5375 from donaldsharp/pim_packet_issues
Sri Mohana Singamsetty [Tue, 19 Nov 2019 18:31:47 +0000 (10:31 -0800)]
Merge pull request #5375 from donaldsharp/pim_packet_issues

pimd: Fix possible read beyond end of data received

4 years agoMerge pull request #5292 from donaldsharp/ospf_vrf_data
Rafael Zalamena [Tue, 19 Nov 2019 18:29:11 +0000 (15:29 -0300)]
Merge pull request #5292 from donaldsharp/ospf_vrf_data

Ospf vrf data

4 years agoMerge pull request #5241 from sworleys/SA-NHG
Russ White [Tue, 19 Nov 2019 16:44:15 +0000 (11:44 -0500)]
Merge pull request #5241 from sworleys/SA-NHG

One More Zebra NHG SA Fix and nhg_ctx API Adjustment

4 years agoMerge pull request #5274 from opensourcerouting/bfdd-vrf-socket
Russ White [Tue, 19 Nov 2019 16:41:06 +0000 (11:41 -0500)]
Merge pull request #5274 from opensourcerouting/bfdd-vrf-socket

bfdd: VRF security improvement

4 years agoMerge pull request #5285 from ton31337/fix/send_BGP_NOTIFY_CEASE_PEER_UNCONFIG_after_...
Russ White [Tue, 19 Nov 2019 16:39:13 +0000 (11:39 -0500)]
Merge pull request #5285 from ton31337/fix/send_BGP_NOTIFY_CEASE_PEER_UNCONFIG_after_no_neighbor

bgpd: Notify "Peer De-configured" after entering 'no neighbor <neighb…

4 years agoMerge pull request #5257 from ton31337/fix/update_rib_on_bgp_distance_changes
Sri Mohana Singamsetty [Tue, 19 Nov 2019 16:35:57 +0000 (08:35 -0800)]
Merge pull request #5257 from ton31337/fix/update_rib_on_bgp_distance_changes

bgpd: Reflect the distance in RIB when it is changed for an arbitrary afi/safi

4 years agoMerge pull request #5371 from pguibert6WIND/filter_no_form
Russ White [Tue, 19 Nov 2019 16:21:20 +0000 (11:21 -0500)]
Merge pull request #5371 from pguibert6WIND/filter_no_form

lib: no filter operations fix on appropriate access-list name

4 years agoMerge pull request #5361 from donaldsharp/fpm_crash
Russ White [Tue, 19 Nov 2019 15:30:43 +0000 (10:30 -0500)]
Merge pull request #5361 from donaldsharp/fpm_crash

zebra: FPM should have a way of shutting down

4 years agotools: resolve issue with bfd timer change fix in frr-reload.py
Don Slice [Tue, 19 Nov 2019 13:03:51 +0000 (05:03 -0800)]
tools: resolve issue with bfd timer change fix in frr-reload.py

Found that while the previous fix solved the traceback and created
the correct configuration, it was doing a delete/add process rather
than just an add.  This was due to an incorrectly created search
string. This commit fixes that search string and testing verifies
that the correct thing is now being done.

Ticket: CM-27233
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
4 years agopimd: Fix possible read beyond end of data received
Donald Sharp [Tue, 19 Nov 2019 13:22:50 +0000 (08:22 -0500)]
pimd: Fix possible read beyond end of data received

If a register packet is received that is less than the PIM_MSG_REGISTER_LEN
in size we can have a possible situation where the data being
checksummed is just random data from the buffer we read into.

2019/11/18 21:45:46 warnings: PIM: int pim_if_add_vif(struct interface *, _Bool, _Bool): could not get address for interface fuzziface ifindex=0
==27636== Invalid read of size 4
==27636==    at 0x4E6EB0D: in_cksum (checksum.c:28)
==27636==    by 0x4463CC: pim_pim_packet (pim_pim.c:194)
==27636==    by 0x40E2B4: main (pim_main.c:117)
==27636==  Address 0x771f818 is 0 bytes after a block of size 24 alloc'd
==27636==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27636==    by 0x40E261: main (pim_main.c:112)
==27636==

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: Rework ospf_read_packet into 2 functions
Donald Sharp [Tue, 19 Nov 2019 13:09:56 +0000 (08:09 -0500)]
ospfd: Rework ospf_read_packet into 2 functions

The indentation level for ospf_read was starting to be pretty
extremene.  Rework into 2 functions for improved readability.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #5364 from lkrishnamoor/prefix_route_bugfix
Donatas Abraitis [Tue, 19 Nov 2019 13:00:08 +0000 (15:00 +0200)]
Merge pull request #5364 from lkrishnamoor/prefix_route_bugfix

bgpd: Bug fix in "show bgp l2vpn evpn X:X::X:X/M"

4 years agoospfd: Allow packet reads based upon read/write packet counts
Donald Sharp [Thu, 7 Nov 2019 04:04:32 +0000 (23:04 -0500)]
ospfd: Allow packet reads based upon read/write packet counts

Read in up to 20(ospf write-multipler X) packets, for handling of data.

This improves performance because we allow ospf to have a bit more data
to work on in one go for spf calculations instead of 1 packet at a time.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: The ip header dump is crazy long and useless
Donald Sharp [Thu, 7 Nov 2019 01:17:29 +0000 (20:17 -0500)]
ospfd: The ip header dump is crazy long and useless

Turning on packet debugs and seeing a header dump that is 11
lines long is useless

2019/11/07 01:07:05.941798 OSPF: ip_v 4
2019/11/07 01:07:05.941806 OSPF: ip_hl 5
2019/11/07 01:07:05.941813 OSPF: ip_tos 192
2019/11/07 01:07:05.941821 OSPF: ip_len 68
2019/11/07 01:07:05.941831 OSPF: ip_id 48576
2019/11/07 01:07:05.941838 OSPF: ip_off 0
2019/11/07 01:07:05.941845 OSPF: ip_ttl 1
2019/11/07 01:07:05.941857 OSPF: ip_p 89
2019/11/07 01:07:05.941865 OSPF: ip_sum 0xcf33
2019/11/07 01:07:05.941873 OSPF: ip_src 200.254.30.14
2019/11/07 01:07:05.941882 OSPF: ip_dst 224.0.0.5

We already have this debugged, it's not going to change and the
end developer can stick this back in if needed by hand to debug
something that is not working properly.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: Add/fix some debugs to handle vrf
Donald Sharp [Thu, 7 Nov 2019 00:49:06 +0000 (19:49 -0500)]
ospfd: Add/fix some debugs to handle vrf

This commit has:
The received packet path in ospf, had absolutely no debugs associated with
it.  This makes it extremely hard to know when we receive packets for
consumption.  Add some breadcrumbs to this end.

Large chunks of commands have no ability to debug what is happening
in what vrf.  With ip overlap X vrf this becomes a bit of a problem
Add some breadcrumbs here.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: Add a function to return the name of the vrf we are in.
Donald Sharp [Tue, 12 Nov 2019 19:17:14 +0000 (14:17 -0500)]
ospfd: Add a function to return the name of the vrf we are in.

Add a helper function to return the name of the vrf we are in
so it can be used as part of debug strings.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: Remove ORIGINAL_CODING check
Donald Sharp [Wed, 6 Nov 2019 22:12:51 +0000 (17:12 -0500)]
ospfd: Remove ORIGINAL_CODING check

We have a bunch of places that look for ORIGINAL_CODING.  There is
nothing in our configure system to define this value and a quick
git blame shows this code as being original to the import a very
very long time ago.  This is dead code, removing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agolib: no filter operations fix on appropriate access-list name
Philippe Guibert [Mon, 18 Nov 2019 11:05:47 +0000 (12:05 +0100)]
lib: no filter operations fix on appropriate access-list name

some vty no operations were not removing the entry of the access-list,
since the access-list name was not retrieved correctly. the index was
not correct for 'no ipv6 access-list WORD' operations, but also for one 'no
access-list WORD [..] any' operation.

PR=66244
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Acked-by: Alain Ritoux <alain.ritoux@6wind.com>
4 years agosnapcraft: Add vrrpd to the snapcraft package
Martin Winter [Sat, 9 Nov 2019 15:27:04 +0000 (16:27 +0100)]
snapcraft: Add vrrpd to the snapcraft package

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
4 years agoMerge pull request #5354 from mitch-skiba/addpath-fix
Donatas Abraitis [Tue, 19 Nov 2019 06:38:59 +0000 (08:38 +0200)]
Merge pull request #5354 from mitch-skiba/addpath-fix

bgpd: Fix per afi/safi addpath peer counting

4 years agobgpd: Bug fix in "show bgp l2vpn evpn X:X::X:X/M"
Lakshman Krishnamoorthy [Tue, 19 Nov 2019 02:20:21 +0000 (18:20 -0800)]
bgpd: Bug fix in "show bgp l2vpn evpn X:X::X:X/M"

The CLI was not parsing prefix format of ipv6 address.
This fixes the bug: https://github.com/FRRouting/frr/issues/5322

Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
4 years agoMerge pull request #5294 from chiragshah6/evpn_dev
Sri Mohana Singamsetty [Mon, 18 Nov 2019 21:32:46 +0000 (13:32 -0800)]
Merge pull request #5294 from chiragshah6/evpn_dev

zebra: evpn update remote rmac and nexhop

4 years agozebra: FPM should have a way of shutting down
Donald Sharp [Mon, 18 Nov 2019 19:38:39 +0000 (14:38 -0500)]
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>
4 years agoMerge pull request #5360 from donaldsharp/pim_crash_rp
Jafar Al-Gharaibeh [Mon, 18 Nov 2019 19:43:14 +0000 (13:43 -0600)]
Merge pull request #5360 from donaldsharp/pim_crash_rp

Pim crash rp

4 years agobgpd: Fix per afi/safi addpath peer counting
Mitch Skiba [Thu, 14 Nov 2019 19:28:23 +0000 (19:28 +0000)]
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>
4 years agoMerge pull request #5359 from donaldsharp/pim_rp_static
Donatas Abraitis [Mon, 18 Nov 2019 17:31:43 +0000 (19:31 +0200)]
Merge pull request #5359 from donaldsharp/pim_rp_static

pimd: Tighten up `show ip pim rp-info`

4 years agopimd: Create pimreg interface when we start any interface config
Donald Sharp [Mon, 18 Nov 2019 16:43:52 +0000 (11:43 -0500)]
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>
4 years agopimd: Dissallow obvious addresses from being the RP
Donald Sharp [Mon, 18 Nov 2019 15:48:49 +0000 (10:48 -0500)]
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>
4 years agopimd: Tighten up `show ip pim rp-info`
Donald Sharp [Mon, 18 Nov 2019 14:05:55 +0000 (09:05 -0500)]
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>
4 years agoMerge pull request #5334 from adharkar/frr-master-nexthop_check
Donatas Abraitis [Mon, 18 Nov 2019 07:57:01 +0000 (09:57 +0200)]
Merge pull request #5334 from adharkar/frr-master-nexthop_check

bgpd: Add nexthop of received EVPN RT-5 for nexthop tracking

4 years agoMerge pull request #5357 from qlyoung/doc-overview-cleanup
Donatas Abraitis [Sun, 17 Nov 2019 09:03:13 +0000 (11:03 +0200)]
Merge pull request #5357 from qlyoung/doc-overview-cleanup

doc: clean up overview.rst

4 years agodoc: add link to developer docs
Quentin Young [Sun, 17 Nov 2019 02:46:49 +0000 (21:46 -0500)]
doc: add link to developer docs

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agodoc: clean up overview.rst
Quentin Young [Sun, 17 Nov 2019 02:25:19 +0000 (21:25 -0500)]
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>
4 years agoMerge pull request #5327 from lkrishnamoor/rm_rd_filter
Donatas Abraitis [Sat, 16 Nov 2019 06:55:24 +0000 (08:55 +0200)]
Merge pull request #5327 from lkrishnamoor/rm_rd_filter

bgpd: route-map support for evpn RD filter

4 years agoMerge pull request #5312 from chiragshah6/evpn_dev2
Sri Mohana Singamsetty [Fri, 15 Nov 2019 23:39:53 +0000 (15:39 -0800)]
Merge pull request #5312 from chiragshah6/evpn_dev2

bgpd: fix memory leak in vni-vrf route tables for evpn routes

4 years agoMerge pull request #5335 from opensourcerouting/ldpd-buffer-overflow
Sri Mohana Singamsetty [Fri, 15 Nov 2019 23:37:33 +0000 (15:37 -0800)]
Merge pull request #5335 from opensourcerouting/ldpd-buffer-overflow

ldpd: add missing sanity check in the parsing of label messages

4 years agobgpd: Add nexthop of received EVPN RT-5 for nexthop tracking
Ameya Dharkar [Thu, 14 Nov 2019 00:46:56 +0000 (16:46 -0800)]
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>
4 years agoMerge pull request #5303 from taspelund/special_interface_error
Rafael Zalamena [Fri, 15 Nov 2019 16:35:13 +0000 (13:35 -0300)]
Merge pull request #5303 from taspelund/special_interface_error

staticd: Make blackhole keyword errors more straightforward

4 years agoMerge pull request #5330 from dslicenc/tools-bfd-timers
Donatas Abraitis [Fri, 15 Nov 2019 13:12:18 +0000 (15:12 +0200)]
Merge pull request #5330 from dslicenc/tools-bfd-timers

tools: stop repeating lines to delete for multiple bfd timer changes

4 years agoMerge pull request #5320 from donaldsharp/pim_igmp_ignore_from_ourself
Donatas Abraitis [Fri, 15 Nov 2019 12:41:52 +0000 (14:41 +0200)]
Merge pull request #5320 from donaldsharp/pim_igmp_ignore_from_ourself

Pim igmp ignore from ourself

4 years agoMerge pull request #5351 from ton31337/fix/add_missing_whitespace
Donald Sharp [Fri, 15 Nov 2019 12:38:07 +0000 (07:38 -0500)]
Merge pull request #5351 from ton31337/fix/add_missing_whitespace

bgpd: Add missing whitespace in update_subgroup_remove_peer_internal()

4 years agoMerge pull request #5324 from lkrishnamoor/advertise-routes-bug
Donatas Abraitis [Fri, 15 Nov 2019 12:08:43 +0000 (14:08 +0200)]
Merge pull request #5324 from lkrishnamoor/advertise-routes-bug

bgpd: Bug fix in "show bgp l2vpn evpn ... advertised-routes'

4 years agobgpd: Add missing whitespace in update_subgroup_remove_peer_internal()
Donatas Abraitis [Fri, 15 Nov 2019 09:09:17 +0000 (11:09 +0200)]
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>
4 years agostaticd: Make blackhole keyword errors more straightforward
Trey Aspelund [Fri, 8 Nov 2019 21:51:36 +0000 (16:51 -0500)]
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>
4 years agoMerge pull request #5342 from satheeshkarra/ospf_dbgs
Sri Mohana Singamsetty [Thu, 14 Nov 2019 22:17:36 +0000 (14:17 -0800)]
Merge pull request #5342 from satheeshkarra/ospf_dbgs

ospfd: Adding Debugs to Track OSPF DD Exchange

4 years agobgpd: route-map support for evpn RD filter
Lakshman Krishnamoorthy [Wed, 13 Nov 2019 00:51:24 +0000 (16:51 -0800)]
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>
4 years agoMerge pull request #5300 from ton31337/feature/add_a_test_case_for_sender-as-path...
Rafael Zalamena [Thu, 14 Nov 2019 19:14:11 +0000 (16:14 -0300)]
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`

4 years agoMerge pull request #5345 from mjstapp/fix_bfd_packet_sa
Rafael Zalamena [Thu, 14 Nov 2019 19:10:38 +0000 (16:10 -0300)]
Merge pull request #5345 from mjstapp/fix_bfd_packet_sa

bfdd: remove unused initialization sa warning

4 years agoMerge pull request #5276 from donaldsharp/pim_double
Jafar Al-Gharaibeh [Thu, 14 Nov 2019 15:38:44 +0000 (09:38 -0600)]
Merge pull request #5276 from donaldsharp/pim_double

pimd: No need to add then remove the oif if not DR

4 years agobfdd: remove unused initialization sa warning
Mark Stapp [Thu, 14 Nov 2019 13:29:09 +0000 (08:29 -0500)]
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>
4 years agoospfd: Adding Debugs to dump OSPF DD Seqnumber
Satheesh Kumar K [Fri, 8 Nov 2019 06:00:33 +0000 (22:00 -0800)]
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>
4 years agotests: Test if `distance bgp (1-255) (1-255) (1-255)` works
Donatas Abraitis [Thu, 31 Oct 2019 09:17:45 +0000 (11:17 +0200)]
tests: Test if `distance bgp (1-255) (1-255) (1-255)` works

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #5309 from donaldsharp/install_nhg_kernel
Sri Mohana Singamsetty [Thu, 14 Nov 2019 01:00:51 +0000 (17:00 -0800)]
Merge pull request #5309 from donaldsharp/install_nhg_kernel

zebra: Allow zebra to install nexthop groups into linux kernel

4 years agoldpd: add missing sanity check in the parsing of label messages
Renato Westphal [Thu, 14 Nov 2019 00:51:06 +0000 (21:51 -0300)]
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>
4 years agoMerge pull request #5321 from sworleys/Zebra-Dplane-Thread-Cancel-Async
Mark Stapp [Wed, 13 Nov 2019 21:46:36 +0000 (16:46 -0500)]
Merge pull request #5321 from sworleys/Zebra-Dplane-Thread-Cancel-Async

zebra: dplane cancel update thread from correct pthread

4 years agoMerge pull request #5315 from sworleys/SR-Zebra-NHG-Fixes
Mark Stapp [Wed, 13 Nov 2019 16:54:02 +0000 (11:54 -0500)]
Merge pull request #5315 from sworleys/SR-Zebra-NHG-Fixes

zebra: Some Zebra_NHG fixes found with the ISIS-SR topotests

4 years agotools: stop repeating lines to delete for multiple bfd timer changes
Don Slice [Mon, 11 Nov 2019 20:45:32 +0000 (15:45 -0500)]
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>
4 years agotests: Add a test case for `sender-as-path-loop-detection`
Donatas Abraitis [Fri, 8 Nov 2019 14:18:12 +0000 (16:18 +0200)]
tests: Add a test case for `sender-as-path-loop-detection`

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Bug fix in "show bgp l2vpn evpn ... advertised-routes'
Lakshman Krishnamoorthy [Tue, 12 Nov 2019 22:02:05 +0000 (14:02 -0800)]
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>
4 years agozebra: dplane cancel update thread from correct pthread
Stephen Worley [Tue, 12 Nov 2019 19:56:56 +0000 (14:56 -0500)]
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>
4 years agoMerge pull request #5307 from ton31337/fix/bgp_dampening_per_afi_safi
Donald Sharp [Tue, 12 Nov 2019 20:11:27 +0000 (15:11 -0500)]
Merge pull request #5307 from ton31337/fix/bgp_dampening_per_afi_safi

bgpd: Rework BGP dampening to be per AFI/SAFI

4 years agoMerge pull request #5209 from ton31337/feature/banner_motd_from_input
Renato Westphal [Tue, 12 Nov 2019 16:39:46 +0000 (13:39 -0300)]
Merge pull request #5209 from ton31337/feature/banner_motd_from_input

vtysh: Add an option to set banner motd from an input

4 years agoMerge pull request #5302 from qlyoung/static-stnradsjfsacasecmppnullLLL000
Renato Westphal [Tue, 12 Nov 2019 16:21:19 +0000 (13:21 -0300)]
Merge pull request #5302 from qlyoung/static-stnradsjfsacasecmppnullLLL000

staticd: exact match on magic interface names

4 years agoMerge pull request #5296 from qlyoung/vtysh-be-helpful-and-kind
Renato Westphal [Tue, 12 Nov 2019 16:07:45 +0000 (13:07 -0300)]
Merge pull request #5296 from qlyoung/vtysh-be-helpful-and-kind

vtysh: be helpful and kind to unprivileged users

4 years agozebra: Put freeing code in nhg_ctx_free()
Stephen Worley [Tue, 29 Oct 2019 01:39:18 +0000 (21:39 -0400)]
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>
4 years agozebra: handle depends_find() NULL nexthop
Stephen Worley [Tue, 29 Oct 2019 01:37:05 +0000 (21:37 -0400)]
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>
4 years agoMerge pull request #5313 from mjstapp/fix_bsd_addr_of_packed
Donald Sharp [Tue, 12 Nov 2019 15:08:50 +0000 (10:08 -0500)]
Merge pull request #5313 from mjstapp/fix_bsd_addr_of_packed

ospfd,eigrpd: don't take address of packed struct member

4 years agodoc: Append documentation for `bgp dampening` command
Donatas Abraitis [Tue, 12 Nov 2019 11:23:24 +0000 (13:23 +0200)]
doc: Append documentation for `bgp dampening` command

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agopimd: Cleanup igmp debugs a tiny bit
Donald Sharp [Tue, 12 Nov 2019 14:15:57 +0000 (09:15 -0500)]
pimd: Cleanup igmp debugs a tiny bit

When receiving igmp packets we are spitting out a lot of
debugs.  Attempt to clean this up to allow us to understand
what is going on a bit better by just being able to look
at the log file.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agopimd: `debug igmp trace` turns on non igmp debugs
Donald Sharp [Tue, 12 Nov 2019 13:02:06 +0000 (08:02 -0500)]
pimd: `debug igmp trace` turns on non igmp debugs

When you turn on `debug igmp trace` we are seeing a bunch
of debugs associated with pim processing.  This is because we were
using PIM_DEBUG_TRACE which is both `debug igmp trace` and `debug pim trace`
when tracing igmp code it would be nice to only see igmp work.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agotools, vtysh: improved fix for ldpd ifaces
Emanuele Di Pascale [Tue, 12 Nov 2019 14:36:15 +0000 (15:36 +0100)]
tools, vtysh: improved fix for ldpd ifaces

instead of suppressing the 'exit' markers at the end of each
'interface XXX' clause in the mpls ldp configuration, mark
those with a special marker 'exit-ldp-if' and teach the
reload script to correctly recognize the new sub-subcontext

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
4 years agopimd: Ignore igmp queries from itself
Donald Sharp [Tue, 12 Nov 2019 01:29:06 +0000 (20:29 -0500)]
pimd: Ignore igmp queries from itself

We are seeing situations where PIM is sending a IGMP v3 query
and immediately receiving back up the pim kernel interface the
query from itself:

from `show int brief`:
swp7 up default 192.168.202.1/24

We are also receiving these debugs:
2019-11-11T20:52:40.452307+00:00 leaf02 pimd[1592]: Send IGMPv3 query to 224.4.0.8 on swp7 for group 224.4.0.8, sources=0 msg_size=12 s_flag=0 QRV=2 QQI=125 QQIC=7d
2019-11-11T20:52:40.452430+00:00 leaf02 pimd[1592]: pim_mroute_msg(default): igmp kernel upcall on swp7(0x55eaa7dc7dc0) for 192.168.202.1 -> 224.4.11.123
2019-11-11T20:52:40.452574+00:00 leaf02 pimd[1592]: Recv IP packet from 192.168.202.1 to 224.4.11.123 on swp7: size=40 ip_header_size=24 ip_proto=2
2019-11-11T20:52:40.452699+00:00 leaf02 pimd[1592]: Recv IGMP packet from 192.168.202.1 to 224.4.11.123 on swp7: ttl=1 msg_type=17 msg_size=16
2019-11-11T20:52:40.452824+00:00 leaf02 pimd[1592]: Recv IGMP query v3 from 192.168.202.1 on swp7 for group 224.4.11.123

This query is causing us to do some weird gyrations around the IGMP state machine for handling
queries.  Let's just prevent it from happening.

Ticket: CM-27247
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: zebra_nhg check each nexthop for active, not just number
Stephen Worley [Mon, 11 Nov 2019 23:32:13 +0000 (18:32 -0500)]
zebra: zebra_nhg check each nexthop for active, not just number

We were only checking that two nhg_hash_entry's were equal
based on the active nexthop NUMBER. This is not sufficient in
special cases where whats active with one route using it,
might not be active with the other. We can see this with
routes trying to resolve to themselves.

Ex)

1.1.1.0/24
-> 1.1.1.1 dummy1 (inactive)
-> 1.1.1.2 dummy2

1.1.2.0/24
-> 1.1.1.1 dummy1
-> 1.1.1.2 dummy1 (inactive)

Without checking each nexthop individually, they will
hash to the same group since they have the same number of
active nexthops.

Fix this by looping over every nexthop for each nhe (they should
be sorted) and checking if the NEXTHOP_FLAG_ACTIVE flag's match.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agozebra: Don't clear nexthop fib flag on rib_install
Stephen Worley [Mon, 11 Nov 2019 23:28:29 +0000 (18:28 -0500)]
zebra: Don't clear nexthop fib flag on rib_install

We cannot clear the NEXTHOP_FLAG_FIB nexthop flag
when sending routes to the dataplane anymore since
nexthops are now shared.

We were seeing a situation where if we delete a route
using a nexthop group that is still active with another
route, the fib flag was being unset by this code
path despite them still being valid fib nexthops with the
other route.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agozebra: mpls_ftn_uninstall handle nhg hash label change
Stephen Worley [Mon, 11 Nov 2019 23:22:59 +0000 (18:22 -0500)]
zebra: mpls_ftn_uninstall handle nhg hash label change

We were crashing due to a missed label change code path
in mpls_ftn_uninstall() with the zebra_nhg hashing code.

Add a static handler function for label changing everywhere
in that code and use it in mpls_ftn_uninstall().

The crash was found in the ISIS-SR tests:

==23== Thread 1:
==23== Invalid read of size 4
==23==    at 0x15B20E: zebra_nhg_hash_equal (zebra_nhg.c:365)
==23==    by 0x489A2FD: hash_get (hash.c:143)
==23==    by 0x489A4BC: hash_lookup (hash.c:183)
==23==    by 0x15B5A3: zebra_nhg_find (zebra_nhg.c:494)
==23==    by 0x15C536: zebra_nhg_rib_find (zebra_nhg.c:1070)
==23==    by 0x1573E8: mpls_ftn_update (zebra_mpls.c:2661)
==23==    by 0x1A2554: zread_mpls_labels_replace (zapi_msg.c:1890)
==23==    by 0x1A41CD: zserv_handle_commands (zapi_msg.c:2613)
==23==    by 0x199B17: zserv_process_messages (zserv.c:517)
==23==    by 0x48EE6B7: thread_call (thread.c:1549)
==23==    by 0x48A8AD5: frr_run (libfrr.c:1064)
==23==    by 0x1391B7: main (main.c:468)
==23==  Address 0x5839330 is 0 bytes inside a block of size 80 free'd
==23==    at 0x48369AB: free (vg_replace_malloc.c:530)
==23==    by 0x48AEE6C: qfree (memory.c:129)
==23==    by 0x15C5F8: zebra_nhg_free (zebra_nhg.c:1095)
==23==    by 0x15BC8C: zebra_nhg_handle_uninstall (zebra_nhg.c:734)
==23==    by 0x15DCFA: zebra_nhg_uninstall_kernel (zebra_nhg.c:1826)
==23==    by 0x15C666: zebra_nhg_decrement_ref (zebra_nhg.c:1106)
==23==    by 0x15D9D7: zebra_nhg_re_update_ref (zebra_nhg.c:1711)
==23==    by 0x15D8B1: nexthop_active_update (zebra_nhg.c:1660)
==23==    by 0x167072: rib_process (zebra_rib.c:1154)
==23==    by 0x168D72: process_subq_route (zebra_rib.c:2039)
==23==    by 0x168E92: process_subq (zebra_rib.c:2078)
==23==    by 0x168F5B: meta_queue_process (zebra_rib.c:2112)
==23==  Block was alloc'd at
==23==    at 0x4837B65: calloc (vg_replace_malloc.c:752)
==23==    by 0x48AED56: qcalloc (memory.c:110)
==23==    by 0x15B07B: zebra_nhg_copy (zebra_nhg.c:307)
==23==    by 0x15B13E: zebra_nhg_hash_alloc (zebra_nhg.c:329)
==23==    by 0x489A339: hash_get (hash.c:148)
==23==    by 0x15B6CA: zebra_nhg_find (zebra_nhg.c:532)
==23==    by 0x15C536: zebra_nhg_rib_find (zebra_nhg.c:1070)
==23==    by 0x15D89A: nexthop_active_update (zebra_nhg.c:1658)
==23==    by 0x167072: rib_process (zebra_rib.c:1154)
==23==    by 0x168D72: process_subq_route (zebra_rib.c:2039)
==23==    by 0x168E92: process_subq (zebra_rib.c:2078)
==23==    by 0x168F5B: meta_queue_process (zebra_rib.c:2112)

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agoMerge pull request #5311 from chiragshah6/mdev
Sri Mohana Singamsetty [Tue, 12 Nov 2019 00:34:26 +0000 (16:34 -0800)]
Merge pull request #5311 from chiragshah6/mdev

bgpd: fix rd output in show commands for evpn routs

4 years agoMerge pull request #5310 from donaldsharp/ospf_use_after_free
Sri Mohana Singamsetty [Mon, 11 Nov 2019 21:29:28 +0000 (13:29 -0800)]
Merge pull request #5310 from donaldsharp/ospf_use_after_free

ospfd: Function order caused use after free.

4 years agoospfd,eigrpd: don't take address of packed struct member
Mark Stapp [Mon, 11 Nov 2019 17:22:38 +0000 (12:22 -0500)]
ospfd,eigrpd: don't take address of packed struct member

Use a local variable to avoid trying to take the address
of a packed struct member - an address from the ip header
in these cases.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoMerge pull request #5259 from mjstapp/dplane_sample_plugin
Quentin Young [Mon, 11 Nov 2019 16:56:42 +0000 (11:56 -0500)]
Merge pull request #5259 from mjstapp/dplane_sample_plugin

zebra: Add a sample dataplane plugin module

4 years agobgpd: fix memory leak in vrf inst for evpn route
Chirag Shah [Thu, 7 Nov 2019 23:09:23 +0000 (15:09 -0800)]
bgpd: fix memory leak in vrf inst for evpn route

There is a memory leak of the bgp node (route node)
in bgp vrf rib table while processing evpn remote routes.

During the remote evpn route processing, a new route
is imported and created in per vrf bgp rib route table,
the refcount for the route node is incremented multiple
times.

Post evpn route creation, the bgp (route) node refcount needs
to be decremented.

Ticket:CM-26838,CM-27169
Reviewed By:CCR-9477
Testing Done:

Before fix:
----------
initial state:
TORC1#vtysh -c "show memory"
BGP node                      :      515    184
BGP route                     :      568    112

with 1 mac-ip route:
TORC1#vtysh -c "show memory"
BGP node                      :      524    184
BGP route                     :      583    112

withdraw 1 mac-ip route:
TORC1#vtysh -c "show memory"
BGP node                      :      520    184
BGP route                     :      568    112

After fix:
withdra 1 mac-ip route
TORC1#vtysh -c "show memory"
BGP node                      :      515    184
BGP route                     :      568    112

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agobgpd: fix memory leak in vni table for evpn routes
Chirag Shah [Wed, 6 Nov 2019 02:30:56 +0000 (18:30 -0800)]
bgpd: fix memory leak in vni table for evpn routes

There is a memory leak of the bgp node (route node)
in vni table while processing evpn remote route(s).

During the remote evpn route processing, a new route
is created in per vni route table, the refcount for
the route node is incremented twice. First refcount
is incremented during the node creation and the second
one when the bgp_info_add is added.

Post evpn route creation, the bgp node refcount needs
to be decremented.

Ticket:CM-26898,CM-26838,CM-27169
Reviewed By:CCR-9474
Testing Done:
In EVPN topology send 1K MAC routes then check the memory footprint
at the remote VTEP before sending 1K type-2 routes
and after flushing/withdrawal of the routes.

Before fix:
-----------
Initial memory footprint:
root@TOR1:~# vtysh -c "show memory" | grep "Hash Bucket \|BGP node \|BGP route"
Hash Bucket                   :       2008      32
BGP node                      :        182     152
BGP route                     :         96     112

With 1K MAC (type-2 routes)
root@TOR1:~# vtysh -c "show memory" | grep "Hash Bucket \|BGP node \|BGP route"
Hash Bucket                   :       6008      32
BGP node                      :       4182     152
BGP route                     :       2096     112

After cleaning up 1K MAC entries from source VTEP which triggers BGP withdraw
at the remote VTEP.
root@TOR1:~# vtysh -c "show memory" | grep "Hash Bucket \|BGP node \|BGP route"
Hash Bucket                   :       4008      32
BGP node                      :       2182     152   <-- Here 2K delta from initial count.
BGP route                     :         96     112

With fix:
---------

After 1K MAC entries cleaned up at the remote VTEP, the memory footprint
(BGP Node and Hash Bucket count) is equilibrium to start of the test.
root@TOR1:~# vtysh -c "show memory" | grep "Hash Bucket \|BGP node \|BGP route"
Hash Bucket                   :       2008      32
BGP node                      :        182     152
BGP route                     :         96     112

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agobgpd: fix json output for show cmd for evpn routes
Chirag Shah [Mon, 4 Nov 2019 19:15:02 +0000 (11:15 -0800)]
bgpd: fix json output for show cmd for evpn routes

Fix json output where show command displayed
"Route Distinguisher: " string in json output because
NULL json object passed to bgp_evpn_show_route_rd_header()

Testing Done:
Route Distinguisher: ip 27.0.0.11:3
Route Distinguisher: ip 27.0.0.11:4
Route Distinguisher: ip 27.0.0.16:3
Route Distinguisher: ip 27.0.0.16:5
Route Distinguisher: ip 27.0.0.16:9
{
  "27.0.0.11:3":{
    "rd":"27.0.0.11:3",
    "[2]:[0]:[48]:[00:02:00:00:00:02]":{
      "prefix":"[2]:[0]:[48]:[00:02:00:00:00:02]",
      "prefixLen":288,
 ...
}

Post fix:
{
  "27.0.0.11:3":{
    "rd":"27.0.0.11:3",
    "[2]:[0]:[48]:[00:02:00:00:00:02]":{
      "prefix":"[2]:[0]:[48]:[00:02:00:00:00:02]",
      "prefixLen":288,
  ...
}
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agobgpd: fix rd printing in show commands for evpn rts
Chirag Shah [Mon, 4 Nov 2019 19:15:02 +0000 (11:15 -0800)]
bgpd: fix rd printing in show commands for evpn rts

PR 5118 introduce additional (prepend) keywords
like 'ip' to Route Distinguisher output which
breaks existing evpn route show commands parsing.

Restore to original behavior.

Testing Done:

vtysh -c 'show bgp l2vpn evpn route'

Before fix:
Route Distinguisher: ip 27.0.0.15:44

Post fix:
Route Distinguisher: 27.0.0.15:44

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agoospfd: Function order caused use after free.
Donald Sharp [Mon, 11 Nov 2019 15:17:31 +0000 (10:17 -0500)]
ospfd: Function order caused use after free.

The opaque lsa that we are storing is stored on various
lists depending on it's type.  This removal from the
list was being done *after* the pointer was freed.  This
is not a good idea.  Since the use after free was just
removal from a linked list and the freeing function does
not do anything other than free data, than just switching the function
order should be sufficient.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: Allow zebra to install nexthop groups into linux kernel
Donald Sharp [Mon, 11 Nov 2019 14:34:46 +0000 (09:34 -0500)]
zebra: Allow zebra to install nexthop groups into linux kernel

This reverts commit 7d5bb02b1adf4b0e11c6e27590e0b5b3ab841baa.

Allow zebra to actually maintain the nexthop group in the
linux kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #5299 from ton31337/fix/remove_dead_code
Donald Sharp [Mon, 11 Nov 2019 12:57:09 +0000 (07:57 -0500)]
Merge pull request #5299 from ton31337/fix/remove_dead_code

bgpd: Remove not used bgp_find_nexthop() function

4 years agoMerge pull request #5306 from ton31337/fix/replace_subcode_static_value_to_const_name
Donald Sharp [Mon, 11 Nov 2019 12:56:42 +0000 (07:56 -0500)]
Merge pull request #5306 from ton31337/fix/replace_subcode_static_value_to_const_name

bgpd: Use BGP_NOTIFY_SUBCODE_UNSPECIFIC value for bgp_notify_send() where 0

4 years agobgpd: Rework BGP dampening to be per AFI/SAFI
Donatas Abraitis [Sun, 10 Nov 2019 18:13:20 +0000 (20:13 +0200)]
bgpd: Rework BGP dampening to be per AFI/SAFI

Before we had:

!
router bgp 65031
 bgp dampening 1 2 3 4
!

exit2-debian-9(config)# router bgp 65031
exit2-debian-9(config-router)# address-family ipv4 multicast
exit2-debian-9(config-router-af)# bgp dampening 5 6 7 8
exit2-debian-9(config-router-af)# end
exit2-debian-9# show running-config

!
router bgp 65031
 bgp dampening 1 2 3 4
!

After fix:

!
router bgp 65031
 neighbor 192.168.1.2 remote-as 100
 !
 address-family ipv4 unicast
  bgp dampening 1 2 3 4
 exit-address-family
 !
 address-family ipv4 multicast
  bgp dampening 5 6 7 8
 exit-address-family
!

exit2-debian-9# show ip bgp ipv4 unicast dampening parameters
Half-life time: 1 min
Reuse penalty: 2
Suppress penalty: 3
Max suppress time: 4 min
Max suppress penalty: 32

exit2-debian-9# show ip bgp ipv4 multicast dampening parameters
Half-life time: 5 min
Reuse penalty: 6
Suppress penalty: 7
Max suppress time: 8 min
Max suppress penalty: 18

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Use BGP_NOTIFY_SUBCODE_UNSPECIFIC value for bgp_notify_send() where 0
Donatas Abraitis [Sun, 10 Nov 2019 15:54:37 +0000 (17:54 +0200)]
bgpd: Use BGP_NOTIFY_SUBCODE_UNSPECIFIC value for bgp_notify_send() where 0

Just a code cleanup to keep the code consistent.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #5298 from donaldsharp/bgp_prefix_rpki
Russ White [Fri, 8 Nov 2019 20:29:05 +0000 (15:29 -0500)]
Merge pull request #5298 from donaldsharp/bgp_prefix_rpki

bgpd: Fix missed prefix_free conversion in rpki code