Commit Graph

136 Commits

Author SHA1 Message Date
rgirada
6f54377b8e ripd,ripngd: Added changes to track route-map usage in rip,ripng
Updated the routemap applied counter wherever  route map
attached/detached  to a redistribution list.

Signed-off-by: RajeshGirada <rgirada@vmware.com>
2019-02-04 05:14:31 -08:00
Ruben Kerkhof
4d762f2607 Treewide: use ANSI function definitions
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
2019-01-24 11:21:59 +01:00
Philippe Guibert
03a38493f8 lib, rip, ripng, babel, eigrp: add ctx pointer to distribute api
a distribute_ctx context pointer is returned after initialisation to the
calling daemon. this context pointer will be further used to do
discussion with distribute service. Today, there is no specific problem
with old api, since the pointer is the same in all the memory process.
but the pointer will be different if we have multiple instances. Right
now, this is not the case, but if that happens, that work will be used
for that.
distribute-list initialisation is split in two. the vty initialisation
is done at global level, while the context initialisation is done for
each routing daemon instance.
babel daemon is being equipped with a routing returning the main babel
instance.
also, a delete routine is available when the daemon routing instance is
suppressed.
a list of contexts is used inside distribute_list. This will permit
distribute_list utility to handle in the same daemon to handle more than
one context. This will be very useful in the vrf context.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-28 18:18:40 +01:00
Renato Westphal
cf6ef36996 ripd, ripngd: fix memleaks when deleting routing instance
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-17 08:19:48 -02:00
Renato Westphal
49e06d25ad ripngd: implement the 'clear-ripng-route' YANG RPC
The "clear ipv6 ripng" command was turned into a YANG RPC so that
other northbound plugins can execute it as well. This RPC closely
matches the 'clear-rip-route' RPC from the ietf-rip module.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
b874133870 ripngd: fix SIGHUP handling
Now that all ripngd commands were converted to the new northbound
model, the ripngd SIGHUP handler is capable of doing a full
configuration reload just by calling the vty_read_config()
function. Nothing else should be done in the SIGHUP handler.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
f8981ec596 ripngd: retrofit the 'timer basic' command to the new northbound model
Trivial conversion. Use the northbound 'apply_finish()' callback
so we'll call ripng_event() only once even if we change the three
RIPng timers at the same time.

Convert the timers to uint16_t to match their representation in
the YANG model.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
6fc2938554 ripngd: retrofit the 'aggregate-address' command to the new northbound model
Trivial conversion. Remove the ripng->aggregate routing table and
associated code because this variable was used only to show the
running configuration.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
521d1b1283 ripngd: retrofit the 'route' command to the new northbound model
Trivial conversion. Remove the ripng->route routing table and
associated code because this variable was used only to show the
running configuration.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
db2038c782 ripngd: retrofit the 'redistribute' commands to the new northbound model
Trivial conversion. As usual, combine multiple DEFUNs into a single
DEFPY for simplicity.

As a bonus of the northbound conversion, this commit fixes the
redistribution of certain protocols into ripngd. The 'redist_type'
array used by the "redistribute" commands was terribly outdated,
which was preventing the CLI to parse correctly certain protocols
like isis and babel.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
22e8c7ae64 ripngd: retrofit the 'passive-interface' command to the new northbound model
Trivial conversion.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
b09956ca51 ripngd: retrofit the 'offset-list' command to the new northbound model
Remove the ripng_offset_list_set() and ripng_offset_list_unset()
functions since they set/unset multiple configuration options at the
same time. The northbound callbacks need to set/unset configuration
options individually.

The frr-ripngd YANG module models the "offset-list" command using a
list keyed by the 'interface' and 'direction' leafs. One important
detail is that the IFNAME parameter is optional, and when it's not
present it means we want to match all interfaces. This is modeled
using an interface name of '*' since list keys are mandatory leafs
by definition in YANG.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
cc48702b20 ripngd: retrofit the 'network' command to the new northbound model
The frr-ripngd YANG module models the ripngd "network" command
using two separate leaf-lists for simplicity: one leaf-list
for interfaces and another leaf-list for actual networks. In the
'cli_show' callbacks, display the "network" command for entries of
both leaf-lists.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
ad8778c05e ripngd: retrofit the 'default-metric' command to the new northbound model
Trivial conversion. ripng->default_metric was converted to an
uint8_t to match the way it's defined in the YANG module.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
54b565627a ripngd: retrofit the 'default-information' command to the new northbound model
Trivial conversion. 'ripng->default_information' was removed because
it was being used only to display the running configuration and
thus is not necessary anymore.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
1e42a07ce9 ripngd: retrofit the 'allow-ecmp' command to the new northbound model
Trivial conversion. The ripng->ecmp variable was converted to a boolean
to match the way it's defined in the YANG module.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
Renato Westphal
9a12e9e5ed ripngd: retrofit the 'router ripng' command to the new northbound model
* Implement the northbound callbacks associated to the
  '/frr-ripngd:ripngd/instance' YANG path (the code is mostly a copy
  and paste from the original "router ripng" DEFUNs);
* Move ripng_make_socket() out of ripng_create() since creating a
  socket is an error-prone operation and thus needs to be performed
  separately during the NB_EV_PREPARE phase;
* On ripng_create(), fetch the defaults from the frr-ripngd YANG
  model;
* Convert the "[no] router ripng" CLI commands to be dumb wrappers
  around the northbound callbacks;
* On ripng_config_write(), write logic to call all 'cli_show'
  northbound callbacks defined under the '/frr-ripngd:ripngd/instance'
  YANG path.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-03 13:47:58 -02:00
David Lamparter
0437e10517 *: spelchek
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-10-25 20:10:57 +02:00
David Lamparter
6a154c8812 *: list_delete_and_null() -> list_delete()
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-10-02 11:40:52 +02:00
Quentin Young
1c50c1c0d6 *: style for EC replacements
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-13 19:38:57 +00:00
Quentin Young
450971aa99 *: LIB_[ERR|WARN] -> EC_LIB
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-13 19:34:28 +00:00
F. Aragon
dc7204b775
pimd ripd ripngd: variable shadowing fixes
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-09-12 12:55:31 +02:00
Donald Sharp
fe08ba7e11 bgpd, ripngd: Convert to using new agg_table/route
Switch bgp and ripngd to use the new aggregate table and
route data structures.  This was mainly a search and replace
operation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-30 17:47:59 -04:00
David Lamparter
55d3dad27c
Merge pull request #2448 from qlyoung/error-reference-cards
Error Reference Cards
2018-08-16 16:39:40 +02:00
Donald Sharp
adf0e7c6d7 lib, ripngd, zebra: Remove pre-solaris 9 special cased code
The CMSG_FIRSTHDR was broken on solaris pre version 9.  Version 9
was released in May of 2002 and EOL'ed in 2014.  Version 8 EOL'ed
in 2012.  Remove special case code for a little used platform
that has not seen the light of day in a very long time.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-15 15:06:53 -04:00
David Lamparter
633fc9b133 *: frr_elevate_privs whitespace fixes
(... and one superfluous variable removed)

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-14 20:02:05 +00:00
David Lamparter
01b9e3fd0d *: use frr_elevate_privs() (1/2: coccinelle)
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-14 20:02:05 +00:00
Quentin Young
09c866e34d *: rename ferr_zlog -> flog_err_sys
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
af4c27286d *: rename zlog_fer -> flog_err
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Donald Sharp
7f9a4fd701 ripngd: Convert over to using LIB_ERR_XXXX for zlog_ferr
Convert over those zlog_err functions to zlog_ferr that
are appropriate for the LIB_ERR_XXX.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
F. Aragon
b575a12c87
bgpd lib ospfd pimd ripngd: null chk (PVS-Studio)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-03 15:39:50 +02:00
Quentin Young
d7c0a89a3a
*: use C99 standard fixed-width integer types
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>
2018-03-27 15:13:34 -04: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
Donald Sharp
5cb6ce9c67 ripngd: Make 'struct zebra_privs_t' available
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-23 18:09:23 -04:00
Donald Sharp
5b8d8894f8 Merge pull request #1298 from opensourcerouting/iface-rb-tree
Use rb-trees to store interfaces instead of linked-lists
2017-10-16 12:00:38 -04:00
Donald Sharp
3e7a965235 ripngd: Fix possible memory leak of route_node
There exists a path where we do not save the route_node
after creation.  Allow cleanup.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:35:16 -04:00
Renato Westphal
451fda4f9a *: use the FOR_ALL_INTERFACES abstraction from babeld
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>
2017-10-10 09:05:46 -03:00
Renato Westphal
f4e14fdba7 *: use rb-trees to store interfaces instead of sorted linked-lists
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>
2017-10-10 09:05:02 -03:00
Vincent JARDIN
51f7fe8459 ripngd: fix clang warning
this value len is not used for this vty_out() case.

Signed-off-by: Vincent Jardin <vincent.jardin@6wind.com>
2017-10-08 23:40:36 +02:00
Donald Sharp
acdf5e2510 *: Convert list_free usage to list_delete
list_free is occassionally being used to delete the
list and accidently not deleting all the nodes.
We keep running across this usage pattern.  Let's
remove the temptation and only allow list_delete
to handle list deletion.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-05 10:53:17 -04:00
Donald Sharp
affe9e9983 *: Convert list_delete(struct list *) to ** to allow nulling
Convert the list_delete(struct list *) function to use
struct list **.  This is to allow the list pointer to be nulled.

I keep running into uses of this list_delete function where we
forget to set the returned pointer to NULL and attempt to use
it and then experience a crash, usually after the developer
has long since left the building.

Let's make the api explicit in it setting the list pointer
to null.

Cynical Prediction:  This code will expose a attempt
to use the NULL'ed list pointer in some obscure bit
of code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-05 10:53:13 -04:00
Renato Westphal
8941a38520 Merge pull request #1078 from dwalton76/ospfd-network-cmd-warning
*: return CMD_WARNING if command was already configured
2017-08-31 13:23:25 -03:00
Daniel Walton
851fcbaebe *: return CMD_WARNING if command was already configured
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

If the user configures some command that is already in the config we
should return CMD_WARNING instead of CMD_WARNING_CONFIG_FAILED
2017-08-31 15:14:01 +00:00
Renato Westphal
0af35d90a1 *: fix assorted issues detected by Coverity Scan
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-08-24 21:49:39 -03:00
David Lamparter
9d303b37d7 Revert "*: reindent pt. 2"
This reverts commit c14777c6bf.

clang 5 is not widely available enough for people to indent with.  This
is particularly problematic when rebasing/adjusting branches.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-22 14:52:33 +02:00
whitespace / reindent
c14777c6bf
*: reindent pt. 2
w/ clang 5

* reflow comments
* struct members go 1 per line
* binpack algo was adjusted
2017-07-17 15:26:02 -04:00
whitespace / reindent
d62a17aede *: reindent
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-17 14:04:07 +02:00
David Lamparter
2d8270596a Merge remote-tracking branch 'frr/master' into newline-redux
Lots of conflicts from CMD_WARNING_CONFIG_FAILED...

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-14 13:07:30 +02:00
David Lamparter
625e016d14 *: remove VTYNL, part 6 of 6
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-14 10:20:03 +02:00
David Lamparter
55f70b671f *: remove VTYNL, part 4 of 6
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-14 10:20:03 +02:00