]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
4 years agotests: fix endian bug in test_typelist
Mark Stapp [Wed, 18 Dec 2019 15:52:08 +0000 (10:52 -0500)]
tests: fix endian bug in test_typelist

Fix a byte-swapping bug that appeared on big-endian arch but
wasn't visible on little-endian runs.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoMerge pull request #5508 from ton31337/feature/show_ip_route_summary_json
Quentin Young [Tue, 17 Dec 2019 15:05:13 +0000 (10:05 -0500)]
Merge pull request #5508 from ton31337/feature/show_ip_route_summary_json

zebra: Print json output for show_route_summary_cmd

4 years agoMerge pull request #5541 from sworleys/NHG-Fixes
Russ White [Tue, 17 Dec 2019 13:30:37 +0000 (08:30 -0500)]
Merge pull request #5541 from sworleys/NHG-Fixes

zebra: a couple nhg fixes

4 years agoMerge pull request #5540 from sworleys/NH-Defualt-Weight-One
Russ White [Tue, 17 Dec 2019 13:29:46 +0000 (08:29 -0500)]
Merge pull request #5540 from sworleys/NH-Defualt-Weight-One

lib: default nexthop weights to one

4 years agozebra: pass type when finding individual nexthop
Stephen Worley [Mon, 16 Dec 2019 21:46:30 +0000 (16:46 -0500)]
zebra: pass type when finding individual nexthop

When we are doing a lookup on an individual nexthop,
we should still be passing along the type that gets passed
via the arguments. Otherwise, we will always think we own that
NHE when in reality anyone could have put that into the
kernel.

Before this patch, nexthops in the kernel will get swepped
out even if we didn't create them.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agozebra: null check re->nhe not re->nhe->nhg on attach
Stephen Worley [Mon, 16 Dec 2019 21:37:14 +0000 (16:37 -0500)]
zebra: null check re->nhe not re->nhe->nhg on attach

We should be NULL checking the entire re->nhe struct, not
the group inside of it. When we get routes from the kernel
using a nexthop group (and future protocols) they will only
pass us an ID to use. Hence, this struct can (and will be)
NULL on first attach when only passed an ID.

There shouldn't be a situation where we have an re->nhe
and don't have an re->nhe->nhg anyway.

Before this patch you can easily make zebra crash by creating a
route in the kernel using a nexthop group and starting zebra.

`ip next add dev lo id 111`
`ip route add 1.1.1.1/32 nhid 111`

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agolib: default nexthop weights to one
Stephen Worley [Mon, 16 Dec 2019 20:42:37 +0000 (15:42 -0500)]
lib: default nexthop weights to one

Default all nexthop weights to one. The linux kernel does
some weird stuff where it adds one to all nexthop weight values
it gets. So, we added df7fb5800b3798057747873c8be245eb13f3ec36 with
some special subtracing/adding to account for this. Though, that patch
did not account for the default case of the weight being zero for
elements in the group.

Hence, this patch defaults the nexthop weight to one during creation.
This should be a valid value on all platforms anyway so shouldn't
affect anything.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agoMerge pull request #5502 from ton31337/fix/rr_do_not_show_fqdn
Sri Mohana Singamsetty [Mon, 16 Dec 2019 17:43:01 +0000 (09:43 -0800)]
Merge pull request #5502 from ton31337/fix/rr_do_not_show_fqdn

bgpd: Show `ip` and `fqdn` in json output for `show [ip] bgp json`

4 years agoMerge pull request #5379 from pogojotz/fix-bgp-neighbors-prefix-count-segfault
Sri Mohana Singamsetty [Mon, 16 Dec 2019 17:41:35 +0000 (09:41 -0800)]
Merge pull request #5379 from pogojotz/fix-bgp-neighbors-prefix-count-segfault

bgpd: Special handling for 2-level routing tables

4 years agoMerge pull request #5427 from liam-mcb/igmp-join-any
Donald Sharp [Mon, 16 Dec 2019 12:47:41 +0000 (07:47 -0500)]
Merge pull request #5427 from liam-mcb/igmp-join-any

pimd: Add command to join any-source multicast.

4 years agoMerge pull request #5523 from donaldsharp/mlag_single_compile
David Lamparter [Mon, 16 Dec 2019 12:45:36 +0000 (13:45 +0100)]
Merge pull request #5523 from donaldsharp/mlag_single_compile

mlag compile issue fixups

4 years agoMerge pull request #5535 from opensourcerouting/santa-elf
Donald Sharp [Mon, 16 Dec 2019 12:42:47 +0000 (07:42 -0500)]
Merge pull request #5535 from opensourcerouting/santa-elf

*: cleanup elves were here

4 years agozebra: Do not build mlag protobuf support if version 3 is not avail
Donald Sharp [Tue, 10 Dec 2019 19:06:33 +0000 (14:06 -0500)]
zebra: Do not build mlag protobuf support if version 3 is not avail

Older versions of protobuf-c do not support version 3 of the
protocol.  Add a check into the system to see if we have
version 3 available and if so, compile it in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: Allow zebra_mlag to compile with no j factor
Donald Sharp [Tue, 10 Dec 2019 01:48:21 +0000 (20:48 -0500)]
zebra: Allow zebra_mlag to compile with no j factor

If you compile FRR with no j factor zebra_mlag.c fails to
build because the vtysh extraction methodology runs first
before the protobuf compiler runs and that compilation does
not have the proper dependancy chain built for the inclusions
that zebra_mlag.c had.  Moving the DEF* code into a zebra_mlag_vty.c
which can be included in the vtysh extraction code and has
no mlag.proto dependancies makes the compilation work better.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agotools: symalyzer
David Lamparter [Wed, 27 Nov 2019 22:19:10 +0000 (23:19 +0100)]
tools: symalyzer

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib/linklist: flip the bitrot compost
David Lamparter [Wed, 27 Nov 2019 21:52:50 +0000 (22:52 +0100)]
lib/linklist: flip the bitrot compost

The whole lib/linklist.c code shouldn't really be used for new code (the
lib/typesafe.h bits are better.)  So, a new need for these unused
functions shouldn't be coming up.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: random unused bits cleanup
David Lamparter [Wed, 27 Nov 2019 20:49:00 +0000 (21:49 +0100)]
lib: random unused bits cleanup

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib/prefix: flip the bitrot compost
David Lamparter [Wed, 27 Nov 2019 20:43:27 +0000 (21:43 +0100)]
lib/prefix: flip the bitrot compost

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agoMerge pull request #5452 from mjstapp/fix_notify_nhg
Donald Sharp [Fri, 13 Dec 2019 19:11:34 +0000 (14:11 -0500)]
Merge pull request #5452 from mjstapp/fix_notify_nhg

zebra: align dplane notify processing with nhg work

4 years agolib: make some variables static
David Lamparter [Wed, 27 Nov 2019 20:17:57 +0000 (21:17 +0100)]
lib: make some variables static

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: completely get rid of the MTYPE alias hack
David Lamparter [Wed, 13 Nov 2019 23:21:10 +0000 (00:21 +0100)]
lib: completely get rid of the MTYPE alias hack

Sometimes the easiest solution is hardest to find... the whole point of
all this "static const", aliasing, & co. was to make "MTYPE_FOO" usable
without adding the extra & as in "&MTYPE_FOO".  Making it a size-1 array
does that perfectly through the magic of ISO C array decay...

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: make rcu_free() NULL-safe
David Lamparter [Wed, 13 Nov 2019 14:42:32 +0000 (15:42 +0100)]
lib: make rcu_free() NULL-safe

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agobgpd: remove redundant VNC build specs
David Lamparter [Wed, 27 Nov 2019 18:05:35 +0000 (19:05 +0100)]
bgpd: remove redundant VNC build specs

rfapi_descriptor_rfp_utils.c is already built into libbgp.a and these
include paths have no effect at all.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agoMerge pull request #5532 from donaldsharp/leaks
Jafar Al-Gharaibeh [Fri, 13 Dec 2019 04:47:45 +0000 (22:47 -0600)]
Merge pull request #5532 from donaldsharp/leaks

Leaks

4 years agoisisd: Free memory when confused
Donald Sharp [Fri, 13 Dec 2019 00:30:21 +0000 (19:30 -0500)]
isisd: Free memory when confused

When you call into lsp_update with confusion, the lsp is purged
and we do not do anything with the created tlv's from parsing
the incoming data.  To prevent the tlv's from being leaked
note confusion and delete the unneeded data.

Fixes: #5496
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoripd, ripngd: Free up list after call into nb_cli_rpc
Donald Sharp [Thu, 12 Dec 2019 23:48:04 +0000 (18:48 -0500)]
ripd, ripngd: Free up list after call into nb_cli_rpc

We have a clear memory leak after running `clear ip rip`
Fix this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #5531 from qlyoung/fix-ospf-ip-hl-trust
Jafar Al-Gharaibeh [Thu, 12 Dec 2019 19:19:36 +0000 (13:19 -0600)]
Merge pull request #5531 from qlyoung/fix-ospf-ip-hl-trust

Fix ospf ip hl trust

4 years agozebra: handle route notification with no nexthops
Mark Stapp [Thu, 12 Dec 2019 14:53:55 +0000 (09:53 -0500)]
zebra: handle route notification with no nexthops

Handle the special case where a route update contains
no installed nexthops - that means the route is not
installed.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agozebra: Print json output for show_route_summary_cmd
Donatas Abraitis [Mon, 9 Dec 2019 07:33:48 +0000 (09:33 +0200)]
zebra: Print json output for show_route_summary_cmd

```
spine1-debian-9# sh ip route summary json
{
  "routes":[
    {
      "fib":1,
      "rib":1,
      "type":"kernel"
    },
    {
      "fib":11,
      "rib":11,
      "type":"connected"
    },
    {
      "fib":2,
      "rib":2,
      "type":"ebgp"
    },
    {
      "fib":1,
      "rib":1,
      "type":"ibgp"
    }
  ],
  "routesTotal":15,
  "routesTotalFib":15
}
spine1-debian-9# sh ipv6 route summary json
{
  "routes":[
    {
      "fib":7,
      "rib":7,
      "type":"connected"
    }
  ],
  "routesTotal":7,
  "routesTotalFib":7
}
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agopimd: Add command to join any-source multicast.
Liam McBirnie [Thu, 5 Dec 2019 20:57:50 +0000 (21:57 +0100)]
pimd: Add command to join any-source multicast.

Allow 'ip igmp join' to join group for any source if no source is
specified.
Disallow joining source "0.0.0.0" as it is used to define an
any-source multicast group.

Signed-off-by: Liam McBirnie <liam.mcbirnie@boeing.com>
4 years agotests: Test if `ip` and `fqdn` are included in `show [ip] bgp json`
Donatas Abraitis [Fri, 6 Dec 2019 20:44:36 +0000 (22:44 +0200)]
tests: Test if `ip` and `fqdn` are included in `show [ip] bgp json`

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Show `ip` and `fqdn` in json output for `show [ip] bgp <route> json`
Donatas Abraitis [Fri, 6 Dec 2019 20:03:50 +0000 (22:03 +0200)]
bgpd: Show `ip` and `fqdn` in json output for `show [ip] bgp <route> json`

This should keep backward compatibility when bgp show-hostname is
enabled/disabled.

Also show the real originator IP instead of showing fqdn of the route
reflector.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoospfd: tiny style fix
Quentin Young [Thu, 12 Dec 2019 05:15:25 +0000 (00:15 -0500)]
ospfd: tiny style fix

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoospfd: sizeof(pointer) -> sizeof(pointed-at)
Quentin Young [Thu, 12 Dec 2019 05:13:58 +0000 (00:13 -0500)]
ospfd: sizeof(pointer) -> sizeof(pointed-at)

14 years old eh?

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoospfd: fix misplaced trust in ip header length
Quentin Young [Thu, 12 Dec 2019 05:09:39 +0000 (00:09 -0500)]
ospfd: fix misplaced trust in ip header length

We actually don't validate the IHL field, although it certainly looks
like we do at a casual glance.

This patch saves us from an assert in case we actually do get an IP
packet with an incorrect header length field.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoMerge pull request #5528 from opensourcerouting/bmp-dns-fixing
Donald Sharp [Wed, 11 Dec 2019 18:22:34 +0000 (13:22 -0500)]
Merge pull request #5528 from opensourcerouting/bmp-dns-fixing

BMP: improve active outbound connection details

4 years agobgpd: Allow failed hostname lookup to continue in bmp (#5399)
David Lamparter [Wed, 11 Dec 2019 18:21:18 +0000 (19:21 +0100)]
bgpd: Allow failed hostname lookup to continue in bmp (#5399)

bgpd: Allow failed hostname lookup to continue in bmp

4 years agoMerge pull request #5494 from opensourcerouting/mlag-module
Donald Sharp [Wed, 11 Dec 2019 18:14:02 +0000 (13:14 -0500)]
Merge pull request #5494 from opensourcerouting/mlag-module

zebra: create zebra_cumulus_mlag module

4 years agozebra: accept async notification for un-install
Mark Stapp [Wed, 11 Dec 2019 16:22:53 +0000 (11:22 -0500)]
zebra: accept async notification for un-install

Handle an async notification when a route-update operation
uninstalls one route in favor of another.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoMerge pull request #5497 from donaldsharp/unequality_ecmp
Mark Stapp [Wed, 11 Dec 2019 16:02:15 +0000 (11:02 -0500)]
Merge pull request #5497 from donaldsharp/unequality_ecmp

Unequality ecmp

4 years agoMerge pull request #5527 from opensourcerouting/skiplist-uninit-warning
Mark Stapp [Wed, 11 Dec 2019 14:03:08 +0000 (09:03 -0500)]
Merge pull request #5527 from opensourcerouting/skiplist-uninit-warning

lib/skiplist: fix gcc-9 used-uninitialized warning

4 years agobgpd/bmp: print active outbound connections
David Lamparter [Wed, 11 Dec 2019 12:35:16 +0000 (13:35 +0100)]
bgpd/bmp: print active outbound connections

... including timer & details about current state and last failure.

Fixes: #5401
Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib,nhrpd,bgpd/bmp: pass resolver failure details
David Lamparter [Wed, 11 Dec 2019 12:33:36 +0000 (13:33 +0100)]
lib,nhrpd,bgpd/bmp: pass resolver failure details

To keep the calling code agnostic of the DNS resolver libary used, pass
a strerror-style string instead of a status code that would need extra
handling.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agobgpd/bmp: actually print uptime
David Lamparter [Wed, 11 Dec 2019 11:34:56 +0000 (12:34 +0100)]
bgpd/bmp: actually print uptime

Forgot to replace the stub here when finishing up...

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib/resolver: support/bypass IP literals
David Lamparter [Wed, 11 Dec 2019 11:27:05 +0000 (12:27 +0100)]
lib/resolver: support/bypass IP literals

libc-ares doesn't do IP literals, so we have to do that before running
off to do DNS.  Since this isn't BMP specific, move to lib/ so NHRP can
benefit too.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib/skiplist: fix gcc-9 used-uninitialized warning
David Lamparter [Tue, 10 Dec 2019 16:22:49 +0000 (17:22 +0100)]
lib/skiplist: fix gcc-9 used-uninitialized warning

Under some circumstances (apparently depends on several optimization
flags), gcc-9 throws an used-uninitialized warning for this variable in
the skiplist code.  Just initialize to NULL.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agozebra: fix sign-compare warning in cumulus mlag
David Lamparter [Wed, 11 Dec 2019 10:41:54 +0000 (11:41 +0100)]
zebra: fix sign-compare warning in cumulus mlag

This trips up the CI on Ubuntu 16.04.  (I guess the code wasn't getting
built there before...)

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agozebra: create zebra_cumulus_mlag module
David Lamparter [Wed, 4 Dec 2019 03:18:12 +0000 (04:18 +0100)]
zebra: create zebra_cumulus_mlag module

This is pretty much just to get rid of the HAVE_CUMULUS.  The
hook/module API is as "wtf" as it was before...

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agoMerge pull request #5517 from mjstapp/fix_evpn_state
Donald Sharp [Tue, 10 Dec 2019 22:14:34 +0000 (17:14 -0500)]
Merge pull request #5517 from mjstapp/fix_evpn_state

zebra: use correct state when installing evpn macs

4 years agoMerge pull request #5521 from mjstapp/fix_pim_upstream_sa
Donald Sharp [Tue, 10 Dec 2019 22:14:03 +0000 (17:14 -0500)]
Merge pull request #5521 from mjstapp/fix_pim_upstream_sa

pimd: clear SA warning in pimd

4 years agopimd: clear SA warning in pimd
Mark Stapp [Tue, 10 Dec 2019 17:10:44 +0000 (12:10 -0500)]
pimd: clear SA warning in pimd

Remove a dead store in pim_upstream.c to clear up an SA
warning.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoFix bgp transit double free (#5436)
David Lamparter [Tue, 10 Dec 2019 16:56:57 +0000 (17:56 +0100)]
Fix bgp transit double free (#5436)

Fix bgp transit double free

4 years agoMerge pull request #5511 from Jafaral/ipmroute
Russ White [Tue, 10 Dec 2019 13:55:57 +0000 (08:55 -0500)]
Merge pull request #5511 from Jafaral/ipmroute

doc: document ip mroute static route cmd

4 years agoMerge pull request #5513 from m-varasteh/fix-running-entry-in-vrf-change
Renato Westphal [Tue, 10 Dec 2019 13:03:01 +0000 (10:03 -0300)]
Merge pull request #5513 from m-varasteh/fix-running-entry-in-vrf-change

lib: fixes invalid running_entry when VRF is changed

4 years agoMerge pull request #5429 from Spantik/bug_fix
Donatas Abraitis [Tue, 10 Dec 2019 07:43:28 +0000 (09:43 +0200)]
Merge pull request #5429 from Spantik/bug_fix

BGP: BGP assert when it tries to access peer which is closed.

4 years agolib: fixes invalid running_entry when VRF is changed
Mahdi Varasteh [Tue, 10 Dec 2019 05:05:17 +0000 (08:35 +0330)]
lib: fixes invalid running_entry when VRF is changed

we just unset the entry from old node and add it to the new one

Signed-off-by: Mahdi Varasteh <mahdy.varasteh@gmail.com>
4 years agodoc: document ip mroute static route cmd
Jafar Al-Gharaibeh [Mon, 9 Dec 2019 22:55:14 +0000 (16:55 -0600)]
doc: document ip mroute static route cmd

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
4 years agoMerge pull request #5509 from manuhalo/fix_isis_circ_del
Renato Westphal [Mon, 9 Dec 2019 21:34:49 +0000 (18:34 -0300)]
Merge pull request #5509 from manuhalo/fix_isis_circ_del

isisd: clean ipv4/6 circuit config on destroy

4 years agolib,zebra: add api to enforce nexthop sort order when copying
Mark Stapp [Mon, 9 Dec 2019 21:02:57 +0000 (16:02 -0500)]
lib,zebra: add api to enforce nexthop sort order when copying

Add an api that creates a copy of a list of nexthops and
enforces the canonical sort ordering; consolidate some nhg
code to avoid copy-and-paste. The zebra dplane uses
that api when a plugin sets up a list of nexthops, ensuring
that the plugin's list is ordered when it's processed in
zebra.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agozebra: align dplane notify processing with nhg work
Mark Stapp [Mon, 2 Dec 2019 17:03:57 +0000 (12:03 -0500)]
zebra: align dplane notify processing with nhg work

The processing of dataplane route notifications was a little
off-target after the nexthop-group re-work. This should allow
notifications to work better.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agolib: Add weight to nexthop for nexthop-group nexthops
Donald Sharp [Fri, 6 Dec 2019 17:28:38 +0000 (12:28 -0500)]
lib: Add weight to nexthop for nexthop-group nexthops

Add the ability to read in the weight of a nexthop and store/handle
it appropriately

nexthop-group BLUE
  nexthop 192.168.201.44 weight 33
  nexthop 192.168.201.45 weight 66
  nexthop 192.168.201.46 weight 99

Is appropriately read in and handled as appropriate.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agolib, zebra: Allow for encode/decode of nexthop weight in pass down
Donald Sharp [Fri, 6 Dec 2019 15:28:05 +0000 (10:28 -0500)]
lib, zebra: Allow for encode/decode of nexthop weight in pass down

Add code to encode/decode the nexthop weight when we pass it down
into zebra.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agolib, zebra: Allow for installation of a weighted nexthop
Donald Sharp [Fri, 6 Dec 2019 13:58:47 +0000 (08:58 -0500)]
lib, zebra: Allow for installation of a weighted nexthop

Linux has the idea of allowing a weight to be sent
down as part of a nexthop group to allow the kernel
to weight particular nexthop paths a bit more or less
than others.

See:
http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

Allow for installation into the kernel using the weight attribute
associated with the nexthop.

This code is foundational in that it just sets up the ability
to do this, we do not use it yet.  Further commits will
allow for the pass through of this data from upper level protocols.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoisisd: clean ipv4/6 circuit config on destroy
Emanuele Di Pascale [Mon, 9 Dec 2019 17:22:25 +0000 (18:22 +0100)]
isisd: clean ipv4/6 circuit config on destroy

when deleting an isis interface config with 'no [ip|ipv6] router isis'
we are destroying the isis yang container for that interface, but the
actual circuit struct is kept, and so are the flgs determining whether
that circuit is configured for ipv4 and/or ipv6. This caused issues
when removing and re-adding configuration, as the area counters for
ip circuits were not correctly updated and the topology was never
populated.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
4 years agobgpd: BGP assert when it tries to access peer which is closed.
Santosh P K [Mon, 25 Nov 2019 16:49:38 +0000 (08:49 -0800)]
bgpd: BGP assert when it tries to access peer which is closed.

Problem: BGP peer pointer is present in keepalive hash table
even when socket has been closed in some race condition.
When keepalive tries to access this peer it asserts.

RCA: Below sequence of events causing assert.
1. Config node peer has went down due to TCP reset
   it's FD has been set to -1.
2. Doppelganger peer goes to established state and it has
   been added to peer hash table for keepalive when it was
   in openconfirm state.
3. Config node parameters including FD are exchanged with
   doppelganger. Doppelganger will not have FD -1.
4. Doppelganger will be deleted as part of this it will
   remove it from the keepalive peer hash table.
5. While removing from hash table it tries to acquire lock.
6. During this time keepalive thread has the lock and in
   a loop trying to send keepalive for peers in hash table.
7. It tries to send keepalive for doppelganger peer with fd
   set to -1 and asserts.

Signed-off-by: Santosh P K <sapk@vmware.com>
4 years agoMerge pull request #5498 from mjstapp/sharp_with_labels
Donald Sharp [Sat, 7 Dec 2019 16:44:02 +0000 (11:44 -0500)]
Merge pull request #5498 from mjstapp/sharp_with_labels

lib,sharpd: support labelled nexthop-groups in sharpd

4 years agoMerge pull request #5499 from sworleys/Pbr-Detail
Jafar Al-Gharaibeh [Sat, 7 Dec 2019 00:02:08 +0000 (18:02 -0600)]
Merge pull request #5499 from sworleys/Pbr-Detail

pbrd: make the show pbr map output better

4 years agoMerge pull request #5421 from sworleys/PBR-Del-Mark-All-Seq
Jafar Al-Gharaibeh [Fri, 6 Dec 2019 23:49:56 +0000 (17:49 -0600)]
Merge pull request #5421 from sworleys/PBR-Del-Mark-All-Seq

pbrd: only remove interface after all seq uninstalled

4 years agoMerge pull request #5355 from AnuradhaKaruppiah/pim-state-machine-fixes
Jafar Al-Gharaibeh [Fri, 6 Dec 2019 23:47:07 +0000 (17:47 -0600)]
Merge pull request #5355 from AnuradhaKaruppiah/pim-state-machine-fixes

PIM state machine fixes

4 years agobgpd: more attribute parsing cleanup & paranoia
Quentin Young [Tue, 3 Dec 2019 20:48:27 +0000 (15:48 -0500)]
bgpd: more attribute parsing cleanup & paranoia

* Move VNC interning to the appropriate spot
* Use existing bgp_attr_flush_encap to free encap sets
* Assert that refcounts are correct before exiting to keep the demons
  contained in their fiery prison

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoMerge pull request #4765 from opensourcerouting/defaults-v2
Donald Sharp [Fri, 6 Dec 2019 19:07:42 +0000 (14:07 -0500)]
Merge pull request #4765 from opensourcerouting/defaults-v2

lib/*: new config defaults system, v2

4 years agopbrd: use yes/no for pbr map validity vty output
Stephen Worley [Thu, 5 Dec 2019 22:19:20 +0000 (17:19 -0500)]
pbrd: use yes/no for pbr map validity vty output

Change the pbr map validity state to indicate yes/no
rather than 1/0 in the `show pbr map` command.

Humans aren't robots, so don't use binary.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agopbrd: use spaces in show pbr map vty output
Stephen Worley [Thu, 5 Dec 2019 22:00:32 +0000 (17:00 -0500)]
pbrd: use spaces in show pbr map vty output

We were using a mix of spaces and tabsin show pbr map vty output.
Tabs can be inconsistent depending on the system settings.
Using spaces is a safer option for more consistent output.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agodoc: add show pbr map doc
Stephen Worley [Thu, 5 Dec 2019 21:26:37 +0000 (16:26 -0500)]
doc: add show pbr map doc

Add some doc for the `show pbr map [NAME] [detail]` command.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agopbrd: make vty nexthop/nexthop-group output consistent
Stephen Worley [Thu, 5 Dec 2019 21:17:42 +0000 (16:17 -0500)]
pbrd: make vty nexthop/nexthop-group output consistent

The vty output for pbr maps with a nexthop-group was not
consistent with those configured with an individual nexthop.
Fix that so its easier for users to read.

alfred# show pbr map
  pbr-map TEST1 valid: 1
    Seq: 222 rule: 521
        Installed: yes Reason: Valid
        SRC Match: 2.2.2.2/32
        Nexthop-Group: blue
                Installed: yes Tableid: 10000
    Seq: 333 rule: 632
        Installed: yes Reason: Valid
        SRC Match: 3.3.3.3/32
        Nexthop-Group: blue
                Installed: yes Tableid: 10000
    Seq: 444 rule: 743
        Installed: yes Reason: Valid
        SRC Match: 4.4.4.4/32
        Nexthop-Group: blue
                Installed: yes Tableid: 10000
    Seq: 555 rule: 854
        Installed: yes Reason: Valid
        SRC Match: 5.5.5.5/32
        Nexthop-Group: red
                Installed: yes Tableid: 10001
    Seq: 666 rule: 965
        Installed: yes Reason: Valid
        SRC Match: 6.6.6.6/32
        nexthop 1.1.1.1
                Installed: yes Tableid: 10002
alfred#

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agopbrd: make show pbr map detail actually work
Stephen Worley [Thu, 5 Dec 2019 20:52:08 +0000 (15:52 -0500)]
pbrd: make show pbr map detail actually work

The `detail` keyword was doing literally nothing. Changed the
default show to be a bit more user friendly and detail
to give the information you might would need for
debugging.

alfred# show pbr map
  pbr-map TEST1 valid: 1
    Seq: 222 rule: 521
    Installed: yes Reason: Valid
        SRC Match: 2.2.2.2/32
        Nexthop-Group: blue(10000) Installed: yes
    Seq: 333 rule: 632
    Installed: yes Reason: Valid
        SRC Match: 3.3.3.3/32
        Nexthop-Group: blue(10000) Installed: yes
    Seq: 444 rule: 743
    Installed: yes Reason: Valid
        SRC Match: 4.4.4.4/32
        Nexthop-Group: blue(10000) Installed: yes
    Seq: 555 rule: 854
    Installed: yes Reason: Valid
        SRC Match: 5.5.5.5/32
        Nexthop-Group: red(10001) Installed: yes
    Seq: 666 rule: 965
    Installed: yes Reason: Valid
        SRC Match: 6.6.6.6/32
     nexthop 1.1.1.1
        Installed: yes Tableid: 10002
alfred# show pbr map detail
  pbr-map TEST1 valid: 1
    Seq: 222 rule: 521
    Installed: 1(1) Reason: Valid
        SRC Match: 2.2.2.2/32
        Nexthop-Group: blue(10000) Installed: 1(1)
    Seq: 333 rule: 632
    Installed: 1(2) Reason: Valid
        SRC Match: 3.3.3.3/32
        Nexthop-Group: blue(10000) Installed: 1(1)
    Seq: 444 rule: 743
    Installed: 1(3) Reason: Valid
        SRC Match: 4.4.4.4/32
        Nexthop-Group: blue(10000) Installed: 1(1)
    Seq: 555 rule: 854
    Installed: 1(4) Reason: Valid
        SRC Match: 5.5.5.5/32
        Nexthop-Group: red(10001) Installed: 1(1)
    Seq: 666 rule: 965
    Installed: 1(5) Reason: Valid
        SRC Match: 6.6.6.6/32
     nexthop 1.1.1.1
        Installed: 1(1) Tableid: 10002
alfred#

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agopbrd: refactor vty map show output into functions
Stephen Worley [Thu, 5 Dec 2019 20:32:26 +0000 (15:32 -0500)]
pbrd: refactor vty map show output into functions

Refactor the pbr_map and pbr_map_sequence vty output
into some functions to make the code a bit easier to read.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agolib,sharpd: support labelled nexthop-groups in sharpd
Mark Stapp [Fri, 6 Dec 2019 18:44:15 +0000 (13:44 -0500)]
lib,sharpd: support labelled nexthop-groups in sharpd

Update sharpd's zapi client code to support labelled nexthops if
they're present in a nexthop-group.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoMerge pull request #5332 from mjstapp/remove_zapi_label_flag
Donald Sharp [Fri, 6 Dec 2019 18:19:34 +0000 (13:19 -0500)]
Merge pull request #5332 from mjstapp/remove_zapi_label_flag

*: revise zapi nexthop encoding

4 years agoMerge pull request #5462 from dslicenc/ipv6-ra-lifetime-0
David Lamparter [Fri, 6 Dec 2019 17:23:39 +0000 (18:23 +0100)]
Merge pull request #5462 from dslicenc/ipv6-ra-lifetime-0

zebra: send RA lifetime of 0 before ceasing to advertise RAs

4 years agoMerge pull request #5226 from donaldsharp/interface_fixup
David Lamparter [Fri, 6 Dec 2019 17:21:51 +0000 (18:21 +0100)]
Merge pull request #5226 from donaldsharp/interface_fixup

Interface fixup

4 years agoMerge pull request #5468 from qlyoung/bgpd-remove-bgp-attr-dup
David Lamparter [Fri, 6 Dec 2019 17:19:28 +0000 (18:19 +0100)]
Merge pull request #5468 from qlyoung/bgpd-remove-bgp-attr-dup

bgpd: remove bgp_attr_dup

4 years agoMerge pull request #5218 from mjstapp/fix_topo_kernel_5
David Lamparter [Fri, 6 Dec 2019 17:18:28 +0000 (18:18 +0100)]
Merge pull request #5218 from mjstapp/fix_topo_kernel_5

topotests: Adapt to linux kernel 5+

4 years ago*: revise zapi nexthop encoding
Mark Stapp [Wed, 13 Nov 2019 21:06:06 +0000 (16:06 -0500)]
*: revise zapi nexthop encoding

Use a per-nexthop flag to indicate the presence of labels; add
some utility zapi encode/decode apis for nexthops; use the zapi
apis more consistently.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agolib: use const in several stream lib apis
Mark Stapp [Fri, 15 Nov 2019 19:32:18 +0000 (14:32 -0500)]
lib: use const in several stream lib apis

Add some const to some stream apis.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoMerge pull request #5438 from sworleys/PBR-Fixes
Renato Westphal [Fri, 6 Dec 2019 15:04:05 +0000 (12:04 -0300)]
Merge pull request #5438 from sworleys/PBR-Fixes

pbrd: Assorted Fixes

4 years agoMerge pull request #5439 from mjstapp/nhg_add_labels
Renato Westphal [Fri, 6 Dec 2019 14:17:10 +0000 (11:17 -0300)]
Merge pull request #5439 from mjstapp/nhg_add_labels

lib: support labelled nexthops in nexthop_groups

4 years agotopojson: use empty vtysh.conf for frr-reload.py
David Lamparter [Mon, 2 Dec 2019 22:23:16 +0000 (23:23 +0100)]
topojson: use empty vtysh.conf for frr-reload.py

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agotools/frr-reload.py: remove stderr redirects
David Lamparter [Tue, 13 Aug 2019 16:24:11 +0000 (18:24 +0200)]
tools/frr-reload.py: remove stderr redirects

These make no sense.  stderr=subprocess.STDOUT means that vtysh's stdout
and stderr are combined and returned by check_output.  We don't expect
errors in that, and we certainly don't log them.

Leaving vtysh's stderr as stderr is perfectly fine, it'll be captured
for logging just like stderr output from frr-reload.py.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agoospfd: use new defaults mechanism (v2)
David Lamparter [Thu, 1 Aug 2019 16:49:50 +0000 (18:49 +0200)]
ospfd: use new defaults mechanism (v2)

Some preprocessor constants converted to enums to make the names usable
in the preprocessor.

v2: better isolation between core and vty code to make future northbound
conversion easier.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agoospfd: remove minor WTF in instance creation
David Lamparter [Thu, 1 Aug 2019 16:39:19 +0000 (18:39 +0200)]
ospfd: remove minor WTF in instance creation

Well, "obviously" this condition block is pointless, since
ospf_router_id_update is called afterwards unconditionally...

(And even if it were needed, it would need to go in ospf_get too.)

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agobgpd: use new defaults system (v2)
David Lamparter [Thu, 1 Aug 2019 16:50:56 +0000 (18:50 +0200)]
bgpd: use new defaults system (v2)

This moves all the DFLT_BGP_* stuff over to the new defaults mechanism.
bgp_timers_nondefault() added to get better file-scoping.

v2: moved everything into bgp_vty.c so that the core BGP code is
independent of the CLI-specific defaults.  This should make the future
northbound conversion easier.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agobgpd: move config-write to bgp_vty.c
David Lamparter [Thu, 1 Aug 2019 15:44:23 +0000 (17:44 +0200)]
bgpd: move config-write to bgp_vty.c

There's no good reason to have this in bgpd.c;  it's just there
historically.  Move it to bgp_vty.c where it makes more sense.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agodoc: document defaults mechanism
David Lamparter [Mon, 29 Oct 2018 19:26:53 +0000 (20:26 +0100)]
doc: document defaults mechanism

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agobuild: apply DFLT_NAME/profiles in init script
David Lamparter [Fri, 26 Oct 2018 17:33:20 +0000 (19:33 +0200)]
build: apply DFLT_NAME/profiles in init script

Hopefully at some point we can get rid of the --enable-datacenter switch
and just have the init script do magic.  Should already work for Cumulus
as it is.

NB: the profile name can't be baked into the package.  The whole point
is to make the package profile-agnostic;  in theory at some point the
exact same package files should work on both, say, a Cumulus switch and
a Linux software BGP DFZ router.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib/defaults: add bool variable support
David Lamparter [Wed, 4 Dec 2019 03:20:55 +0000 (04:20 +0100)]
lib/defaults: add bool variable support

(I hadn't initially added this because I thought it superfluous, but it
kinda makes things nicer.)

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: new defaults logic
David Lamparter [Fri, 26 Oct 2018 16:41:00 +0000 (18:41 +0200)]
lib: new defaults logic

Since we've been writing out "frr version" and "frr defaults" for about
a year and a half now, we can now actually use them to manage defaults.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: add frr_version_cmp()
David Lamparter [Fri, 26 Oct 2018 13:25:25 +0000 (15:25 +0200)]
lib: add frr_version_cmp()

This just compares 2 version strings.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agolib: rename memory_vty.c to lib_vty.c
David Lamparter [Fri, 6 Dec 2019 13:38:55 +0000 (14:38 +0100)]
lib: rename memory_vty.c to lib_vty.c

And memory_init() to lib_cmd_init().

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agotopotests: Adapt to linux kernel 5+
Mark Stapp [Wed, 23 Oct 2019 16:42:19 +0000 (12:42 -0400)]
topotests: Adapt to linux kernel 5+

Make a few changes to try to support topotests with vrfs
on kernel 5 and later.

Signed-off-by: Mark Stapp <mjs@voltanet.io>