Line | Count | Source |
1 | | // SPDX-License-Identifier: ISC |
2 | | /* |
3 | | * Copyright (c) 2015-19 David Lamparter, for NetDEF, Inc. |
4 | | */ |
5 | | |
6 | | #ifndef _FRR_ZLOG_H |
7 | | #define _FRR_ZLOG_H |
8 | | |
9 | | #include <stdarg.h> |
10 | | #include <stdbool.h> |
11 | | #include <stdint.h> |
12 | | #include <string.h> |
13 | | #include <syslog.h> |
14 | | #include <unistd.h> |
15 | | #include <sys/uio.h> |
16 | | |
17 | | #include <assert.h> |
18 | | |
19 | | #include "atomlist.h" |
20 | | #include "frrcu.h" |
21 | | #include "memory.h" |
22 | | #include "hook.h" |
23 | | #include "printfrr.h" |
24 | | |
25 | | #ifdef __cplusplus |
26 | | extern "C" { |
27 | | #endif |
28 | | |
29 | | DECLARE_MGROUP(LOG); |
30 | | |
31 | | extern char zlog_prefix[]; |
32 | | extern size_t zlog_prefixsz; |
33 | | extern int zlog_tmpdirfd; |
34 | | extern int zlog_instance; |
35 | | extern const char *zlog_progname; |
36 | | |
37 | | struct xref_logmsg { |
38 | | struct xref xref; |
39 | | |
40 | | const char *fmtstring; |
41 | | uint32_t priority; |
42 | | uint32_t ec; |
43 | | const char *args; |
44 | | }; |
45 | | |
46 | | /* whether flag was added in config mode or enable mode */ |
47 | 0 | #define LOGMSG_FLAG_EPHEMERAL (1 << 0) |
48 | 0 | #define LOGMSG_FLAG_PERSISTENT (1 << 1) |
49 | | |
50 | | struct xrefdata_logmsg { |
51 | | struct xrefdata xrefdata; |
52 | | |
53 | | uint8_t fl_print_bt; |
54 | | }; |
55 | | |
56 | | /* These functions are set up to write to stdout/stderr without explicit |
57 | | * initialization and/or before config load. There is no need to call e.g. |
58 | | * fprintf(stderr, ...) just because it's "too early" at startup. Depending |
59 | | * on context, it may still be the right thing to use fprintf though -- try to |
60 | | * determine whether something is a log message or something else. |
61 | | */ |
62 | | |
63 | | extern void vzlogx(const struct xref_logmsg *xref, int prio, const char *fmt, |
64 | | va_list ap) PRINTFRR(3, 0); |
65 | 1.38k | #define vzlog(prio, ...) vzlogx(NULL, prio, __VA_ARGS__) |
66 | | |
67 | | PRINTFRR(2, 3) |
68 | | static inline void zlog(int prio, const char *fmt, ...) |
69 | 1.38k | { |
70 | 1.38k | va_list ap; |
71 | | |
72 | 1.38k | va_start(ap, fmt); |
73 | 1.38k | vzlog(prio, fmt, ap); |
74 | 1.38k | va_end(ap); |
75 | 1.38k | } Unexecuted instantiation: ospf_main.c:zlog Unexecuted instantiation: frr-ospf-route-map.yang.c:zlog Unexecuted instantiation: ospf_bfd.c:zlog Unexecuted instantiation: ospf_dump.c:zlog Unexecuted instantiation: ospf_dump_api.c:zlog Unexecuted instantiation: ospf_errors.c:zlog Unexecuted instantiation: ospf_interface.c:zlog Unexecuted instantiation: ospf_lsa.c:zlog Unexecuted instantiation: ospf_lsdb.c:zlog Unexecuted instantiation: ospf_neighbor.c:zlog Unexecuted instantiation: ospf_network.c:zlog Unexecuted instantiation: ospf_nsm.c:zlog Unexecuted instantiation: ospf_opaque.c:zlog Unexecuted instantiation: ospf_packet.c:zlog Unexecuted instantiation: ospf_ri.c:zlog Unexecuted instantiation: ospf_routemap.c:zlog Unexecuted instantiation: ospf_routemap_nb.c:zlog Unexecuted instantiation: ospf_routemap_nb_config.c:zlog Unexecuted instantiation: ospf_spf.c:zlog Unexecuted instantiation: ospf_ti_lfa.c:zlog Unexecuted instantiation: ospf_sr.c:zlog Unexecuted instantiation: ospf_te.c:zlog Unexecuted instantiation: ospf_vty.c:zlog Unexecuted instantiation: ospf_zebra.c:zlog Unexecuted instantiation: ospfd.c:zlog Unexecuted instantiation: ospf_gr_helper.c:zlog Unexecuted instantiation: ospf_abr.c:zlog Unexecuted instantiation: ospf_apiserver.c:zlog Unexecuted instantiation: ospf_asbr.c:zlog Unexecuted instantiation: ospf_ase.c:zlog Unexecuted instantiation: ospf_ext.c:zlog Unexecuted instantiation: ospf_flood.c:zlog Unexecuted instantiation: ospf_gr.c:zlog Unexecuted instantiation: ospf_ia.c:zlog Unexecuted instantiation: ospf_ism.c:zlog Unexecuted instantiation: ospf_ldp_sync.c:zlog Unexecuted instantiation: ospf_route.c:zlog Unexecuted instantiation: ospf_api.c:zlog Unexecuted instantiation: affinitymap.c:zlog Unexecuted instantiation: affinitymap_cli.c:zlog Unexecuted instantiation: affinitymap_northbound.c:zlog Unexecuted instantiation: agg_table.c:zlog Unexecuted instantiation: asn.c:zlog Unexecuted instantiation: bfd.c:zlog Unexecuted instantiation: buffer.c:zlog Unexecuted instantiation: command.c:zlog Unexecuted instantiation: command_graph.c:zlog Unexecuted instantiation: command_lex.c:zlog Unexecuted instantiation: command_match.c:zlog Unexecuted instantiation: command_parse.c:zlog Unexecuted instantiation: cspf.c:zlog Unexecuted instantiation: debug.c:zlog Unexecuted instantiation: distribute.c:zlog Unexecuted instantiation: ferr.c:zlog Unexecuted instantiation: filter.c:zlog Unexecuted instantiation: filter_cli.c:zlog Unexecuted instantiation: filter_nb.c:zlog Unexecuted instantiation: flex_algo.c:zlog Unexecuted instantiation: frr_pthread.c:zlog Unexecuted instantiation: grammar_sandbox.c:zlog Unexecuted instantiation: hash.c:zlog Unexecuted instantiation: id_alloc.c:zlog Unexecuted instantiation: if.c:zlog Unexecuted instantiation: if_rmap.c:zlog Unexecuted instantiation: json.c:zlog Unexecuted instantiation: keychain.c:zlog Unexecuted instantiation: ldp_sync.c:zlog Unexecuted instantiation: lib_errors.c:zlog Unexecuted instantiation: lib_vty.c:zlog Unexecuted instantiation: libfrr.c:zlog Unexecuted instantiation: link_state.c:zlog Line | Count | Source | 69 | 1.38k | { | 70 | 1.38k | va_list ap; | 71 | | | 72 | 1.38k | va_start(ap, fmt); | 73 | 1.38k | vzlog(prio, fmt, ap); | 74 | | va_end(ap); | 75 | 1.38k | } |
Unexecuted instantiation: log_filter.c:zlog Unexecuted instantiation: log_vty.c:zlog Unexecuted instantiation: memory.c:zlog Unexecuted instantiation: mgmt_be_client.c:zlog Unexecuted instantiation: mgmt_fe_client.c:zlog Unexecuted instantiation: mgmt_msg.c:zlog Unexecuted instantiation: mlag.c:zlog Unexecuted instantiation: srv6.c:zlog Unexecuted instantiation: network.c:zlog Unexecuted instantiation: nexthop.c:zlog Unexecuted instantiation: netns_linux.c:zlog Unexecuted instantiation: nexthop_group.c:zlog Unexecuted instantiation: northbound.c:zlog Unexecuted instantiation: northbound_cli.c:zlog Unexecuted instantiation: northbound_db.c:zlog Unexecuted instantiation: pid_output.c:zlog Unexecuted instantiation: plist.c:zlog Unexecuted instantiation: prefix.c:zlog Unexecuted instantiation: privs.c:zlog Unexecuted instantiation: pullwr.c:zlog Unexecuted instantiation: qobj.c:zlog Unexecuted instantiation: routemap.c:zlog Unexecuted instantiation: routemap_cli.c:zlog Unexecuted instantiation: routemap_northbound.c:zlog Unexecuted instantiation: sbuf.c:zlog Unexecuted instantiation: sigevent.c:zlog Unexecuted instantiation: skiplist.c:zlog Unexecuted instantiation: sockopt.c:zlog Unexecuted instantiation: sockunion.c:zlog Unexecuted instantiation: spf_backoff.c:zlog Unexecuted instantiation: srcdest_table.c:zlog Unexecuted instantiation: stream.c:zlog Unexecuted instantiation: systemd.c:zlog Unexecuted instantiation: table.c:zlog Unexecuted instantiation: termtable.c:zlog Unexecuted instantiation: event.c:zlog Unexecuted instantiation: vrf.c:zlog Unexecuted instantiation: vty.c:zlog Unexecuted instantiation: wheel.c:zlog Unexecuted instantiation: workqueue.c:zlog Unexecuted instantiation: xref.c:zlog Unexecuted instantiation: yang.c:zlog Unexecuted instantiation: yang_translator.c:zlog Unexecuted instantiation: yang_wrappers.c:zlog Unexecuted instantiation: zclient.c:zlog Unexecuted instantiation: zlog.c:zlog Unexecuted instantiation: zlog_5424.c:zlog Unexecuted instantiation: zlog_5424_cli.c:zlog Unexecuted instantiation: zlog_live.c:zlog Unexecuted instantiation: zlog_targets.c:zlog Unexecuted instantiation: routing_nb.c:zlog Unexecuted instantiation: routing_nb_config.c:zlog Unexecuted instantiation: tc.c:zlog Unexecuted instantiation: frr-affinity-map.yang.c:zlog Unexecuted instantiation: frr-filter.yang.c:zlog Unexecuted instantiation: frr-if-rmap.yang.c:zlog Unexecuted instantiation: frr-interface.yang.c:zlog Unexecuted instantiation: frr-route-map.yang.c:zlog Unexecuted instantiation: frr-route-types.yang.c:zlog Unexecuted instantiation: frr-vrf.yang.c:zlog Unexecuted instantiation: frr-routing.yang.c:zlog Unexecuted instantiation: frr-nexthop.yang.c:zlog Unexecuted instantiation: ietf-routing-types.yang.c:zlog Unexecuted instantiation: ietf-interfaces.yang.c:zlog Unexecuted instantiation: ietf-bgp-types.yang.c:zlog Unexecuted instantiation: frr-module-translator.yang.c:zlog Unexecuted instantiation: connected.c:zlog Unexecuted instantiation: if_netlink.c:zlog Unexecuted instantiation: interface.c:zlog Unexecuted instantiation: ioctl.c:zlog Unexecuted instantiation: ipforward_proc.c:zlog Unexecuted instantiation: kernel_netlink.c:zlog Unexecuted instantiation: label_manager.c:zlog Unexecuted instantiation: main.c:zlog Unexecuted instantiation: netconf_netlink.c:zlog Unexecuted instantiation: redistribute.c:zlog Unexecuted instantiation: router-id.c:zlog Unexecuted instantiation: rt_netlink.c:zlog Unexecuted instantiation: rtadv.c:zlog Unexecuted instantiation: rtread_netlink.c:zlog Unexecuted instantiation: rule_netlink.c:zlog Unexecuted instantiation: table_manager.c:zlog Unexecuted instantiation: tc_netlink.c:zlog Unexecuted instantiation: zapi_msg.c:zlog Unexecuted instantiation: zebra_affinitymap.c:zlog Unexecuted instantiation: zebra_dplane.c:zlog Unexecuted instantiation: zebra_errors.c:zlog Unexecuted instantiation: zebra_gr.c:zlog Unexecuted instantiation: zebra_l2.c:zlog Unexecuted instantiation: zebra_l2_bridge_if.c:zlog Unexecuted instantiation: zebra_evpn.c:zlog Unexecuted instantiation: zebra_evpn_mac.c:zlog Unexecuted instantiation: zebra_evpn_neigh.c:zlog Unexecuted instantiation: zebra_mlag.c:zlog Unexecuted instantiation: zebra_mlag_vty.c:zlog Unexecuted instantiation: zebra_mpls.c:zlog Unexecuted instantiation: zebra_mpls_netlink.c:zlog Unexecuted instantiation: zebra_mpls_null.c:zlog Unexecuted instantiation: zebra_mpls_vty.c:zlog Unexecuted instantiation: zebra_srv6.c:zlog Unexecuted instantiation: zebra_srv6_vty.c:zlog Unexecuted instantiation: zebra_mroute.c:zlog Unexecuted instantiation: zebra_nb.c:zlog Unexecuted instantiation: zebra_nb_config.c:zlog Unexecuted instantiation: zebra_nb_rpcs.c:zlog Unexecuted instantiation: zebra_nb_state.c:zlog Unexecuted instantiation: zebra_netns_id.c:zlog Unexecuted instantiation: zebra_netns_notify.c:zlog Unexecuted instantiation: zebra_nhg.c:zlog Unexecuted instantiation: zebra_ns.c:zlog Unexecuted instantiation: zebra_opaque.c:zlog Unexecuted instantiation: zebra_pbr.c:zlog Unexecuted instantiation: zebra_ptm.c:zlog Unexecuted instantiation: zebra_ptm_redistribute.c:zlog Unexecuted instantiation: zebra_pw.c:zlog Unexecuted instantiation: zebra_rib.c:zlog Unexecuted instantiation: zebra_router.c:zlog Unexecuted instantiation: zebra_rnh.c:zlog Unexecuted instantiation: zebra_routemap.c:zlog Unexecuted instantiation: zebra_routemap_nb.c:zlog Unexecuted instantiation: zebra_routemap_nb_config.c:zlog Unexecuted instantiation: zebra_script.c:zlog Unexecuted instantiation: zebra_srte.c:zlog Unexecuted instantiation: zebra_tc.c:zlog Unexecuted instantiation: zebra_vrf.c:zlog Unexecuted instantiation: zebra_vty.c:zlog Unexecuted instantiation: zebra_vxlan.c:zlog Unexecuted instantiation: zebra_vxlan_if.c:zlog Unexecuted instantiation: zebra_evpn_mh.c:zlog Unexecuted instantiation: zebra_neigh.c:zlog Unexecuted instantiation: zserv.c:zlog Unexecuted instantiation: debug_nl.c:zlog Unexecuted instantiation: frr-zebra.yang.c:zlog Unexecuted instantiation: frr-zebra-route-map.yang.c:zlog Unexecuted instantiation: bgp_main.c:zlog Unexecuted instantiation: frr-bgp-types.yang.c:zlog Unexecuted instantiation: frr-bgp.yang.c:zlog Unexecuted instantiation: frr-bgp-common-structure.yang.c:zlog Unexecuted instantiation: frr-bgp-common.yang.c:zlog Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:zlog Unexecuted instantiation: frr-bgp-neighbor.yang.c:zlog Unexecuted instantiation: frr-bgp-peer-group.yang.c:zlog Unexecuted instantiation: frr-bgp-bmp.yang.c:zlog Unexecuted instantiation: frr-bgp-rpki.yang.c:zlog Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:zlog Unexecuted instantiation: frr-bgp-filter.yang.c:zlog Unexecuted instantiation: frr-bgp-route-map.yang.c:zlog Unexecuted instantiation: bgp_attr.c:zlog Unexecuted instantiation: bgp_attr_evpn.c:zlog Unexecuted instantiation: bgp_clist.c:zlog Unexecuted instantiation: bgp_community.c:zlog Unexecuted instantiation: bgp_community_alias.c:zlog Unexecuted instantiation: bgp_debug.c:zlog Unexecuted instantiation: bgp_dump.c:zlog Unexecuted instantiation: bgp_ecommunity.c:zlog Unexecuted instantiation: bgp_errors.c:zlog Unexecuted instantiation: bgp_evpn.c:zlog Unexecuted instantiation: bgp_evpn_mh.c:zlog Unexecuted instantiation: bgp_evpn_vty.c:zlog Unexecuted instantiation: bgp_filter.c:zlog Unexecuted instantiation: bgp_flowspec_vty.c:zlog Unexecuted instantiation: bgp_fsm.c:zlog Unexecuted instantiation: bgp_io.c:zlog Unexecuted instantiation: bgp_keepalives.c:zlog Unexecuted instantiation: bgp_labelpool.c:zlog Unexecuted instantiation: bgp_lcommunity.c:zlog Unexecuted instantiation: bgp_mac.c:zlog Unexecuted instantiation: bgp_mpath.c:zlog Unexecuted instantiation: bgp_mplsvpn.c:zlog Unexecuted instantiation: bgp_network.c:zlog Unexecuted instantiation: bgp_nexthop.c:zlog Unexecuted instantiation: bgp_nht.c:zlog Unexecuted instantiation: bgp_packet.c:zlog Unexecuted instantiation: bgp_pbr.c:zlog Unexecuted instantiation: bgp_rd.c:zlog Unexecuted instantiation: bgp_regex.c:zlog Unexecuted instantiation: bgp_route.c:zlog Unexecuted instantiation: bgp_routemap.c:zlog Unexecuted instantiation: bgp_routemap_nb.c:zlog Unexecuted instantiation: bgp_routemap_nb_config.c:zlog Unexecuted instantiation: bgp_table.c:zlog Unexecuted instantiation: bgp_updgrp.c:zlog Unexecuted instantiation: bgp_updgrp_adv.c:zlog Unexecuted instantiation: bgp_updgrp_packet.c:zlog Unexecuted instantiation: bgp_vpn.c:zlog Unexecuted instantiation: bgp_vty.c:zlog Unexecuted instantiation: bgp_zebra.c:zlog Unexecuted instantiation: bgpd.c:zlog Unexecuted instantiation: bgp_rfapi_cfg.c:zlog Unexecuted instantiation: rfapi_import.c:zlog Unexecuted instantiation: rfapi.c:zlog Unexecuted instantiation: rfapi_ap.c:zlog Unexecuted instantiation: rfapi_encap_tlv.c:zlog Unexecuted instantiation: rfapi_nve_addr.c:zlog Unexecuted instantiation: rfapi_monitor.c:zlog Unexecuted instantiation: rfapi_rib.c:zlog Unexecuted instantiation: rfapi_vty.c:zlog Unexecuted instantiation: vnc_debug.c:zlog Unexecuted instantiation: vnc_export_bgp.c:zlog Unexecuted instantiation: vnc_export_table.c:zlog Unexecuted instantiation: vnc_import_bgp.c:zlog Unexecuted instantiation: vnc_zebra.c:zlog Unexecuted instantiation: bgp_addpath.c:zlog Unexecuted instantiation: bgp_advertise.c:zlog Unexecuted instantiation: bgp_aspath.c:zlog Unexecuted instantiation: bgp_bfd.c:zlog Unexecuted instantiation: bgp_conditional_adv.c:zlog Unexecuted instantiation: bgp_damp.c:zlog Unexecuted instantiation: bgp_encap_tlv.c:zlog Unexecuted instantiation: bgp_flowspec.c:zlog Unexecuted instantiation: bgp_flowspec_util.c:zlog Unexecuted instantiation: bgp_label.c:zlog Unexecuted instantiation: bgp_open.c:zlog Unexecuted instantiation: rfp_example.c:zlog Unexecuted instantiation: pim_addr.c:zlog Unexecuted instantiation: pim_assert.c:zlog Unexecuted instantiation: pim_bfd.c:zlog Unexecuted instantiation: pim_bsm.c:zlog Unexecuted instantiation: pim_cmd_common.c:zlog Unexecuted instantiation: pim_errors.c:zlog Unexecuted instantiation: pim_hello.c:zlog Unexecuted instantiation: pim_iface.c:zlog Unexecuted instantiation: pim_ifchannel.c:zlog Unexecuted instantiation: pim_instance.c:zlog Unexecuted instantiation: pim_join.c:zlog Unexecuted instantiation: pim_jp_agg.c:zlog Unexecuted instantiation: pim_macro.c:zlog Unexecuted instantiation: pim_mroute.c:zlog Unexecuted instantiation: pim_msg.c:zlog Unexecuted instantiation: pim_nb.c:zlog Unexecuted instantiation: pim_nb_config.c:zlog Unexecuted instantiation: pim_neighbor.c:zlog Unexecuted instantiation: pim_nht.c:zlog Unexecuted instantiation: pim_oil.c:zlog Unexecuted instantiation: pim_pim.c:zlog Unexecuted instantiation: pim_routemap.c:zlog Unexecuted instantiation: pim_rp.c:zlog Unexecuted instantiation: pim_rpf.c:zlog Unexecuted instantiation: pim_sock.c:zlog Unexecuted instantiation: pim_ssm.c:zlog Unexecuted instantiation: pim_ssmpingd.c:zlog Unexecuted instantiation: pim_static.c:zlog Unexecuted instantiation: pim_str.c:zlog Unexecuted instantiation: pim_tib.c:zlog Unexecuted instantiation: pim_time.c:zlog Unexecuted instantiation: pim_tlv.c:zlog Unexecuted instantiation: pim_upstream.c:zlog Unexecuted instantiation: pim_util.c:zlog Unexecuted instantiation: pim_vty.c:zlog Unexecuted instantiation: pim_zebra.c:zlog Unexecuted instantiation: pim_zlookup.c:zlog Unexecuted instantiation: pim_vxlan.c:zlog Unexecuted instantiation: pim_register.c:zlog Unexecuted instantiation: pimd.c:zlog Unexecuted instantiation: pim_cmd.c:zlog Unexecuted instantiation: pim_igmp.c:zlog Unexecuted instantiation: pim_igmp_mtrace.c:zlog Unexecuted instantiation: pim_igmpv2.c:zlog Unexecuted instantiation: pim_igmpv3.c:zlog Unexecuted instantiation: pim_main.c:zlog Unexecuted instantiation: pim_mlag.c:zlog Unexecuted instantiation: pim_msdp.c:zlog Unexecuted instantiation: pim_msdp_packet.c:zlog Unexecuted instantiation: pim_msdp_socket.c:zlog Unexecuted instantiation: pim_signals.c:zlog Unexecuted instantiation: pim_zpthread.c:zlog Unexecuted instantiation: frr-pim.yang.c:zlog Unexecuted instantiation: frr-pim-rp.yang.c:zlog Unexecuted instantiation: frr-gmp.yang.c:zlog |
76 | | |
77 | | PRINTFRR(2, 3) |
78 | | static inline void zlog_ref(const struct xref_logmsg *xref, |
79 | | const char *fmt, ...) |
80 | 0 | { |
81 | 0 | va_list ap; |
82 | 0 |
|
83 | 0 | va_start(ap, fmt); |
84 | 0 | vzlogx(xref, xref->priority, fmt, ap); |
85 | 0 | va_end(ap); |
86 | 0 | } Unexecuted instantiation: ospf_main.c:zlog_ref Unexecuted instantiation: frr-ospf-route-map.yang.c:zlog_ref Unexecuted instantiation: ospf_bfd.c:zlog_ref Unexecuted instantiation: ospf_dump.c:zlog_ref Unexecuted instantiation: ospf_dump_api.c:zlog_ref Unexecuted instantiation: ospf_errors.c:zlog_ref Unexecuted instantiation: ospf_interface.c:zlog_ref Unexecuted instantiation: ospf_lsa.c:zlog_ref Unexecuted instantiation: ospf_lsdb.c:zlog_ref Unexecuted instantiation: ospf_neighbor.c:zlog_ref Unexecuted instantiation: ospf_network.c:zlog_ref Unexecuted instantiation: ospf_nsm.c:zlog_ref Unexecuted instantiation: ospf_opaque.c:zlog_ref Unexecuted instantiation: ospf_packet.c:zlog_ref Unexecuted instantiation: ospf_ri.c:zlog_ref Unexecuted instantiation: ospf_routemap.c:zlog_ref Unexecuted instantiation: ospf_routemap_nb.c:zlog_ref Unexecuted instantiation: ospf_routemap_nb_config.c:zlog_ref Unexecuted instantiation: ospf_spf.c:zlog_ref Unexecuted instantiation: ospf_ti_lfa.c:zlog_ref Unexecuted instantiation: ospf_sr.c:zlog_ref Unexecuted instantiation: ospf_te.c:zlog_ref Unexecuted instantiation: ospf_vty.c:zlog_ref Unexecuted instantiation: ospf_zebra.c:zlog_ref Unexecuted instantiation: ospfd.c:zlog_ref Unexecuted instantiation: ospf_gr_helper.c:zlog_ref Unexecuted instantiation: ospf_abr.c:zlog_ref Unexecuted instantiation: ospf_apiserver.c:zlog_ref Unexecuted instantiation: ospf_asbr.c:zlog_ref Unexecuted instantiation: ospf_ase.c:zlog_ref Unexecuted instantiation: ospf_ext.c:zlog_ref Unexecuted instantiation: ospf_flood.c:zlog_ref Unexecuted instantiation: ospf_gr.c:zlog_ref Unexecuted instantiation: ospf_ia.c:zlog_ref Unexecuted instantiation: ospf_ism.c:zlog_ref Unexecuted instantiation: ospf_ldp_sync.c:zlog_ref Unexecuted instantiation: ospf_route.c:zlog_ref Unexecuted instantiation: ospf_api.c:zlog_ref Unexecuted instantiation: affinitymap.c:zlog_ref Unexecuted instantiation: affinitymap_cli.c:zlog_ref Unexecuted instantiation: affinitymap_northbound.c:zlog_ref Unexecuted instantiation: agg_table.c:zlog_ref Unexecuted instantiation: asn.c:zlog_ref Unexecuted instantiation: bfd.c:zlog_ref Unexecuted instantiation: buffer.c:zlog_ref Unexecuted instantiation: command.c:zlog_ref Unexecuted instantiation: command_graph.c:zlog_ref Unexecuted instantiation: command_lex.c:zlog_ref Unexecuted instantiation: command_match.c:zlog_ref Unexecuted instantiation: command_parse.c:zlog_ref Unexecuted instantiation: cspf.c:zlog_ref Unexecuted instantiation: debug.c:zlog_ref Unexecuted instantiation: distribute.c:zlog_ref Unexecuted instantiation: ferr.c:zlog_ref Unexecuted instantiation: filter.c:zlog_ref Unexecuted instantiation: filter_cli.c:zlog_ref Unexecuted instantiation: filter_nb.c:zlog_ref Unexecuted instantiation: flex_algo.c:zlog_ref Unexecuted instantiation: frr_pthread.c:zlog_ref Unexecuted instantiation: grammar_sandbox.c:zlog_ref Unexecuted instantiation: hash.c:zlog_ref Unexecuted instantiation: id_alloc.c:zlog_ref Unexecuted instantiation: if.c:zlog_ref Unexecuted instantiation: if_rmap.c:zlog_ref Unexecuted instantiation: json.c:zlog_ref Unexecuted instantiation: keychain.c:zlog_ref Unexecuted instantiation: ldp_sync.c:zlog_ref Unexecuted instantiation: lib_errors.c:zlog_ref Unexecuted instantiation: lib_vty.c:zlog_ref Unexecuted instantiation: libfrr.c:zlog_ref Unexecuted instantiation: link_state.c:zlog_ref Unexecuted instantiation: log.c:zlog_ref Unexecuted instantiation: log_filter.c:zlog_ref Unexecuted instantiation: log_vty.c:zlog_ref Unexecuted instantiation: memory.c:zlog_ref Unexecuted instantiation: mgmt_be_client.c:zlog_ref Unexecuted instantiation: mgmt_fe_client.c:zlog_ref Unexecuted instantiation: mgmt_msg.c:zlog_ref Unexecuted instantiation: mlag.c:zlog_ref Unexecuted instantiation: srv6.c:zlog_ref Unexecuted instantiation: network.c:zlog_ref Unexecuted instantiation: nexthop.c:zlog_ref Unexecuted instantiation: netns_linux.c:zlog_ref Unexecuted instantiation: nexthop_group.c:zlog_ref Unexecuted instantiation: northbound.c:zlog_ref Unexecuted instantiation: northbound_cli.c:zlog_ref Unexecuted instantiation: northbound_db.c:zlog_ref Unexecuted instantiation: pid_output.c:zlog_ref Unexecuted instantiation: plist.c:zlog_ref Unexecuted instantiation: prefix.c:zlog_ref Unexecuted instantiation: privs.c:zlog_ref Unexecuted instantiation: pullwr.c:zlog_ref Unexecuted instantiation: qobj.c:zlog_ref Unexecuted instantiation: routemap.c:zlog_ref Unexecuted instantiation: routemap_cli.c:zlog_ref Unexecuted instantiation: routemap_northbound.c:zlog_ref Unexecuted instantiation: sbuf.c:zlog_ref Unexecuted instantiation: sigevent.c:zlog_ref Unexecuted instantiation: skiplist.c:zlog_ref Unexecuted instantiation: sockopt.c:zlog_ref Unexecuted instantiation: sockunion.c:zlog_ref Unexecuted instantiation: spf_backoff.c:zlog_ref Unexecuted instantiation: srcdest_table.c:zlog_ref Unexecuted instantiation: stream.c:zlog_ref Unexecuted instantiation: systemd.c:zlog_ref Unexecuted instantiation: table.c:zlog_ref Unexecuted instantiation: termtable.c:zlog_ref Unexecuted instantiation: event.c:zlog_ref Unexecuted instantiation: vrf.c:zlog_ref Unexecuted instantiation: vty.c:zlog_ref Unexecuted instantiation: wheel.c:zlog_ref Unexecuted instantiation: workqueue.c:zlog_ref Unexecuted instantiation: xref.c:zlog_ref Unexecuted instantiation: yang.c:zlog_ref Unexecuted instantiation: yang_translator.c:zlog_ref Unexecuted instantiation: yang_wrappers.c:zlog_ref Unexecuted instantiation: zclient.c:zlog_ref Unexecuted instantiation: zlog.c:zlog_ref Unexecuted instantiation: zlog_5424.c:zlog_ref Unexecuted instantiation: zlog_5424_cli.c:zlog_ref Unexecuted instantiation: zlog_live.c:zlog_ref Unexecuted instantiation: zlog_targets.c:zlog_ref Unexecuted instantiation: routing_nb.c:zlog_ref Unexecuted instantiation: routing_nb_config.c:zlog_ref Unexecuted instantiation: tc.c:zlog_ref Unexecuted instantiation: frr-affinity-map.yang.c:zlog_ref Unexecuted instantiation: frr-filter.yang.c:zlog_ref Unexecuted instantiation: frr-if-rmap.yang.c:zlog_ref Unexecuted instantiation: frr-interface.yang.c:zlog_ref Unexecuted instantiation: frr-route-map.yang.c:zlog_ref Unexecuted instantiation: frr-route-types.yang.c:zlog_ref Unexecuted instantiation: frr-vrf.yang.c:zlog_ref Unexecuted instantiation: frr-routing.yang.c:zlog_ref Unexecuted instantiation: frr-nexthop.yang.c:zlog_ref Unexecuted instantiation: ietf-routing-types.yang.c:zlog_ref Unexecuted instantiation: ietf-interfaces.yang.c:zlog_ref Unexecuted instantiation: ietf-bgp-types.yang.c:zlog_ref Unexecuted instantiation: frr-module-translator.yang.c:zlog_ref Unexecuted instantiation: connected.c:zlog_ref Unexecuted instantiation: if_netlink.c:zlog_ref Unexecuted instantiation: interface.c:zlog_ref Unexecuted instantiation: ioctl.c:zlog_ref Unexecuted instantiation: ipforward_proc.c:zlog_ref Unexecuted instantiation: kernel_netlink.c:zlog_ref Unexecuted instantiation: label_manager.c:zlog_ref Unexecuted instantiation: main.c:zlog_ref Unexecuted instantiation: netconf_netlink.c:zlog_ref Unexecuted instantiation: redistribute.c:zlog_ref Unexecuted instantiation: router-id.c:zlog_ref Unexecuted instantiation: rt_netlink.c:zlog_ref Unexecuted instantiation: rtadv.c:zlog_ref Unexecuted instantiation: rtread_netlink.c:zlog_ref Unexecuted instantiation: rule_netlink.c:zlog_ref Unexecuted instantiation: table_manager.c:zlog_ref Unexecuted instantiation: tc_netlink.c:zlog_ref Unexecuted instantiation: zapi_msg.c:zlog_ref Unexecuted instantiation: zebra_affinitymap.c:zlog_ref Unexecuted instantiation: zebra_dplane.c:zlog_ref Unexecuted instantiation: zebra_errors.c:zlog_ref Unexecuted instantiation: zebra_gr.c:zlog_ref Unexecuted instantiation: zebra_l2.c:zlog_ref Unexecuted instantiation: zebra_l2_bridge_if.c:zlog_ref Unexecuted instantiation: zebra_evpn.c:zlog_ref Unexecuted instantiation: zebra_evpn_mac.c:zlog_ref Unexecuted instantiation: zebra_evpn_neigh.c:zlog_ref Unexecuted instantiation: zebra_mlag.c:zlog_ref Unexecuted instantiation: zebra_mlag_vty.c:zlog_ref Unexecuted instantiation: zebra_mpls.c:zlog_ref Unexecuted instantiation: zebra_mpls_netlink.c:zlog_ref Unexecuted instantiation: zebra_mpls_null.c:zlog_ref Unexecuted instantiation: zebra_mpls_vty.c:zlog_ref Unexecuted instantiation: zebra_srv6.c:zlog_ref Unexecuted instantiation: zebra_srv6_vty.c:zlog_ref Unexecuted instantiation: zebra_mroute.c:zlog_ref Unexecuted instantiation: zebra_nb.c:zlog_ref Unexecuted instantiation: zebra_nb_config.c:zlog_ref Unexecuted instantiation: zebra_nb_rpcs.c:zlog_ref Unexecuted instantiation: zebra_nb_state.c:zlog_ref Unexecuted instantiation: zebra_netns_id.c:zlog_ref Unexecuted instantiation: zebra_netns_notify.c:zlog_ref Unexecuted instantiation: zebra_nhg.c:zlog_ref Unexecuted instantiation: zebra_ns.c:zlog_ref Unexecuted instantiation: zebra_opaque.c:zlog_ref Unexecuted instantiation: zebra_pbr.c:zlog_ref Unexecuted instantiation: zebra_ptm.c:zlog_ref Unexecuted instantiation: zebra_ptm_redistribute.c:zlog_ref Unexecuted instantiation: zebra_pw.c:zlog_ref Unexecuted instantiation: zebra_rib.c:zlog_ref Unexecuted instantiation: zebra_router.c:zlog_ref Unexecuted instantiation: zebra_rnh.c:zlog_ref Unexecuted instantiation: zebra_routemap.c:zlog_ref Unexecuted instantiation: zebra_routemap_nb.c:zlog_ref Unexecuted instantiation: zebra_routemap_nb_config.c:zlog_ref Unexecuted instantiation: zebra_script.c:zlog_ref Unexecuted instantiation: zebra_srte.c:zlog_ref Unexecuted instantiation: zebra_tc.c:zlog_ref Unexecuted instantiation: zebra_vrf.c:zlog_ref Unexecuted instantiation: zebra_vty.c:zlog_ref Unexecuted instantiation: zebra_vxlan.c:zlog_ref Unexecuted instantiation: zebra_vxlan_if.c:zlog_ref Unexecuted instantiation: zebra_evpn_mh.c:zlog_ref Unexecuted instantiation: zebra_neigh.c:zlog_ref Unexecuted instantiation: zserv.c:zlog_ref Unexecuted instantiation: debug_nl.c:zlog_ref Unexecuted instantiation: frr-zebra.yang.c:zlog_ref Unexecuted instantiation: frr-zebra-route-map.yang.c:zlog_ref Unexecuted instantiation: bgp_main.c:zlog_ref Unexecuted instantiation: frr-bgp-types.yang.c:zlog_ref Unexecuted instantiation: frr-bgp.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-common-structure.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-common.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-neighbor.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-peer-group.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-bmp.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-rpki.yang.c:zlog_ref Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-filter.yang.c:zlog_ref Unexecuted instantiation: frr-bgp-route-map.yang.c:zlog_ref Unexecuted instantiation: bgp_attr.c:zlog_ref Unexecuted instantiation: bgp_attr_evpn.c:zlog_ref Unexecuted instantiation: bgp_clist.c:zlog_ref Unexecuted instantiation: bgp_community.c:zlog_ref Unexecuted instantiation: bgp_community_alias.c:zlog_ref Unexecuted instantiation: bgp_debug.c:zlog_ref Unexecuted instantiation: bgp_dump.c:zlog_ref Unexecuted instantiation: bgp_ecommunity.c:zlog_ref Unexecuted instantiation: bgp_errors.c:zlog_ref Unexecuted instantiation: bgp_evpn.c:zlog_ref Unexecuted instantiation: bgp_evpn_mh.c:zlog_ref Unexecuted instantiation: bgp_evpn_vty.c:zlog_ref Unexecuted instantiation: bgp_filter.c:zlog_ref Unexecuted instantiation: bgp_flowspec_vty.c:zlog_ref Unexecuted instantiation: bgp_fsm.c:zlog_ref Unexecuted instantiation: bgp_io.c:zlog_ref Unexecuted instantiation: bgp_keepalives.c:zlog_ref Unexecuted instantiation: bgp_labelpool.c:zlog_ref Unexecuted instantiation: bgp_lcommunity.c:zlog_ref Unexecuted instantiation: bgp_mac.c:zlog_ref Unexecuted instantiation: bgp_mpath.c:zlog_ref Unexecuted instantiation: bgp_mplsvpn.c:zlog_ref Unexecuted instantiation: bgp_network.c:zlog_ref Unexecuted instantiation: bgp_nexthop.c:zlog_ref Unexecuted instantiation: bgp_nht.c:zlog_ref Unexecuted instantiation: bgp_packet.c:zlog_ref Unexecuted instantiation: bgp_pbr.c:zlog_ref Unexecuted instantiation: bgp_rd.c:zlog_ref Unexecuted instantiation: bgp_regex.c:zlog_ref Unexecuted instantiation: bgp_route.c:zlog_ref Unexecuted instantiation: bgp_routemap.c:zlog_ref Unexecuted instantiation: bgp_routemap_nb.c:zlog_ref Unexecuted instantiation: bgp_routemap_nb_config.c:zlog_ref Unexecuted instantiation: bgp_table.c:zlog_ref Unexecuted instantiation: bgp_updgrp.c:zlog_ref Unexecuted instantiation: bgp_updgrp_adv.c:zlog_ref Unexecuted instantiation: bgp_updgrp_packet.c:zlog_ref Unexecuted instantiation: bgp_vpn.c:zlog_ref Unexecuted instantiation: bgp_vty.c:zlog_ref Unexecuted instantiation: bgp_zebra.c:zlog_ref Unexecuted instantiation: bgpd.c:zlog_ref Unexecuted instantiation: bgp_rfapi_cfg.c:zlog_ref Unexecuted instantiation: rfapi_import.c:zlog_ref Unexecuted instantiation: rfapi.c:zlog_ref Unexecuted instantiation: rfapi_ap.c:zlog_ref Unexecuted instantiation: rfapi_encap_tlv.c:zlog_ref Unexecuted instantiation: rfapi_nve_addr.c:zlog_ref Unexecuted instantiation: rfapi_monitor.c:zlog_ref Unexecuted instantiation: rfapi_rib.c:zlog_ref Unexecuted instantiation: rfapi_vty.c:zlog_ref Unexecuted instantiation: vnc_debug.c:zlog_ref Unexecuted instantiation: vnc_export_bgp.c:zlog_ref Unexecuted instantiation: vnc_export_table.c:zlog_ref Unexecuted instantiation: vnc_import_bgp.c:zlog_ref Unexecuted instantiation: vnc_zebra.c:zlog_ref Unexecuted instantiation: bgp_addpath.c:zlog_ref Unexecuted instantiation: bgp_advertise.c:zlog_ref Unexecuted instantiation: bgp_aspath.c:zlog_ref Unexecuted instantiation: bgp_bfd.c:zlog_ref Unexecuted instantiation: bgp_conditional_adv.c:zlog_ref Unexecuted instantiation: bgp_damp.c:zlog_ref Unexecuted instantiation: bgp_encap_tlv.c:zlog_ref Unexecuted instantiation: bgp_flowspec.c:zlog_ref Unexecuted instantiation: bgp_flowspec_util.c:zlog_ref Unexecuted instantiation: bgp_label.c:zlog_ref Unexecuted instantiation: bgp_open.c:zlog_ref Unexecuted instantiation: rfp_example.c:zlog_ref Unexecuted instantiation: pim_addr.c:zlog_ref Unexecuted instantiation: pim_assert.c:zlog_ref Unexecuted instantiation: pim_bfd.c:zlog_ref Unexecuted instantiation: pim_bsm.c:zlog_ref Unexecuted instantiation: pim_cmd_common.c:zlog_ref Unexecuted instantiation: pim_errors.c:zlog_ref Unexecuted instantiation: pim_hello.c:zlog_ref Unexecuted instantiation: pim_iface.c:zlog_ref Unexecuted instantiation: pim_ifchannel.c:zlog_ref Unexecuted instantiation: pim_instance.c:zlog_ref Unexecuted instantiation: pim_join.c:zlog_ref Unexecuted instantiation: pim_jp_agg.c:zlog_ref Unexecuted instantiation: pim_macro.c:zlog_ref Unexecuted instantiation: pim_mroute.c:zlog_ref Unexecuted instantiation: pim_msg.c:zlog_ref Unexecuted instantiation: pim_nb.c:zlog_ref Unexecuted instantiation: pim_nb_config.c:zlog_ref Unexecuted instantiation: pim_neighbor.c:zlog_ref Unexecuted instantiation: pim_nht.c:zlog_ref Unexecuted instantiation: pim_oil.c:zlog_ref Unexecuted instantiation: pim_pim.c:zlog_ref Unexecuted instantiation: pim_routemap.c:zlog_ref Unexecuted instantiation: pim_rp.c:zlog_ref Unexecuted instantiation: pim_rpf.c:zlog_ref Unexecuted instantiation: pim_sock.c:zlog_ref Unexecuted instantiation: pim_ssm.c:zlog_ref Unexecuted instantiation: pim_ssmpingd.c:zlog_ref Unexecuted instantiation: pim_static.c:zlog_ref Unexecuted instantiation: pim_str.c:zlog_ref Unexecuted instantiation: pim_tib.c:zlog_ref Unexecuted instantiation: pim_time.c:zlog_ref Unexecuted instantiation: pim_tlv.c:zlog_ref Unexecuted instantiation: pim_upstream.c:zlog_ref Unexecuted instantiation: pim_util.c:zlog_ref Unexecuted instantiation: pim_vty.c:zlog_ref Unexecuted instantiation: pim_zebra.c:zlog_ref Unexecuted instantiation: pim_zlookup.c:zlog_ref Unexecuted instantiation: pim_vxlan.c:zlog_ref Unexecuted instantiation: pim_register.c:zlog_ref Unexecuted instantiation: pimd.c:zlog_ref Unexecuted instantiation: pim_cmd.c:zlog_ref Unexecuted instantiation: pim_igmp.c:zlog_ref Unexecuted instantiation: pim_igmp_mtrace.c:zlog_ref Unexecuted instantiation: pim_igmpv2.c:zlog_ref Unexecuted instantiation: pim_igmpv3.c:zlog_ref Unexecuted instantiation: pim_main.c:zlog_ref Unexecuted instantiation: pim_mlag.c:zlog_ref Unexecuted instantiation: pim_msdp.c:zlog_ref Unexecuted instantiation: pim_msdp_packet.c:zlog_ref Unexecuted instantiation: pim_msdp_socket.c:zlog_ref Unexecuted instantiation: pim_signals.c:zlog_ref Unexecuted instantiation: pim_zpthread.c:zlog_ref Unexecuted instantiation: frr-pim.yang.c:zlog_ref Unexecuted instantiation: frr-pim-rp.yang.c:zlog_ref Unexecuted instantiation: frr-gmp.yang.c:zlog_ref |
87 | | |
88 | | #define _zlog_ecref(ec_, prio, msg, ...) \ |
89 | | do { \ |
90 | | static struct xrefdata_logmsg _xrefdata = { \ |
91 | | .xrefdata = \ |
92 | | { \ |
93 | | .xref = NULL, \ |
94 | | .uid = {}, \ |
95 | | .hashstr = (msg), \ |
96 | | .hashu32 = {(prio), (ec_)}, \ |
97 | | }, \ |
98 | | }; \ |
99 | | static const struct xref_logmsg _xref __attribute__( \ |
100 | | (used)) = { \ |
101 | | .xref = XREF_INIT(XREFT_LOGMSG, &_xrefdata.xrefdata, \ |
102 | | __func__), \ |
103 | | .fmtstring = (msg), \ |
104 | | .priority = (prio), \ |
105 | | .ec = (ec_), \ |
106 | | .args = (#__VA_ARGS__), \ |
107 | | }; \ |
108 | | XREF_LINK(_xref.xref); \ |
109 | | zlog_ref(&_xref, (msg), ##__VA_ARGS__); \ |
110 | | } while (0) |
111 | | |
112 | | #ifndef FUZZING |
113 | | |
114 | | #define zlog_err(...) _zlog_ecref(0, LOG_ERR, __VA_ARGS__) |
115 | | #define zlog_warn(...) _zlog_ecref(0, LOG_WARNING, __VA_ARGS__) |
116 | | #define zlog_info(...) _zlog_ecref(0, LOG_INFO, __VA_ARGS__) |
117 | | #define zlog_notice(...) _zlog_ecref(0, LOG_NOTICE, __VA_ARGS__) |
118 | | #define zlog_debug(...) _zlog_ecref(0, LOG_DEBUG, __VA_ARGS__) |
119 | | |
120 | | #define flog_err(ferr_id, format, ...) \ |
121 | | _zlog_ecref(ferr_id, LOG_ERR, format, ## __VA_ARGS__) |
122 | | #define flog_warn(ferr_id, format, ...) \ |
123 | | _zlog_ecref(ferr_id, LOG_WARNING, format, ## __VA_ARGS__) |
124 | | |
125 | | #define flog_err_sys(ferr_id, format, ...) \ |
126 | | _zlog_ecref(ferr_id, LOG_ERR, format, ## __VA_ARGS__) |
127 | | |
128 | | #else |
129 | | |
130 | 161 | #define zlog_err(...) 0 |
131 | 86.9k | #define zlog_warn(...) 0 |
132 | 4.65k | #define zlog_info(...) 0 |
133 | 99.7k | #define zlog_notice(...) 0 |
134 | 944 | #define zlog_debug(...) 0 |
135 | | |
136 | 6.54M | #define flog_err(ferr_id, format, ...) 0 |
137 | 32.1k | #define flog_warn(ferr_id, format, ...) 0 |
138 | 9 | #define flog_err_sys(ferr_id, format, ...) 0 |
139 | | |
140 | | #endif |
141 | | |
142 | | extern void zlog_sigsafe(const char *text, size_t len); |
143 | | |
144 | | /* extra priority value to disable a target without deleting it */ |
145 | 8 | #define ZLOG_DISABLED (LOG_EMERG-1) |
146 | | |
147 | | /* zlog_msg encapsulates a particular logging call from somewhere in the code. |
148 | | * The same struct is passed around to all zlog_targets. |
149 | | * |
150 | | * This is used to defer formatting the log message until it is actually |
151 | | * requested by one of the targets. If none of the targets needs the message |
152 | | * formatted, the formatting call is avoided entirely. |
153 | | * |
154 | | * This struct is opaque / private to the core zlog code. Logging targets |
155 | | * should use zlog_msg_* functions to get text / timestamps / ... for a |
156 | | * message. |
157 | | */ |
158 | | |
159 | | struct zlog_msg; |
160 | | |
161 | | extern int zlog_msg_prio(struct zlog_msg *msg); |
162 | | extern const struct xref_logmsg *zlog_msg_xref(struct zlog_msg *msg); |
163 | | |
164 | | /* text is NOT \0 terminated; instead there is a \n after textlen since the |
165 | | * logging targets would jump extra hoops otherwise for a single byte. (the |
166 | | * \n is not included in textlen) |
167 | | * |
168 | | * calling this with NULL textlen is likely wrong. |
169 | | * use "%.*s", (int)textlen, text when passing to printf-like functions |
170 | | */ |
171 | | extern const char *zlog_msg_text(struct zlog_msg *msg, size_t *textlen); |
172 | | |
173 | | extern void zlog_msg_args(struct zlog_msg *msg, size_t *hdrlen, |
174 | | size_t *n_argpos, const struct fmt_outpos **argpos); |
175 | | |
176 | | /* timestamp formatting control flags */ |
177 | | |
178 | | /* sub-second digit count */ |
179 | 1.38k | #define ZLOG_TS_PREC 0xfU |
180 | | |
181 | | /* 8601: 0000-00-00T00:00:00Z (if used with ZLOG_TS_UTC) |
182 | | * 0000-00-00T00:00:00+00:00 (otherwise) |
183 | | * Legacy: 0000/00/00 00:00:00 (no TZ indicated!) |
184 | | */ |
185 | 4.16k | #define ZLOG_TS_ISO8601 (1 << 8) |
186 | 5.55k | #define ZLOG_TS_LEGACY (1 << 9) |
187 | | |
188 | | /* default is local time zone */ |
189 | 4.16k | #define ZLOG_TS_UTC (1 << 10) |
190 | | |
191 | | struct timespec; |
192 | | |
193 | | extern size_t zlog_msg_ts(struct zlog_msg *msg, struct fbuf *out, |
194 | | uint32_t flags); |
195 | | extern void zlog_msg_tsraw(struct zlog_msg *msg, struct timespec *ts); |
196 | | |
197 | | /* "mmm dd hh:mm:ss" for RFC3164 syslog. Only ZLOG_TS_UTC for flags. */ |
198 | | extern size_t zlog_msg_ts_3164(struct zlog_msg *msg, struct fbuf *out, |
199 | | uint32_t flags); |
200 | | |
201 | | /* currently just returns the current PID/TID since we never write another |
202 | | * thread's messages |
203 | | */ |
204 | | extern void zlog_msg_pid(struct zlog_msg *msg, intmax_t *pid, intmax_t *tid); |
205 | | |
206 | | /* This list & struct implements the actual logging targets. It is accessed |
207 | | * lock-free from all threads, and thus MUST only be changed atomically, i.e. |
208 | | * RCU. |
209 | | * |
210 | | * Since there's no atomic replace, the replacement action is an add followed |
211 | | * by a delete. This means that during logging config changes, log messages |
212 | | * may be duplicated in the log target that is being changed. The old entry |
213 | | * being changed MUST also at the very least not crash or do other stupid |
214 | | * things. |
215 | | * |
216 | | * This list and struct are NOT related to config. Logging config is kept |
217 | | * separately, and results in creating appropriate zlog_target(s) to realize |
218 | | * the config. Log targets may also be created from varying sources, e.g. |
219 | | * command line options, or VTY commands ("log monitor"). |
220 | | * |
221 | | * struct zlog_target is intended to be embedded into a larger structure that |
222 | | * contains additional field for the specific logging target, e.g. an fd or |
223 | | * additional options. It MUST be the first field in that larger struct. |
224 | | */ |
225 | | |
226 | | PREDECL_ATOMLIST(zlog_targets); |
227 | | struct zlog_target { |
228 | | struct zlog_targets_item head; |
229 | | |
230 | | int prio_min; |
231 | | |
232 | | void (*logfn)(struct zlog_target *zt, struct zlog_msg *msg[], |
233 | | size_t nmsgs); |
234 | | |
235 | | /* for crash handlers, set to NULL if log target can't write crash logs |
236 | | * without possibly deadlocking (AS-Safe) |
237 | | * |
238 | | * text is not \0 terminated & split up into lines (e.g. no \n) |
239 | | */ |
240 | | void (*logfn_sigsafe)(struct zlog_target *zt, const char *text, |
241 | | size_t len); |
242 | | |
243 | | struct rcu_head rcu_head; |
244 | | }; |
245 | | |
246 | | /* make a copy for RCUpdating. oldzt may be NULL to allocate a fresh one. */ |
247 | | extern struct zlog_target *zlog_target_clone(struct memtype *mt, |
248 | | struct zlog_target *oldzt, |
249 | | size_t size); |
250 | | |
251 | | /* update the zlog_targets list; both oldzt and newzt may be NULL. You |
252 | | * still need to zlog_target_free() the old target afterwards if it wasn't |
253 | | * NULL. |
254 | | * |
255 | | * Returns oldzt so you can zlog_target_free(zlog_target_replace(old, new)); |
256 | | * (Some log targets may need extra cleanup inbetween, but remember the old |
257 | | * target MUST remain functional until the end of the current RCU cycle.) |
258 | | */ |
259 | | extern struct zlog_target *zlog_target_replace(struct zlog_target *oldzt, |
260 | | struct zlog_target *newzt); |
261 | | |
262 | | /* Mostly for symmetry for zlog_target_clone(), just rcu_free() internally. */ |
263 | | #define zlog_target_free(mt, zt) \ |
264 | 0 | rcu_free(mt, zt, rcu_head) |
265 | | |
266 | | extern void zlog_init(const char *progname, const char *protoname, |
267 | | unsigned short instance, uid_t uid, gid_t gid); |
268 | | DECLARE_HOOK(zlog_init, (const char *progname, const char *protoname, |
269 | | unsigned short instance, uid_t uid, gid_t gid), |
270 | | (progname, protoname, instance, uid, gid)); |
271 | | |
272 | | extern void zlog_fini(void); |
273 | | DECLARE_KOOH(zlog_fini, (), ()); |
274 | | |
275 | | extern void zlog_set_prefix_ec(bool enable); |
276 | | extern bool zlog_get_prefix_ec(void); |
277 | | extern void zlog_set_prefix_xid(bool enable); |
278 | | extern bool zlog_get_prefix_xid(void); |
279 | | |
280 | | /* for tools & test programs, i.e. anything not a daemon. |
281 | | * (no cleanup needed at exit) |
282 | | */ |
283 | | extern void zlog_aux_init(const char *prefix, int prio_min); |
284 | | DECLARE_HOOK(zlog_aux_init, (const char *prefix, int prio_min), |
285 | | (prefix, prio_min)); |
286 | | |
287 | | extern void zlog_startup_end(void); |
288 | | |
289 | | extern void zlog_tls_buffer_init(void); |
290 | | extern void zlog_tls_buffer_flush(void); |
291 | | extern void zlog_tls_buffer_fini(void); |
292 | | |
293 | | /* Enable or disable 'immediate' output - default is to buffer messages. */ |
294 | | extern void zlog_set_immediate(bool set_p); |
295 | | |
296 | | extern const char *zlog_priority_str(int priority); |
297 | | |
298 | | #ifdef __cplusplus |
299 | | } |
300 | | #endif |
301 | | |
302 | | #endif /* _FRR_ZLOG_H */ |