mirror_frr/bgpd/rfapi
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
..
bgp_rfapi_cfg.c treewide: fix some issues found with -Werror=undef 2020-03-10 16:53:13 +01:00
bgp_rfapi_cfg.h bgpd, ripngd: Convert to using new agg_table/route 2018-08-30 17:47:59 -04:00
rfapi_ap.c bgpd, isisd, lib: Make key values const for skiplist 2020-03-24 07:33:13 -04:00
rfapi_ap.h *: reindent 2017-07-17 14:04:07 +02:00
rfapi_backend.h bgpd: Rework code to use const struct prefix 2020-03-24 07:51:41 -04:00
rfapi_descriptor_rfp_utils.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
rfapi_descriptor_rfp_utils.h *: reindent 2017-07-17 14:04:07 +02:00
rfapi_encap_tlv.c *: don't null after XFREE; XFREE does this itself 2020-02-03 11:22:13 -05:00
rfapi_encap_tlv.h *: reindent 2017-07-17 14:04:07 +02:00
rfapi_import.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
rfapi_import.h bgpd: Rework code to use const struct prefix 2020-03-24 07:51:41 -04:00
rfapi_monitor.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
rfapi_monitor.h bgpd, lib, ripngd: Add agg_node_get_prefix 2020-03-24 07:51:41 -04:00
rfapi_nve_addr.c bgpd, isisd, lib: Make key values const for skiplist 2020-03-24 07:33:13 -04:00
rfapi_nve_addr.h bgpd, isisd, lib: Make key values const for skiplist 2020-03-24 07:33:13 -04:00
rfapi_private.h bgpd, lib, ripngd: Add agg_node_get_prefix 2020-03-24 07:51:41 -04:00
rfapi_rib.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
rfapi_rib.h bgpd, isisd, lib: Make key values const for skiplist 2020-03-24 07:33:13 -04:00
rfapi_vty.c lib: rewrite zlog lock-free & TLS-buffered 2020-04-01 06:53:26 +02:00
rfapi_vty.h bgpd, lib, ripngd: Add agg_node_get_prefix 2020-03-24 07:51:41 -04:00
rfapi.c bgpd: Rework code to use const struct prefix 2020-03-24 07:51:41 -04:00
rfapi.h rfapi: explicitly test against success of is_configured. 2017-10-09 11:21:03 -04:00
vnc_debug.c *: generously apply const 2019-12-02 15:01:29 +01:00
vnc_debug.h *: reindent 2017-07-17 14:04:07 +02:00
vnc_export_bgp_p.h bgpd: Rework code to use const struct prefix 2020-03-24 07:51:41 -04:00
vnc_export_bgp.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
vnc_export_bgp.h *: reindent 2017-07-17 14:04:07 +02:00
vnc_export_table.c lib, bgpd: Another round of struct const prefix cleanup 2020-03-26 16:22:00 -04:00
vnc_export_table.h lib, bgpd: Another round of struct const prefix cleanup 2020-03-26 16:22:00 -04:00
vnc_import_bgp_p.h bgpd: Rename various variable names to something more appropriate 2018-10-09 14:26:30 -04:00
vnc_import_bgp.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
vnc_import_bgp.h bgpd: Rework code to use const struct prefix 2020-03-24 07:51:41 -04:00
vnc_zebra.c bgpd: Convert users of rn->p to use accessor function 2020-03-26 16:25:16 -04:00
vnc_zebra.h bgpd, ripngd: Convert to using new agg_table/route 2018-08-30 17:47:59 -04:00