blob: 17245fe198ebbfce766f543a73540b91fc123845 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// SPDX-License-Identifier: ISC
/*
* Copyright (c) 2019-22 David Lamparter, for NetDEF, Inc.
*/
#ifndef _FRR_ZLOG_LIVE_H
#define _FRR_ZLOG_LIVE_H
#include "printfrr.h"
struct zlog_live_hdr {
/* timestamp (CLOCK_REALTIME) */
uint64_t ts_sec;
uint32_t ts_nsec;
/* length of zlog_live_hdr, including variable length bits and
* possible future extensions - aka start of text
*/
uint32_t hdrlen;
/* process & thread ID, meaning depends on OS */
int64_t pid;
int64_t tid;
/* number of lost messages due to best-effort non-blocking mode */
uint32_t lost_msgs;
/* syslog priority value */
uint32_t prio;
/* flags: currently unused */
uint32_t flags;
/* length of message text - extra data (e.g. future key/value metadata)
* may follow after it
*/
uint32_t textlen;
/* length of "[XXXXX-XXXXX][EC 0] " header; consumer may want to skip
* over it if using the raw values below. Note that this text may be
* absent depending on "log error-category" and "log unique-id"
* settings
*/
uint32_t texthdrlen;
/* xref unique identifier, "XXXXX-XXXXX\0" = 12 bytes */
char uid[12];
/* EC value */
uint32_t ec;
/* recorded printf formatting argument positions (variable length) */
uint32_t n_argpos;
struct fmt_outpos argpos[0];
};
struct zlt_live;
struct zlog_live_cfg {
struct zlt_live *target;
/* nothing else here */
};
extern void zlog_live_open(struct zlog_live_cfg *cfg, int prio_min,
int *other_fd);
extern void zlog_live_open_fd(struct zlog_live_cfg *cfg, int prio_min, int fd);
static inline bool zlog_live_is_null(struct zlog_live_cfg *cfg)
{
return cfg->target == NULL;
}
extern void zlog_live_close(struct zlog_live_cfg *cfg);
extern void zlog_live_disown(struct zlog_live_cfg *cfg);
#endif /* _FRR_ZLOG_5424_H */
|