Coverage Report

Created: 2019-06-19 13:33

/src/systemd/src/shared/condition.h
Line
Count
Source (jump to first uncovered line)
1
/* SPDX-License-Identifier: LGPL-2.1+ */
2
#pragma once
3
4
#include <stdbool.h>
5
#include <stdio.h>
6
7
#include "list.h"
8
#include "macro.h"
9
10
typedef enum ConditionType {
11
        CONDITION_ARCHITECTURE,
12
        CONDITION_VIRTUALIZATION,
13
        CONDITION_HOST,
14
        CONDITION_KERNEL_COMMAND_LINE,
15
        CONDITION_KERNEL_VERSION,
16
        CONDITION_SECURITY,
17
        CONDITION_CAPABILITY,
18
        CONDITION_AC_POWER,
19
        CONDITION_MEMORY,
20
        CONDITION_CPUS,
21
22
        CONDITION_NEEDS_UPDATE,
23
        CONDITION_FIRST_BOOT,
24
25
        CONDITION_PATH_EXISTS,
26
        CONDITION_PATH_EXISTS_GLOB,
27
        CONDITION_PATH_IS_DIRECTORY,
28
        CONDITION_PATH_IS_SYMBOLIC_LINK,
29
        CONDITION_PATH_IS_MOUNT_POINT,
30
        CONDITION_PATH_IS_READ_WRITE,
31
        CONDITION_DIRECTORY_NOT_EMPTY,
32
        CONDITION_FILE_NOT_EMPTY,
33
        CONDITION_FILE_IS_EXECUTABLE,
34
35
        CONDITION_NULL,
36
37
        CONDITION_USER,
38
        CONDITION_GROUP,
39
40
        CONDITION_CONTROL_GROUP_CONTROLLER,
41
42
        _CONDITION_TYPE_MAX,
43
        _CONDITION_TYPE_INVALID = -1
44
} ConditionType;
45
46
typedef enum ConditionResult {
47
        CONDITION_UNTESTED,
48
        CONDITION_SUCCEEDED,
49
        CONDITION_FAILED,
50
        CONDITION_ERROR,
51
        _CONDITION_RESULT_MAX,
52
        _CONDITION_RESULT_INVALID = -1
53
} ConditionResult;
54
55
typedef struct Condition {
56
        ConditionType type:8;
57
58
        bool trigger:1;
59
        bool negate:1;
60
61
        ConditionResult result:6;
62
63
        char *parameter;
64
65
        LIST_FIELDS(struct Condition, conditions);
66
} Condition;
67
68
Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate);
69
void condition_free(Condition *c);
70
Condition* condition_free_list_type(Condition *first, ConditionType type);
71
104k
static inline Condition* condition_free_list(Condition *first) {
72
104k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
104k
}
Unexecuted instantiation: fuzz-netdev-parser.c:condition_free_list
netdev.c:condition_free_list
Line
Count
Source
71
13.4k
static inline Condition* condition_free_list(Condition *first) {
72
13.4k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
13.4k
}
Unexecuted instantiation: geneve.c:condition_free_list
Unexecuted instantiation: wireguard.c:condition_free_list
Unexecuted instantiation: fou-tunnel.c:condition_free_list
Unexecuted instantiation: l2tp-tunnel.c:condition_free_list
Unexecuted instantiation: macsec.c:condition_free_list
Unexecuted instantiation: networkd-link.c:condition_free_list
Unexecuted instantiation: networkd-lldp-rx.c:condition_free_list
Unexecuted instantiation: networkd-lldp-tx.c:condition_free_list
Unexecuted instantiation: networkd-manager.c:condition_free_list
Unexecuted instantiation: networkd-ndisc.c:condition_free_list
Unexecuted instantiation: networkd-neighbor.c:condition_free_list
Unexecuted instantiation: networkd-radv.c:condition_free_list
Unexecuted instantiation: networkd-network-bus.c:condition_free_list
networkd-network.c:condition_free_list
Line
Count
Source
71
12.1k
static inline Condition* condition_free_list(Condition *first) {
72
12.1k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
12.1k
}
Unexecuted instantiation: networkd-route.c:condition_free_list
Unexecuted instantiation: networkd-routing-policy-rule.c:condition_free_list
Unexecuted instantiation: networkd-speed-meter.c:condition_free_list
Unexecuted instantiation: networkd-util.c:condition_free_list
Unexecuted instantiation: networkd-network-gperf.c:condition_free_list
Unexecuted instantiation: netdev-gperf.c:condition_free_list
Unexecuted instantiation: bond.c:condition_free_list
Unexecuted instantiation: bridge.c:condition_free_list
Unexecuted instantiation: networkd-address-label.c:condition_free_list
Unexecuted instantiation: networkd-address-pool.c:condition_free_list
Unexecuted instantiation: networkd-address.c:condition_free_list
Unexecuted instantiation: networkd-brvlan.c:condition_free_list
Unexecuted instantiation: networkd-can.c:condition_free_list
Unexecuted instantiation: networkd-conf.c:condition_free_list
Unexecuted instantiation: networkd-dhcp4.c:condition_free_list
Unexecuted instantiation: networkd-dhcp6.c:condition_free_list
Unexecuted instantiation: networkd-fdb.c:condition_free_list
Unexecuted instantiation: networkd-ipv4ll.c:condition_free_list
Unexecuted instantiation: networkd-ipv6-proxy-ndp.c:condition_free_list
Unexecuted instantiation: networkd-link-bus.c:condition_free_list
Unexecuted instantiation: networkd-manager-bus.c:condition_free_list
Unexecuted instantiation: networkd-gperf.c:condition_free_list
Unexecuted instantiation: network-internal.c:condition_free_list
Unexecuted instantiation: fuzz-network-parser.c:condition_free_list
Unexecuted instantiation: fuzz-unit-file.c:condition_free_list
Unexecuted instantiation: load-fragment-gperf.c:condition_free_list
Unexecuted instantiation: ip-address-access.c:condition_free_list
load-fragment.c:condition_free_list
Line
Count
Source
71
1.33k
static inline Condition* condition_free_list(Condition *first) {
72
1.33k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
1.33k
}
Unexecuted instantiation: manager.c:condition_free_list
Unexecuted instantiation: path.c:condition_free_list
Unexecuted instantiation: service.c:condition_free_list
Unexecuted instantiation: socket.c:condition_free_list
Unexecuted instantiation: timer.c:condition_free_list
Unexecuted instantiation: transaction.c:condition_free_list
Unexecuted instantiation: unit-printf.c:condition_free_list
unit.c:condition_free_list
Line
Count
Source
71
73.6k
static inline Condition* condition_free_list(Condition *first) {
72
73.6k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
73.6k
}
Unexecuted instantiation: automount.c:condition_free_list
Unexecuted instantiation: bpf-firewall.c:condition_free_list
Unexecuted instantiation: cgroup.c:condition_free_list
Unexecuted instantiation: dbus-automount.c:condition_free_list
Unexecuted instantiation: dbus-job.c:condition_free_list
Unexecuted instantiation: dbus-manager.c:condition_free_list
Unexecuted instantiation: dbus-path.c:condition_free_list
Unexecuted instantiation: dbus-scope.c:condition_free_list
Unexecuted instantiation: dbus-service.c:condition_free_list
Unexecuted instantiation: dbus-socket.c:condition_free_list
Unexecuted instantiation: dbus-timer.c:condition_free_list
Unexecuted instantiation: dbus-unit.c:condition_free_list
Unexecuted instantiation: dbus-util.c:condition_free_list
Unexecuted instantiation: dbus.c:condition_free_list
Unexecuted instantiation: device.c:condition_free_list
Unexecuted instantiation: dynamic-user.c:condition_free_list
Unexecuted instantiation: emergency-action.c:condition_free_list
Unexecuted instantiation: execute.c:condition_free_list
Unexecuted instantiation: job.c:condition_free_list
Unexecuted instantiation: load-dropin.c:condition_free_list
Unexecuted instantiation: mount.c:condition_free_list
Unexecuted instantiation: scope.c:condition_free_list
Unexecuted instantiation: slice.c:condition_free_list
Unexecuted instantiation: swap.c:condition_free_list
Unexecuted instantiation: target.c:condition_free_list
Unexecuted instantiation: bpf-devices.c:condition_free_list
Unexecuted instantiation: dbus-cgroup.c:condition_free_list
Unexecuted instantiation: dbus-device.c:condition_free_list
Unexecuted instantiation: dbus-execute.c:condition_free_list
Unexecuted instantiation: dbus-kill.c:condition_free_list
Unexecuted instantiation: dbus-mount.c:condition_free_list
Unexecuted instantiation: dbus-slice.c:condition_free_list
Unexecuted instantiation: dbus-swap.c:condition_free_list
Unexecuted instantiation: dbus-target.c:condition_free_list
Unexecuted instantiation: udev-builtin-net_setup_link.c:condition_free_list
link-config.c:condition_free_list
Line
Count
Source
71
4.45k
static inline Condition* condition_free_list(Condition *first) {
72
4.45k
        return condition_free_list_type(first, _CONDITION_TYPE_INVALID);
73
4.45k
}
Unexecuted instantiation: ethtool-util.c:condition_free_list
Unexecuted instantiation: link-config-gperf.c:condition_free_list
Unexecuted instantiation: fuzz-link-parser.c:condition_free_list
Unexecuted instantiation: bus-unit-util.c:condition_free_list
Unexecuted instantiation: condition.c:condition_free_list
74
75
int condition_test(Condition *c);
76
typedef int (*condition_test_logger_t)(void *userdata, int level, int error, const char *file, int line, const char *func, const char *format, ...) _printf_(7, 8);
77
bool condition_test_list(Condition *first, const char *(*to_string)(ConditionType t), condition_test_logger_t logger, void *userdata);
78
79
void condition_dump(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t));
80
void condition_dump_list(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t));
81
82
const char* condition_type_to_string(ConditionType t) _const_;
83
ConditionType condition_type_from_string(const char *s) _pure_;
84
85
const char* assert_type_to_string(ConditionType t) _const_;
86
ConditionType assert_type_from_string(const char *s) _pure_;
87
88
const char* condition_result_to_string(ConditionResult r) _const_;
89
ConditionResult condition_result_from_string(const char *s) _pure_;
90
91
0
static inline bool condition_takes_path(ConditionType t) {
92
0
        return IN_SET(t,
93
                      CONDITION_PATH_EXISTS,
94
                      CONDITION_PATH_EXISTS_GLOB,
95
                      CONDITION_PATH_IS_DIRECTORY,
96
                      CONDITION_PATH_IS_SYMBOLIC_LINK,
97
                      CONDITION_PATH_IS_MOUNT_POINT,
98
                      CONDITION_PATH_IS_READ_WRITE,
99
                      CONDITION_DIRECTORY_NOT_EMPTY,
100
                      CONDITION_FILE_NOT_EMPTY,
101
                      CONDITION_FILE_IS_EXECUTABLE,
102
                      CONDITION_NEEDS_UPDATE);
103
}
Unexecuted instantiation: fuzz-netdev-parser.c:condition_takes_path
Unexecuted instantiation: netdev.c:condition_takes_path
Unexecuted instantiation: geneve.c:condition_takes_path
Unexecuted instantiation: wireguard.c:condition_takes_path
Unexecuted instantiation: fou-tunnel.c:condition_takes_path
Unexecuted instantiation: l2tp-tunnel.c:condition_takes_path
Unexecuted instantiation: macsec.c:condition_takes_path
Unexecuted instantiation: networkd-link.c:condition_takes_path
Unexecuted instantiation: networkd-lldp-rx.c:condition_takes_path
Unexecuted instantiation: networkd-lldp-tx.c:condition_takes_path
Unexecuted instantiation: networkd-manager.c:condition_takes_path
Unexecuted instantiation: networkd-ndisc.c:condition_takes_path
Unexecuted instantiation: networkd-neighbor.c:condition_takes_path
Unexecuted instantiation: networkd-radv.c:condition_takes_path
Unexecuted instantiation: networkd-network-bus.c:condition_takes_path
Unexecuted instantiation: networkd-network.c:condition_takes_path
Unexecuted instantiation: networkd-route.c:condition_takes_path
Unexecuted instantiation: networkd-routing-policy-rule.c:condition_takes_path
Unexecuted instantiation: networkd-speed-meter.c:condition_takes_path
Unexecuted instantiation: networkd-util.c:condition_takes_path
Unexecuted instantiation: networkd-network-gperf.c:condition_takes_path
Unexecuted instantiation: netdev-gperf.c:condition_takes_path
Unexecuted instantiation: bond.c:condition_takes_path
Unexecuted instantiation: bridge.c:condition_takes_path
Unexecuted instantiation: networkd-address-label.c:condition_takes_path
Unexecuted instantiation: networkd-address-pool.c:condition_takes_path
Unexecuted instantiation: networkd-address.c:condition_takes_path
Unexecuted instantiation: networkd-brvlan.c:condition_takes_path
Unexecuted instantiation: networkd-can.c:condition_takes_path
Unexecuted instantiation: networkd-conf.c:condition_takes_path
Unexecuted instantiation: networkd-dhcp4.c:condition_takes_path
Unexecuted instantiation: networkd-dhcp6.c:condition_takes_path
Unexecuted instantiation: networkd-fdb.c:condition_takes_path
Unexecuted instantiation: networkd-ipv4ll.c:condition_takes_path
Unexecuted instantiation: networkd-ipv6-proxy-ndp.c:condition_takes_path
Unexecuted instantiation: networkd-link-bus.c:condition_takes_path
Unexecuted instantiation: networkd-manager-bus.c:condition_takes_path
Unexecuted instantiation: networkd-gperf.c:condition_takes_path
Unexecuted instantiation: network-internal.c:condition_takes_path
Unexecuted instantiation: fuzz-network-parser.c:condition_takes_path
Unexecuted instantiation: fuzz-unit-file.c:condition_takes_path
Unexecuted instantiation: load-fragment-gperf.c:condition_takes_path
Unexecuted instantiation: ip-address-access.c:condition_takes_path
Unexecuted instantiation: load-fragment.c:condition_takes_path
Unexecuted instantiation: manager.c:condition_takes_path
Unexecuted instantiation: path.c:condition_takes_path
Unexecuted instantiation: service.c:condition_takes_path
Unexecuted instantiation: socket.c:condition_takes_path
Unexecuted instantiation: timer.c:condition_takes_path
Unexecuted instantiation: transaction.c:condition_takes_path
Unexecuted instantiation: unit-printf.c:condition_takes_path
Unexecuted instantiation: unit.c:condition_takes_path
Unexecuted instantiation: automount.c:condition_takes_path
Unexecuted instantiation: bpf-firewall.c:condition_takes_path
Unexecuted instantiation: cgroup.c:condition_takes_path
Unexecuted instantiation: dbus-automount.c:condition_takes_path
Unexecuted instantiation: dbus-job.c:condition_takes_path
Unexecuted instantiation: dbus-manager.c:condition_takes_path
Unexecuted instantiation: dbus-path.c:condition_takes_path
Unexecuted instantiation: dbus-scope.c:condition_takes_path
Unexecuted instantiation: dbus-service.c:condition_takes_path
Unexecuted instantiation: dbus-socket.c:condition_takes_path
Unexecuted instantiation: dbus-timer.c:condition_takes_path
Unexecuted instantiation: dbus-unit.c:condition_takes_path
Unexecuted instantiation: dbus-util.c:condition_takes_path
Unexecuted instantiation: dbus.c:condition_takes_path
Unexecuted instantiation: device.c:condition_takes_path
Unexecuted instantiation: dynamic-user.c:condition_takes_path
Unexecuted instantiation: emergency-action.c:condition_takes_path
Unexecuted instantiation: execute.c:condition_takes_path
Unexecuted instantiation: job.c:condition_takes_path
Unexecuted instantiation: load-dropin.c:condition_takes_path
Unexecuted instantiation: mount.c:condition_takes_path
Unexecuted instantiation: scope.c:condition_takes_path
Unexecuted instantiation: slice.c:condition_takes_path
Unexecuted instantiation: swap.c:condition_takes_path
Unexecuted instantiation: target.c:condition_takes_path
Unexecuted instantiation: bpf-devices.c:condition_takes_path
Unexecuted instantiation: dbus-cgroup.c:condition_takes_path
Unexecuted instantiation: dbus-device.c:condition_takes_path
Unexecuted instantiation: dbus-execute.c:condition_takes_path
Unexecuted instantiation: dbus-kill.c:condition_takes_path
Unexecuted instantiation: dbus-mount.c:condition_takes_path
Unexecuted instantiation: dbus-slice.c:condition_takes_path
Unexecuted instantiation: dbus-swap.c:condition_takes_path
Unexecuted instantiation: dbus-target.c:condition_takes_path
Unexecuted instantiation: udev-builtin-net_setup_link.c:condition_takes_path
Unexecuted instantiation: link-config.c:condition_takes_path
Unexecuted instantiation: ethtool-util.c:condition_takes_path
Unexecuted instantiation: link-config-gperf.c:condition_takes_path
Unexecuted instantiation: fuzz-link-parser.c:condition_takes_path
Unexecuted instantiation: bus-unit-util.c:condition_takes_path
Unexecuted instantiation: condition.c:condition_takes_path