Commit Graph

12858 Commits

Author SHA1 Message Date
F. Aragon
9f134cdcfd
bgpd: null check (Coverity 1472237)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-03 16:26:14 +02:00
F. Aragon
06fe25f448
bgpd: dead code (Coverity 1472230 1472231 1472238)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-03 16:19:11 +02:00
Rafael Zalamena
484020d0fa
Merge pull request #2779 from pacovn/Coverity_1472226_1472228_1472239
bgpd: rsc leak (Coverity 1472226 1472228 1472239)
2018-08-03 11:15:32 -03:00
F. Aragon
84542f3903
ospfd: dead code (Coverity 1472227)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-03 15:51:05 +02:00
F. Aragon
a18eb8aea7
bgpd: variable scope (Coverity 1472229)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-03 15:47:03 +02:00
F. Aragon
360f9703f6
bgpd: rsc leak (Coverity 1472226 1472228 1472239)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-03 15:09:11 +02:00
Donald Sharp
8619629ada lib, bgpd, ospf6d, ospfd, pimd: Allow finish to cleanup a bit more
When calling route_map_finish, every place that we do we must
first set the deletion event to NULL, or we will create an infinite
loop, if we are using the delayed route-map application code.
As such we might as well just make the route_map_finish code
do this work, as that there is really no viable alternative here
and route_map_finish should only be called on shutdown.

This fixes an infinite loop in zebra on shutdown when there
are route-maps.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-03 08:22:45 -04:00
Christian Franke
bcd9fd5011 isisd: fix refcounting in isis_route.c
This fixes multiple issues and inefficiencies regarding the usage of
route_tables in isis_route.c and removes some memory leaks.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
321c1bbb94 isisd: make spf code dst-src aware
Take the source-prefix sub-TLV into consideration when running SPF
and support creation/deletion of dst-src routes as result.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
6d38d0785c isisd: don't infer spftree from address family
Instead of using the address family to determine which spftree structure
should be used, specify it explicitly. With the advent of ipv6 dst-src
routing, the tree cannot be uniquely determined from the family.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
be985ba059 isisd: make use of advanced concepts like arrays and loops
Have an array of spftrees instead of a separate spftree and an
spftree6 for which all the code gets duplicated.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
26b0598f6b isisd: fix isis_route_merge_verify logic
This addresses two issues for L1L2 operation:

a) If an L1 route has ROUTE_ACTIVE unset and an L2 route for the same
destination has ROUTE_ACTIVE set, isisd would still put the L1 route
into the merged table. This causes the route for the destination to
get uninstalled from zebra until the next SPF run, which is incorrect.

To fix this, look at the ROUTE_ACTIVE flag and allow L2 routes to win
against L1 routes, when the L1 has ROUTE_ACTIVE unset.

b) If an L1 route wins against an existing L2 route, the ZEBRA_SYNCED
flag would remain on the L2 route. This leads to the problem that when
the L1 route disappears again, the L2 doesn't get reinstalled, since
isisd assumes it's already in the RIB because ZEBRA_SYNCED is set.

Solve this by clearing ZEBRA_SYNCED on L2 routes, if they lose against
an L1 route.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
c30f211bba isisd: fix redist_delete to also consider level-2
There was an off-by-one error in redist_delete, so that routes redistributed
into level-2 could never be withdrawn.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
3dace42de9 isisd: move route_table into spftree
As isisd's route_tables are directly related to spf trees, move
the route tables into the spftree instead of maintaining them
alongside of the spftrees.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
d43d2df5f3 isisd: learn and advertise IPv6 dst-src routes
Receive IPv6 dst-src routes from zebra and advertise them in our LSPs
if so configured.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:39 +02:00
Christian Franke
c9b0e434bc isisd: add debug message if adjacency is ignored because IP is unusable
isisd verifies whether the neighboring IPv4 addresses overlap with its own
unless the interface is running in unnumbered mode. If no overlap is found
and IPv6 is also not enabled, IIHs will be ignored.

Add a debug message for this case, to avoid people wondering why adjacencies
are not coming up.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-08-03 13:25:38 +02:00
Donald Sharp
391b8b08a5 pimd: On shutdown ensure wheel exists
On shutdown and cleaning up pim_upstream ensure that the
upstream_sg_wheel still exists to remove item from.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 23:31:53 -04:00
Donald Sharp
822d3c858c pimd: Cleanup msdp.mg on shutdown
When shutting down PIM, ensure that hte pim->msdp.mg is cleaned up.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 23:08:48 -04:00
Donald Sharp
662ba9e6f0 pimd: Cleanup bfd memory on shutdown
When shutting down pim, ensure that we cleanup bfd memory

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 22:56:55 -04:00
Donald Sharp
e2c4bc88d2 pimd: Fix crash on shutdown in oil
When shutting down, do not free oil information after
interface information since we use the data there to
do so.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:27:53 -04:00
Donald Sharp
0c68972d53 pimd: Don't leak wheel memory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:25:41 -04:00
Donald Sharp
27cfe2224c pimd: Properly cleanup ssm
Properly cleanup the ssm data structure on termination.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:06:15 -04:00
Donald Sharp
ff823fc915 pimd: Cleanup rp_info->plist
PIM is leaking the plist data structure in some shutdown
cases.  Additionally trust XFREE

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:02:13 -04:00
Donald Sharp
36ef2c109b pim: Clean up some data on shutdown in msdp
We were leaking some msdp hash backets and a msdp stream
data pointer on shutdown.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 19:58:24 -04:00
Donald Sharp
c7e98b04ec pimd: No need to call zprivs_terminate 2 times
frr_fini and pim_free both call zprivs_terminate.  There is
no need for pim_free to call this function.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 19:52:15 -04:00
Donald Sharp
565b5561ac lib: Increase stream allocation speed.
Modify stream_new in this way:

1) ALLOC allocations do not fail, they cause a crash so remove
if tests for it.

2) Modify usage of XCALLOC to XMALLOC and then hand set all the
relevant data in the stream pointer.

With this modification stream allocation of 10000000 streams at
10k bytes each reduced from on average 1.43 seconds to 0.65 seconds.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 14:57:44 -04:00
Donald Sharp
61a7a236df vtysh: Respect order dependancy of some pim commands
If `ip igmp query-max-respone-time ` is specified allow it
to show up before `ip igmp query-interval ` since there
are order dependancies that may show up.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
2018-08-02 10:38:48 -04:00
Donald Sharp
c55f7a8003 pimd: Modify order of command output for vty output
If `ip igmp query-max-response-time` is set move it to
display first as that this command has order dependencies
on `ip igmp query-interval`.

Ticket: CM-21598
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:38:48 -04:00
Donald Sharp
410a92bc2b lib: Fix vrf check output to only have 1 line
When we issue this command, we are getting:

robot# show ip route vrf green json
{}
% VRF green not found
robot# show ip route vrf green
% VRF green not found
% VRF green not found
robot#

Fix the command so it only displays one line of output
for json or non-json output.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:09:09 -04:00
Donald Sharp
302628bcad pimd: Only need 1 return from a function
When there is a return at the end of a function, there
is no need for another one immediately after it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:09:09 -04:00
Donald Sharp
c936e76f3c pimd: pim_socket_join_source is only called from one place
The pim_socket_join_source function only ever calls
pim_igmp_join_source and pim_socket_join_source is only
called from 1 place.  Skip the level of indirection.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:09:09 -04:00
Russ White
25f5f03987
Merge pull request #2760 from donaldsharp/bgp_patch_from_dev
bgpd: Fix show ip bgp summary json command for dynamicPeers
2018-08-02 08:15:29 -04:00
Russ White
a4bacbcfa5
Merge pull request #2761 from donaldsharp/rip_memory
ripd: Use memory management for interface commands in RIP
2018-08-02 08:14:39 -04:00
Russ White
9208f5e2b5
Merge pull request #2771 from qlyoung/fix-zserv-shutdown-crash-3
zebra: don't close client socket from I/O pthread mc crasherson mc crashy crash bandicoot
2018-08-02 08:07:43 -04:00
Russ White
ee55f64dc5
Merge pull request #2767 from donaldsharp/bgp_timers
bgpd: Intentionally stop some timers on instance removal
2018-08-01 20:14:35 -04:00
Donald Sharp
9b864cd3cd lib: Ensure read/write fd's are in range
Ensure that we can properly handle a passed in read/write
fd for using in poll.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-01 19:41:47 +00:00
Quentin Young
c022637847 zebra: don't close client socket from I/O pthread
The client socket value can only be modified by the main thread.
Modifying the client socket from within the client I/O pthread
introduces race conditions.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-01 19:41:47 +00:00
Quentin Young
a580357a87 zebra: ensure cleanup of rib on client close
Socket should be closed in zserv_client_free() and nowhere else.

Credit to Mark Stapp for catching this one.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-01 19:41:47 +00:00
Donald Sharp
6960cd09c6
Merge pull request #2769 from ajones-rvbd/ajones-frr-reload
tools/frr: make frr reload error message clearer on missing frr-reload.py
2018-08-01 14:09:24 -04:00
Arthur Jones
8b5f787e8e tools/frr: make frr reload error message clearer on missing frr-reload.py
Only frr-reload.py pulls in a python depenedency for frr, we can
reduce the size of the base frr package by a lot if we separate
out frr-pythontools.  When we do this, we get a somewhat cryptic
error message when frr-reload.py is missing on frr reload.

Here, we pull the error message from frr-reload script, which is
much clearer.

Testing done:

frr reload both with and without the frr-reload.py script, see
the frr-reload message when missing and it runs frr-reload.py when
not missing.

Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
2018-08-01 09:23:55 -07:00
Donald Sharp
037f162fe9
Merge pull request #2766 from lyq140/branch1
ripd: null check key
2018-08-01 10:42:52 -04:00
Donald Sharp
a6d205a4f5
Merge pull request #2765 from opensourcerouting/fix-getsockoptdata
lib: fix getsockopt_cmsg_data retrieval
2018-08-01 10:17:30 -04:00
Donald Sharp
c969b2edae bgpd: Intentionally stop some timers on instance removal
When a bgp instance is stopped, with a `no router bgp..`
make sure any timers associated with the instance are stopped
as well.

This issue was discovered when a customer issued a `no router bgp`
while a maxmed timer was operative.  The max-med timer used the
`struct bgp *` as the passed in value for the thread.  The
thread eventually popped after the cleanup and attempted to use
data off in lala land and crashed

Ticket: CM-21895
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-01 09:51:46 -04:00
lyq140
c4efb22479 ripd: null check key
Fix ripd crash of null pointer.
when authenticate a rip packet,
the key pointer or the key string pointer may be null,
the code have to return then.

Signed-off-by: lyq140 <34637052+lyq140@users.noreply.github.com>
2018-08-01 20:48:36 +08:00
Rafael Zalamena
dc094865db lib: fix getsockopt_cmsg_data retrieval
The `type` parameter was not being compared with `cmsg_type`, so the
result of this function was always a pointer to the first header
matching the level.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-08-01 09:42:16 -03:00
Donald Sharp
aa0b1d3b60
Merge pull request #2763 from lyq140/master
ripd: null check the key string
2018-08-01 07:56:50 -04:00
lyq140
e65e227f28 ripd: null check the key string
This fix a crash of  null pointer.
when we don't add a key string or delete it,
the key is not null but key string is null,
so the code have to return.

Signed-off-by: lyq140 <34637052+lyq140@users.noreply.github.com>
2018-08-01 12:03:24 +08:00
Russ White
e841105b61
Merge pull request #2759 from donaldsharp/pim_duplicate
Pim duplicate
2018-07-31 21:11:28 -04:00
Russ White
a111e0ac23
Merge pull request #2755 from ton31337/feature/default-originate_apply_route-maps
bgpd: Make sure default-originate works without route-map as well
2018-07-31 21:09:06 -04:00
Russ White
22bc293f90
Merge pull request #2752 from qlyoung/doc-fix-rpki-index-error
Fix various rpki.rst errors (again)
2018-07-31 21:06:33 -04:00