]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/libudev/libudev-private.h
Fail on unknown (alphanumerical) specifiers
[thirdparty/systemd.git] / src / libudev / libudev-private.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
88a6477e
KS
2/***
3 This file is part of systemd.
4
5 Copyright 2008-2012 Kay Sievers <kay@vrfy.org>
6
7 systemd is free software; you can redistribute it and/or modify it
8 under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or
10 (at your option) any later version.
11
12 systemd is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with systemd; If not, see <http://www.gnu.org/licenses/>.
19***/
33a5cc29
KS
20
21#ifndef _LIBUDEV_PRIVATE_H_
22#define _LIBUDEV_PRIVATE_H_
23
d412a685 24#include <signal.h>
28460195 25#include <stdbool.h>
71d35b6b 26#include <stdint.h>
9e13dbae
KS
27
28#include "libudev.h"
07630cea 29
54cf0b7f 30#include "macro.h"
9e13dbae 31#include "mkdir.h"
d5a89d7d 32#include "strxcpyx.h"
07630cea 33#include "util.h"
33a5cc29 34
6ada823a 35#define READ_END 0
baa30fbc 36#define WRITE_END 1
9176ac1f 37
9060b066 38/* libudev.c */
40fe8b11 39int udev_get_rules_path(struct udev *udev, char **path[], usec_t *ts_usec[]);
11d543c1 40
9060b066 41/* libudev-device.c */
2df959ec 42struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen);
bf0e00ec 43struct udev_device *udev_device_new_from_synthetic_event(struct udev *udev, const char *syspath, const char *action);
fa639f3a 44struct udev_device *udev_device_shallow_clone(struct udev_device *old_device);
8f0f13f0 45struct udev_device *udev_device_clone_with_db(struct udev_device *old_device);
1cd0a770 46int udev_device_copy_properties(struct udev_device *dst, struct udev_device *src);
3cf1a8e3 47mode_t udev_device_get_devnode_mode(struct udev_device *udev_device);
1edefa4f
KS
48uid_t udev_device_get_devnode_uid(struct udev_device *udev_device);
49gid_t udev_device_get_devnode_gid(struct udev_device *udev_device);
243d1825 50int udev_device_rename(struct udev_device *udev_device, const char *new_name);
8a173387 51int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink);
37ed4f56 52void udev_device_cleanup_devlinks_list(struct udev_device *udev_device);
df546eb5 53int udev_device_add_property(struct udev_device *udev_device, const char *key, const char *value);
37ed4f56
KS
54char **udev_device_get_properties_envp(struct udev_device *udev_device);
55ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf);
37ed4f56 56const char *udev_device_get_devpath_old(struct udev_device *udev_device);
4281da1f 57const char *udev_device_get_id_filename(struct udev_device *udev_device);
48a0170b 58void udev_device_set_is_initialized(struct udev_device *udev_device);
fbb31cd6 59int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
8e3ba377 60void udev_device_remove_tag(struct udev_device *udev_device, const char *tag);
28460195 61void udev_device_cleanup_tags_list(struct udev_device *udev_device);
40fe8b11 62usec_t udev_device_get_usec_initialized(struct udev_device *udev_device);
1b14c3cf 63void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *old_device);
37ed4f56
KS
64int udev_device_get_devlink_priority(struct udev_device *udev_device);
65int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio);
37ed4f56
KS
66int udev_device_get_watch_handle(struct udev_device *udev_device);
67int udev_device_set_watch_handle(struct udev_device *udev_device, int handle);
fc416258 68int udev_device_get_ifindex(struct udev_device *udev_device);
37ed4f56 69void udev_device_set_info_loaded(struct udev_device *device);
9ead6627
KS
70bool udev_device_get_db_persist(struct udev_device *udev_device);
71void udev_device_set_db_persist(struct udev_device *udev_device);
107f2e25 72void udev_device_read_db(struct udev_device *udev_device);
11d543c1 73
98631e1c 74/* libudev-device-private.c */
37ed4f56
KS
75int udev_device_update_db(struct udev_device *udev_device);
76int udev_device_delete_db(struct udev_device *udev_device);
c1dbe11d 77int udev_device_tag_index(struct udev_device *dev, struct udev_device *dev_old, bool add);
fc233a87 78
9060b066 79/* libudev-monitor.c - netlink/unix socket communication */
1e03b754
KS
80int udev_monitor_disconnect(struct udev_monitor *udev_monitor);
81int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct udev_monitor *sender);
82int udev_monitor_send_device(struct udev_monitor *udev_monitor,
912541b0 83 struct udev_monitor *destination, struct udev_device *udev_device);
7459bcdc 84struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const char *name, int fd);
9925ab04 85
9060b066 86/* libudev-list.c */
8cd2e972 87struct udev_list_node {
912541b0 88 struct udev_list_node *next, *prev;
e345e267 89};
869c9031 90struct udev_list {
912541b0
KS
91 struct udev *udev;
92 struct udev_list_node node;
93 struct udev_list_entry **entries;
94 unsigned int entries_cur;
95 unsigned int entries_max;
96 bool unique;
869c9031 97};
869c9031
KS
98void udev_list_node_init(struct udev_list_node *list);
99int udev_list_node_is_empty(struct udev_list_node *list);
37ed4f56
KS
100void udev_list_node_append(struct udev_list_node *new, struct udev_list_node *list);
101void udev_list_node_remove(struct udev_list_node *entry);
9dcf7ec8 102#define udev_list_node_foreach(node, list) \
912541b0
KS
103 for (node = (list)->next; \
104 node != list; \
105 node = (node)->next)
9dcf7ec8 106#define udev_list_node_foreach_safe(node, tmp, list) \
912541b0
KS
107 for (node = (list)->next, tmp = (node)->next; \
108 node != list; \
109 node = tmp, tmp = (tmp)->next)
869c9031
KS
110void udev_list_init(struct udev *udev, struct udev_list *list, bool unique);
111void udev_list_cleanup(struct udev_list *list);
112struct udev_list_entry *udev_list_get_entry(struct udev_list *list);
113struct udev_list_entry *udev_list_entry_add(struct udev_list *list, const char *name, const char *value);
37ed4f56 114void udev_list_entry_delete(struct udev_list_entry *entry);
8958da13
KS
115int udev_list_entry_get_num(struct udev_list_entry *list_entry);
116void udev_list_entry_set_num(struct udev_list_entry *list_entry, int num);
daa849db 117#define udev_list_entry_foreach_safe(entry, tmp, first) \
912541b0
KS
118 for (entry = first, tmp = udev_list_entry_get_next(entry); \
119 entry != NULL; \
120 entry = tmp, tmp = udev_list_entry_get_next(tmp))
bf7ad0ea 121
9060b066 122/* libudev-queue.c */
f503f6b2
AJ
123unsigned long long int udev_get_kernel_seqnum(struct udev *udev);
124int udev_queue_read_seqnum(FILE *queue_file, unsigned long long int *seqnum);
125ssize_t udev_queue_read_devpath(FILE *queue_file, char *devpath, size_t size);
126ssize_t udev_queue_skip_devpath(FILE *queue_file);
127
98631e1c 128/* libudev-queue-private.c */
f503f6b2 129struct udev_queue_export *udev_queue_export_new(struct udev *udev);
f6577968 130struct udev_queue_export *udev_queue_export_unref(struct udev_queue_export *udev_queue_export);
f503f6b2
AJ
131void udev_queue_export_cleanup(struct udev_queue_export *udev_queue_export);
132int udev_queue_export_device_queued(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
133int udev_queue_export_device_finished(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
64ccdf82 134
44b49d37 135/* libudev-util.c */
2001208c
KS
136#define UTIL_PATH_SIZE 1024
137#define UTIL_NAME_SIZE 512
138#define UTIL_LINE_SIZE 16384
139#define UDEV_ALLOWED_CHARS_INPUT "/ $%?,"
37ed4f56 140int util_log_priority(const char *priority);
065db052 141size_t util_path_encode(const char *src, char *dest, size_t size);
0bbe8838
KS
142int util_replace_whitespace(const char *str, char *to, size_t len);
143int util_replace_chars(char *str, const char *white);
28460195
KS
144unsigned int util_string_hash32(const char *key);
145uint64_t util_string_bloom64(const char *str);
44b49d37
KS
146
147/* libudev-util-private.c */
2001208c 148int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value);
44b601bc 149
33a5cc29 150#endif