Commit Graph

3678 Commits

Author SHA1 Message Date
Quentin Young
1120b9596a lib: don't use strcpy
>:(

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-17 20:05:34 -04:00
Rafael Zalamena
5920b3eb38 *: replace all random() calls
Replace all `random()` calls with a function called `frr_weak_random()`
and make it clear that it is only supposed to be used for weak random
applications.

Use the annotation described by the Coverity Scan documentation to
ignore `random()` call warnings.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-04-17 20:57:43 -03:00
Mark Stapp
193848fff6 lib: clear data pointer in bf_free
Help avoid double-free by clearing data pointer.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-04-17 16:53:37 -04:00
Donald Sharp
50cf5243c1 lib: prefix must be a valid pointer at this point
Coverity does not understand how our CLI works.  Make it
happy that we have tested it's existence

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-04-16 20:17:22 -04:00
Donald Sharp
a83014ccd6
Merge pull request #6247 from FRRouting/nb_conversions
Merge nb_converions branch to master
2020-04-16 19:39:14 -04:00
Donald Sharp
2ff99507ad
Merge pull request #6135 from opensourcerouting/cli-node-cleanup
*: clean up the mess that is CLI command nodes
2020-04-16 19:24:56 -04:00
Quentin Young
edf7eff077
Merge pull request #6239 from ton31337/fix/uint8_t_to_bool_for_any
bgpd, lib: Use bool instead of uint8_t for community/prefix-list "any"
2020-04-16 15:40:03 -04:00
Quentin Young
40664f16e3 lib: suppress formatting on yang.c module array
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-16 15:38:11 -04:00
Olivier Dugeon
c2c3db58a4
Merge pull request #6224 from mjstapp/zclient_session_id
lib,zebra: add a session id for zapi sessions
2020-04-16 21:12:30 +02:00
Quentin Young
bec74cc8a3 lib: fix style nit in yang_wrappers.c
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-16 15:10:19 -04:00
Mark Stapp
4e0b5b31b7 lib,zebra: add a session id for zapi sessions
Distinguish zapi sessions, for daemons who use more than one,
by adding a session id. The tuple of proto + instance is not
adequate to support clients who use multiple zapi sessions.
Include the id in the client show output if it's present. Add
a bit of info about this to the developer doc.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-04-16 12:07:54 -04:00
Chirag Shah
8f86689091 lib: increase xpath maxlen
Certain xpath are well 256 characters, increasing
to 512.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:51:41 -07:00
Chirag Shah
83ed00f1df lib: remove gcc 4.x workaround for nb structure
Remove gcc 4.x workaround for variable size array as gcc
check moved to header file.

In lib/northbound.h : struct frr_yang_module_info made
size 1000 for gcc 4.x, where maximum 1000 nodes can fit.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:48:57 -07:00
Chirag Shah
4e0a7355c2 lib: add interface operational northbound callback
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:26:36 -07:00
Chirag Shah
b0f502c521 yang: add ietf interface yang model
Add ietf interface yant model.
Also include it in the makefile.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:26:36 -07:00
Sarita Patra
7fd139b523 yang: igmp yang definition
Defined frr-igmp.yang file for IGMP protocol.

Co-authored-by: Sarita Patra <saritap@vmware.com>
Co-authored-by: Santosh P K <sapk@vmware.com>

Signed-off-by: Sarita Patra <saritap@vmware.com>
2020-04-16 08:26:29 -07:00
Chirag Shah
cad46cfdc9 lib: yang wrapper nexthop type to str
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:24:02 -07:00
Chirag Shah
b71df6891c lib: add yang wrapper for type empty
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:18:00 -07:00
Chirag Shah
dd9ef518bf lib:api to convert mac to yang object
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:13:15 -07:00
Chirag Shah
0d2e2bd138 yang: add zebra model in makefile
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:11:51 -07:00
Chirag Shah
e7ecd0a657 *: frr nexthop yang in makefile
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:09:11 -07:00
Chirag Shah
8b4cb7a64b lib: convert vrf cmd to northbound config callback
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:00:18 -07:00
Chirag Shah
bc867a5d30 lib: vrf northbound callbacks
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 07:55:56 -07:00
vdhingra
8b04316627 lib: yang defination for basic frr-routing
Yang files for basic frr-routing used by other
daemons like staticd and pim

Co-authored-by: Santosh P K <sapk@vmware.com>
Co-authored-by: vishaldhingra <vdhingra@vmware.com>
Signed-off-by: vishaldhingra <vdhingra@vmware.com>
2020-04-16 07:55:53 -07:00
Santosh P K
09133ff4f7
Merge pull request #5451 from opensourcerouting/rcu-log
logging subsystem rewrite
2020-04-16 20:23:44 +05:30
Chirag Shah
3a7262b6a9 *: add frr-vrf yang module in makefile
lib: Adding frr-vrf yang module to common place
so it can be accessed from all frr modules.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 07:49:06 -07:00
Donatas Abraitis
d3f6c580a8 bgpd, lib: Use bool instead of uint8_t for community/prefix-list "any"
That's only 0/1, useful to use just a bool for that.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-04-16 15:27:51 +03:00
David Lamparter
d1b221f696 lib: #define FRR_CMD_NODE_20200416
... requested by Lou.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-04-16 12:55:59 +02:00
David Lamparter
791ded4a62 *: add ->node_exit to struct cmd_node
Rather than doing a f*gly hack for the RPKI code, let's do an on-exit
hook in cmd_node.  Also allows replacing some special-casing in the vty
code.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:54:03 +02:00
David Lamparter
893d8beb4d zebra: fix FPM node reusing VTY_NODE
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-04-16 12:54:03 +02:00
David Lamparter
f4b8291fcb *: move CLI node names to cmd_node->name
And again for the name.  Why on earth would we centralize this, just so
people can forget to update it?

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:59 +02:00
David Lamparter
243895805a *: move CLI parent data to cmd_node->parent_node
Same as before, instead of shoving this into a big central list we can
just put the parent node in cmd_node.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
612c2c15d8 *: remove second parameter on install_node()
There is really no reason to not put this in the cmd_node.

And while we're add it, rename from pointless ".func" to ".config_write".

[v2: fix forgotten ldpd config_write]

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
249a771b63 *: remove cmd_node->vtysh
The only nodes that have this as 0 don't have a "->func" anyway, so the
entire thing is really just pointless.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
62b346eefa *: clean up cmd_node initializers
... and use named assignments everywhere (so I can change the struct.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
Mark Stapp
f3f054c701
Merge pull request #5510 from opensourcerouting/dplane-fpm-netlink
zebra: netlink FPM interface using zebra data plane
2020-04-14 16:40:05 -04:00
Donald Sharp
b9ba7ed533
Merge pull request #5812 from pguibert6WIND/bgp_stats_all
Bgp stats all
2020-04-14 14:36:21 -04:00
Rafael Zalamena
f2a0ba3a50 zebra: data plane FPM add support RMAC VNI
Store VNI information in the data plane context so we can use it to
build the FPM netlink update with that information later.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-04-14 13:45:39 -03:00
Donatas Abraitis
0b60953ed4
Merge pull request #6221 from opensourcerouting/defaults-fix-version-cmp
lib/defaults: fix version number comparison
2020-04-14 16:01:21 +03:00
David Lamparter
d29c01db81 lib/defaults: don't use "static" in a weird way
This didn't break anything but it's not really correct either.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-04-14 13:25:25 +02:00
David Lamparter
7b8c2b3d66 lib/defaults: more bool confusion
Sigh.  Initializing a bool to -1 gives 1.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-04-14 13:25:25 +02:00
David Lamparter
feaabe472d
Merge pull request #5988 from xThaid/zebra_vrf_logs
zebra: Add vrf name and id to debugs
2020-04-14 12:52:31 +02:00
Quentin Young
cff0de128d lib: fix SA warning in vrf creation zapi handler
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 17:03:48 -04:00
Quentin Young
41ce53847b lib: fix if_set_value
Something in there is wrong and causing test failures. Moving it back to
how it was; we'll stil assert if the message was wrong, just in a
different place now.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 17:03:48 -04:00
Quentin Young
f7d4592509 lib: work around enum issue in old gcc
I'd like to keep the explicit check here, but since underlying type of
enum is implementation defined, theres some inconsistency using -Wall
-Werror in older compilers here

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 17:03:42 -04:00
Quentin Young
e4f5680d6e lib: re-add accidentally deleted pfx family set
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
6063ede092 lib: improve sanity check on vrf backend value
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
67f8158620 lib: handle failure to change ifindex
This fixes a theoretical bug that could occur when trying to change an
ifindex on an interface to that of an existing interface. We would
remove the interface from the ifindex tree, and change the ifindex, but
when we tried to reinsert the interface, the insert would fail. It was
impossible to know if this failed due to the insertion / deletion macros
capturing the result value of the underlying BSD tree macros. So we
would effectively delete the interface.

Instead of failing on insert, we just check if the prospective ifindex
already exists and return -1 if it does.

Macros have been changed to statement expressions so the result can be
checked, and bubbled up.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
f17a9d0a07 lib: more zclient fixes; str termination, vrfs...
* Don't crash if we get a request to create an existing VRF
* Ensure interface & vrf names are null terminated...again

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
229d0d4edc lib: don't crash on iface add for unknown vrf
If Zebra sends us an interface add notification with a garbage VRF we
crash on an assert(vrf_get(vrf_id, NULL)); let's not

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
b98edbccf8 lib: ensure iface name is null terminated
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
7239d3d9e6 lib: handle bogus VRF backend type
And use an enum...

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
efc7191bbe lib: make all zclient.[ch] stream funcs safe
Use STREAM_GET* variants of stream getters, which all have non-assert
error paths.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
c2b5a4e5ff lib: add STREAM_GETQ, STREAM_GETF
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Quentin Young
3b55aba195 lib: remove unnecessary null checks
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-13 13:25:25 -04:00
Jakub Urbańczyk
bd47f3a3b4 zebra: Add vrf name and id to debugs
In some places we log the interface but not the vfr the
interface is in. In others we only output the vrf id, which
can be difficult for human to read. This commit makes zebra
debugs more vrf aware.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-04-12 21:03:29 +02:00
Donatas Abraitis
c4efd0f423 *: Do not cast to the same type
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-04-08 17:15:06 +03:00
Mark Stapp
4fda105e44 lib: support replacement in the nexthop-group cli
Use more limited matching logic so that nexthops within a
nexthop-group are unique based only on vrf, type, and gateway.
Treat configuration of a nexthop that matches an existing
nexthop as a replace operation.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-04-07 09:31:32 -04:00
Renato Westphal
dc397e4c0a lib: consolidate flexible array hack in a single place
Old gcc versions (< 5.x) have a bug that prevents C99 flexible
arrays from working properly on shared libraries.

We already have a hack in place to work around this problem, but it
needs to be replicated in every declaration of a frr_yang_module_info
variable within libfrr. This clearly isn't a good solution if we
consider that many more libfrr YANG modules are about to come in
the future.

This commit introduces a different workaround that operates within
the northbound layer itself, such that implementers of libfrr YANG
modules won't need to worry about this problem anymore.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-04-03 22:34:55 -03:00
Renato Westphal
b90204a8e9 lib, tools: silence harmless warnings in the northbound tools
Our two northbound tools don't have embedded YANG modules like the
other FRR binaries. As such, ly_ctx_set_module_imp_clb() shouldn't be
called when the YANG subsystem it being initialized by a northbound
tool. To make that possible, add a new "embedded_modules" parameter
to the yang_init() function to control whether libyang should look
for embedded modules or not.

With this fix, "gen_northbound_callbacks" and "gen_yang_deviations"
won't emit "YANG model X not embedded, trying external file"
warnings anymore.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-04-03 22:34:55 -03:00
David Lamparter
8d0a2918e8 lib/hook: use static hook entry when possible
hook_register() invocations generally are in some initialization
function and not looped over or similar.  We can use a static struct
hookent variable for the hook list entry in 99.999% of cases, so let's
do that and not malloc() memory.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-01 06:53:26 +02:00
David Lamparter
1c4086281f lib/log: re-add log filtering
This is most of the old code bolted on top of the new "backend"
infrastructure.  It just wraps around zlog_fd() with the string search.

Originally-by: Stephen Worley <sworley@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-01 06:53:26 +02:00
David Lamparter
767439c558 lib: mark some allocations as "active at exit"
In some cases we really don't want to clean up things even when exiting
(i.e. to keep the logging subsystem going.)  This adds a flag on MGROUPs
to indicate that.

[v2: add "(active at exit)" marker text to debug memstats-at-exit]
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-01 06:53:26 +02:00
David Lamparter
0bdeb5e58d lib: rewrite zlog lock-free & TLS-buffered
This is a full rewrite of the "back end" logging code.  It now uses a
lock-free list to iterate over logging targets, and the targets
themselves are as lock-free as possible.  (syslog() may have a hidden
internal mutex in the C library;  the file/fd targets use a single
write() call which should ensure atomicity kernel-side.)

Note that some functionality is lost in this patch:
- Solaris printstack() backtraces are ditched (unlikely to come back)
- the `log-filter` machinery is gone (re-added in followup commit)
- `terminal monitor` is temporarily stubbed out.  The old code had a
  race condition with VTYs going away.  It'll likely come back rewritten
  and with vtysh support.
- The `zebra_ext_log` hook is gone.  Instead, it's now much easier to
  add a "proper" logging target.

v2: TLS buffer to get some actual performance

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-01 06:53:26 +02:00
Quentin Young
e0bf2057b4
Merge pull request #5183 from opensourcerouting/zebra-route-map-nb
yang/zebra: migrate route map to northbound
2020-03-31 14:21:20 -04:00
David Lamparter
83b27fdaab
Merge pull request #6093 from LabNConsulting/working/lb/no-birds
*: use the current project name (FRRouting)
2020-03-31 15:10:17 +02:00
Philippe Guibert
799cc00286 lib: add json api to encode double values
this api can be used to encode double values.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-03-31 14:38:15 +02:00
Quentin Young
20b0a2ed3e lib: defer grpc plugin initialization to post fork
When using the GRPC northbound plugin, initialization occurs at the
frr_late_init hook. This is called before fork() when daemonizing (using
-d). Because the GRPC library internally creates threads, this means our
threads go away in the child process, so GRPC doesn't work when used
with -d. Rectify this situation by deferring plugin init to after fork
by scheduling a task on the threadmaster, since those are executed by
the child.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-03-30 14:28:10 -04:00
Stephen Worley
ff82bbbb91
Merge pull request #5901 from mjstapp/backup_nh_prep
zebra, lib: Backup nexthop (path) prep work
2020-03-30 10:26:17 -04:00
David Lamparter
fb84c629b8 tests: use printfrr-based printf()
Just a small hack to use printfrr() in tests, since otherwise the
redefined PRId64 trips some warnings.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-03-29 10:45:46 +02:00
David Lamparter
566bdaf68c *: fix format string warnings
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-03-29 10:45:46 +02:00
David Lamparter
07ef3e34ae lib: prepare for plugin-based frr_format check
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-03-29 10:45:46 +02:00
David Lamparter
47466c571f
Merge pull request #6101 from sarav511/vty_crash
vtysh: Crash during show running-config
2020-03-29 06:08:29 +02:00
Mark Stapp
1df3b1dc65 sharpd: support backup nexthops
Add cli and zapi support for backup nexthops for sharpd routes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-27 09:39:14 -04:00
Mark Stapp
0a8881b4b5 lib: support backup nexthops in nexthop-groups and zapi
Add vty support for backup nexthops in nexthop groups. Capture
backup nexthop info in zapi route messages.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-27 09:39:14 -04:00
Mark Stapp
018c648864 lib: add backup nexthops to zapi routes
Add backup nexthop info to zapi route messages.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-27 09:37:02 -04:00
Mark Stapp
defd2ea4a1 lib: add backup-nexthop value to nexthop
Add a field supporting a backup nexthop.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-27 09:37:02 -04:00
Mark Stapp
e4a1ec7454 zebra,lib: use const in more apis
Use const with some args to ipaddr, zebra vxlan, mpls
lsp, and nexthop apis; add some extra checks to some
nexthop-related apis.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-27 09:37:02 -04:00
Sri Mohana Singamsetty
0298bb01bb
Merge pull request #6085 from donaldsharp/bgp_node_get_prefix
Bgp node get prefix
2020-03-26 19:07:36 -07:00
saravanank
9934e1c9b8 vtysh: Crash during show running-config
RCA:
when client is killed, show running-config command crashes vtysh.
vtysh_client_config function temporarily makes vty->of which is standard output file
pointer to null inorder to suppress output to user.
This call further tries to communicate with each client and when the client
is terminated, socket call fails and hits the exception path to print the
connection has failed using vty_out.
vty_out crashes because vtysh_client_config has temporarily made vty->of
pointer to NULL to supress o/p to user.

Fix:
vty_out function should check for the sanity of vty->of pointer.
If it doesn't exist, this must have hit exception path, so use the
vty->saved_of if exists.

Signed-off-by: Saravanan K <saravanank@vmware.com>
2020-03-26 17:36:37 -07:00
Renato Westphal
4e9d40b8a1
Merge pull request #5925 from volta-networks/synchronous_client
zebra: synchronous client queues accumulate messages from zebra
2020-03-26 17:32:37 -03:00
Donald Sharp
5f040085ba lib, bgpd: Another round of struct const prefix cleanup
Cleanup another set of functions that need to respect the
const'ness of a prefix.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-26 16:22:00 -04:00
Donald Sharp
4ce217af91 lib: make oid_copy_addr respect my constness
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-26 16:22:00 -04:00
Lou Berger
8678d6387c *: use the current project name (FRRouting)
Signed-off-by: Lou Berger <lberger@labn.net>
2020-03-25 17:38:56 -04:00
Donald Sharp
42984e1bd4
Merge pull request #6087 from opensourcerouting/log-kill-tabs
*: remove tabs and linefeeds from log messages
2020-03-25 06:30:38 -04:00
David Lamparter
46171e257c lib: rewrite zlog_hexdump()
The old version was creating a multi-line log message, which we can't
properly handle right now.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-03-24 19:43:18 +01:00
Santosh P K
aa50bf0618
Merge pull request #6035 from qlyoung/fix-nexthop-label-nullity-before-free
lib: remove null check before free nh_labels
2020-03-24 21:29:06 +05:30
Rafael Zalamena
f42cc96552 lib: show zebra route map configuration in tcli
Adapt the zebra route map code to use the transaction CLI output (e.g.
the CLI show callbacks) instead of the fallback compatibility.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-03-24 10:16:15 -03:00
Donald Sharp
26a3ffd60e bgpd, lib, ripngd: Add agg_node_get_prefix
Modify code to use lookup function agg_node_get_prefix()
as the abstraction layer.  When we rework bgp_node to
bgp_dest this will allow us to greatly limit the amount
of work needed to do that.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-24 07:51:41 -04:00
Donald Sharp
1a4189d4a1 bgpd, isisd, lib: Make key values const for skiplist
Make some key values const for the skiplist code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-24 07:33:13 -04:00
Sri Mohana Singamsetty
865a8f8611
Merge pull request #6073 from donaldsharp/is_default
More `const struct prefix` work
2020-03-23 10:54:33 -07:00
Karen Schoener
17da84a49d zebra: Synchronous client queues accumulate messages from zebra.
Zebra is currently sending messages on interface add/delete/update,
VRF add/delete, and interface address change - regardless of whether
its clients had requested them.  This is problematic for lde and isis,
which only listens to label chunk messages, and only when it is
waiting for one (synchronous client). The effect is the that messages
accumulate on the lde synchronous message queue.

With this change:
  - Zebra does not send unsolicited messages to synchronous clients.
  - Synchronous clients send a ZEBRA_HELLO to zebra.
    The ZEBRA_HELLO contains a new boolean field: sychronous.
  - LDP and PIM have been updated to send a ZEBRA_HELLO for their
    synchronous clients.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-03-23 09:17:17 -04:00
Donald Sharp
1be1693edf bgpd, lib: More constification of various code
More second order effects of cleaning up rn usage
in bgp.  Sprinkle the fairy const's all over the place.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-23 08:41:17 -04:00
Donald Sharp
46f56dadd4 lib: Modify zclient_send_rnh to use const struct prefix
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-22 18:38:56 -04:00
Donald Sharp
35518f5419 lib: make is_default_host_route use a const struct prefix
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-22 17:14:32 -04:00
Donald Sharp
8150a500bc lib: Modify agg_XX calls to use const struct prefix
Tell the compiler that the prefix is being used for lookups
and it will never change.

Setup for future work.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-21 21:44:48 -04:00
Donald Sharp
d1ba1814bc lib: Ensure pointer exists before using in mlag
Ensure that the s pointer is valid and usable before
grabbing data off of it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-20 18:17:40 -04:00
Sri Mohana Singamsetty
c133ddca17
Merge pull request #5977 from rubenk/treewide-add-noreturn
treewide: add attribute to functions that do not return
2020-03-20 14:55:49 -07:00
David Lamparter
4e8ea9ede9
Merge pull request #6033 from rubenk/lib-do-not-use-aliased-inet-ntop-on-apple
lib: cannot use aliased function on Darwin
2020-03-20 20:52:28 +01:00
Stephen Worley
a0c5e446a6 lib: include any mem ever allocd in show memory
Include memory types that were ever allocated when doing
a `show memory`.

Before, we were only including memory that existed currently
in the system, so we lost memory that was alloc'd/dealloc'd.

With this patch, we check max number rather than current number.

Ex) dataplane context objects

Old:
==============================================================================
Type                          : Current#   Size       Total     Max#  MaxBytes
--- qmem zebra ---
Type                          : Current#   Size       Total     Max#  MaxBytes
Zebra Interface Information   :       48    360       17280       48     17280
Router Advertisement Prefix   :        3     48         168        3       168
Route Entry                   :      128     80       11264      128     11264
RIB destination               :       64     88        5632       64      5632
Zebra DPlane Provider         :        1    232         232        1       232
Nexthop Group Entry           :       78     80        6928      114     10032
Nexthop Group Connected       :       78     40        3168      114      4560
Zebra Name Space              :       13 variable      1000       13      1000
RIB table info                :       12     16         288       12       288
ZEBRA VRF                     :        3   4744       14232        3     14232

New:
==============================================================================
Type                          : Current#   Size       Total     Max#  MaxBytes
--- qmem zebra ---
Type                          : Current#   Size       Total     Max#  MaxBytes
Zebra Interface Information   :       48    360       17280       48     17280
Router Advertisement Prefix   :        3     48         168        3       168
Route Entry                   :      128     80       11264      128     11264
RIB destination               :       64     88        5632       64      5632
Zebra DPlane Ctx              :        0   2424           0       87    210888
Zebra DPlane Provider         :        1    232         232        1       232
Nexthop Group Entry           :       78     80        6928      114     10032
Nexthop Group Connected       :       78     40        3168      114      4560
Zebra Name Space              :       13 variable      1000       13      1000
RIB table info                :       12     16         288       12       288
ZEBRA VRF                     :        3   4744       14232        3     14232

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-03-20 10:36:18 -04:00