Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : #include <inttypes.h> 5 : : #include <sys/socket.h> 6 : : #include <sys/types.h> 7 : : 8 : : #include "sd-id128.h" 9 : : 10 : : #include "time-util.h" 11 : : 12 : : typedef struct ClientContext ClientContext; 13 : : 14 : : #include "journald-server.h" 15 : : 16 : : struct ClientContext { 17 : : unsigned n_ref; 18 : : unsigned lru_index; 19 : : usec_t timestamp; 20 : : bool in_lru; 21 : : 22 : : pid_t pid; 23 : : uid_t uid; 24 : : gid_t gid; 25 : : 26 : : char *comm; 27 : : char *exe; 28 : : char *cmdline; 29 : : char *capeff; 30 : : 31 : : uint32_t auditid; 32 : : uid_t loginuid; 33 : : 34 : : char *cgroup; 35 : : char *session; 36 : : uid_t owner_uid; 37 : : 38 : : char *unit; 39 : : char *user_unit; 40 : : 41 : : char *slice; 42 : : char *user_slice; 43 : : 44 : : sd_id128_t invocation_id; 45 : : 46 : : char *label; 47 : : size_t label_size; 48 : : 49 : : int log_level_max; 50 : : 51 : : struct iovec *extra_fields_iovec; 52 : : size_t extra_fields_n_iovec; 53 : : void *extra_fields_data; 54 : : nsec_t extra_fields_mtime; 55 : : 56 : : usec_t log_rate_limit_interval; 57 : : unsigned log_rate_limit_burst; 58 : : }; 59 : : 60 : : int client_context_get( 61 : : Server *s, 62 : : pid_t pid, 63 : : const struct ucred *ucred, 64 : : const char *label, size_t label_len, 65 : : const char *unit_id, 66 : : ClientContext **ret); 67 : : 68 : : int client_context_acquire( 69 : : Server *s, 70 : : pid_t pid, 71 : : const struct ucred *ucred, 72 : : const char *label, size_t label_len, 73 : : const char *unit_id, 74 : : ClientContext **ret); 75 : : 76 : : ClientContext* client_context_release(Server *s, ClientContext *c); 77 : : 78 : : void client_context_maybe_refresh( 79 : : Server *s, 80 : : ClientContext *c, 81 : : const struct ucred *ucred, 82 : : const char *label, size_t label_size, 83 : : const char *unit_id, 84 : : usec_t tstamp); 85 : : 86 : : void client_context_acquire_default(Server *s); 87 : : void client_context_flush_all(Server *s); 88 : : 89 : 0 : static inline size_t client_context_extra_fields_n_iovec(const ClientContext *c) { 90 [ # # ]: 0 : return c ? c->extra_fields_n_iovec : 0; 91 : : } 92 : : 93 : 0 : static inline bool client_context_test_priority(const ClientContext *c, int priority) { 94 [ # # ]: 0 : if (!c) 95 : 0 : return true; 96 : : 97 [ # # ]: 0 : if (c->log_level_max < 0) 98 : 0 : return true; 99 : : 100 : 0 : return LOG_PRI(priority) <= c->log_level_max; 101 : : }