Commit Graph

14790 Commits

Author SHA1 Message Date
Donatas Abraitis
afad5cedf1 bgpd: Add peer action for PEER_FLAG_IFPEER_V6ONLY flag
peer_flag_modify() will always return BGP_ERR_INVALID_FLAG because
the action was not defined for PEER_FLAG_IFPEER_V6ONLY flag.

```
global PEER_FLAG_IFPEER_V6ONLY = 16384;
global BGP_ERR_INVALID_FLAG = -2;

probe process("/usr/lib/frr/bgpd").statement("peer_flag_modify@/root/frr/bgpd/bgpd.c:3975")
{
	if ($flag == PEER_FLAG_IFPEER_V6ONLY && $action->type == 0)
		printf("action not found for the flag PEER_FLAG_IFPEER_V6ONLY\n");
}

probe process("/usr/lib/frr/bgpd").function("peer_flag_modify").return
{
	if ($return == BGP_ERR_INVALID_FLAG)
		printf("return BGP_ERR_INVALID_FLAG\n");
}
```
produces:
action not found for the flag PEER_FLAG_IFPEER_V6ONLY
return BGP_ERR_INVALID_FLAG

$ vtysh -c 'conf t' -c 'router bgp 20' -c 'neighbor eth1 interface v6only remote-as external'

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-02-25 21:19:37 +02:00
Donald Sharp
17bae5dca8
Merge pull request #3843 from opensourcerouting/cli-fuzzer-fixes
More cli fuzzer fizes
2019-02-22 14:46:54 -05:00
Donald Sharp
2eba324247
Merge pull request #3847 from mjstapp/fix_rnode_unlock
zebra: unlock route-node in dplane results handler
2019-02-22 13:11:32 -05:00
Mark Stapp
f4756ad737
Merge pull request #3851 from donaldsharp/bgp_routemap_fix
bgpd: Fix compile warning -> error
2019-02-22 12:22:16 -05:00
Donald Sharp
c393504595 bgpd: Fix compile warning -> error
The struct prefix *prefix is really a const struct prefix *
This was causing compile warns->errors on some compilers

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-22 10:50:14 -05:00
Sri Mohana Singamsetty
494724f6e4
Merge pull request #3827 from chiragshah6/evpn_dev1
bgpd: vrl source-vrf route map filter
2019-02-21 15:39:43 -08:00
Mark Stapp
5c111895d6 zebra: unlock route-node in dplane results handler
Unlock the route-node struct we look up while processing
async dataplane results.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-02-21 16:15:14 -05:00
Jafar Al-Gharaibeh
080c8b47a2
Merge pull request #3841 from donaldsharp/pim_test
Add `test pim keepalive-reset A.B.C.D A.B.C.D` command to pim
2019-02-21 10:41:53 -06:00
Donald Sharp
02c2ba9767
Merge pull request #3830 from opensourcerouting/cherrypicks
[master] cherrypick backlog
2019-02-21 07:58:34 -05:00
Renato Westphal
6ff96d00f1 bgpd: fix the add-path code to understand the mpls-vpn safi
In order to iterate over MPLS VPN routes, it's necessary to use
two nested loops (the outer loop iterates over the MPLS VPN RDs,
and the inner loop iterates over the VPN routes from that RD).

The add-path code wasn't doing this, which was leading to lots of
crashes when add-path was enabled for the MPLS VPN SAFI. This patch
fixes the problem.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-20 23:04:12 -03:00
Renato Westphal
6291837764 bgpd: fix null pointer dereference bug
If path->net is NULL in the bgp_path_info_free() function, then
bgpd would crash in bgp_addpath_free_info_data() with the following
backtrace:

 (gdb) bt
 #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
 #1  0x00007ff7b267a42a in __GI_abort () at abort.c:89
 #2  0x00007ff7b39c1ca0 in core_handler (signo=11, siginfo=0x7ffff66414f0, context=<optimized out>) at lib/sigevent.c:249
 #3  <signal handler called>
 #4  idalloc_free_to_pool (pool_ptr=pool_ptr@entry=0x0, id=3) at lib/id_alloc.c:368
 #5  0x0000560096246688 in bgp_addpath_free_info_data (d=d@entry=0x560098665468, nd=0x0) at bgpd/bgp_addpath.c:100
 #6  0x00005600961bb522 in bgp_path_info_free (path=0x560098665400) at bgpd/bgp_route.c:252
 #7  bgp_path_info_unlock (path=0x560098665400) at bgpd/bgp_route.c:276
 #8  0x00005600961bb719 in bgp_path_info_reap (rn=rn@entry=0x5600986b2110, pi=pi@entry=0x560098665400) at bgpd/bgp_route.c:320
 #9  0x00005600961bf4db in bgp_process_main_one (safi=SAFI_MPLS_VPN, afi=AFI_IP, rn=0x5600986b2110, bgp=0x560098587320) at bgpd/bgp_route.c:2476
 #10 bgp_process_wq (wq=<optimized out>, data=0x56009869b8f0) at bgpd/bgp_route.c:2503
 #11 0x00007ff7b39d5fcc in work_queue_run (thread=0x7ffff6641e10) at lib/workqueue.c:294
 #12 0x00007ff7b39ce3b1 in thread_call (thread=thread@entry=0x7ffff6641e10) at lib/thread.c:1606
 #13 0x00007ff7b39a3538 in frr_run (master=0x5600980795b0) at lib/libfrr.c:1011
 #14 0x000056009618a5a3 in main (argc=3, argv=0x7ffff6642078) at bgpd/bgp_main.c:481

Add a null-check protection to fix this problem.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-20 23:04:12 -03:00
Renato Westphal
472c3dae39 isisd: fix crash when entering "no ip[v6] router isis" twice
isisd CLI has some housekeeping code that removes the
"frr-isisd:isis" container from the interface configuration when
IS-IS is disabled for both IPv4 and IPv6 in the corresponding
interface.

The problem is that the code was checking the values of the
"ipv4-routing" and "ipv6-routing" leafs without checking if the
parent "frr-isisd:isis" container was present. So, entering "no
ip[v6] router isis" twice would cause isisd to crash since the
"frr-isisd:isis" container wouldn't be present the second time the
command is processed. Fix this.

isisd aborted: vtysh -c "configure terminal" -c "interface eth99" -c "no ip router isis WORD"
isisd aborted: vtysh -c "configure terminal" -c "interface eth99" -c "no ipv6 router isis"

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-20 23:04:12 -03:00
Renato Westphal
220c5830e7 pbrd: add missing newline at the end of warning message
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-20 23:04:12 -03:00
Renato Westphal
f24f3450c9 pbrd: fix removal of ipv6 nexthops
Fix bug in the code that compares IPv6 addresses. If memcmp()
returns 0 then the two addresses are equal.

Because of this problem, hash_release() could return NULL in a few
places, leading to the following crashes (found by the CLI fuzzer):
pbrd aborted: vtysh -c "configure terminal" -c "pbr-map WORD seq 100" -c "no set nexthop 2001:db8::1"
pbrd aborted: vtysh -c "configure terminal" -c "nexthop-group NHGROUP" -c "no nexthop 2001:db8::1"

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-20 23:04:12 -03:00
Donald Sharp
7f9adc7c67 lib: Allow DEFPY_HIDDEN to exist in vtysh
The DEFPY_HIDDEN commands were not being picked up
into vtysh.  Fix this issue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-20 19:26:15 -05:00
Donald Sharp
70fd22bd03 pimd: Add 'test pim keepalive-reset A.B.C.D A.B.C.D' command
Add a test command to pim that allows you to reset the keepalive timer
for an upstream to it's max value.  This is to allow purposeful testing
of cleanup code in pim, by forcing the keeaplive timer to expire later.

robot# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
enp3s0    192.168.201.136 225.1.0.0       NotJ,RegP   00:00:10 00:00:52  00:00:25  00:02:54       1
robot# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
enp3s0    192.168.201.136 225.1.0.0       NotJ,RegP   00:00:11 00:00:51  00:00:24  00:02:53       1
robot# test pim keep 192.168.201.136 225.1.0.0
Setting (192.168.201.136,225.1.0.0) to current keep alive time: 210
robot# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
enp3s0    192.168.201.136 225.1.0.0       NotJ,RegP   00:00:27 00:00:35  00:00:08  00:03:27       1
robot#

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-20 19:26:05 -05:00
Renato Westphal
c06c9ded21
Merge pull request #3835 from qlyoung/build-update-libyang-doc-link
build: update doc link for libyang warning
2019-02-20 15:14:03 -03:00
David Lamparter
195f215cfc tools: fix new init script wrt. multi-instance
TBH when I looked at watchfrr I didn't see any MI support and hence
assumed this just didn't work to begin with.  However, it actually does
(transparently to watchfrr, by just using "ospfd-1" as daemon name.)

So, fix this up and make it work again.

(Also remove 2 extraneous \n in messages.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-19 21:38:23 +01:00
David Lamparter
bd2893d57f doc: update for new daemons settings
watchfrr_enable is ignored, watchfrr_options is unneeded and the
valgrind options have been replaced with daemon_wrap/all_wrap.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-19 21:38:23 +01:00
Quentin Young
18f7f76767 build: update doc link for libyang warning
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-19 19:53:54 +00:00
Donald Sharp
8faeb50fe4
Merge pull request #3823 from opensourcerouting/confd-build-fix
build: fix linking to libconfd
2019-02-19 13:05:17 -05:00
Quentin Young
ccb50d4e9f
Merge pull request #3816 from opensourcerouting/doc-pager-theme
[master] doc: VTYSH_PAGER docs + new FRR theme
2019-02-19 12:41:08 -05:00
David Lamparter
23ebff805c
Merge pull request #3790 from qlyoung/doc-add-buildessential-libsystemdev-docs
doc: update build dependencies for debian systems
2019-02-19 17:54:25 +01:00
Quentin Young
b02525800b doc: update build dependencies for debian systems
Add build-essential and, for platforms with systemd, libsystemd-dev to
the package list for builds

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-19 16:51:34 +00:00
Donald Sharp
69fe320bbc
Merge pull request #3731 from opensourcerouting/bfd-refactory
bfdd: protocol refactory
2019-02-19 11:32:39 -05:00
Chirag Shah
1dcc9e5bdb bgpd: vrl source-vrf route map filter
For VRF route leak, enable route map filter based
on "source-vrf" check.

Implemented match filter rule for "source-vrf" which
compares leaked routes original vrf_id (where it leaked from)
during importing into target VRF.

Ticket:CM-23776
Reviewed By:
Testing Done:

Configure vrf route leak from vrf1 to vrf2,
configure import vrf under vrf2 along with route-map
with source-vrf filter.
Add and remove source-vrf filter and checked routes
were added and removed to vrf2 table via vpn (default) table.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2019-02-19 07:24:19 -08:00
David Lamparter
1569f22439 vtysh: fix pager compatibility handling
I just straight up forgot checking VTYSH_PAGER at startup, and the
"terminal paginate" command is only installed to VIEW_NODE so it can't
be processed from vtysh.conf in CONFIG_NODE...

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-19 14:06:01 +01:00
David Lamparter
cbcaac3fb1
Merge pull request #3746 from ton31337/feature/rfc_8212
bgpd: Implement RFC8212
2019-02-19 13:54:23 +01:00
David Lamparter
f634c11d59
Merge pull request #3792 from donaldsharp/pbr_massacre_at_5
Pbr massacre at 5
2019-02-19 13:53:37 +01:00
Donald Sharp
b682d930e9
Merge pull request #3825 from opensourcerouting/master-isis-fix-3533
[master] isisd: skip over deleted fragments
2019-02-18 18:28:57 -05:00
David Lamparter
0c77e17821 isisd: skip over deleted fragments
Since LSP fragments are also on our lspdb dict, lsp_tick() needs to skip
over them after calling lsp_destroy().  Otherwise it ends up accessing
free'd memory.

Fixes: #3533
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-18 23:04:21 +01:00
David Lamparter
feed78aa63
Merge pull request #3817 from sergeyrar/patch-1
XSTRDUP function signature fix
2019-02-18 18:41:20 +01:00
Renato Westphal
0619d86e5c build: fix linking to libconfd
Commit fdbd8086b1 removed the explicit -lconfd flag from
lib_confd_la_LIBADD in favor of using the CONFD_LIBS variable. The
problem, however, is that ConfD doesn't use pkg-config nor anything
similar, so CONFD_LIBS is not created automatically by autotools.

Fix this problem by manually assigning -lconfd to the CONFD_LIBS
variable in the configure script.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-02-18 13:29:24 -03:00
sergey
5ba3319778
XSTRDUP function signature fix
I think  there is a mistake in XSTRDUP function signature.
2019-02-18 16:06:37 +02:00
David Lamparter
afec87502a doc: document VTYSH_PAGER and "terminal paginate"
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-18 14:39:13 +01:00
David Lamparter
856d02a59a doc: orange FRR theme
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-18 14:39:13 +01:00
David Lamparter
e3ce59b3f7
Merge pull request #3788 from AnuradhaKaruppiah/evpn-pmsi-fixes
EVPN IMET route PMSI attribute handling fixes
2019-02-18 13:45:09 +01:00
David Lamparter
50734c950d
Merge pull request #3777 from donaldsharp/topotest_all_routes
topotests: Add code to ensure routes are as expected
2019-02-18 13:41:44 +01:00
David Lamparter
5243b754dc
Merge pull request #3802 from pguibert6WIND/ospfv3_misc_fixes
Ospfv3 misc fixes
2019-02-18 13:13:58 +01:00
David Lamparter
b57442d701
Merge pull request #3706 from pguibert6WIND/graceful_restart_range
Graceful restart range
2019-02-18 13:10:31 +01:00
David Lamparter
e5676cb378
Merge pull request #3797 from donaldsharp/allow_in_dir_build
build: non-recursive sharpd
2019-02-18 13:09:29 +01:00
David Lamparter
fad13f3a53
Merge pull request #3808 from qlyoung/update-readme-protos
README.md: update list of supported protos
2019-02-18 13:07:10 +01:00
David Lamparter
d8a9134f90
Merge pull request #3804 from qlyoung/build-remove-fPIE-add-fPIC
build: fix automake fart under MSAN
2019-02-18 12:59:41 +01:00
Donatas Abraitis
9dac9fc80e bgpd: Implement RFC8212
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-02-17 23:17:00 +02:00
Mark Stapp
786add424c
Merge pull request #3805 from qlyoung/msan-fixes
lib: fix uninitialized value use in privs.c
2019-02-15 15:53:53 -05:00
Quentin Young
09d99a114d
Merge pull request #3798 from robgil/docker-debian9
Quick and dirty debian9 docker image
2019-02-15 13:10:49 -05:00
Quentin Young
4ceb90ec11 README.md: update list of supported protos
WHOoOoOooOoOooOOOOOo!!!

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-15 17:57:13 +00:00
Quentin Young
fd6611bb4b bgpd: fix automake fart under MSAN
"When building without VNC, automake sees that the `bgpd_bgpd_CFLAGS`
variable exists, although it is only set in the VNC-enabled case... but
since the variable exists, it unconditionally drops `AM_CFLAGS` for the
two bgp targets and uses `bgpd_bgpd_CFLAGS` instead, which will
contain... _nothing_."

This was breaking builds of bgpd binaries with MSAN enabled.

Signed-off-by: David Lamparter <equinox@diac24.net>
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-15 17:41:55 +00:00
Philippe Guibert
18f286adfb ospf6d: reset the global ospf6 pointer
reset the global ospf6 pointer.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-02-15 17:42:13 +01:00
Quentin Young
72de5f4b5d lib: fix garbage array size in zprivs_init
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-15 16:27:55 +00:00