| Age | Commit message (Collapse) | Author | 
 | 
The Vrf aliases can be known with a specific hook. That hook will then,
from zebra propagate the information to the relevant zapi clients.
The registration hook function is the same for all daemons.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
 | 
 | 
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
 | 
 | 
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
 | 
 | 
* Stop double init of ferr
* Fixup bugs in zebra ferr
* Add missing init in ospfd
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
 | 
 | 
* Use the correct license header
* Stop headers from including themselves
* Use uniform relative include conventions
* Ensure that sources include what they use
* Turn off clang-format around struct array blocks
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
 | 
 | 
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
There is no need to check for failure of a ALLOC call
as that any failure to do so will result in a assert
happening.  So we can safely remove all of this code.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
nhrpd: uninitialized variable (Clang scan)
 | 
 | 
nhrpd: odd operator usage fix (PVS-Studio)
 | 
 | 
Fix over 0a939f4f24fa34fea688482fbf57fb16eaf2a081 (there was a case not
covered by previous fix)
Signed-off-by: F. Aragon <paco@voltanet.io>
 | 
 | 
Signed-off-by: F. Aragon <paco@voltanet.io>
 | 
 | 
Signed-off-by: F. Aragon <paco@voltanet.io>
 | 
 | 
This correction fixes two bugs detected by Clang scan:
Bug Group: Logic error
Bug Type: Assigned value is garbage or undefined
File: nhrpd/vici.c
Function: vici_parse_message
Lines: 100, 105
Signed-off-by: F. Aragon <paco@voltanet.io>
 | 
 | 
Signed-off-by: F. Aragon <paco@voltanet.io>
 | 
 | 
The following types are nonstandard:
- u_char
- u_short
- u_int
- u_long
- u_int8_t
- u_int16_t
- u_int32_t
Replace them with the C99 standard types:
- uint8_t
- unsigned short
- unsigned int
- unsigned long
- uint8_t
- uint16_t
- uint32_t
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
 | 
 | 
Signed-off-by: Lou Berger <lberger@labn.net>
 | 
 | 
The ZEBRA_FLAG_INTERNAL flag is used to signal to zebra that
the route being added, the nexthops for it can be recursively
resolved.  This name keeps throwing me off when I read it
so let's rename to something that allows the developer to
understand what is going on.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
Track the vfrs on a per nexthop basis instead
of on a per route entry basis.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
Modify the code to send and receive to/from zebra
the nexthops vrf_id.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
Allow the higher level protocol to specify if it would
like to receive notifications about it's routes that
it has installed.
I've purposely made it part of zclient_new_notify because
we need to track the routes on a per daemon basis only.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
This improves code readability and also future-proofs our codebase
against new changes in the data structure used to store interfaces.
The FOR_ALL_INTERFACES_ADDRESSES macro was also moved to lib/ but
for now only babeld is using it.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Performance tests showed that, when running on a system with a large
number of interfaces, some daemons would spend a considerable amount
of time in the if_lookup_by_index() function. Introduce a new rb-tree
to solve this problem.
With this change, we need to use the if_set_index() function whenever
we want to change the ifindex of an interface. This is necessary to
ensure that the 'ifaces_by_index' rb-tree is updated accordingly. The
return value of all insert/remove operations in the interface rb-trees
is checked to ensure that an error is logged if a corruption is
detected.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
This is an important optimization for users running FRR on systems with
a large number of interfaces (e.g. thousands of tunnels). Red-black
trees scale much better than sorted linked-lists and also store the
elements in an ordered way (contrary to hash tables).
This is a big patch but the interesting bits are all in lib/if.[ch].
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
 | 
 | 
"pathspace" options, vtysh-suid-cleanups, "vty_frame()"
 | 
 | 
Using the previously-added vty_frame() support, this gets rid of all the
pointless empty "interface XYZ" blocks that get added for any interface
that shows up in the system (e.g. dummys, tunnels, etc.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
FLAG_BLACKHOLE is used for different things in different places. remove
it from the zclient API, instead indicate blackholes as proper nexthops
inside the message.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
Some differences compared to the old API:
* Now the redistributed routes are sent using address-family
  independent messages (ZEBRA_REDISTRIBUTE_ROUTE_ADD and
  ZEBRA_REDISTRIBUTE_ROUTE_DEL). This allows us to unify the ipv4/ipv6
  zclient callbacks in the client daemons and thus remove a lot of
  duplicate code;
* Now zebra sends all nexthops of the redistributed routes to the client
  daemons, not only the first one. This shouldn't have any noticeable
  performance implications and will allow us to remove an ugly exception
  we had for ldpd (which needs to know all nexthops of the redistributed
  routes). The other client daemons can simply ignore the nexthops if
  they want or consult just the first one (e.g. ospfd/ospf6d/ripd/ripngd).
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Pulled from d917882.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
 | 
 | 
Show cmds
 | 
 | 
hook improvements, more hooks, doc example, IRDP cleanup
 | 
 | 
Allow vtysh to query every daemon about its
debugging status in one go.
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>
 | 
 | 
This allows modules to register their own additional hooks on interface
creation/deletion.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
Start creating a counterpart to frr_init and frr_late_init.
Unfortunately, some daemons don't do any exit handling, this doesn't
change that just yet.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
 | 
 | 
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
 | 
 | 
more non-recursive build, fix cross-compile, & doc build mangling
 | 
 | 
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
Correctly reset status or we later assert at nhrp_cache_free().
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
 | 
 | 
nhrpd wasn't registering correctly with zebra for route redistribution.
It wasn't neither parsing the right messages nor parsing them correctly too.
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
 | 
 | 
Interfaces depend logically of VRF, initialize one after another just in
case in the future someone adds something to this functions.
Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
 | 
 | 
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 | 
 | 
The label initializer & nhrpd variable are just to shut up GCC 7,
the other two are actual bugs.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
 |