Commit Graph

18170 Commits

Author SHA1 Message Date
Donald Sharp
f096bae46b zebra: Handle crash when backpointer does not exist
=================================================================
==3058==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x7f5bf3ef7477 bp 0x7ffdfaa20d40 sp 0x7ffdfaa204c8 T0)
==3058==The signal is caused by a READ memory access.
==3058==Hint: address points to the zero page.
    #0 0x7f5bf3ef7476 in memcpy /build/glibc-OTsEL5/glibc-2.27/string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:134
    #1 0x4d158a in __asan_memcpy (/usr/lib/frr/zebra+0x4d158a)
    #2 0x7f5bf58da8ad in stream_put /home/qlyoung/frr/lib/stream.c:605:3
    #3 0x67d428 in zsend_ipset_entry_notify_owner /home/qlyoung/frr/zebra/zapi_msg.c:851:2
    #4 0x5c70b3 in zebra_pbr_add_ipset_entry /home/qlyoung/frr/zebra/zebra_pbr.c
    #5 0x68e1bb in zread_ipset_entry /home/qlyoung/frr/zebra/zapi_msg.c:2465:4
    #6 0x68f958 in zserv_handle_commands /home/qlyoung/frr/zebra/zapi_msg.c:2611:3
    #7 0x55666d in main /home/qlyoung/frr/zebra/main.c:309:2
    #8 0x7f5bf3e5db96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
    #9 0x4311d9 in _start (/usr/lib/frr/zebra+0x4311d9)

the ipset->backpointer was NULL as that the hash lookup failed to find
anything.  Prevent this crash from happening.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-06 20:25:54 -05:00
Donald Sharp
0bd371c61e zebra: Refactor _add and _del to use a common function
The decoding of _add and _del functions is practically identical
do a bit of work and make them so.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-06 20:25:51 -05:00
Donald Sharp
4824d144b6 zebra: Prevent zebra vxlan remote macip del buffer overflow
=================================================================
==13611==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffe9e5c8694 at pc 0x0000004d18ac bp 0x7ffe9e5c8330 sp 0x7ffe9e5c7ae0
WRITE of size 17 at 0x7ffe9e5c8694 thread T0
    #0 0x4d18ab in __asan_memcpy (/usr/lib/frr/zebra+0x4d18ab)
    #1 0x7f16f04bd97f in stream_get2 /home/qlyoung/frr/lib/stream.c:277:2
    #2 0x6410ec in zebra_vxlan_remote_macip_del /home/qlyoung/frr/zebra/zebra_vxlan.c:7718:4
    #3 0x68fa98 in zserv_handle_commands /home/qlyoung/frr/zebra/zapi_msg.c:2611:3
    #4 0x556add in main /home/qlyoung/frr/zebra/main.c:309:2
    #5 0x7f16eea3bb96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
    #6 0x431249 in _start (/usr/lib/frr/zebra+0x431249)

This decode is the result of a buffer overflow because we are
not checking ipa_len.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-06 20:22:56 -05:00
Donatas Abraitis
19b3676449
Merge pull request #5630 from slankdev/slankdev-bgpd-fix-large-rd
bgpd: fix large route-distinguisher's format
2020-01-06 13:15:07 +02:00
Hiroki Shirokura
63ba102780 bgpd: fix large route-distinguisher's format
This commit is about #5629 's issue.
Before this commit, bgpd creates format string of
bgp-route-distinguisher as int32, but correctly format
is uint32. current bgpd's sh-run-cli generate int32 rd,
so if user sets the rd as 1:4294967295(0x1:0xffffffff),
sh-run cli generates 1: -1 as running-config. This
commit fix that issue.

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-01-06 17:03:51 +09:00
Donatas Abraitis
8728ae46c8
Merge pull request #5467 from pogojotz/alpine-linux-build
alpine: fix build on current 'edge' version of Alpine
2020-01-05 22:10:34 +02:00
Donatas Abraitis
00a93d03a4
Merge pull request #5601 from donaldsharp/pim_rb
Pim rb
2020-01-05 22:07:00 +02:00
Donatas Abraitis
b833cc1ff4
Merge pull request #5611 from qlyoung/fix-bgp-no-listen-docstring
bgpd: fix too much no listen doc string
2020-01-04 00:39:46 +02:00
Renato Westphal
f8034506de
Merge pull request #5604 from qlyoung/add-ubsan-option
configure.ac: add --enable-undefined-sanitizer
2020-01-03 15:14:20 -03:00
Quentin Young
a8f2fe2676
Merge pull request #5615 from ton31337/feature/supported_rfc_list_add_8212
doc: Add rfc8212 to supported RFCs list
2020-01-03 13:03:14 -05:00
Donald Sharp
6b5122a0be pimd: Do not warn for common occurrence in igmp code
Do not warn when we receive a multicast address that
matches 224.0.0.0/24.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-03 08:41:46 -05:00
Donald Sharp
dd3364cb1a pimd: Convert the upstream_list and hash to a rb tree
Convert the upstream_list and hash to a rb tree, Significant
time was being spent in the listnode_add_sort.  This reduces
this time greatly.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-03 08:39:55 -05:00
Donald Sharp
7315ecdabe pimd: Convert the channel_oil_list|hash to a rb_tree
The channel_oil_list and hash are taking significant
cpu at scale when adding to the sorted list.  Replace
with a RB_TREE.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-03 08:39:55 -05:00
Donatas Abraitis
52771e362c doc: Add rfc8212 to supported RFCs list
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-01-03 09:51:17 +02:00
Quentin Young
93789698ce
Merge pull request #5613 from srimohans/ietf
doc: Updating FRR supported RFC list
2020-01-02 23:04:38 -05:00
Sri Mohana Singamsetty
7bf5810f78 doc: Updating FRR supported RFC list
1. Added subsections for BGP, MPLS, ISIS, OSPF etc.
2. Updated RFCs for BGP, MPLS, OSPF.

Signed-off-by: Sri Mohana Singamsetty <msingamsetty@vmware.com>
2020-01-02 16:00:31 -08:00
Quentin Young
85bb45956c bgpd: fix too much no listen doc string
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-01-02 16:26:31 -05:00
Quentin Young
0beeb6760b configure.ac: add --enable-undefined-sanitizer
For UBSan

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-01-01 21:09:35 -05:00
Donald Sharp
c3e43bfff2
Merge pull request #5594 from ton31337/feature/rhel8_docker
docker: Create build for CentOS 8
2020-01-01 08:36:23 -05:00
Donald Sharp
62accebf8b
Merge pull request #5593 from ton31337/feature/rhel8_rpm
packaging: Add CentOS 8 support
2020-01-01 08:35:31 -05:00
Donatas Abraitis
d872f01100
Merge pull request #5602 from donaldsharp/ripng_redistribute
Rip redistribute fixes
2020-01-01 09:33:32 +02:00
Donald Sharp
ad21f6755a ripd: Fix redistribute/no redistribute rinse repeate commands
ripd was using zclient_redistribute for installation but not
for removal.  As such the lib/zclient.c was not properly tracking
add/removal.  I think it would be best to just let rip to track
this instead of zclient.

Fixes: #5599
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-31 18:49:08 -05:00
Donald Sharp
2afebed21f ripngd: Fix redistribute/no redistribute rinse repeat commands
ripngd was using zclient_redistribute for installation but not
for removal.  As such the lib/zclient.c was not properly tracking
add/removal.  I think it would be best to just let ripng to track
this instead of zclient.

Fixes: #5599
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-31 18:48:54 -05:00
Donald Sharp
2a19e045f0
Merge pull request #5589 from ton31337/fix/send_fsm_error_notification_where_needed
bgpd: Send notification to the peer on FSM error
2019-12-31 09:11:11 -05:00
Donald Sharp
d2bee6ed41
Merge pull request #5595 from ton31337/fix/bgp_listen_definition
bgpd: Change description for `[no] bgp listen limit` commands
2019-12-31 09:10:04 -05:00
Donatas Abraitis
0ebdeff053
Merge pull request #5598 from zoltan/bgp_cfg_typo
bgpd: fix console typo
2019-12-31 14:19:35 +02:00
Donatas Abraitis
1f1bc0e454
Merge pull request #5597 from chiragshah6/evpn_dev2
bgpd: skip ra for blackhole nexthop type
2019-12-31 11:07:44 +02:00
Zoltan Arnold Nagy
3c0e7aa488 bgpd: fix console typo
The console printout had a typo for the number of configured peers label.

Signed-off-by: Zoltan Arnold Nagy <zoltan.arnold.nagy@gmail.com>
2019-12-30 19:44:50 +01:00
Donatas Abraitis
53b4aaeca0 bgpd: Send notification to the peer on FSM error
We should send a NOTIFICATION message with the Error Code Finite State
Machine Error if we receive NOTIFICATION in OpenSent state
as defined in https://tools.ietf.org/html/rfc4271#section-8.2.2

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-30 17:11:04 +02:00
Chirag Shah
65f803e80a bgpd: skip ra for blackhole nexthop type
bgp nexthop cache update triggers RA for global ipv6
nexthop update.
In case of blackhole route type the outgoing interface
information is NULL which leads to bgpd crash.

Skip sending RA for blackhole nexthop type.

Ticket:CM-27299
Reviewed By:
Testing Done:

Configure bgp neighbor over global ipv6 address.
Configure static blackhole route with prefix includes
connected ipv6 global address.
Upon link flap, zebra sends nexthop update to bgp.
Bgp nexthop cache skips sending RA for blackhole nexthop type.

router bgp 65002
 bgp router-id 91.189.93.190
 ...
 neighbor 2001:67c:1360::b peer-group internal

static route:
ipv6 route 2001:67c:1360::/48 Null0 254

iface rowlink.4010
        address 91.189.93.190/32
        address 2001:67c:1360::a/128

Trigger ifdown rowlink.4010; ifup rowlink.4010

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2019-12-29 22:16:51 -08:00
Donatas Abraitis
67f6d83ccb
Merge pull request #5596 from donaldsharp/md5_doc
doc: Add bgp neighbor password command
2019-12-29 21:11:01 +02:00
Donald Sharp
e7c105a7b4 doc: Add bgp neighbor password command
The bgp neighbor password command was not documented additionally
the fact that you may need to instruct the kernel to have more
memory available for tcp sockets when using this feature on a large
number of peers.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-27 09:20:38 -05:00
Donatas Abraitis
1601a46f22 bgpd: Change description for [no] bgp listen limit commands
It's quite confusing when you see this:
```
exit1-debian-9(config-router)# bgp listen
  listen  Configure BGP defaults
```

And:
```
exit1-debian-9(config-router)# no bgp listen
  listen  unset maximum number of BGP Dynamic Neighbors that can be created
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 15:48:03 +02:00
Donatas Abraitis
3deaafbd9b docker: Create build for CentOS 8
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 14:41:39 +02:00
Donatas Abraitis
470277454f packaging: Fix bogus date in frr.spec.in
```
RPM build errors:
    bogus date in %changelog: Sun May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - 7.3_dev_MyRPMVersion
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 14:03:00 +02:00
Donatas Abraitis
ca3260476e doc: Use proper numbering for packaging-redhat.rst
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 14:03:00 +02:00
Donatas Abraitis
1fe4beb2ed doc: Add a section in Building FRR for CentOS 8
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 14:03:00 +02:00
Donatas Abraitis
3f5c15f66a packaging: Adopt frr.spec.in to CentOS 8
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-27 14:02:58 +02:00
Philippe Guibert
d7cce42cc7
Merge pull request #5350 from sworleys/Fix-NS-Defualt-Info
zebra: Fix default ns->info should point to default zebra_ns
2019-12-26 17:46:08 +01:00
Jafar Al-Gharaibeh
7655aa34c9
Merge pull request #5579 from donaldsharp/pim_ip_mroute_last
vtysh: Ensure interface `ip mroute ...` commands are last
2019-12-22 12:45:40 -06:00
Jafar Al-Gharaibeh
1a457dcffd
Merge pull request #5584 from qlyoung/pim-fix-iph-trust
pimd: readd iph length checks
2019-12-22 12:45:00 -06:00
Jafar Al-Gharaibeh
959abfc76e
Merge pull request #5583 from donaldsharp/multicast_nh
bgpd: Allow ipv4 multicast to use v4 nexthops
2019-12-22 12:37:37 -06:00
Quentin Young
b4a82236f9
Merge pull request #5581 from Jafaral/pimroute-rf
pimd: refactor ip mroute cmd
2019-12-22 13:36:39 -05:00
Jafar Al-Gharaibeh
4253e8d0ca
Merge pull request #5585 from qlyoung/fix-pimd-mtrace-missing-length-check
pimd: fix missing igmp mtrace length check
2019-12-22 12:36:08 -06:00
Quentin Young
f08e675074 pimd: readd iph length checks
Kernel might not hand us a bad packet, but better safe than sorry here.
Validate the IP header length field. Also adds an additional check that
the packet length is sufficient for an IGMP packet, and a check that we
actually have enough for an ip header at all.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-12-22 13:34:40 -05:00
Donatas Abraitis
542e1aeb07
Merge pull request #5268 from qlyoung/vrrp-vrf
VRRP VRF support
2019-12-22 20:16:47 +02:00
Quentin Young
9ebc245ac4 pimd: fix missing igmp mtrace length check
We check that the IGMP message is sufficently sized for an mtrace query,
but not a response, leading to uninitialized stack read.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-12-21 21:02:15 -05:00
Donald Sharp
88b8d81aca bgpd: Allow ipv4 multicast to use v4 nexthops
When passing a v4 multicast route to a peer send
the v4 nexthop as a preferred methodology.

Fixes: #5582
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-20 20:06:56 -05:00
Jafar Al-Gharaibeh
e57cc5f056 pimd: refactor ip mroute cmd
combine:
  ip mroute INTERFACE A.B.C.D
  ip mroute INTERFACE A.B.C.D A.B.C.D

into:
  ip mroute INTERFACE A.B.C.D [A.B.C.D]

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2019-12-20 17:04:03 -06:00
Mark Stapp
7809d22aa2
Merge pull request #5567 from opensourcerouting/bring-them-back
lib: fix build of the northbound plugins
2019-12-20 14:05:07 -05:00