]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/udev/udev-rules.h
resolved: add transaction result for upstream failures
[thirdparty/systemd.git] / src / udev / udev-rules.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #pragma once
3
4 #include "alloc-util.h"
5 #include "hashmap.h"
6 #include "time-util.h"
7
8 #define UDEV_NAME_SIZE 512
9 #define UDEV_PATH_SIZE 1024
10 #define UDEV_LINE_SIZE 16384
11
12 typedef struct UdevRuleFile UdevRuleFile;
13 typedef struct UdevRules UdevRules;
14 typedef struct UdevEvent UdevEvent;
15
16 typedef enum {
17 ESCAPE_UNSET,
18 ESCAPE_NONE, /* OPTIONS="string_escape=none" */
19 ESCAPE_REPLACE, /* OPTIONS="string_escape=replace" */
20 _ESCAPE_TYPE_MAX,
21 _ESCAPE_TYPE_INVALID = -EINVAL,
22 } UdevRuleEscapeType;
23
24 typedef enum ResolveNameTiming {
25 RESOLVE_NAME_NEVER,
26 RESOLVE_NAME_LATE,
27 RESOLVE_NAME_EARLY,
28 _RESOLVE_NAME_TIMING_MAX,
29 _RESOLVE_NAME_TIMING_INVALID = -EINVAL,
30 } ResolveNameTiming;
31
32 int udev_rule_parse_value(char *str, char **ret_value, char **ret_endpos);
33 int udev_rules_parse_file(UdevRules *rules, const char *filename, bool extra_checks, UdevRuleFile **ret);
34 unsigned udev_rule_file_get_issues(UdevRuleFile *rule_file);
35 UdevRules* udev_rules_new(ResolveNameTiming resolve_name_timing);
36 int udev_rules_load(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing);
37 UdevRules *udev_rules_free(UdevRules *rules);
38 DEFINE_TRIVIAL_CLEANUP_FUNC(UdevRules*, udev_rules_free);
39 #define udev_rules_free_and_replace(a, b) free_and_replace_full(a, b, udev_rules_free)
40
41 bool udev_rules_should_reload(UdevRules *rules);
42 int udev_rules_apply_to_event(UdevRules *rules, UdevEvent *event,
43 usec_t timeout_usec,
44 int timeout_signal,
45 Hashmap *properties_list);
46 int udev_rules_apply_static_dev_perms(UdevRules *rules);
47
48 ResolveNameTiming resolve_name_timing_from_string(const char *s) _pure_;
49 const char *resolve_name_timing_to_string(ResolveNameTiming i) _const_;