Commit Graph

9378 Commits

Author SHA1 Message Date
Russ White
b8c962aa6e
Merge pull request #1367 from donaldsharp/mp_reach_parse
bgpd: Treat empty reachable NLRI as a EOR
2017-10-31 20:23:32 -04:00
Russ White
58239911bf
Merge pull request #1382 from donaldsharp/eigrp_loop
Eigrp loop
2017-10-31 20:21:26 -04:00
Lou Berger
4053d45064
Merge pull request #1336 from donaldsharp/peer_name
Peer name
2017-10-31 11:40:44 -04:00
Lou Berger
4068233176
Merge pull request #1371 from donaldsharp/bgp_exit
bgpd: exit on socket bind failures
2017-10-31 11:39:25 -04:00
Lou Berger
820e1d547b
Merge pull request #1366 from donaldsharp/bgp_non_integrated_zebra_redistribution
Bgp non integrated zebra redistribution
2017-10-31 10:53:59 -04:00
Renato Westphal
7b29936438
Merge pull request #1376 from donaldsharp/mpls_replace_semantics
Mpls replace semantics
2017-10-31 12:48:31 -02:00
Lou Berger
0c04911dc6
Merge pull request #1377 from donaldsharp/bgp_json
bgpd: Cleanup some json output in bgp_route.c
2017-10-31 09:25:20 -04:00
Jafar Al-Gharaibeh
0eb71379e3
Merge pull request #1389 from donaldsharp/pim_nexthop_lookup_crash
pimd: When doing a RPF for a route, note when we fail the lookup
2017-10-31 00:23:42 -05:00
Jafar Al-Gharaibeh
6292fd1af9
Merge pull request #1390 from donaldsharp/pim_ifp_flap_crash
pimd: Fix crash with debug and ifp changes
2017-10-31 00:21:52 -05:00
Donald Sharp
97f03dde1e pimd: Fix crash with debug and ifp changes
Certain interface flapping events can cause a lookup
that does not find any ifp pointer.  This is only causing
a crash in the `debug pim zebra` command due to only needing
to lookup the interface for it's name.

Modify code to ensure we have a valid pointer.  Follow other
debug statements lead in the same function for what to display
when an interface does not currently exist.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-30 19:59:18 -04:00
Donald Sharp
9993f22cb1 pimd: When doing a RPF for a route, note when we fail the lookup
When we ask PIM to do a CLI search of a random (S,G) if the
(S,G) has no RPF due to no route, let the user know about
the issue instead of crashing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-30 13:29:14 -04:00
Donald Sharp
d4395853e8 eigrpd: When writing packet don't crash in some cases
When we are writing a packet if we have gotten ourselves
into a bad situation, note it and move on.  Hopefully
dumping enough information so that we can find the offending
reason.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-29 09:48:02 -04:00
Donald Sharp
b42a4a099a eigrpd: Fix crash in reply receive packet.
When we receive a reply for a prefix we no longer
have we should note the issue and move on instead
of crashing eigrp.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-29 08:28:01 -04:00
Donald Sharp
68b7dd07d5 eigrpd: Query Send is not incrementing the sequence number
When we send a query make sure we increment the query
sequence number.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-29 08:27:08 -04:00
Donald Sharp
052fe05405 eigrpd: On shutdown, delete list after we've cleared prefixes
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-28 18:56:34 -04:00
Donald Sharp
377f30c31f eigrpd: Fix an issue found with metric change
A past commit modified the change value to an enum
but did not bother to fix all the places where
change was used.  Fix this.

Additionally add some more output to the fsm prefix
string about the change.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-28 18:45:08 -04:00
Donald Sharp
895722db4e eigrpd: Add ability to show packet type in log
Allow us to examine the packet type that caused us to change
state.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-28 18:35:56 -04:00
Donald Sharp
94ccb30979 eigrpd: Create enum for states and string name for display
Create an enum for the different states and create
a string name display handler.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-28 18:06:28 -04:00
Donald Sharp
5cc74ec1b8 eigrpd: Create a function to return a string of prefix state
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-28 18:05:33 -04:00
Donald Sharp
66f80d74d6 bgpd: Cleanup some json output in bgp_route.c
Cleanup the displayed json output to be a bit prettier
to look at.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-27 11:32:17 -04:00
Donald Sharp
885141e85e zebra: Add back in lsp replace semantics.
When we have a update, we need to use replace
semantics with the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-27 10:41:07 -04:00
Donald Sharp
3d468f6604 zebra: Move clear_nhlfe_installed to calling functions
The function clear_nhlfe_installed is to be called
when we get a install failure of some sort for
a lsp change.  Since an install failure can happen
in both linux and openBSD moving the function call
northbound is a good idea.

I've also added it to the kernel_del_lsp for completeness
on failure as well, even though neither linux or openBSD
currently can fail a uninstall.

This still leaves the hole where if we have multiple
nhlfes and have an install failure we are not quite
doing the right thing by just blanketly calling
clear_nhlfe_installed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-27 10:41:07 -04:00
Jafar Al-Gharaibeh
e4715aed63 Merge pull request #1365 from donaldsharp/pim_vrf_cleanup
pimd: Cleanup vrf SA issues exposed by recent commits
2017-10-27 09:32:13 -05:00
Donald Sharp
f7d9ebf4da Merge pull request #1356 from opensourcerouting/linux-headers
build: include our own copies of some linux kernel headers
2017-10-27 10:12:43 -04:00
Donald Sharp
e2e7a81d58 Merge pull request #1174 from opensourcerouting/show_route_defpy
Refactor the 'show ip route' commands using DEFPY
2017-10-27 10:00:57 -04:00
Donald Sharp
b3b78f6e62 bgpd: exit on socket bind failures
When we fail to bind to port 179 we are left in a situation
where we have not saved the bgp pointer created and when
the bgp cli mode is exited we leak the memory.

Additionally there is no recovery situation here that
could be easily programmed without fundamentally changing
the code.

So let's exit and output to the log file some useful
information to hopefully clue the user in on what is
going wrong.

Fixes: #1130
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-26 14:11:46 -04:00
Donald Sharp
9b9df9892d bgpd: Treat empty reachable NLRI as a EOR
This issue was discovered on a live session with an extremely
old cisco 7206VXR router running 12.2(33)SRE4.  The sending router
is sending us an empty NLRI that is MP_REACH.  From RFC
exploration(thanks Russ!) it appears that this was
considered a 'valid' way to send EOR.

Following discussion decided that we should treat
this situation as a EOR marker instead of bringing
down the session.

Applying this fix on the FRR router seeing this issue
allows it to continue it's peering relationship with
the ASR.  Since this is a point fix I do not see
a high likelihood of further fallout.

Fixes: #1258
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-26 07:31:17 -04:00
Donald Sharp
ea12cf1125 bgpd: When not fully connected to zebra gracefully ignore the issue
When bgp is coming up and is reading a non-integrated config.
The bgp connection to zebra has not fully had a chance to start.
As such when a redistribute line is parsed the attempt is
made to install it but it was erroring out with a warning.
This caused the `redistribute XXX` line to create a error
message to the end user.

Since bgp calls zclient_send_reg_requests which re-registers
the redistribute call once the actual zebra connection is up
and once bgp comes alive this is ok.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 22:38:50 -04:00
Donald Sharp
c539c38944 lib: Fix non-integrated config error display
When using a non-integrated config and starting up
of a protocol daemon, we were not properly handling
all possible cases and as such when an user hit
an actual error they were getting (null) listed
for the message string.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 22:35:35 -04:00
Donald Sharp
2a82635882 lib: Remove strange line
Remove a line that only has a semi-colon on it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 22:34:45 -04:00
Renato Westphal
6d774763d6 Merge pull request #1362 from dslicenc/cm18309-label-delete
zebra: only pass mpls proto type if doing install
2017-10-25 16:56:50 -02:00
Renato Westphal
5ce91022c1 zebra: unify the ipv4/ipv6 'show ip route' commands - part 2/2
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-25 16:03:56 -02:00
Donald Sharp
819f099bdd pimd: Cleanup vrf SA issues exposed by recent commits
A recent commit has shown that we were not consistent with
handling of the vrf lookup.  Adjust pim to do the right
thing with vrf lookup to be consistent and to make SA
happier.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 13:43:51 -04:00
Donald Sharp
b633926771 doc: Update route-map match section
The 'match peer ...' command for bgp did
not exist.  Add this into the code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 10:02:03 -04:00
Donald Sharp
7aacfd1b46 bgpd: Allow 'match peer' for all route-map types
There are multiple places that we use route-maps in bgp
There is no need to limit the route-map 'match peer ...' command
to just import and export route-map types.  I see need for
using this in table-maps as well.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 09:24:53 -04:00
Donald Sharp
7d4aea3007 bgpd: Allow route-map match peer... to have auto-complete
The match peer command doees not currently have an auto-complete
ability.  Let's add it in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 09:24:53 -04:00
Donald Sharp
8c3433e490 bgpd: Allow peer interface name to match
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-25 09:24:53 -04:00
Donald Sharp
ef47f23b91 Merge pull request #1358 from opensourcerouting/isis-lsp_tick-fixes
Isis lsp_tick fix and improve perfomance for processing LSP updates
2017-10-25 09:19:06 -04:00
Don Slice
8dc8a4b693 zebra: only pass mpls proto type if doing install
Problem reported with not deleting LSPs from the zebra kernal mpls table
when a delete occurred in bgp.  Found that we were exiting the delete
process incorrectly due to not being able to derive the route_type from
the best_nhlre on the lsp while deleting. Since this info was only
needed for route installation, removed this early exit in the case of
deleting the lsp.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Ticket: CM-18309
Reviewed By: CCR-6781
Testing Done:  Manual testing looks good.  mpls tests successful
2017-10-25 08:19:22 -04:00
Donald Sharp
ff2f3a8290 Merge pull request #1361 from opensourcerouting/vtysh_mem_leak
vtysh: properly fix memory leak
2017-10-25 07:00:19 -04:00
Renato Westphal
80c872f699 vtysh: properly fix memory leak
Commit 44f12f20 fixed the memory leak in the wrong way and introduced a
"uninitialized variable" warning.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-25 07:56:42 -02:00
Donald Sharp
b5b583aa8d Merge pull request #1357 from opensourcerouting/coverity_fixes
Coverity fixes
2017-10-24 19:36:30 -04:00
Renato Westphal
b11b57723b lib: optimize sockunion_connect()
This function is only called with non-blocking sockets [1], so there's
no need to worry about setting O_NONBLOCK and unsetting it later if the
given fd was a blocking socket. This saves us 4 syscalls per connect,
which is not much but is something.

Also, remove an outdated comment about the return values of this
function. It returns a 'connect_result' enum now, whose values are
self-explanatory (connect_error, connect_success and connect_in_progress).

This also fixes a coverity scan warning where we weren't checking the
return value of the fcntl() syscall.

[1] bgp_connect() and pim_msdp_sock_connect().

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:31 -02:00
Renato Westphal
cbb65f5ef5 *: fix coverity warnings - error handling issues
Ignore the return value of some functions in the places we know they
can't fail, and other small fixes.

Regarding the change in bgpd/rfapi/rfapi_rib.c, asserting that
rfapiRaddr2Qprefix() didn't fail is the common idiom inside the rfapi
code.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:30 -02:00
Renato Westphal
44f12f209f *: fix coverity warnings - resource leaks
These are mostly trivial fixes for leaks in the error path of some functions.

The changes in bgpd/bgp_mpath.c deserves a bit of explanation though. In
the bgp_info_mpath_aggregate_update() function, we were allocating memory
for the lcomm variable but doing nothing with it. Since the code for
communities, extended communities and large communities is pretty much
the same in this function, it's clear that this was a copy and paste
error where most of the ext. community code was copied but not all of
it as it should have been.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:30 -02:00
Renato Westphal
a1d6bbb1f3 ospfd: fix coverity warnings - security best practices violations
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:30 -02:00
Renato Westphal
efd7904eab *: add missing \n in some help strings
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 19:30:30 -02:00
Renato Westphal
5b8524f5c2 lib: fix coverity warnings introduced by the iface rb-tree conversion
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-24 18:26:02 -02:00
Lou Berger
47473bbbc7 Merge pull request #1346 from donaldsharp/apply_routemap
bgpd: Note routemap information even if peer not activated.
2017-10-24 11:46:32 -04:00
Lou Berger
0f1fe4ff22 Merge pull request #1337 from donaldsharp/debug_nht_bgp
bgpd: Allow turn off of 'debug bgp nht' from 'no debug bgp'
2017-10-24 11:13:12 -04:00