Commit Graph

12582 Commits

Author SHA1 Message Date
Donald Sharp
496764bbfb lib: Remove default case statement from a enum driven switch
We are using a enum to drive a switch statement and we have
a default case statement that can never be entered because
we know all the enum states have been covered.  Remove it
from the code as that it cannot happen.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:36:07 -04:00
Donald Sharp
07436e2a52 lib: Remove zlog_warn from some places in buffer.c
zlog_warn was being used to inform user of impossible situations
or for normal operations.  Remove these from the code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:36:07 -04:00
Donald Sharp
807ed4e9c0 lib: Remove smux option for snmp
The smux.c code has not been able to compile for 2+ years
and no-one has noticed. Additionally net-snmp has marked
smux integration as deprecated for quite some time as well.

Since no-one has noticed and it's been broken and smux integration
is deprecated let's just remove this from the code base.

From looking at the code, it sure looks like SNMP could use
a decent cleanup.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:36:07 -04:00
Donald Sharp
d8d084d97f bgpd: convert zlog_warns to debugs or errors
Several zlog_warns were being used to tell the end
user that bgp had detected a bug.  These all look like information
added during development that can be noted as debugs or logged
as an error situation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:36:07 -04:00
Donald Sharp
9ab2969de8 bgpd: Remove warn to file an issue
A warn with a backtrace does not need another warn
to file an issue with Quagga, so just remove it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:35:01 -04:00
Donald Sharp
a6f235f341 lib: Seperate out Poll data from thread memory statistics
We were storing Poll data for the read and write
memory information in MTYPE_THREAD, so a show run
would not be able to show actual amount of memory
associated with the `struct thread`.

Remove unnecessary NULL checks on malloc.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-23 08:03:31 -04:00
Russ White
753e2c9152
Merge pull request #2762 from chiragshah6/evpn_dev
bgpd: check existing l3vni for any l2vni creation
2018-08-22 19:50:18 -04:00
Chirag Shah
7d08917b32 zebra: mark router flag for remote neigh update
Handle Remote Neigh entry state change from Router to Host.

Remote MAC-IP update may not continue EVPN NA Extended community,
Zebra need to accomodate if router_flag change for existing neigh
and install with or without Router Flag (R-bit).

Testing:
Have locally run MAC/IP (neigh entry) with R-bit set,
Checke on remote VTEP 'show bgp evpn route ...mac ip' and
'show evpn arp-cache ...' contians router flag.

Change host to remove R-bit, which locally learnt entry removes
Router flag. This results in remote vtep to remove R-bit from
neigh entry.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-08-22 15:34:53 -07:00
Chirag Shah
29c2ce7cfc zebra: check router_flag change for neigh update
Neigh update can have router_flag change, from unset to set and
viceversa. This is the case where MAC, IP and VLAN are same but
entry's flag moved from R to not R bit and reverse case.

Router flag change needs to trigger bgpd to inform all evpn peers
to remove from the evpn route.

Testing Done:
Send GARP with and without R bit from host and validate neigh entry
and evpn neigh and  mac-ip route entry in zebra and bgpd.

Check Peer VTEP evpn route entry where router flag is (un)set.
With R-bit

Route [2]:[0]:[0]:[48]:[00:1f:2f:db:45:a6]:[128]:[2006:33:33:2::10]
VNI 1001
Imported from
27.0.0.16:5:[2]:[0]:[0]:[48]:[00:1f:2f:db:45:a6]:[128]:[2006:33:33:2::10]
   4435 5551
27.0.0.16 from MSP1(uplink-1) (27.0.0.9)
   Origin IGP, valid, external, bestpath-from-AS 4435, best
   Extended Community: RT:5551:1001 ET:8 ND:Router
   Flag
   AddPath ID: RX 0, TX 1261
   Last update: Wed Aug 15 20:52:14 2018

Without R-bit

Route [2]:[0]:[0]:[48]:[00:1f:2f:db:45:a6]:[128]:[2006:33:33:2::10]
VNI 1001
Imported from
27.0.0.16:5:[2]:[0]:[0]:[48]:[00:1f:2f:db:45:a6]:[128]:[2006:33:33:2::10]
   4435 5551
27.0.0.16 from MSP2(uplink-2) (27.0.0.10)
   Origin IGP, valid, external, bestpath-from-AS 4435, best
   Extended Community: RT:5551:1001 ET:8
   AddPath ID: RX 0, TX 1263
   Last update: Wed Aug 15 20:53:10 2018

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-08-22 15:29:02 -07:00
Chirag Shah
54c174250c zebra: mark router flag for neigh update
The neigh update can come prior to mac add update.
In this case, the mac will be auto created for the vni.
set router flag to local neigh update for mac with auto flag.

The neigh update will be informed to bgpd once local mac is learnt.

Unset router flag if the neigh update comes without the router flag
for an existing neigh entry.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-08-22 13:18:53 -07:00
Chirag Shah
7df407eda8 bgpd: check existing l3vni for any l2vni creation
Scan all bgp vrf instances and respective L3VNI against the VNI which is being configured.

Ticket:CM-21859
Testing Done:
Configure l3vni,
try to configure same vni as l2vni under router bgp, address-family
l2vpn evpn.
The configuration is rejected.

show evpn vni
VNI        Type VxLAN IF              # MACs   # ARPs   # Remote VTEPs Tenant VRF
4001       L3   vx-4001               0        0        n/a vrf1

TOR(config)# router bgp 5546
TOR(config-router)# address-family l2vpn evpn
TOR(config-router-af)# vni 4001
% Failed to create VNI

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-08-22 13:15:25 -07:00
Russ White
0a4ecf2729
Merge pull request #2886 from donaldsharp/stream_resize
Stream resize
2018-08-22 16:04:37 -04:00
David Lamparter
093033e7cc
Merge pull request #2892 from qlyoung/fix-log-ref-number-signedness
lib: error codes are uint32_t's
2018-08-22 21:21:40 +02:00
Quentin Young
10744c9c38 lib: error codes are uint32_t's
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-22 17:45:47 +00:00
Donald Sharp
ff7f6cd829
Merge pull request #2890 from patrasar/Fix_2847
bgpd: Fix memory leak show ip bgp json
2018-08-22 12:26:28 -04:00
root
b2a9fc6b23 bgpd: Fix memory leak show ip bgp json
Root Cause: In the function bgp_show_table(), we are creating a
json object and a json array with the same name as “json_paths”.
First it will create a json object variable "json_paths" pointing
to the memory allocated for the json object. Then it will create
a json array for each bap node rn (if rn->info is available) with
the same name as json_paths. Because of this, json_paths which was
pointing to the memory allocated for the json object earlier, now
will be overwritten with the memory allocated for the json array.
As per the existing code, at the end of each iteration loop of bgp
node, it will deallocate the memory used by the json array and
assigned NULL to the variable json_paths. Since we don’t have the
pointer pointing to the memory allocated for json object, will be
not able to de-allocate the memory, which is a memory leak here.

Fix: Removing this json object since it is never getting used in
this function.

Testing:  Reproduced the memory leak with valgrind.
With the fix, memory leak gets resolved and checked with valgrind.

Signed-off-by: Sarita Patra saritap@vmware.com
2018-08-22 16:22:17 -07:00
Donald Sharp
61929aa5f9
Merge pull request #2850 from patrasar/Fix_2363
Fix pim_mroute_del crash while killing pimd
2018-08-22 11:44:15 -04:00
David Lamparter
3e5d2f718a doc/developer: logging guide
This roughly outlines when to use which logging function.  It's
certainly something to have to point people to, so they get things nice
and right - and so we get at least somewhat consistent behaviour for the
user.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-22 17:39:34 +02:00
Marcel Röthke
31a2af325e bgpd: use correct bgp tables for rpki revalidation
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2018-08-22 16:50:04 +02:00
Marcel Röthke
0b2c4b3560 bgpd: fix wrong allocation size in rpki route map
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2018-08-22 16:50:04 +02:00
Marcel Röthke
4ce8267644 bgpd: fix deadlock in rpki code
In some situations rtrlib does not release the locks for its internal
data structures before calling a callback. This can lead to deadlocks
when a lot of routes must be revalidated because the sync socket buffer
will fill up and block the rtrlib thread. The bgpd main thread then
waits for rtrlibs internal locks to be released indefinitely.

This is fixed by using nonblocking sockets instead of blocking ones and
setting a flag to revalidate everything, if it would block.

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2018-08-22 16:50:04 +02:00
Donald Sharp
1f063a699b
Merge pull request #2884 from opensourcerouting/assorted-20180821
assorted warning fixes
2018-08-22 08:17:32 -04:00
kssoman
e923dd62ef bgpd : Change of options in redistribute command does not get applied
* Added parameter in bgp_redistribute_set() to indicate change
  in redistribute option
* If there is change, call bgp_redistribute_unreg() to withdraw routes

Signed-off-by: kssoman <somanks@vmware.com>
2018-08-22 05:00:15 -07:00
Donald Sharp
de75223eaf lib: Convert stream_new to use one malloc
Modify stream.c to have stream_new call one malloc call
instead of two.  Also change stream_resize_orig to
use stream_resize_inplace and to send an error
to the developer to switch over.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-22 07:58:54 -04:00
Donald Sharp
db3c830afe isisd, ospfd, tests: Switch to using stream_resize_inplace
Switch code and tests to use new stream_resize_inplace functionality.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-22 07:58:54 -04:00
Donald Sharp
4388866917 lib: Add stream_resize_orig and stream_resize_inplace
Start setup for handling of stream_resize into old
and new functions.

Create a stream_resize_inplace function that takes
a double pointer to allow for a realloc operation
to return the possibly moved pointer.

Add a CONFDATE for removal as well.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-22 07:58:54 -04:00
Donald Sharp
dca5ef3053
Merge pull request #2818 from kssoman/rmap_fix
Zebra does not properly track which route-maps are changed (#2493)
2018-08-22 07:50:14 -04:00
Donald Sharp
46a67d2587
Merge pull request #2888 from pguibert6WIND/misc_fix_static_tableid
Misc fix static tableid
2018-08-22 07:40:14 -04:00
Philippe Guibert
7a2c24df02 static: remove useless debug variable
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-22 10:04:49 +02:00
Philippe Guibert
31d4a8e5f0 staticd: do not forget to set table id marker on zebra message
Table identifier is not read if table id marker is not set.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-22 10:04:06 +02:00
Philippe Guibert
f69f6f56f5 staticd: remove usage of vrf_is_backend_netns in staticd
this function had to be used only inside zebra ( this was written in the
header vrf.h). To keep the functionality, a more generic API is used.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-22 10:03:16 +02:00
Philippe Guibert
3d4c0b49da lib: change vrf_is_mapped_on_netns API
The function handles not a vrf pointer instead of a vrf_id value.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-22 09:19:04 +02:00
root
e83f3b316a pimd: Fix pim_mroute_del crash while terminating pimd
When pimd is getting terminated, pim_upstream_del() gets called as
part of cleaning process. pim_upstream_del() deletes the route and
assigns NULL to the up->channel_oil. It also deletes each if_channel
by calling the function pim_ifchannel_delete().
pim_ifchannel_delete() internally calls the caller function pim_upstream_del(),
if it is the last ifchannel for that upstream. So pim_upstream_del
is getting called twice, which will access the up->channel_oil which
was already set to NULL before. This results in crash.

Fix:
pim_ifchannel_delete() should call pim_upstream_del (caller function)
only if the up->ref_count > 0. Added an assert(up->ref_count > 0) in
the function pim_upstream_del().

Signed-off-by: Sarita Patra <saritap@vmware.com>
2018-08-22 00:00:32 -07:00
David Lamparter
0e70e6c89d lib/bgpd: re-fix bgp_info_extra_free()
Make the wart slightly less bad... also there is still a possible write
after free here.  This needs to be fixed again, properly, by some
structure changes.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-22 06:32:43 +02:00
Donald Sharp
463e781705
Merge pull request #2868 from opensourcerouting/snap-rpki
snapcraft: Add RPKI to snap package
2018-08-21 18:49:24 -04:00
Donald Sharp
962709b8d2
Merge pull request #2877 from pguibert6WIND/fixup_fs_master
bgpd: avoid memory leak in bgp flowspec list, plus usage of bool
2018-08-21 18:46:42 -04:00
David Lamparter
9e32cce03f
Merge pull request #2876 from donaldsharp/lsa_new_and_data
ospfd: Add ospf_lsa_new_and_data function and abstract away
2018-08-21 21:22:45 +02:00
David Lamparter
f4c28c4486
Merge pull request #2882 from qlyoung/fix-zlog-deadlock
lib: fix deadlock in log.c
2018-08-21 21:21:28 +02:00
David Lamparter
a2dc7057e0 *: fix gcc-8 format-overflow warnings
e.g.
pimd/pim_oil.c: In function ‘pim_channel_oil_dump’:
pimd/pim_oil.c:51:19: error: ‘%d’ directive writing between 1 and 11 bytes into a region of size 10 [-Werror=format-overflow=]

Build on gcc-8.2.0 is warning-free after this patch.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-21 21:05:09 +02:00
David Lamparter
bd27ea43e9 build: wrap "fallthrough" attr
This generates a warning on gcc versions before 7.0.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-21 20:34:58 +02:00
Philippe Guibert
45837bc40d bgpd: pbr entry log message changed to zlog_debug
pbr entry log message changed to zlog_debug.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-21 18:30:32 +02:00
Philippe Guibert
5a430eee9a bgpd: simplify fs add pbr entry
Simplify the fs pbr entry creation.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-21 18:30:32 +02:00
Philippe Guibert
503d1ec6eb bgpd: avoid memory leak in bgp flowspec list, plus usage of bool
Avoid memory leak in bgp flowspec list.
Usage of bool parameter instead of int, to handle the number of entries
PBR.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-21 18:30:26 +02:00
Quentin Young
dce2036b6a lib: fix deadlock in log.c
Daemons could deadlock when log file could not be opened during a log
rotation.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-21 15:15:38 +00:00
David Lamparter
5ab5e410d0
Merge pull request #2881 from donaldsharp/external_removal
ospfd: Remove unused function
2018-08-21 17:00:28 +02:00
Donald Sharp
8732a8edd7
Merge pull request #2878 from pguibert6WIND/fix_show_error_all
lib: fix show error all
2018-08-21 10:35:16 -04:00
Donald Sharp
19c0412aad ospfd: Remove unused function
The ospf_external_route_lookup function was not
being used so let's just remove it.

Unfortunately the removal was not quite so simple as
that ospf_asbr.h was being used to generate a reference
for the `struct ospf_route` data structure, so we
need to fix up the compile by fixing up header
inclusions so that ospf_route.h is actually included

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-21 08:40:51 -04:00
Philippe Guibert
b2111f08a5 lib: fix show error all
show error all was displaying 0 value for code, whereas real code value
was not displayed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-21 11:10:40 +02:00
David Lamparter
f8a523363e
Merge pull request #2867 from dslicenc/show-route-leak-json
bgpd: add json output to bgp route-leak show command
2018-08-21 05:52:30 +02:00
Donald Sharp
5b3d4186de ospfd: Add ospf_lsa_new_and_data function and abstract away
In all but one instance we were following this pattern
with ospf_lsa_new:

ospf_lsa_new()
ospf_lsa_data_new()

so let's create a ospf_lsa_new_and_data to abstract
this bit of fun and cleanup all the places where
it assumes these function calls can fail.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-20 20:41:37 -04:00