Commit Graph

8650 Commits

Author SHA1 Message Date
Donald Sharp
cf2f4daee3 eigrpd: Pass in actual used parameter to header creation
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-19 14:39:07 -04:00
Donald Sharp
a6e8810ee3 eigrpd: Allow eigrp_update_send to recognize a full packet
Modify code to allow the eigrp_update_send function to
recognize that we have a full packet and to do the right
thing from there.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-19 14:23:15 -04:00
Donald Sharp
a75c1cc191 eigrpd: Fix memory leak in eigrp_update
When we send packets to a nbr, make a duplicate copy
as that each packet sent is assumed to be a complete
to itself.

Also clean up indentation in loop over figuring out
what to send.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-19 14:16:16 -04:00
Donnie Savage
de4ddd13aa Merge pull request #1010 from donaldsharp/reliable_eigrp
Reliable eigrp
2017-08-19 06:33:29 -04:00
Donald Sharp
17a2f658da eigrpd: When generating packets only put one on send queue at a time
When we generate update packets to go to our neighbor, Only
put one packet at a time on the send queue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-18 15:00:40 -04:00
Donald Sharp
1a0770e387 eigrpd: Only put 1 packet at a time on send queue
When we have received an ack for the last reliable
packet we must only put 1 packet onto the send
queue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-18 15:00:40 -04:00
Donald Sharp
ba11736761 tools: Always ensure that the daemon exists at startup
When starting up FRR with tools/frr, ensure that the
daemon specified that we are about to start actually exists.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-18 10:57:07 -04:00
Donald Sharp
510afcd647 bgpd: Fix bgp clear help string
The bgp clear help string was misordered.

New output:
robot.cumulusnetworks.com# clear bgp
  (1-4294967295)  Clear peers with the AS number
  *               Clear all peers
  A.B.C.D         BGP neighbor address to clear
  WORD            BGP neighbor on interface to clear
  X:X::X:X        BGP IPv6 neighbor to clear
  external        Clear all external peers
  ipv4            Address Family
  ipv6            Address Family
  peer-group      Clear all members of peer-group
  prefix          Clear bestpath and re-advertise
  view            BGP view
  vrf             BGP VRF

Fixes: #1005
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-18 09:45:16 -04:00
Jafar Al-Gharaibeh
f887261b92 Merge pull request #1003 from donaldsharp/pim_mem_leak
pimd: Fix memory leak on failure case
2017-08-18 00:16:38 -05:00
Jafar Al-Gharaibeh
fd178a6a04 Merge pull request #1001 from dwalton76/pimd-CMD-WARNING
pimd: "No Path to RP address specified" should exit 0
2017-08-18 00:15:37 -05:00
Jafar Al-Gharaibeh
3b09001eb1 Merge pull request #1000 from donaldsharp/eigrp_packet_stuff
Eigrp packet stuff
2017-08-18 00:13:58 -05:00
Donald Sharp
29e48d5859 eigrpd: and More Debugging Cleanup
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 19:40:44 -04:00
Donald Sharp
0f6c16fbe6 eigrpd: Cleanup some more debugs
Properly place a few more debugs.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 19:20:45 -04:00
Donald Sharp
f90f65a242 eigrpd: Cleanup FIFO
The FIFO really was a LIFO for some reason.

Push new packets onto the top, always pull from the bottom.

This allows eigrp neighbors to come up.  Topotests
eigrp-topo1( in a topotest PR ) now form neighbors
with itself. With this commit.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 19:16:53 -04:00
Donald Sharp
a5d4c69d6a pimd: Fix memory leak on failure case
When we fail to create upstream we were not properly
cleaning up all memory.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 13:05:08 -04:00
Jorge Boncompte
19aad877b7 lib: optimize IPV4_ADDR_[SAME|COPY]()
Change all callers of IPV4_ADDR_SAME() to pass a pointer to a struct in_addr

Use assignment and comparison instead of memcpy() and memcmp(). Avoids function
calls. Faster.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:58:35 +02:00
Jorge Boncompte
aac2483887 bgpd: bgp process queue optimization
There are several code paths that dump nodes to the queue for route
processing in a loop. This patch tries to reduce memory allocations/freeing
(work item, list node) and thread scheduling overhead by batching the nodes
in a simple queue list.

In the past when route processing wasn't event driven (bgp_scan()), this used
to have a noticeable impact in table loading, convergence time and memory heap
fragmentation due to reduced alloc's/free's.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:58:35 +02:00
Jorge Boncompte
92375c917e bgpd: inline bgp_lock()/bgp_unlock()
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:47:07 +02:00
Jorge Boncompte
f104f6c1a6 lib: cleanup the work queue implementation
Convert the work queue implementation to not use the generic linked list
to mantain the item list and use instead a simple queue from queue.h that
does not allocate memory for each node.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:47:07 +02:00
Jorge Boncompte
cd85bc2e0b lib: standardize use of queue.h
The simple queue implementation in OpenBSD and FreeBSD are called diferently,
standardize in the use of the FreeBSD version and map the missing names only
if we compile on OpenBSD.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:47:05 +02:00
Jorge Boncompte
01dccc0b19 lib: inline route_node_lock()/route_node_unlock()
Avoid function calls.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
2017-08-17 17:46:22 +02:00
Daniel Walton
c6e7b95248 pimd: "No Path to RP address specified" should exit 0
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

This could happen if routing isn't up yet but the command did take so we
should exit 0 here.  Testing:

root@cel-redxp-10[frr-dwalton76]# vtysh -c 'conf t' -c' ip pim rp
11.11.11.11'
% No Path to RP address specified: 11.11.11.11
root@cel-redxp-10[frr-dwalton76]# echo $?
0
root@cel-redxp-10[frr-dwalton76]#
2017-08-17 15:04:25 +00:00
Donald Sharp
7fe9e03556 Merge pull request #999 from fabled/master
nhrpd: use hop count 1 for registration requests
2017-08-17 10:48:28 -04:00
Donald Sharp
9c273c6d28 eigrpd: Rework ack sent to neighbor
EIGRP schedules and builds packets to send in the future.
Before those packets are being sent, we are receiving
update information from our peer.  At that time we
need to reach into the built packet and reset the
outgoing ack to a better value.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 10:02:54 -04:00
Timo Teräs
ef9329ac02 nhrpd: use hop count 1 for registration requests
Cisco has a bug that it rejects packets with zero hop count.
Use one to avoid potential forwarding of registration requests.

Fixes #951

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
2017-08-17 16:57:09 +03:00
Donald Sharp
907b430346 eigrpd: Store nbr in packet data
Store the neighbor information( if available ) in the packet
data that we are sending.  This will allow in a future commit
the ability to fixup the outgoing ack we are sending.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 09:53:51 -04:00
Donald Sharp
3bbde7327a eigrpd: Remove extra newline in debug
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-17 09:48:21 -04:00
David Lamparter
f66bd13f3c Merge pull request #994 from dwalton76/ospfd-show-neighbor
ospfd: "show ip ospf neighbor" options not passed
2017-08-17 12:37:25 +02:00
Daniel Walton
596074af62 vtysh: vtysh -f FOO should exit non-zero if it hits an error
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

Today if we hit an error while apply the contents of file FOO that error
does not bubble up to a non-zero exit.
2017-08-16 20:22:59 +00:00
Daniel Walton
b4e84315e4 ospfd: "show ip ospf neighbor" options not passed
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-08-16 18:40:12 +00:00
David Lamparter
74218b297f Merge pull request #989 from qlyoung/if-area-df
ospfd: remember area-id format for ifaces
2017-08-16 19:28:09 +02:00
David Lamparter
c9974c7995 Merge pull request #984 from donaldsharp/debugging
Some Small Pim Issues
2017-08-16 19:18:31 +02:00
Russ White
863f4bf143 Merge pull request #990 from donaldsharp/eigrp_cleanup
Eigrp cleanup
2017-08-16 13:16:54 -04:00
David Lamparter
1208e7bca2 Merge pull request #979 from donaldsharp/ifchannel_fix
pimd: Ensure cleanup of S,G on ifchannel failure to create
2017-08-16 19:16:46 +02:00
David Lamparter
ad5c17afcd Merge pull request #972 from chiragshah6/mdev
Pim Bfd related changes
2017-08-16 19:14:08 +02:00
Quentin Young
5ed0add5e4
ospfd: remember area-id format for ifaces
Display dotted quad or decimal back in the config depending on what the
user enters.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-08-16 11:18:11 -04:00
Martin Winter
fb13970d31 Merge pull request #985 from chiragshah6/mdev2
ospfd: Fix ospfd crash in free_nexthop
2017-08-15 20:30:23 -07:00
Donald Sharp
9a8d52a495 eigrpd: Cleanup eigrp_get_fsm_event
Make this function a bit more legible

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 22:38:17 -04:00
Donald Sharp
748a2ba408 eigrpd: Make eigrp_get_fsm_event use metric changed
Refactor eigrp_get_fsm_event a tiny bit to let all
the states get the new metric.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 22:38:17 -04:00
Donald Sharp
9294886309 eigrpd: cleanup eigrp_topology_update_distance
Cleanup eigrp_topology_update_distance to
return an enum of whether or not the metric
has changed or not.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 22:38:17 -04:00
Donald Sharp
47bf9e213a pimd: Add 'show ip msdp vrf all sa ...' command
Allow the ability to iterate over all vrfs.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 16:37:13 -04:00
Donald Sharp
0dac59e943 Merge pull request #983 from opensourcerouting/vtysh-watchfrr-no-conf
vtysh: don't collect config from watchfrr
2017-08-15 11:37:15 -04:00
Quentin Young
001169e172 Merge pull request #982 from opensourcerouting/buildfix-parallel-tests-clippy
tests: fix clippy include paths / double-build
2017-08-15 11:28:37 -04:00
Chirag Shah
cd4af52574 ospfd: Fix ospfd crash in free_nexthop
Fix ANVL-OSPF-5.1 reported ospfd crash.

vertex_nexthop_free was added as valgrind reported potential
memory leak, but in some cases nexthop would not be available
freed.
The actual nexthop free is part of ospf_canonical_nexthops_free(),
upon trying to free, qfree checks mtype count becomes 0 and asserts.
Removing vertex_nexthop_free() from ospf_spf_flush_parents().

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2017-08-15 07:47:08 -07:00
Donald Sharp
15507b63e6 pimd: Rename duplicate JSON key
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 10:31:09 -04:00
Donald Sharp
8dbdb215b3 pimd: Add more vrf debugging to pim_upstream.c
Cleanup a few missed spots of debugging to know
what vrf we are talking about.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 10:17:33 -04:00
Donald Sharp
2243bb17bd pimd: Allow user to specify ip address for 'no ip pim use-source'
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-08-15 10:16:51 -04:00
David Lamparter
0ed9196b0c redhat: ship IRDP module
No point in configuring IRDP (it's always available on Linux), just ship
the module and let the user decide whether to enable it by way of module
loading.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-15 14:19:16 +02:00
David Lamparter
a23587faac vtysh: don't collect config from watchfrr
This results in some hardcoded watchfrr logging config ending up in the
integrated config otherwise.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-15 13:43:50 +02:00
David Lamparter
e2799b1d67 Merge pull request #935 from donaldsharp/kernel_metric
zebra: Pay attention to metric from kernel
2017-08-15 13:42:04 +02:00