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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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]#
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>
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>
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>
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.
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>
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>
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>
This results in some hardcoded watchfrr logging config ending up in the
integrated config otherwise.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>