1
0
mirror of https://github.com/systemd/systemd synced 2025-09-25 14:54:45 +02:00

Compare commits

..

23 Commits

Author SHA1 Message Date
Lennart Poettering
a1447e77a7
Merge pull request #16973 from poettering/btrfs-dev-root
print friendly error message if btrfs tells us /dev/root was backing block device of root fs
2020-09-08 19:55:12 +02:00
Lennart Poettering
f3f4abad29
Merge pull request #16979 from keszybz/return-log-debug
Fix 'return log_error()' and 'return log_warning()' patterns
2020-09-08 19:54:38 +02:00
Michal Sekletár
9a1e90aee5 cgroup: freezer action must be NOP when cgroup v2 freezer is not available
Low-level cgroup freezer state manipulation is invoked directly from the
job engine when we are about to execute the job in order to make sure
the unit is not frozen and job execution is not blocked because of
that.

Currently with cgroup v1 we would needlessly do a bunch of work in the
function and even falsely update the freezer state. Don't do any of this
and skip the function silently when v2 freezer is not available.

Following bug is fixed by this commit,

$ systemd-run --unit foo.service /bin/sleep infinity
$ systemctl restart foo.service
$ systemctl show -p FreezerState foo.service

Before (cgroup v1, i.e. full "legacy" mode):
FreezerState=thawing

After:
FreezerState=running
2020-09-08 19:54:13 +02:00
Lennart Poettering
c6552f7cd5
Merge pull request #16955 from keszybz/test-execute-cleanup
One patch for test-execute and assorted cleanups
2020-09-08 18:33:12 +02:00
Lennart Poettering
d161680e7a tree-wide: if get_block_device() returns zero devno, check for it in all cases
And add a comment for the existing cases where things aren't clear
already.
2020-09-08 18:10:26 +02:00
Lennart Poettering
67f0ac8c79 btrfs: if BTRFS_IOC_DEV_INFO returns /dev/root generate a friendly error message
On systems that boot without initrd on a btrfs root file systems the
BTRFS_IOC_DEV_INFO ioctl returns /dev/root as backing device. That
sucks, since that is not a real device visible to userspace.

Since this has been that way since forever, and it doesn't look like the
kernel will get fixed soon for this, let's at least generate a useful
error message in this case.

This is not a bug fix, just a tweak to make this more recognizable.

Once the kernel gets fixed to report the correct device nodes in this
case, in a way userspace can make sense of them things will magically
work for systemd, too.

(Note that this doesn't add a log message about this to really all cases
we call get_device() in, but just the main ones that are called in early
boot context, after all all there's no benefit in seeing this message
too many times.)

https://github.com/systemd/systemd/issues/16953
https://bugs.freedesktop.org/show_bug.cgi?id=84689
https://bugzilla.kernel.org/show_bug.cgi?id=89721
2020-09-08 18:10:26 +02:00
Zbigniew Jędrzejewski-Szmek
1c5950bd61 sleep: reword some debug messages
I think the sentences sound more natural this way.
2020-09-08 17:40:46 +02:00
Zbigniew Jędrzejewski-Szmek
44f0dd628c basic/log: make log_{info,warning,...} return void
log_debug still returns 0. I think it is legitimate to use 'return log_debug()' to
return 0. It is different than the other functions, since we often want to supress
errors logged at debug level. This case is quite common in the codebase and
we could use 'return log_debug_errno()' to make the code more consise.

For all other variants, a separate return line is required.
Previous commit changes all the non-conforming instances, now we can make it mandatory.
2020-09-08 17:40:46 +02:00
Zbigniew Jędrzejewski-Szmek
c413bb28df tree-wide: correct cases where return log_{error,warning} is used without value
In various cases, we would say 'return log_warning()' or 'return log_error()'. Those
functions return 0 if no error is passed in. For log_warning or log_error this doesn't
make sense, and we generally want to propagate the error. In the few cases where
the error should be ignored, I think it's better to split it in two, and call 'return 0'
on a separate line.
2020-09-08 17:40:46 +02:00
Zbigniew Jędrzejewski-Szmek
fc706b4816 man: fix quickhelp listing in sysusers.d(5)
Fixes #16958.
2020-09-08 17:30:42 +02:00
Lennart Poettering
26c65933ba
Merge pull request #16978 from keszybz/two-variable-reduction-patches
Two variable reduction patches
2020-09-08 17:13:21 +02:00
Zbigniew Jędrzejewski-Szmek
a9aa8deb29
Merge pull request #16618 from yuwata/network-ipv6token-prefixstable
network: make prefixstable mode of IPv6Token= can be applied any received prefixes
2020-09-08 13:36:27 +02:00
Zbigniew Jędrzejewski-Szmek
90e74a66e6 tree-wide: define iterator inside of the macro 2020-09-08 12:14:05 +02:00
Zbigniew Jędrzejewski-Szmek
12375b95dd core/unit: reduce scope of variables 2020-09-08 12:07:05 +02:00
Yu Watanabe
68248f43fc test-network: add test for IPv6Token=prefixstable 2020-09-08 14:32:44 +09:00
Yu Watanabe
b27caa34f6 network: make prefixstable mode of IPv6Token= can be applied to any received prefixes
Closes #4625.
2020-09-08 14:32:33 +09:00
Zbigniew Jędrzejewski-Szmek
d11578f30e test-sizeof: print pointer sizes
This is useful information, I don't know why we forgot to add it there.

gcc doesn't like arithemetic on a pointer to a function or void*, so don't
print signedness info there. It doesn't matter anyway.
C says function pointers can be different... Though I guess our code isn't
prepared for that.
2020-09-04 18:45:44 +02:00
Zbigniew Jędrzejewski-Szmek
a9030b81c1 udev-test: do not rely on "mail" group being defined
"audio" should be there, at least we declare it. "mail" nowadays is less
likely to exist than in the past.

Fixes one of the items in #16942.
2020-09-04 18:45:44 +02:00
Zbigniew Jędrzejewski-Szmek
cced2b98ef test-execute: check if private directories have bad permissions before running test_exec_dynamicuser()
If the directory (/var/lib/private is most likely) has borked permissions, the
test will fail with a cryptic message and EXIT_STATE_DIRECTORY or similar. The
message from the child with more details gets lost somewhere. Let's avoid running
the test in that case and provide a simple error message instead.

E.g. systemd-238-12.git07f8cd5.fc28.ppc64 (which I encountered on a test machine)
has /var/lib/private with 0755.
2020-09-04 18:45:44 +02:00
Zbigniew Jędrzejewski-Szmek
9978e631cd core/manager: reindent table for readability 2020-09-04 18:14:26 +02:00
Zbigniew Jędrzejewski-Szmek
5b10116e49 core/{execute, manager}: reduce scope of iterator variables a bit 2020-09-04 18:14:26 +02:00
Zbigniew Jędrzejewski-Szmek
0b3861d224 test-execute/exec-dynamicuser-statedir.service: fix quoting
All backslashes that should be single in shell syntax need to be written as "\\" because
our parser will remove one level of quoting. Also, single quotes were doubly nested, which
cannot work.

Should fix the following message:
test-execute/exec-dynamicuser-statedir.service:16: Ignoring unknown escape sequences: "test $$(find / \( -path /var/tmp -o -path /tmp -o -path /proc -o -path /dev/mqueue -o -path /dev/shm -o -path /sys/fs/bpf -o -path /dev/.lxc \) -prune -o -type d -writable -print 2>/dev/null | sort -u | tr -d \\n) = /var/lib/private/quux/pief/var/lib/private/waldo"
2020-09-04 18:11:22 +02:00
Zbigniew Jędrzejewski-Szmek
f90d2d7bf1 test-execute: simplify condition
tests is always a static array, it cannot be NULL.
2020-09-04 18:11:22 +02:00
175 changed files with 840 additions and 1171 deletions

View File

@ -408,36 +408,48 @@
<varlistentry>
<term><varname>IPv6Token=</varname></term>
<listitem>
<para>Specifies an optional address generation mode and a required IPv6 address. If
the mode is present, the two parts must be separated with a colon
<literal><replaceable>mode</replaceable>:<replaceable>address</replaceable></literal>. The
address generation mode may be either <constant>prefixstable</constant> or
<constant>static</constant>. If not specified, <constant>static</constant> is assumed.
</para>
<para>When the mode is set to <constant>static</constant>, or unspecified, the lower bits of
the supplied address are combined with the upper bits of a prefix received in a Router Advertisement
message to form a complete address. Note that if multiple prefixes are received in an RA message, or in
multiple RA messages, addresses will be formed from each of them using the supplied address. This
mode implements SLAAC but uses a static interface identifier instead of an identifier generated
using the EUI-64 algorithm. Because the interface identifier is static, if Duplicate Address Detection
detects that the computed address is a duplicate (in use by another node on the link), then this
mode will fail to provide an address for that prefix.
</para>
<para>When the mode is set to <literal>prefixstable</literal> the RFC 7217 algorithm for generating
interface identifiers will be used, but only when a prefix received in an RA message matches the supplied address.
See <ulink url="https://tools.ietf.org/html/rfc7217">RFC 7217</ulink>. Prefix matching will be attempted
against each <constant>prefixstable</constant> IPv6Token variable provided in the configuration; if a received
prefix does not match any of the provided addresses, then the EUI-64 algorithm will be used to form
an interface identifier for that prefix. This mode is also SLAAC, but with a potentially stable interface
identifier which does not directly map to the interface's hardware address.
<para>Specifies an optional address generation mode for the Stateless Address
Autoconfiguration (SLAAC). Supported modes are <literal>prefixstable</literal> and
<literal>static</literal>.</para>
Note that the <constant>prefixstable</constant> algorithm includes both the interface's name and
MAC address in the hash used to compute the interface identifier, so if either of those are changed the resulting
interface identifier (and address) will change, even if the prefix received in the RA message has not changed.
<para>When the mode is set to <literal>static</literal>, an IPv6 address must be
specified after a colon (<literal>:</literal>), and the lower bits of the supplied
address are combined with the upper bits of a prefix received in a Router Advertisement
(RA) message to form a complete address. Note that if multiple prefixes are received in an
RA message, or in multiple RA messages, addresses will be formed from each of them using
the supplied address. This mode implements SLAAC but uses a static interface identifier
instead of an identifier generated by using the EUI-64 algorithm. Because the interface
identifier is static, if Duplicate Address Detection detects that the computed address is a
duplicate (in use by another node on the link), then this mode will fail to provide an
address for that prefix. If an IPv6 address without mode is specified, then
<literal>static</literal> mode is assumed.</para>
Note that if multiple <constant>prefixstable</constant> IPv6Token variables are supplied with addresses that
match a prefix received in an RA message, only the first one will be used to generate addresses.
</para>
<para>When the mode is set to <literal>prefixstable</literal> the
<ulink url="https://tools.ietf.org/html/rfc7217">RFC 7217</ulink> algorithm for generating
interface identifiers will be used. This mode can optionally take an IPv6 address separated
with a colon (<literal>:</literal>). If an IPv6 address is specified, then an interface
identifier is generated only when a prefix received in an RA message matches the supplied
address.</para>
<para>If no address generation mode is specified (which is the default), or a received
prefix does not match any of the addresses provided in <literal>prefixstable</literal>
mode, then the EUI-64 algorithm will be used to form an interface identifier for that
prefix. This mode is also SLAAC, but with a potentially stable interface identifier which
does not directly map to the interface's hardware address.</para>
<para>Note that the <literal>prefixstable</literal> algorithm uses both the interface
name and MAC address as input to the hash to compute the interface identifier, so if either
of those are changed the resulting interface identifier (and address) will change, even if
the prefix received in the RA message has not changed.</para>
<para>This setting can be specified multiple times. If an empty string is assigned, then
the all previous assignments are cleared.</para>
<para>Examples:
<programlisting>IPv6Token=::1a:2b:3c:4d
IPv6Token=static:::1a:2b:3c:4d
IPv6Token=prefixstable
IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -27,12 +27,12 @@
<para><filename>/usr/lib/sysusers.d/*.conf</filename></para>
<programlisting>
#Type Name ID GECOS Home directory Shell
u user_name uid "User Description" /path/to/shell
u user_name uid:gid - -
u user_name /file/owned/by/user - -
g group_name gid "Group Description"
g group_name /file/owned/by/group -
#Type Name ID GECOS Home directory Shell
u user_name uid "User Description" /home/dir /path/to/shell
u user_name uid:gid "User Description" /home/dir /path/to/shell
u user_name /file/owned/by/user "User Description" /home/dir /path/to/shell
g group_name gid
g group_name /file/owned/by/group
m user_name group_name
r - lowest-highest</programlisting>
</refsynopsisdiv>

View File

@ -1500,7 +1500,6 @@ static int do_unit_files(int argc, char *argv[], void *userdata) {
_cleanup_hashmap_free_ Hashmap *unit_ids = NULL;
_cleanup_hashmap_free_ Hashmap *unit_names = NULL;
char **patterns = strv_skip(argv, 1);
Iterator i;
const char *k, *dst;
char **v;
int r;
@ -1513,7 +1512,7 @@ static int do_unit_files(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_error_errno(r, "unit_file_build_name_map() failed: %m");
HASHMAP_FOREACH_KEY(dst, k, unit_ids, i) {
HASHMAP_FOREACH_KEY(dst, k, unit_ids) {
if (!strv_fnmatch_or_empty(patterns, k, FNM_NOESCAPE) &&
!strv_fnmatch_or_empty(patterns, dst, FNM_NOESCAPE))
continue;
@ -1521,7 +1520,7 @@ static int do_unit_files(int argc, char *argv[], void *userdata) {
printf("ids: %s → %s\n", k, dst);
}
HASHMAP_FOREACH_KEY(v, k, unit_names, i) {
HASHMAP_FOREACH_KEY(v, k, unit_names) {
if (!strv_fnmatch_or_empty(patterns, k, FNM_NOESCAPE) &&
!strv_fnmatch_strv_or_empty(patterns, v, FNM_NOESCAPE))
continue;

View File

@ -315,6 +315,15 @@ int btrfs_get_block_device_fd(int fd, dev_t *dev) {
return -errno;
}
/* For the root fs — when no initrd is involved — btrfs returns /dev/root on any kernels from
* the past few years. That sucks, as we have no API to determine the actual root then. let's
* return an recognizable error for this case, so that the caller can maybe print a nice
* message about this.
*
* https://bugzilla.kernel.org/show_bug.cgi?id=89721 */
if (path_equal((char*) di.path, "/dev/root"))
return -EUCLEAN;
if (stat((char*) di.path, &st) < 0)
return -errno;

View File

@ -121,3 +121,9 @@ int btrfs_qgroup_find_parents(int fd, uint64_t qgroupid, uint64_t **ret);
int btrfs_qgroup_get_quota_fd(int fd, uint64_t qgroupid, BtrfsQuotaInfo *quota);
int btrfs_qgroup_get_quota(const char *path, uint64_t qgroupid, BtrfsQuotaInfo *quota);
static inline int btrfs_log_dev_root(int level, int ret, const char *p) {
return log_full_errno(level, ret,
"File system behind %s is reported by btrfs to be backed by pseudo-device /dev/root, which is not a valid userspace accessible device node. "
"Cannot determine correct backing block device.", p);
}

View File

@ -407,17 +407,25 @@ static inline char** ordered_hashmap_get_strv(OrderedHashmap *h) {
* the entries were inserted.
* It is safe to remove the current entry.
*/
#define HASHMAP_FOREACH(e, h, i) \
for ((i) = ITERATOR_FIRST; hashmap_iterate((h), &(i), (void**)&(e), NULL); )
#define _HASHMAP_FOREACH(e, h, i) \
for (Iterator i = ITERATOR_FIRST; hashmap_iterate((h), &i, (void**)&(e), NULL); )
#define HASHMAP_FOREACH(e, h) \
_HASHMAP_FOREACH(e, h, UNIQ_T(i, UNIQ))
#define ORDERED_HASHMAP_FOREACH(e, h, i) \
for ((i) = ITERATOR_FIRST; ordered_hashmap_iterate((h), &(i), (void**)&(e), NULL); )
#define _ORDERED_HASHMAP_FOREACH(e, h, i) \
for (Iterator i = ITERATOR_FIRST; ordered_hashmap_iterate((h), &i, (void**)&(e), NULL); )
#define ORDERED_HASHMAP_FOREACH(e, h) \
_ORDERED_HASHMAP_FOREACH(e, h, UNIQ_T(i, UNIQ))
#define HASHMAP_FOREACH_KEY(e, k, h, i) \
for ((i) = ITERATOR_FIRST; hashmap_iterate((h), &(i), (void**)&(e), (const void**) &(k)); )
#define _HASHMAP_FOREACH_KEY(e, k, h, i) \
for (Iterator i = ITERATOR_FIRST; hashmap_iterate((h), &i, (void**)&(e), (const void**) &(k)); )
#define HASHMAP_FOREACH_KEY(e, k, h) \
_HASHMAP_FOREACH_KEY(e, k, h, UNIQ_T(i, UNIQ))
#define ORDERED_HASHMAP_FOREACH_KEY(e, k, h, i) \
for ((i) = ITERATOR_FIRST; ordered_hashmap_iterate((h), &(i), (void**)&(e), (const void**) &(k)); )
#define _ORDERED_HASHMAP_FOREACH_KEY(e, k, h, i) \
for (Iterator i = ITERATOR_FIRST; ordered_hashmap_iterate((h), &i, (void**)&(e), (const void**) &(k)); )
#define ORDERED_HASHMAP_FOREACH_KEY(e, k, h) \
_ORDERED_HASHMAP_FOREACH_KEY(e, k, h, UNIQ_T(i, UNIQ))
DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free);

View File

@ -234,12 +234,12 @@ void log_assert_failed_return_realm(
#define log_full_errno(level, error, ...) \
log_full_errno_realm(LOG_REALM, (level), (error), __VA_ARGS__)
#define log_full(level, ...) log_full_errno((level), 0, __VA_ARGS__)
#define log_full(level, ...) (void) log_full_errno((level), 0, __VA_ARGS__)
int log_emergency_level(void);
/* Normal logging */
#define log_debug(...) log_full(LOG_DEBUG, __VA_ARGS__)
#define log_debug(...) log_full_errno(LOG_DEBUG, 0, __VA_ARGS__)
#define log_info(...) log_full(LOG_INFO, __VA_ARGS__)
#define log_notice(...) log_full(LOG_NOTICE, __VA_ARGS__)
#define log_warning(...) log_full(LOG_WARNING, __VA_ARGS__)

View File

@ -70,12 +70,11 @@ int ordered_set_put_strdupv(OrderedSet *s, char **l) {
int ordered_set_put_string_set(OrderedSet *s, OrderedSet *l) {
int n = 0, r;
Iterator i;
char *p;
/* Like ordered_set_put_strv, but for an OrderedSet of strings */
ORDERED_SET_FOREACH(p, l, i) {
ORDERED_SET_FOREACH(p, l) {
r = ordered_set_put_strdup(s, p);
if (r < 0)
return r;
@ -88,7 +87,6 @@ int ordered_set_put_string_set(OrderedSet *s, OrderedSet *l) {
void ordered_set_print(FILE *f, const char *field, OrderedSet *s) {
bool space = false;
Iterator i;
char *p;
if (ordered_set_isempty(s))
@ -96,7 +94,7 @@ void ordered_set_print(FILE *f, const char *field, OrderedSet *s) {
fputs(field, f);
ORDERED_SET_FOREACH(p, s, i)
ORDERED_SET_FOREACH(p, s)
fputs_with_space(f, p, NULL, &space);
fputc('\n', f);

View File

@ -64,8 +64,10 @@ int ordered_set_put_strdupv(OrderedSet *s, char **l);
int ordered_set_put_string_set(OrderedSet *s, OrderedSet *l);
void ordered_set_print(FILE *f, const char *field, OrderedSet *s);
#define ORDERED_SET_FOREACH(e, s, i) \
for ((i) = ITERATOR_FIRST; ordered_set_iterate((s), &(i), (void**)&(e)); )
#define _ORDERED_SET_FOREACH(e, s, i) \
for (Iterator i = ITERATOR_FIRST; ordered_set_iterate((s), &i, (void**)&(e)); )
#define ORDERED_SET_FOREACH(e, s) \
_ORDERED_SET_FOREACH(e, s, UNIQ_T(i, UNIQ))
DEFINE_TRIVIAL_CLEANUP_FUNC(OrderedSet*, ordered_set_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(OrderedSet*, ordered_set_free_free);

View File

@ -34,7 +34,7 @@ int quotactl_path(int cmd, const char *path, int id, void *addr) {
r = get_block_device(path, &devno);
if (r < 0)
return r;
if (devno == 0)
if (devno == 0) /* Doesn't have a block device */
return -ENODEV;
return quotactl_devno(cmd, devno, id, addr);

View File

@ -135,8 +135,10 @@ int _set_put_strdupv(Set **s, char **l HASHMAP_DEBUG_PARAMS);
int set_put_strsplit(Set *s, const char *v, const char *separators, ExtractFlags flags);
#define SET_FOREACH(e, s, i) \
for ((i) = ITERATOR_FIRST; set_iterate((s), &(i), (void**)&(e)); )
#define _SET_FOREACH(e, s, i) \
for (Iterator i = ITERATOR_FIRST; set_iterate((s), &i, (void**)&(e)); )
#define SET_FOREACH(e, s) \
_SET_FOREACH(e, s, UNIQ_T(i, UNIQ))
#define SET_FOREACH_MOVE(e, d, s) \
for (; ({ e = set_first(s); assert_se(!e || set_move_one(d, s, e) >= 0); e; }); )

View File

@ -145,7 +145,6 @@ static int list_bus_names(int argc, char **argv, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_hashmap_free_ Hashmap *names = NULL;
_cleanup_(table_unrefp) Table *table = NULL;
Iterator iterator;
char **i, *k;
void *v;
int r;
@ -247,7 +246,7 @@ static int list_bus_names(int argc, char **argv, void *userdata) {
table_set_header(table, arg_legend);
HASHMAP_FOREACH_KEY(v, k, names, iterator) {
HASHMAP_FOREACH_KEY(v, k, names) {
_cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;
if (v == NAME_IS_ACTIVATABLE) {
@ -986,7 +985,6 @@ static int introspect(int argc, char **argv, void *userdata) {
_cleanup_(member_set_freep) Set *members = NULL;
unsigned name_width, type_width, signature_width, result_width, j, k = 0;
Member *m, **sorted = NULL;
Iterator i;
const char *xml;
int r;
@ -1022,7 +1020,7 @@ static int introspect(int argc, char **argv, void *userdata) {
return r;
/* Second, find the current values for them */
SET_FOREACH(m, members, i) {
SET_FOREACH(m, members) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
if (!streq(m->type, "property"))
@ -1105,7 +1103,7 @@ static int introspect(int argc, char **argv, void *userdata) {
sorted = newa(Member*, set_size(members));
SET_FOREACH(m, members, i) {
SET_FOREACH(m, members) {
if (argv[3] && !streq(argv[3], m->interface))
continue;

View File

@ -582,7 +582,6 @@ static int group_compare(Group * const *a, Group * const *b) {
}
static void display(Hashmap *a) {
Iterator i;
Group *g;
Group **array;
signed path_columns;
@ -596,7 +595,7 @@ static void display(Hashmap *a) {
array = newa(Group*, hashmap_size(a));
HASHMAP_FOREACH(g, a, i)
HASHMAP_FOREACH(g, a)
if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid)
array[n++] = g;

View File

@ -850,7 +850,6 @@ static int automount_stop(Unit *u) {
static int automount_serialize(Unit *u, FILE *f, FDSet *fds) {
Automount *a = AUTOMOUNT(u);
Iterator i;
void *p;
int r;
@ -862,9 +861,9 @@ static int automount_serialize(Unit *u, FILE *f, FDSet *fds) {
(void) serialize_item(f, "result", automount_result_to_string(a->result));
(void) serialize_item_format(f, "dev-id", "%lu", (unsigned long) a->dev_id);
SET_FOREACH(p, a->tokens, i)
SET_FOREACH(p, a->tokens)
(void) serialize_item_format(f, "token", "%u", PTR_TO_UINT(p));
SET_FOREACH(p, a->expire_tokens, i)
SET_FOREACH(p, a->expire_tokens)
(void) serialize_item_format(f, "expire-token", "%u", PTR_TO_UINT(p));
r = serialize_fd(f, fds, "pipe-fd", a->pipe_fd);

View File

@ -646,14 +646,13 @@ int bpf_firewall_load_custom(Unit *u) {
static int attach_custom_bpf_progs(Unit *u, const char *path, int attach_type, Set **set, Set **set_installed) {
BPFProgram *prog;
Iterator i;
int r;
assert(u);
set_clear(*set_installed);
SET_FOREACH(prog, *set, i) {
SET_FOREACH(prog, *set) {
r = bpf_program_cgroup_attach(prog, attach_type, path, BPF_F_ALLOW_MULTI);
if (r < 0)
return log_unit_error_errno(u, r, "Attaching custom egress BPF program to cgroup %s failed: %m", path);

View File

@ -1516,9 +1516,8 @@ CGroupMask unit_get_members_mask(Unit *u) {
if (u->type == UNIT_SLICE) {
void *v;
Unit *member;
Iterator i;
HASHMAP_FOREACH_KEY(v, member, u->dependencies[UNIT_BEFORE], i)
HASHMAP_FOREACH_KEY(v, member, u->dependencies[UNIT_BEFORE])
if (UNIT_DEREF(member->slice) == u)
u->cgroup_members_mask |= unit_get_subtree_mask(member); /* note that this calls ourselves again, for the children */
}
@ -1940,7 +1939,6 @@ static int unit_attach_pid_to_cgroup_via_bus(Unit *u, pid_t pid, const char *suf
int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
CGroupMask delegated_mask;
const char *p;
Iterator i;
void *pidp;
int r, q;
@ -1970,7 +1968,7 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
delegated_mask = unit_get_delegate_mask(u);
r = 0;
SET_FOREACH(pidp, pids, i) {
SET_FOREACH(pidp, pids) {
pid_t pid = PTR_TO_PID(pidp);
CGroupController c;
@ -2158,7 +2156,6 @@ static int unit_realize_cgroup_now_enable(Unit *u, ManagerState state) {
/* Controllers can only be disabled depth-first, from the leaves of the
* hierarchy upwards to the unit in question. */
static int unit_realize_cgroup_now_disable(Unit *u, ManagerState state) {
Iterator i;
Unit *m;
void *v;
@ -2167,7 +2164,7 @@ static int unit_realize_cgroup_now_disable(Unit *u, ManagerState state) {
if (u->type != UNIT_SLICE)
return 0;
HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE]) {
CGroupMask target_mask, enable_mask, new_target_mask, new_enable_mask;
int r;
@ -2331,14 +2328,13 @@ void unit_add_family_to_cgroup_realize_queue(Unit *u) {
* masks. */
do {
Iterator i;
Unit *m;
void *v;
/* Children of u likely changed when we're called */
u->cgroup_members_mask_valid = false;
HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE]) {
/* Skip units that have a dependency on the slice but aren't actually in it. */
if (UNIT_DEREF(m->slice) != u)
continue;
@ -3527,10 +3523,9 @@ void unit_invalidate_cgroup_bpf(Unit *u) {
* list of our children includes our own. */
if (u->type == UNIT_SLICE) {
Unit *member;
Iterator i;
void *v;
HASHMAP_FOREACH_KEY(v, member, u->dependencies[UNIT_BEFORE], i)
HASHMAP_FOREACH_KEY(v, member, u->dependencies[UNIT_BEFORE])
if (UNIT_DEREF(member->slice) == u)
unit_invalidate_cgroup_bpf(member);
}
@ -3552,12 +3547,11 @@ bool unit_cgroup_delegate(Unit *u) {
}
void manager_invalidate_startup_units(Manager *m) {
Iterator i;
Unit *u;
assert(m);
SET_FOREACH(u, m->startup_units, i)
SET_FOREACH(u, m->startup_units)
unit_invalidate_cgroup(u, CGROUP_MASK_CPU|CGROUP_MASK_IO|CGROUP_MASK_BLKIO);
}
@ -3608,6 +3602,9 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
assert(u);
assert(IN_SET(action, FREEZER_FREEZE, FREEZER_THAW));
if (!cg_freezer_supported())
return 0;
if (!u->cgroup_realized)
return -EBUSY;

View File

@ -79,10 +79,9 @@ static int vl_method_get_user_record(Varlink *link, JsonVariant *parameters, Var
else if (p.user_name)
r = dynamic_user_lookup_name(m, p.user_name, &found_uid);
else {
Iterator i;
DynamicUser *d;
HASHMAP_FOREACH(d, m->dynamic_users, i) {
HASHMAP_FOREACH(d, m->dynamic_users) {
r = dynamic_user_current(d, &uid);
if (r == -EAGAIN) /* not realized yet? */
continue;
@ -189,9 +188,8 @@ static int vl_method_get_group_record(Varlink *link, JsonVariant *parameters, Va
r = dynamic_user_lookup_name(m, p.group_name, (uid_t*) &found_gid);
else {
DynamicUser *d;
Iterator i;
HASHMAP_FOREACH(d, m->dynamic_users, i) {
HASHMAP_FOREACH(d, m->dynamic_users) {
uid_t uid;
r = dynamic_user_current(d, &uid);

View File

@ -360,7 +360,6 @@ static int property_get_syscall_filter(
int r;
#if HAVE_SECCOMP
Iterator i;
void *id, *val;
#endif
@ -377,7 +376,7 @@ static int property_get_syscall_filter(
return r;
#if HAVE_SECCOMP
HASHMAP_FOREACH_KEY(val, id, c->syscall_filter, i) {
HASHMAP_FOREACH_KEY(val, id, c->syscall_filter) {
_cleanup_free_ char *name = NULL;
const char *e = NULL;
char *s;
@ -430,7 +429,6 @@ static int property_get_syscall_archs(
int r;
#if HAVE_SECCOMP
Iterator i;
void *id;
#endif
@ -439,7 +437,7 @@ static int property_get_syscall_archs(
assert(c);
#if HAVE_SECCOMP
SET_FOREACH(id, c->syscall_archs, i) {
SET_FOREACH(id, c->syscall_archs) {
const char *name;
name = seccomp_arch_to_string(PTR_TO_UINT32(id) - 1);
@ -526,7 +524,6 @@ static int property_get_address_families(
ExecContext *c = userdata;
_cleanup_strv_free_ char **l = NULL;
Iterator i;
void *af;
int r;
@ -542,7 +539,7 @@ static int property_get_address_families(
if (r < 0)
return r;
SET_FOREACH(af, c->address_families, i) {
SET_FOREACH(af, c->address_families) {
const char *name;
name = af_to_name(PTR_TO_INT(af));
@ -759,7 +756,6 @@ static int property_get_set_credential(
ExecContext *c = userdata;
ExecSetCredential *sc;
Iterator iterator;
int r;
assert(bus);
@ -771,7 +767,7 @@ static int property_get_set_credential(
if (r < 0)
return r;
HASHMAP_FOREACH(sc, c->set_credentials, iterator) {
HASHMAP_FOREACH(sc, c->set_credentials) {
r = sd_bus_message_open_container(reply, 'r', "say");
if (r < 0)

View File

@ -164,14 +164,13 @@ static int bus_job_enumerate(sd_bus *bus, const char *path, void *userdata, char
_cleanup_strv_free_ char **l = NULL;
Manager *m = userdata;
unsigned k = 0;
Iterator i;
Job *j;
l = new0(char*, hashmap_size(m->jobs)+1);
if (!l)
return -ENOMEM;
HASHMAP_FOREACH(j, m->jobs, i) {
HASHMAP_FOREACH(j, m->jobs) {
l[k] = job_dbus_path(j);
if (!l[k])
return -ENOMEM;

View File

@ -1058,7 +1058,6 @@ static int list_units_filtered(sd_bus_message *message, void *userdata, sd_bus_e
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
const char *k;
Iterator i;
Unit *u;
int r;
@ -1079,7 +1078,7 @@ static int list_units_filtered(sd_bus_message *message, void *userdata, sd_bus_e
if (r < 0)
return r;
HASHMAP_FOREACH_KEY(u, k, m->units, i) {
HASHMAP_FOREACH_KEY(u, k, m->units) {
if (k != u->id)
continue;
@ -1139,7 +1138,6 @@ static int method_list_units_by_patterns(sd_bus_message *message, void *userdata
static int method_list_jobs(sd_bus_message *message, void *userdata, sd_bus_error *error) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Iterator i;
Job *j;
int r;
@ -1160,7 +1158,7 @@ static int method_list_jobs(sd_bus_message *message, void *userdata, sd_bus_erro
if (r < 0)
return r;
HASHMAP_FOREACH(j, m->jobs, i) {
HASHMAP_FOREACH(j, m->jobs) {
_cleanup_free_ char *unit_path = NULL, *job_path = NULL;
job_path = job_dbus_path(j);
@ -1759,7 +1757,6 @@ static int method_get_dynamic_users(sd_bus_message *message, void *userdata, sd_
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
DynamicUser *d;
Iterator i;
int r;
assert(message);
@ -1778,7 +1775,7 @@ static int method_get_dynamic_users(sd_bus_message *message, void *userdata, sd_
if (r < 0)
return r;
HASHMAP_FOREACH(d, m->dynamic_users, i) {
HASHMAP_FOREACH(d, m->dynamic_users) {
uid_t uid;
r = dynamic_user_current(d, &uid);
@ -1804,7 +1801,6 @@ static int list_unit_files_by_patterns(sd_bus_message *message, void *userdata,
Manager *m = userdata;
UnitFileList *item;
Hashmap *h;
Iterator i;
int r;
assert(message);
@ -1832,7 +1828,7 @@ static int list_unit_files_by_patterns(sd_bus_message *message, void *userdata,
if (r < 0)
goto fail;
HASHMAP_FOREACH(item, h, i) {
HASHMAP_FOREACH(item, h) {
r = sd_bus_message_append(reply, "(ss)", item->path, unit_file_state_to_string(item->state));
if (r < 0)

View File

@ -42,7 +42,6 @@ static int property_get_exit_status_set(
const ExitStatusSet *status_set = userdata;
unsigned n;
Iterator i;
int r;
assert(bus);
@ -57,7 +56,7 @@ static int property_get_exit_status_set(
if (r < 0)
return r;
BITMAP_FOREACH(n, &status_set->status, i) {
BITMAP_FOREACH(n, &status_set->status) {
assert(n < 256);
r = sd_bus_message_append_basic(reply, 'i', &n);
@ -73,7 +72,7 @@ static int property_get_exit_status_set(
if (r < 0)
return r;
BITMAP_FOREACH(n, &status_set->signal, i) {
BITMAP_FOREACH(n, &status_set->signal) {
const char *str;
str = signal_to_string(n);

View File

@ -103,7 +103,6 @@ static int property_get_names(
sd_bus_error *error) {
Unit *u = userdata;
Iterator i;
const char *t;
int r;
@ -119,7 +118,7 @@ static int property_get_names(
if (r < 0)
return r;
SET_FOREACH(t, u->aliases, i) {
SET_FOREACH(t, u->aliases) {
r = sd_bus_message_append(reply, "s", t);
if (r < 0)
return r;
@ -157,7 +156,6 @@ static int property_get_dependencies(
sd_bus_error *error) {
Hashmap **h = userdata;
Iterator j;
Unit *u;
void *v;
int r;
@ -170,7 +168,7 @@ static int property_get_dependencies(
if (r < 0)
return r;
HASHMAP_FOREACH_KEY(v, u, *h, j) {
HASHMAP_FOREACH_KEY(v, u, *h) {
r = sd_bus_message_append(reply, "s", u->id);
if (r < 0)
return r;
@ -190,7 +188,6 @@ static int property_get_requires_mounts_for(
Hashmap **h = userdata;
const char *p;
Iterator j;
void *v;
int r;
@ -202,7 +199,7 @@ static int property_get_requires_mounts_for(
if (r < 0)
return r;
HASHMAP_FOREACH_KEY(v, p, *h, j) {
HASHMAP_FOREACH_KEY(v, p, *h) {
r = sd_bus_message_append(reply, "s", p);
if (r < 0)
return r;
@ -1729,7 +1726,6 @@ int bus_unit_queue_job(
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_free_ char *job_path = NULL, *unit_path = NULL;
_cleanup_set_free_ Set *affected = NULL;
Iterator i;
Job *j, *a;
int r;
@ -1808,7 +1804,7 @@ int bus_unit_queue_job(
if (r < 0)
return r;
SET_FOREACH(a, affected, i) {
SET_FOREACH(a, affected) {
if (a->id == j->id)
continue;

View File

@ -457,14 +457,13 @@ static int bus_unit_enumerate(sd_bus *bus, const char *path, void *userdata, cha
_cleanup_strv_free_ char **l = NULL;
Manager *m = userdata;
unsigned k = 0;
Iterator i;
Unit *u;
l = new0(char*, hashmap_size(m->units)+1);
if (!l)
return -ENOMEM;
HASHMAP_FOREACH(u, m->units, i) {
HASHMAP_FOREACH(u, m->units) {
l[k] = unit_dbus_path(u);
if (!l[k])
return -ENOMEM;
@ -767,7 +766,6 @@ static int bus_on_connection(sd_event_source *s, int fd, uint32_t revents, void
}
static int bus_setup_api(Manager *m, sd_bus *bus) {
Iterator i;
char *name;
Unit *u;
int r;
@ -787,7 +785,7 @@ static int bus_setup_api(Manager *m, sd_bus *bus) {
if (r < 0)
return r;
HASHMAP_FOREACH_KEY(u, name, m->watch_bus, i) {
HASHMAP_FOREACH_KEY(u, name, m->watch_bus) {
r = unit_install_bus_match(u, bus, name);
if (r < 0)
log_error_errno(r, "Failed to subscribe to NameOwnerChanged signal for '%s': %m", name);
@ -976,7 +974,6 @@ int bus_init_private(Manager *m) {
}
static void destroy_bus(Manager *m, sd_bus **bus) {
Iterator i;
Unit *u;
Job *j;
@ -987,7 +984,7 @@ static void destroy_bus(Manager *m, sd_bus **bus) {
return;
/* Make sure all bus slots watching names are released. */
HASHMAP_FOREACH(u, m->watch_bus, i) {
HASHMAP_FOREACH(u, m->watch_bus) {
if (u->match_bus_slot && sd_bus_slot_get_bus(u->match_bus_slot) == *bus)
u->match_bus_slot = sd_bus_slot_unref(u->match_bus_slot);
if (u->get_name_owner_slot && sd_bus_slot_get_bus(u->get_name_owner_slot) == *bus)
@ -998,11 +995,11 @@ static void destroy_bus(Manager *m, sd_bus **bus) {
if (m->subscribed && sd_bus_track_get_bus(m->subscribed) == *bus)
m->subscribed = sd_bus_track_unref(m->subscribed);
HASHMAP_FOREACH(j, m->jobs, i)
HASHMAP_FOREACH(j, m->jobs)
if (j->bus_track && sd_bus_track_get_bus(j->bus_track) == *bus)
j->bus_track = sd_bus_track_unref(j->bus_track);
HASHMAP_FOREACH(u, m->units, i) {
HASHMAP_FOREACH(u, m->units) {
if (u->bus_track && sd_bus_track_get_bus(u->bus_track) == *bus)
u->bus_track = sd_bus_track_unref(u->bus_track);
@ -1060,7 +1057,6 @@ void bus_done(Manager *m) {
}
int bus_fdset_add_all(Manager *m, FDSet *fds) {
Iterator i;
sd_bus *b;
int fd;
@ -1083,7 +1079,7 @@ int bus_fdset_add_all(Manager *m, FDSet *fds) {
}
}
SET_FOREACH(b, m->private_buses, i) {
SET_FOREACH(b, m->private_buses) {
fd = sd_bus_get_fd(b);
if (fd >= 0) {
fd = fdset_put_dup(fds, fd);
@ -1105,12 +1101,11 @@ int bus_foreach_bus(
int (*send_message)(sd_bus *bus, void *userdata),
void *userdata) {
Iterator i;
sd_bus *b;
int r, ret = 0;
/* Send to all direct buses, unconditionally */
SET_FOREACH(b, m->private_buses, i) {
SET_FOREACH(b, m->private_buses) {
/* Don't bother with enqueuing these messages to clients that haven't started yet */
if (sd_bus_is_ready(b) <= 0)
@ -1191,13 +1186,12 @@ int bus_verify_set_environment_async(Manager *m, sd_bus_message *call, sd_bus_er
uint64_t manager_bus_n_queued_write(Manager *m) {
uint64_t c = 0;
Iterator i;
sd_bus *b;
int r;
/* Returns the total number of messages queued for writing on all our direct and API buses. */
SET_FOREACH(b, m->private_buses, i) {
SET_FOREACH(b, m->private_buses) {
uint64_t k;
r = sd_bus_get_n_queued_write(b, &k);

View File

@ -468,13 +468,12 @@ static bool device_is_bound_by_mounts(Device *d, sd_device *dev) {
static void device_upgrade_mount_deps(Unit *u) {
Unit *other;
Iterator i;
void *v;
int r;
/* Let's upgrade Requires= to BindsTo= on us. (Used when SYSTEMD_MOUNT_DEVICE_BOUND is set) */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REQUIRED_BY], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REQUIRED_BY]) {
if (other->type != UNIT_MOUNT)
continue;

View File

@ -611,7 +611,6 @@ static DynamicUser* dynamic_user_destroy(DynamicUser *d) {
int dynamic_user_serialize(Manager *m, FILE *f, FDSet *fds) {
DynamicUser *d;
Iterator i;
assert(m);
assert(f);
@ -619,7 +618,7 @@ int dynamic_user_serialize(Manager *m, FILE *f, FDSet *fds) {
/* Dump the dynamic user database into the manager serialization, to deal with daemon reloads. */
HASHMAP_FOREACH(d, m->dynamic_users, i) {
HASHMAP_FOREACH(d, m->dynamic_users) {
int copy0, copy1;
copy0 = fdset_put_dup(fds, d->storage_socket[0]);
@ -674,7 +673,6 @@ void dynamic_user_deserialize_one(Manager *m, const char *value, FDSet *fds) {
void dynamic_user_vacuum(Manager *m, bool close_user) {
DynamicUser *d;
Iterator i;
assert(m);
@ -682,7 +680,7 @@ void dynamic_user_vacuum(Manager *m, bool close_user) {
* to which no reference exist. This is called after a daemon reload finished, in order to destroy users which
* might not be referenced anymore. */
HASHMAP_FOREACH(d, m->dynamic_users, i) {
HASHMAP_FOREACH(d, m->dynamic_users) {
if (d->n_ref > 0)
continue;

View File

@ -101,8 +101,6 @@
#define SNDBUF_SIZE (8*1024*1024)
static int shift_fds(int fds[], size_t n_fds) {
int start, restart_from;
if (n_fds <= 0)
return 0;
@ -110,13 +108,10 @@ static int shift_fds(int fds[], size_t n_fds) {
assert(fds);
start = 0;
for (;;) {
int i;
for (int start = 0;;) {
int restart_from = -1;
restart_from = -1;
for (i = start; i < (int) n_fds; i++) {
for (int i = start; i < (int) n_fds; i++) {
int nfd;
/* Already at right index? */
@ -146,7 +141,7 @@ static int shift_fds(int fds[], size_t n_fds) {
}
static int flags_fds(const int fds[], size_t n_socket_fds, size_t n_storage_fds, bool nonblock) {
size_t i, n_fds;
size_t n_fds;
int r;
n_fds = n_socket_fds + n_storage_fds;
@ -158,7 +153,7 @@ static int flags_fds(const int fds[], size_t n_socket_fds, size_t n_storage_fds,
/* Drops/Sets O_NONBLOCK and FD_CLOEXEC from the file flags.
* O_NONBLOCK only applies to socket activation though. */
for (i = 0; i < n_fds; i++) {
for (size_t i = 0; i < n_fds; i++) {
if (i < n_socket_fds) {
r = fd_nonblock(fds[i], nonblock);
@ -1745,7 +1740,6 @@ static int build_environment(
char ***ret) {
_cleanup_strv_free_ char **our_env = NULL;
ExecDirectoryType t;
size_t n_env = 0;
char *x;
@ -1873,7 +1867,7 @@ static int build_environment(
our_env[n_env++] = x;
}
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
_cleanup_free_ char *pre = NULL, *joined = NULL;
const char *n;
@ -1991,12 +1985,10 @@ static bool exec_needs_mount_namespace(
return true;
if (context->root_directory) {
ExecDirectoryType t;
if (context->mount_apivfs)
return true;
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
if (!params->prefix[t])
continue;
@ -2483,7 +2475,6 @@ static int acquire_credentials(
_cleanup_close_ int dfd = -1;
ExecSetCredential *sc;
char **id, **fn;
Iterator iterator;
int r;
assert(context);
@ -2495,7 +2486,7 @@ static int acquire_credentials(
/* First we use the literally specified credentials. Note that they might be overriden again below,
* and thus act as a "default" if the same credential is specified multiple times */
HASHMAP_FOREACH(sc, context->set_credentials, iterator) {
HASHMAP_FOREACH(sc, context->set_credentials) {
size_t add;
add = strlen(sc->id) + sc->size;
@ -2880,8 +2871,7 @@ static int compile_bind_mounts(
_cleanup_strv_free_ char **empty_directories = NULL;
BindMount *bind_mounts;
size_t n, h = 0, i;
ExecDirectoryType t;
size_t n, h = 0;
int r;
assert(context);
@ -2891,7 +2881,7 @@ static int compile_bind_mounts(
assert(ret_empty_directories);
n = context->n_bind_mounts;
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
if (!params->prefix[t])
continue;
@ -2909,7 +2899,7 @@ static int compile_bind_mounts(
if (!bind_mounts)
return -ENOMEM;
for (i = 0; i < context->n_bind_mounts; i++) {
for (size_t i = 0; i < context->n_bind_mounts; i++) {
BindMount *item = context->bind_mounts + i;
char *s, *d;
@ -2935,7 +2925,7 @@ static int compile_bind_mounts(
};
}
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
char **suffix;
if (!params->prefix[t])
@ -3020,8 +3010,6 @@ static bool insist_on_sandboxing(
const BindMount *bind_mounts,
size_t n_bind_mounts) {
size_t i;
assert(context);
assert(n_bind_mounts == 0 || bind_mounts);
@ -3043,7 +3031,7 @@ static bool insist_on_sandboxing(
/* If there are any bind mounts set that don't map back onto themselves, fs namespacing becomes
* essential. */
for (i = 0; i < n_bind_mounts; i++)
for (size_t i = 0; i < n_bind_mounts; i++)
if (!path_equal(bind_mounts[i].source, bind_mounts[i].destination))
return true;
@ -3236,13 +3224,12 @@ static int apply_root_directory(
assert(context);
assert(exit_status);
if (params->flags & EXEC_APPLY_CHROOT) {
if (params->flags & EXEC_APPLY_CHROOT)
if (!needs_mount_ns && context->root_directory)
if (chroot(context->root_directory) < 0) {
*exit_status = EXIT_CHROOT;
return -errno;
}
}
return 0;
}
@ -3467,7 +3454,6 @@ static int acquire_home(const ExecContext *c, uid_t uid, const char** home, char
static int compile_suggested_paths(const ExecContext *c, const ExecParameters *p, char ***ret) {
_cleanup_strv_free_ char ** list = NULL;
ExecDirectoryType t;
int r;
assert(c);
@ -3480,7 +3466,7 @@ static int compile_suggested_paths(const ExecContext *c, const ExecParameters *p
* dynamic UID allocation, in order to save us from doing costly recursive chown()s of the special
* directories. */
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
char **i;
if (t == EXEC_DIRECTORY_CONFIGURATION)
@ -3615,7 +3601,6 @@ static int exec_child(
uid_t uid = UID_INVALID;
gid_t gid = GID_INVALID;
size_t n_fds;
ExecDirectoryType dt;
int secure_bits;
_cleanup_free_ gid_t *gids_after_pam = NULL;
int ngids_after_pam = 0;
@ -3954,7 +3939,7 @@ static int exec_child(
}
}
for (dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
for (ExecDirectoryType dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
r = setup_exec_directory(context, params, uid, gid, dt, exit_status);
if (r < 0)
return log_unit_error_errno(unit, r, "Failed to set up special execution directory in %s: %m", params->prefix[dt]);
@ -4674,8 +4659,6 @@ int exec_spawn(Unit *unit,
}
void exec_context_init(ExecContext *c) {
ExecDirectoryType i;
assert(c);
c->umask = 0022;
@ -4686,8 +4669,8 @@ void exec_context_init(ExecContext *c) {
c->ignore_sigpipe = true;
c->timer_slack_nsec = NSEC_INFINITY;
c->personality = PERSONALITY_INVALID;
for (i = 0; i < _EXEC_DIRECTORY_TYPE_MAX; i++)
c->directories[i].mode = 0755;
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++)
c->directories[t].mode = 0755;
c->timeout_clean_usec = USEC_INFINITY;
c->capability_bounding_set = CAP_ALL;
assert_cc(NAMESPACE_FLAGS_INITIAL != NAMESPACE_FLAGS_ALL);
@ -4697,9 +4680,6 @@ void exec_context_init(ExecContext *c) {
}
void exec_context_done(ExecContext *c) {
ExecDirectoryType i;
size_t l;
assert(c);
c->environment = strv_free(c->environment);
@ -4709,7 +4689,7 @@ void exec_context_done(ExecContext *c) {
rlimit_free_all(c->rlimit);
for (l = 0; l < 3; l++) {
for (size_t l = 0; l < 3; l++) {
c->stdio_fdname[l] = mfree(c->stdio_fdname[l]);
c->stdio_file[l] = mfree(c->stdio_file[l]);
}
@ -4758,8 +4738,8 @@ void exec_context_done(ExecContext *c) {
c->syscall_archs = set_free(c->syscall_archs);
c->address_families = set_free(c->address_families);
for (i = 0; i < _EXEC_DIRECTORY_TYPE_MAX; i++)
c->directories[i].paths = strv_free(c->directories[i].paths);
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++)
c->directories[t].paths = strv_free(c->directories[t].paths);
c->log_level_max = -1;
@ -4852,23 +4832,17 @@ ExecCommand* exec_command_free_list(ExecCommand *c) {
}
void exec_command_free_array(ExecCommand **c, size_t n) {
size_t i;
for (i = 0; i < n; i++)
for (size_t i = 0; i < n; i++)
c[i] = exec_command_free_list(c[i]);
}
void exec_command_reset_status_array(ExecCommand *c, size_t n) {
size_t i;
for (i = 0; i < n; i++)
for (size_t i = 0; i < n; i++)
exec_status_reset(&c[i].exec_status);
}
void exec_command_reset_status_list_array(ExecCommand **c, size_t n) {
size_t i;
for (i = 0; i < n; i++) {
for (size_t i = 0; i < n; i++) {
ExecCommand *z;
LIST_FOREACH(command, z, c[i])
@ -4920,7 +4894,7 @@ static int exec_context_named_iofds(
const ExecParameters *p,
int named_iofds[static 3]) {
size_t i, targets;
size_t targets;
const char* stdio_fdname[3];
size_t n_fds;
@ -4932,12 +4906,12 @@ static int exec_context_named_iofds(
(c->std_output == EXEC_OUTPUT_NAMED_FD) +
(c->std_error == EXEC_OUTPUT_NAMED_FD);
for (i = 0; i < 3; i++)
for (size_t i = 0; i < 3; i++)
stdio_fdname[i] = exec_context_fdname(c, i);
n_fds = p->n_storage_fds + p->n_socket_fds;
for (i = 0; i < n_fds && targets > 0; i++)
for (size_t i = 0; i < n_fds && targets > 0; i++)
if (named_iofds[STDIN_FILENO] < 0 &&
c->std_input == EXEC_INPUT_NAMED_FD &&
stdio_fdname[STDIN_FILENO] &&
@ -4975,7 +4949,6 @@ static int exec_context_load_environment(const Unit *unit, const ExecContext *c,
STRV_FOREACH(i, c->environment_files) {
char *fn;
int k;
unsigned n;
bool ignore = false;
char **p;
_cleanup_globfree_ glob_t pglob = {};
@ -5008,7 +4981,7 @@ static int exec_context_load_environment(const Unit *unit, const ExecContext *c,
/* When we don't match anything, -ENOENT should be returned */
assert(pglob.gl_pathc > 0);
for (n = 0; n < pglob.gl_pathc; n++) {
for (unsigned n = 0; n < pglob.gl_pathc; n++) {
k = load_env_file(NULL, pglob.gl_pathv[n], &p);
if (k < 0) {
if (ignore)
@ -5095,8 +5068,6 @@ static void strv_fprintf(FILE *f, char **l) {
void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
char **e, **d, buf_clean[FORMAT_TIMESPAN_MAX];
ExecDirectoryType dt;
unsigned i;
int r;
assert(c);
@ -5207,7 +5178,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
fprintf(f, "%sRuntimeDirectoryPreserve: %s\n", prefix, exec_preserve_mode_to_string(c->runtime_directory_preserve_mode));
for (dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
for (ExecDirectoryType dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
fprintf(f, "%s%sMode: %04o\n", prefix, exec_directory_type_to_string(dt), c->directories[dt].mode);
STRV_FOREACH(d, c->directories[dt].paths)
@ -5233,7 +5204,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
"%sCoredumpFilter: 0x%"PRIx64"\n",
prefix, c->coredump_filter);
for (i = 0; i < RLIM_NLIMITS; i++)
for (unsigned i = 0; i < RLIM_NLIMITS; i++)
if (c->rlimit[i]) {
fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
@ -5361,16 +5332,12 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
if (c->log_ratelimit_burst > 0)
fprintf(f, "%sLogRateLimitBurst: %u\n", prefix, c->log_ratelimit_burst);
if (c->n_log_extra_fields > 0) {
size_t j;
for (j = 0; j < c->n_log_extra_fields; j++) {
fprintf(f, "%sLogExtraFields: ", prefix);
fwrite(c->log_extra_fields[j].iov_base,
1, c->log_extra_fields[j].iov_len,
f);
fputc('\n', f);
}
for (size_t j = 0; j < c->n_log_extra_fields; j++) {
fprintf(f, "%sLogExtraFields: ", prefix);
fwrite(c->log_extra_fields[j].iov_base,
1, c->log_extra_fields[j].iov_len,
f);
fputc('\n', f);
}
if (c->log_namespace)
@ -5434,24 +5401,22 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
fputs("\n", f);
}
if (c->n_bind_mounts > 0)
for (i = 0; i < c->n_bind_mounts; i++)
fprintf(f, "%s%s: %s%s:%s:%s\n", prefix,
c->bind_mounts[i].read_only ? "BindReadOnlyPaths" : "BindPaths",
c->bind_mounts[i].ignore_enoent ? "-": "",
c->bind_mounts[i].source,
c->bind_mounts[i].destination,
c->bind_mounts[i].recursive ? "rbind" : "norbind");
for (size_t i = 0; i < c->n_bind_mounts; i++)
fprintf(f, "%s%s: %s%s:%s:%s\n", prefix,
c->bind_mounts[i].read_only ? "BindReadOnlyPaths" : "BindPaths",
c->bind_mounts[i].ignore_enoent ? "-": "",
c->bind_mounts[i].source,
c->bind_mounts[i].destination,
c->bind_mounts[i].recursive ? "rbind" : "norbind");
if (c->n_temporary_filesystems > 0)
for (i = 0; i < c->n_temporary_filesystems; i++) {
TemporaryFileSystem *t = c->temporary_filesystems + i;
for (size_t i = 0; i < c->n_temporary_filesystems; i++) {
const TemporaryFileSystem *t = c->temporary_filesystems + i;
fprintf(f, "%sTemporaryFileSystem: %s%s%s\n", prefix,
t->path,
isempty(t->options) ? "" : ":",
strempty(t->options));
}
fprintf(f, "%sTemporaryFileSystem: %s%s%s\n", prefix,
t->path,
isempty(t->options) ? "" : ":",
strempty(t->options));
}
if (c->utmp_id)
fprintf(f,
@ -5484,7 +5449,6 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
if (c->syscall_filter) {
#if HAVE_SECCOMP
Iterator j;
void *id, *val;
bool first = true;
#endif
@ -5497,7 +5461,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
fputc('~', f);
#if HAVE_SECCOMP
HASHMAP_FOREACH_KEY(val, id, c->syscall_filter, j) {
HASHMAP_FOREACH_KEY(val, id, c->syscall_filter) {
_cleanup_free_ char *name = NULL;
const char *errno_name = NULL;
int num = PTR_TO_INT(val);
@ -5525,7 +5489,6 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
if (c->syscall_archs) {
#if HAVE_SECCOMP
Iterator j;
void *id;
#endif
@ -5534,7 +5497,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
prefix);
#if HAVE_SECCOMP
SET_FOREACH(id, c->syscall_archs, j)
SET_FOREACH(id, c->syscall_archs)
fprintf(f, " %s", strna(seccomp_arch_to_string(PTR_TO_UINT32(id) - 1)));
#endif
fputc('\n', f);
@ -5566,7 +5529,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
fprintf(f, "%d\n", c->syscall_errno);
}
for (i = 0; i < c->n_mount_images; i++) {
for (size_t i = 0; i < c->n_mount_images; i++) {
MountOptions *o;
fprintf(f, "%sMountImages: %s%s:%s%s", prefix,
@ -5613,11 +5576,9 @@ int exec_context_get_effective_ioprio(const ExecContext *c) {
}
void exec_context_free_log_extra_fields(ExecContext *c) {
size_t l;
assert(c);
for (l = 0; l < c->n_log_extra_fields; l++)
for (size_t l = 0; l < c->n_log_extra_fields; l++)
free(c->log_extra_fields[l].iov_base);
c->log_extra_fields = mfree(c->log_extra_fields);
c->n_log_extra_fields = 0;
@ -5654,14 +5615,13 @@ int exec_context_get_clean_directories(
char ***ret) {
_cleanup_strv_free_ char **l = NULL;
ExecDirectoryType t;
int r;
assert(c);
assert(prefix);
assert(ret);
for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
for (ExecDirectoryType t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
char **i;
if (!FLAGS_SET(mask, 1U << t))
@ -6100,13 +6060,12 @@ ExecRuntime *exec_runtime_unref(ExecRuntime *rt, bool destroy) {
int exec_runtime_serialize(const Manager *m, FILE *f, FDSet *fds) {
ExecRuntime *rt;
Iterator i;
assert(m);
assert(f);
assert(fds);
HASHMAP_FOREACH(rt, m->exec_runtime_by_id, i) {
HASHMAP_FOREACH(rt, m->exec_runtime_by_id) {
fprintf(f, "exec-runtime=%s", rt->id);
if (rt->tmp_dir)
@ -6281,8 +6240,13 @@ int exec_runtime_deserialize_one(Manager *m, const char *value, FDSet *fds) {
n = strcspn(v, " ");
buf = strndupa(v, n);
if (safe_atoi(buf, &fdpair[0]) < 0 || !fdset_contains(fds, fdpair[0]))
return log_debug("Unable to process exec-runtime netns fd specification.");
r = safe_atoi(buf, &fdpair[0]);
if (r < 0)
return log_debug_errno(r, "Unable to parse exec-runtime specification netns-socket-0=%s: %m", buf);
if (!fdset_contains(fds, fdpair[0]))
return log_debug_errno(SYNTHETIC_ERRNO(EBADF),
"exec-runtime specification netns-socket-0= refers to unknown fd %d: %m", fdpair[0]);
fdpair[0] = fdset_remove(fds, fdpair[0]);
if (v[n] != ' ')
goto finalize;
@ -6295,8 +6259,12 @@ int exec_runtime_deserialize_one(Manager *m, const char *value, FDSet *fds) {
n = strcspn(v, " ");
buf = strndupa(v, n);
if (safe_atoi(buf, &fdpair[1]) < 0 || !fdset_contains(fds, fdpair[1]))
return log_debug("Unable to process exec-runtime netns fd specification.");
r = safe_atoi(buf, &fdpair[1]);
if (r < 0)
return log_debug_errno(r, "Unable to parse exec-runtime specification netns-socket-1=%s: %m", buf);
if (!fdset_contains(fds, fdpair[0]))
return log_debug_errno(SYNTHETIC_ERRNO(EBADF),
"exec-runtime specification netns-socket-1= refers to unknown fd %d: %m", fdpair[1]);
fdpair[1] = fdset_remove(fds, fdpair[1]);
}
@ -6309,13 +6277,12 @@ finalize:
void exec_runtime_vacuum(Manager *m) {
ExecRuntime *rt;
Iterator i;
assert(m);
/* Free unreferenced ExecRuntime objects. This is used after manager deserialization process. */
HASHMAP_FOREACH(rt, m->exec_runtime_by_id, i) {
HASHMAP_FOREACH(rt, m->exec_runtime_by_id) {
if (rt->n_ref > 0)
continue;

View File

@ -458,7 +458,6 @@ int job_type_merge_and_collapse(JobType *a, JobType b, Unit *u) {
}
static bool job_is_runnable(Job *j) {
Iterator i;
Unit *other;
void *v;
@ -482,7 +481,7 @@ static bool job_is_runnable(Job *j) {
if (j->type == JOB_NOP)
return true;
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER], i)
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER])
if (other->job && job_compare(j, other->job, UNIT_AFTER) > 0) {
log_unit_debug(j->unit,
"starting held back, waiting for: %s",
@ -490,7 +489,7 @@ static bool job_is_runnable(Job *j) {
return false;
}
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE], i)
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE])
if (other->job && job_compare(j, other->job, UNIT_BEFORE) > 0) {
log_unit_debug(j->unit,
"stopping held back, waiting for: %s",
@ -957,12 +956,11 @@ static void job_emit_done_status_message(Unit *u, uint32_t job_id, JobType t, Jo
static void job_fail_dependencies(Unit *u, UnitDependency d) {
Unit *other;
Iterator i;
void *v;
assert(u);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[d], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[d]) {
Job *j = other->job;
if (!j)
@ -978,7 +976,6 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive, bool alr
Unit *u;
Unit *other;
JobType t;
Iterator i;
void *v;
assert(j);
@ -1072,12 +1069,12 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive, bool alr
finish:
/* Try to start the next jobs that can be started */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_AFTER], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_AFTER])
if (other->job) {
job_add_to_run_queue(other->job);
job_add_to_gc_queue(other->job);
}
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BEFORE], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BEFORE])
if (other->job) {
job_add_to_run_queue(other->job);
job_add_to_gc_queue(other->job);
@ -1427,7 +1424,6 @@ int job_get_timeout(Job *j, usec_t *timeout) {
bool job_may_gc(Job *j) {
Unit *other;
Iterator i;
void *v;
assert(j);
@ -1457,11 +1453,11 @@ bool job_may_gc(Job *j) {
return false;
/* The logic is inverse to job_is_runnable, we cannot GC as long as we block any job. */
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE], i)
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE])
if (other->job && job_compare(j, other->job, UNIT_BEFORE) < 0)
return false;
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER], i)
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER])
if (other->job && job_compare(j, other->job, UNIT_AFTER) < 0)
return false;
@ -1508,7 +1504,6 @@ int job_get_before(Job *j, Job*** ret) {
_cleanup_free_ Job** list = NULL;
size_t n = 0, n_allocated = 0;
Unit *other = NULL;
Iterator i;
void *v;
/* Returns a list of all pending jobs that need to finish before this job may be started. */
@ -1521,7 +1516,7 @@ int job_get_before(Job *j, Job*** ret) {
return 0;
}
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER], i) {
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER]) {
if (!other->job)
continue;
if (job_compare(j, other->job, UNIT_AFTER) <= 0)
@ -1532,7 +1527,7 @@ int job_get_before(Job *j, Job*** ret) {
list[n++] = other->job;
}
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE]) {
if (!other->job)
continue;
if (job_compare(j, other->job, UNIT_BEFORE) <= 0)
@ -1555,14 +1550,13 @@ int job_get_after(Job *j, Job*** ret) {
size_t n = 0, n_allocated = 0;
Unit *other = NULL;
void *v;
Iterator i;
assert(j);
assert(ret);
/* Returns a list of all pending jobs that are waiting for this job to finish. */
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_BEFORE]) {
if (!other->job)
continue;
@ -1577,7 +1571,7 @@ int job_get_after(Job *j, Job*** ret) {
list[n++] = other->job;
}
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER], i) {
HASHMAP_FOREACH_KEY(v, other, j->unit->dependencies[UNIT_AFTER]) {
if (!other->job)
continue;

View File

@ -79,10 +79,9 @@ static bool ignore_proc(pid_t pid, bool warn_rootfs) {
static void log_children_no_yet_killed(Set *pids) {
_cleanup_free_ char *lst_child = NULL;
Iterator i;
void *p;
SET_FOREACH(p, pids, i) {
SET_FOREACH(p, pids) {
_cleanup_free_ char *s = NULL;
if (get_process_comm(PTR_TO_PID(p), &s) < 0)
@ -121,7 +120,6 @@ static int wait_for_children(Set *pids, sigset_t *mask, usec_t timeout) {
struct timespec ts;
int k;
void *p;
Iterator i;
/* First, let the kernel inform us about killed
* children. Most processes will probably be our
@ -145,7 +143,7 @@ static int wait_for_children(Set *pids, sigset_t *mask, usec_t timeout) {
/* Now explicitly check who might be remaining, who
* might not be our child. */
SET_FOREACH(p, pids, i) {
SET_FOREACH(p, pids) {
/* kill(pid, 0) sends no signal, but it tells
* us whether the process still exists. */

View File

@ -198,7 +198,6 @@ static void manager_flip_auto_status(Manager *m, bool enable, const char *reason
static void manager_print_jobs_in_progress(Manager *m) {
_cleanup_free_ char *job_of_n = NULL;
Iterator i;
Job *j;
unsigned counter = 0, print_nr;
char cylon[6 + CYLON_BUFFER_EXTRA + 1];
@ -213,7 +212,7 @@ static void manager_print_jobs_in_progress(Manager *m) {
print_nr = (m->jobs_in_progress_iteration / JOBS_IN_PROGRESS_PERIOD_DIVISOR) % m->n_running_jobs;
HASHMAP_FOREACH(j, m->jobs, i)
HASHMAP_FOREACH(j, m->jobs)
if (j->state == JOB_RUNNING && counter++ == print_nr)
break;
@ -672,19 +671,19 @@ static int manager_setup_prefix(Manager *m) {
};
static const struct table_entry paths_system[_EXEC_DIRECTORY_TYPE_MAX] = {
[EXEC_DIRECTORY_RUNTIME] = { SD_PATH_SYSTEM_RUNTIME, NULL },
[EXEC_DIRECTORY_STATE] = { SD_PATH_SYSTEM_STATE_PRIVATE, NULL },
[EXEC_DIRECTORY_CACHE] = { SD_PATH_SYSTEM_STATE_CACHE, NULL },
[EXEC_DIRECTORY_LOGS] = { SD_PATH_SYSTEM_STATE_LOGS, NULL },
[EXEC_DIRECTORY_RUNTIME] = { SD_PATH_SYSTEM_RUNTIME, NULL },
[EXEC_DIRECTORY_STATE] = { SD_PATH_SYSTEM_STATE_PRIVATE, NULL },
[EXEC_DIRECTORY_CACHE] = { SD_PATH_SYSTEM_STATE_CACHE, NULL },
[EXEC_DIRECTORY_LOGS] = { SD_PATH_SYSTEM_STATE_LOGS, NULL },
[EXEC_DIRECTORY_CONFIGURATION] = { SD_PATH_SYSTEM_CONFIGURATION, NULL },
};
static const struct table_entry paths_user[_EXEC_DIRECTORY_TYPE_MAX] = {
[EXEC_DIRECTORY_RUNTIME] = { SD_PATH_USER_RUNTIME, NULL },
[EXEC_DIRECTORY_STATE] = { SD_PATH_USER_CONFIGURATION, NULL },
[EXEC_DIRECTORY_CACHE] = { SD_PATH_USER_STATE_CACHE, NULL },
[EXEC_DIRECTORY_LOGS] = { SD_PATH_USER_CONFIGURATION, "log" },
[EXEC_DIRECTORY_CONFIGURATION] = { SD_PATH_USER_CONFIGURATION, NULL },
[EXEC_DIRECTORY_RUNTIME] = { SD_PATH_USER_RUNTIME, NULL },
[EXEC_DIRECTORY_STATE] = { SD_PATH_USER_CONFIGURATION, NULL },
[EXEC_DIRECTORY_CACHE] = { SD_PATH_USER_STATE_CACHE, NULL },
[EXEC_DIRECTORY_LOGS] = { SD_PATH_USER_CONFIGURATION, "log" },
[EXEC_DIRECTORY_CONFIGURATION] = { SD_PATH_USER_CONFIGURATION, NULL },
};
assert(m);
@ -1147,13 +1146,12 @@ enum {
static void unit_gc_mark_good(Unit *u, unsigned gc_marker) {
Unit *other;
Iterator i;
void *v;
u->gc_marker = gc_marker + GC_OFFSET_GOOD;
/* Recursively mark referenced units as GOOD as well */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REFERENCES], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REFERENCES])
if (other->gc_marker == gc_marker + GC_OFFSET_UNSURE)
unit_gc_mark_good(other, gc_marker);
}
@ -1161,7 +1159,6 @@ static void unit_gc_mark_good(Unit *u, unsigned gc_marker) {
static void unit_gc_sweep(Unit *u, unsigned gc_marker) {
Unit *other;
bool is_bad;
Iterator i;
void *v;
assert(u);
@ -1180,7 +1177,7 @@ static void unit_gc_sweep(Unit *u, unsigned gc_marker) {
is_bad = true;
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REFERENCED_BY], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REFERENCED_BY]) {
unit_gc_sweep(other, gc_marker);
if (other->gc_marker == gc_marker + GC_OFFSET_GOOD)
@ -1474,7 +1471,6 @@ static void manager_enumerate(Manager *m) {
}
static void manager_coldplug(Manager *m) {
Iterator i;
Unit *u;
char *k;
int r;
@ -1484,7 +1480,7 @@ static void manager_coldplug(Manager *m) {
log_debug("Invoking unit coldplug() handlers…");
/* Let's place the units back into their deserialized state */
HASHMAP_FOREACH_KEY(u, k, m->units, i) {
HASHMAP_FOREACH_KEY(u, k, m->units) {
/* ignore aliases */
if (u->id != k)
@ -1497,7 +1493,6 @@ static void manager_coldplug(Manager *m) {
}
static void manager_catchup(Manager *m) {
Iterator i;
Unit *u;
char *k;
@ -1506,7 +1501,7 @@ static void manager_catchup(Manager *m) {
log_debug("Invoking unit catchup() handlers…");
/* Let's catch up on any state changes that happened while we were reloading/reexecing */
HASHMAP_FOREACH_KEY(u, k, m->units, i) {
HASHMAP_FOREACH_KEY(u, k, m->units) {
/* ignore aliases */
if (u->id != k)
@ -1517,12 +1512,11 @@ static void manager_catchup(Manager *m) {
}
static void manager_distribute_fds(Manager *m, FDSet *fds) {
Iterator i;
Unit *u;
assert(m);
HASHMAP_FOREACH(u, m->units, i) {
HASHMAP_FOREACH(u, m->units) {
if (fdset_size(fds) <= 0)
break;
@ -1883,7 +1877,6 @@ Unit *manager_get_unit(Manager *m, const char *name) {
static int manager_dispatch_target_deps_queue(Manager *m) {
Unit *u;
unsigned k;
int r = 0;
static const UnitDependency deps[] = {
@ -1901,12 +1894,11 @@ static int manager_dispatch_target_deps_queue(Manager *m) {
LIST_REMOVE(target_deps_queue, u->manager->target_deps_queue, u);
u->in_target_deps_queue = false;
for (k = 0; k < ELEMENTSOF(deps); k++) {
for (size_t k = 0; k < ELEMENTSOF(deps); k++) {
Unit *target;
Iterator i;
void *v;
HASHMAP_FOREACH_KEY(v, target, u->dependencies[deps[k]], i) {
HASHMAP_FOREACH_KEY(v, target, u->dependencies[deps[k]]) {
r = unit_add_default_target_dependency(u, target);
if (r < 0)
return r;
@ -2099,36 +2091,32 @@ int manager_load_startable_unit_or_warn(
}
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix) {
Iterator i;
Job *j;
assert(s);
assert(f);
HASHMAP_FOREACH(j, s->jobs, i)
HASHMAP_FOREACH(j, s->jobs)
job_dump(j, f, prefix);
}
void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
Iterator i;
Unit *u;
const char *t;
assert(s);
assert(f);
HASHMAP_FOREACH_KEY(u, t, s->units, i)
HASHMAP_FOREACH_KEY(u, t, s->units)
if (u->id == t)
unit_dump(u, f, prefix);
}
void manager_dump(Manager *m, FILE *f, const char *prefix) {
ManagerTimestamp q;
assert(m);
assert(f);
for (q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
const dual_timestamp *t = m->timestamps + q;
char buf[CONST_MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
@ -2840,7 +2828,6 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
static int manager_dispatch_time_change_fd(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
Manager *m = userdata;
Iterator i;
Unit *u;
assert(m);
@ -2853,7 +2840,7 @@ static int manager_dispatch_time_change_fd(sd_event_source *source, int fd, uint
/* Restart the watch */
(void) manager_setup_time_change(m);
HASHMAP_FOREACH(u, m->units, i)
HASHMAP_FOREACH(u, m->units)
if (UNIT_VTABLE(u)->time_change)
UNIT_VTABLE(u)->time_change(u);
@ -2867,7 +2854,6 @@ static int manager_dispatch_timezone_change(
Manager *m = userdata;
int changed;
Iterator i;
Unit *u;
assert(m);
@ -2886,7 +2872,7 @@ static int manager_dispatch_timezone_change(
log_debug("Timezone has been changed (now: %s).", tzname[daylight]);
HASHMAP_FOREACH(u, m->units, i)
HASHMAP_FOREACH(u, m->units)
if (UNIT_VTABLE(u)->timezone_change)
UNIT_VTABLE(u)->timezone_change(u);
@ -3189,7 +3175,6 @@ static void manager_serialize_uid_refs_internal(
Hashmap **uid_refs,
const char *field_name) {
Iterator i;
void *p, *k;
assert(m);
@ -3200,7 +3185,7 @@ static void manager_serialize_uid_refs_internal(
/* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
* the actual counter of it is better rebuild after a reload/reexec. */
HASHMAP_FOREACH_KEY(p, k, *uid_refs, i) {
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
uint32_t c;
uid_t uid;
@ -3228,9 +3213,7 @@ int manager_serialize(
FDSet *fds,
bool switching_root) {
ManagerTimestamp q;
const char *t;
Iterator i;
Unit *u;
int r;
@ -3264,7 +3247,7 @@ int manager_serialize(
(void) serialize_usec(f, "reboot-watchdog-overridden", m->watchdog_overridden[WATCHDOG_REBOOT]);
(void) serialize_usec(f, "kexec-watchdog-overridden", m->watchdog_overridden[WATCHDOG_KEXEC]);
for (q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
_cleanup_free_ char *joined = NULL;
if (!manager_timestamp_shall_serialize(q))
@ -3323,7 +3306,7 @@ int manager_serialize(
(void) fputc('\n', f);
HASHMAP_FOREACH_KEY(u, t, m->units, i) {
HASHMAP_FOREACH_KEY(u, t, m->units) {
if (u->id != t)
continue;
@ -3826,11 +3809,10 @@ int manager_reload(Manager *m) {
void manager_reset_failed(Manager *m) {
Unit *u;
Iterator i;
assert(m);
HASHMAP_FOREACH(u, m->units, i)
HASHMAP_FOREACH(u, m->units)
unit_reset_failed(u);
}
@ -4193,11 +4175,9 @@ int manager_get_effective_environment(Manager *m, char ***ret) {
}
int manager_set_default_rlimits(Manager *m, struct rlimit **default_rlimit) {
int i;
assert(m);
for (i = 0; i < _RLIMIT_MAX; i++) {
for (unsigned i = 0; i < _RLIMIT_MAX; i++) {
m->rlimit[i] = mfree(m->rlimit[i]);
if (!default_rlimit[i])
@ -4663,14 +4643,13 @@ static void manager_vacuum_uid_refs_internal(
Hashmap **uid_refs,
int (*_clean_ipc)(uid_t uid)) {
Iterator i;
void *p, *k;
assert(m);
assert(uid_refs);
assert(_clean_ipc);
HASHMAP_FOREACH_KEY(p, k, *uid_refs, i) {
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
uint32_t c, n;
uid_t uid;

View File

@ -281,7 +281,6 @@ static int update_parameters_proc_self_mountinfo(
static int mount_add_mount_dependencies(Mount *m) {
MountParameters *pm;
Unit *other;
Iterator i;
Set *s;
int r;
@ -315,7 +314,7 @@ static int mount_add_mount_dependencies(Mount *m) {
/* Adds in dependencies to other units that use this path or paths further down in the hierarchy */
s = manager_get_units_requiring_mounts_for(UNIT(m)->manager, m->where);
SET_FOREACH(other, s, i) {
SET_FOREACH(other, s) {
if (other->load_state != UNIT_LOADED)
continue;
@ -1903,7 +1902,6 @@ static int drain_libmount(Manager *m) {
static int mount_process_proc_self_mountinfo(Manager *m) {
_cleanup_set_free_free_ Set *around = NULL, *gone = NULL;
const char *what;
Iterator i;
Unit *u;
int r;
@ -2001,7 +1999,7 @@ static int mount_process_proc_self_mountinfo(Manager *m) {
mount->proc_flags = 0;
}
SET_FOREACH(what, gone, i) {
SET_FOREACH(what, gone) {
if (set_contains(around, what))
continue;

View File

@ -1273,13 +1273,12 @@ static int service_collect_fds(
rn_socket_fds = 1;
} else {
Iterator i;
void *v;
Unit *u;
/* Pass all our configured sockets for singleton services */
HASHMAP_FOREACH_KEY(v, u, UNIT(s)->dependencies[UNIT_TRIGGERED_BY], i) {
HASHMAP_FOREACH_KEY(v, u, UNIT(s)->dependencies[UNIT_TRIGGERED_BY]) {
_cleanup_free_ int *cfds = NULL;
Socket *sock;
int cn_fds;

View File

@ -351,11 +351,10 @@ static void slice_enumerate_perpetual(Manager *m) {
static bool slice_freezer_action_supported_by_children(Unit *s) {
Unit *member;
void *v;
Iterator i;
assert(s);
HASHMAP_FOREACH_KEY(v, member, s->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, member, s->dependencies[UNIT_BEFORE]) {
int r;
if (UNIT_DEREF(member->slice) != s)
@ -377,7 +376,6 @@ static bool slice_freezer_action_supported_by_children(Unit *s) {
static int slice_freezer_action(Unit *s, FreezerAction action) {
Unit *member;
void *v;
Iterator i;
int r;
assert(s);
@ -386,7 +384,7 @@ static int slice_freezer_action(Unit *s, FreezerAction action) {
if (!slice_freezer_action_supported_by_children(s))
return log_unit_warning(s, "Requested freezer operation is not supported by all children of the slice");
HASHMAP_FOREACH_KEY(v, member, s->dependencies[UNIT_BEFORE], i) {
HASHMAP_FOREACH_KEY(v, member, s->dependencies[UNIT_BEFORE]) {
if (UNIT_DEREF(member->slice) != s)
continue;

View File

@ -2338,12 +2338,11 @@ static void socket_enter_running(Socket *s, int cfd_in) {
if (cfd < 0) {
bool pending = false;
Unit *other;
Iterator i;
void *v;
/* If there's already a start pending don't bother to
* do anything */
HASHMAP_FOREACH_KEY(v, other, UNIT(s)->dependencies[UNIT_TRIGGERS], i)
HASHMAP_FOREACH_KEY(v, other, UNIT(s)->dependencies[UNIT_TRIGGERS])
if (unit_active_or_pending(other)) {
pending = true;
break;
@ -2788,7 +2787,6 @@ static void socket_distribute_fds(Unit *u, FDSet *fds) {
assert(u);
LIST_FOREACH(port, p, s->ports) {
Iterator i;
int fd;
if (p->type != SOCKET_SOCKET)
@ -2797,7 +2795,7 @@ static void socket_distribute_fds(Unit *u, FDSet *fds) {
if (p->fd >= 0)
continue;
FDSET_FOREACH(fd, fds, i) {
FDSET_FOREACH(fd, fds) {
if (socket_address_matches_fd(&p->address, fd)) {
p->fd = fdset_remove(fds, fd);
s->deserialized_state = SOCKET_LISTENING;

View File

@ -57,10 +57,9 @@ static int target_add_default_dependencies(Target *t) {
for (k = 0; k < ELEMENTSOF(deps); k++) {
Unit *other;
Iterator i;
void *v;
HASHMAP_FOREACH_KEY(v, other, UNIT(t)->dependencies[deps[k]], i) {
HASHMAP_FOREACH_KEY(v, other, UNIT(t)->dependencies[deps[k]]) {
r = unit_add_default_target_dependency(other, UNIT(t));
if (r < 0)
return r;

View File

@ -218,14 +218,13 @@ static int delete_one_unmergeable_job(Transaction *tr, Job *j) {
static int transaction_merge_jobs(Transaction *tr, sd_bus_error *e) {
Job *j;
Iterator i;
int r;
assert(tr);
/* First step, check whether any of the jobs for one specific
* task conflict. If so, try to drop one of them. */
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
JobType t;
Job *k;
@ -256,7 +255,7 @@ static int transaction_merge_jobs(Transaction *tr, sd_bus_error *e) {
}
/* Second step, merge the jobs. */
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
JobType t = j->type;
Job *k;
@ -288,12 +287,11 @@ static void transaction_drop_redundant(Transaction *tr) {
assert(tr);
do {
Iterator i;
Job *j;
again = false;
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
bool keep = false;
Job *k;
@ -349,7 +347,6 @@ static char* merge_unit_ids(const char* unit_log_field, char **pairs) {
}
static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsigned generation, sd_bus_error *e) {
Iterator i;
Unit *u;
void *v;
int r;
@ -453,7 +450,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
* ordering dependencies and we test with job_compare() whether it is the 'before' edge in the job
* execution ordering. */
for (d = 0; d < ELEMENTSOF(directions); d++) {
HASHMAP_FOREACH_KEY(v, u, j->unit->dependencies[directions[d]], i) {
HASHMAP_FOREACH_KEY(v, u, j->unit->dependencies[directions[d]]) {
Job *o;
/* Is there a job for this unit? */
@ -487,7 +484,6 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
static int transaction_verify_order(Transaction *tr, unsigned *generation, sd_bus_error *e) {
Job *j;
int r;
Iterator i;
unsigned g;
assert(tr);
@ -498,7 +494,7 @@ static int transaction_verify_order(Transaction *tr, unsigned *generation, sd_bu
g = (*generation)++;
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
r = transaction_verify_order_one(tr, j, NULL, g, e);
if (r < 0)
return r;
@ -515,12 +511,11 @@ static void transaction_collect_garbage(Transaction *tr) {
/* Drop jobs that are not required by any other job */
do {
Iterator i;
Job *j;
again = false;
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
if (tr->anchor_job == j)
continue;
@ -541,7 +536,6 @@ static void transaction_collect_garbage(Transaction *tr) {
}
static int transaction_is_destructive(Transaction *tr, JobMode mode, sd_bus_error *e) {
Iterator i;
Job *j;
assert(tr);
@ -549,7 +543,7 @@ static int transaction_is_destructive(Transaction *tr, JobMode mode, sd_bus_erro
/* Checks whether applying this transaction means that
* existing jobs would be replaced */
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
/* Assume merged */
assert(!j->transaction_prev);
@ -568,7 +562,6 @@ static int transaction_is_destructive(Transaction *tr, JobMode mode, sd_bus_erro
static void transaction_minimize_impact(Transaction *tr) {
Job *j;
Iterator i;
assert(tr);
@ -576,7 +569,7 @@ static void transaction_minimize_impact(Transaction *tr) {
* or that stop a running service. */
rescan:
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
LIST_FOREACH(transaction, j, j) {
bool stops_running_service, changes_existing_job;
@ -625,7 +618,6 @@ static int transaction_apply(
JobMode mode,
Set *affected_jobs) {
Iterator i;
Job *j;
int r;
@ -635,7 +627,7 @@ static int transaction_apply(
/* When isolating first kill all installed jobs which
* aren't part of the new transaction */
HASHMAP_FOREACH(j, m->jobs, i) {
HASHMAP_FOREACH(j, m->jobs) {
assert(j->installed);
if (j->unit->ignore_on_isolate)
@ -651,7 +643,7 @@ static int transaction_apply(
}
}
HASHMAP_FOREACH(j, tr->jobs, i) {
HASHMAP_FOREACH(j, tr->jobs) {
/* Assume merged */
assert(!j->transaction_prev);
assert(!j->transaction_next);
@ -696,7 +688,7 @@ static int transaction_apply(
rollback:
HASHMAP_FOREACH(j, tr->jobs, i)
HASHMAP_FOREACH(j, tr->jobs)
hashmap_remove(m->jobs, UINT32_TO_PTR(j->id));
return r;
@ -709,7 +701,6 @@ int transaction_activate(
Set *affected_jobs,
sd_bus_error *e) {
Iterator i;
Job *j;
int r;
unsigned generation = 1;
@ -722,7 +713,7 @@ int transaction_activate(
/* Reset the generation counter of all installed jobs. The detection of cycles
* looks at installed jobs. If they had a non-zero generation from some previous
* walk of the graph, the algorithm would break. */
HASHMAP_FOREACH(j, m->jobs, i)
HASHMAP_FOREACH(j, m->jobs)
j->generation = 0;
/* First step: figure out which jobs matter */
@ -890,7 +881,6 @@ static void transaction_unlink_job(Transaction *tr, Job *j, bool delete_dependen
}
void transaction_add_propagate_reload_jobs(Transaction *tr, Unit *unit, Job *by, bool ignore_order, sd_bus_error *e) {
Iterator i;
JobType nt;
Unit *dep;
void *v;
@ -899,7 +889,7 @@ void transaction_add_propagate_reload_jobs(Transaction *tr, Unit *unit, Job *by,
assert(tr);
assert(unit);
HASHMAP_FOREACH_KEY(v, dep, unit->dependencies[UNIT_PROPAGATES_RELOAD_TO], i) {
HASHMAP_FOREACH_KEY(v, dep, unit->dependencies[UNIT_PROPAGATES_RELOAD_TO]) {
nt = job_type_collapse(JOB_TRY_RELOAD, dep);
if (nt == JOB_NOP)
continue;
@ -926,7 +916,6 @@ int transaction_add_job_and_dependencies(
sd_bus_error *e) {
bool is_new;
Iterator i;
Unit *dep;
Job *ret;
void *v;
@ -1006,7 +995,7 @@ int transaction_add_job_and_dependencies(
/* If we are following some other unit, make sure we
* add all dependencies of everybody following. */
if (unit_following_set(ret->unit, &following) > 0) {
SET_FOREACH(dep, following, i) {
SET_FOREACH(dep, following) {
r = transaction_add_job_and_dependencies(tr, type, dep, ret, false, false, false, ignore_order, e);
if (r < 0) {
log_unit_full(dep,
@ -1022,7 +1011,7 @@ int transaction_add_job_and_dependencies(
/* Finally, recursively add in all dependencies. */
if (IN_SET(type, JOB_START, JOB_RESTART)) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_REQUIRES], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_REQUIRES]) {
r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, true, false, false, ignore_order, e);
if (r < 0) {
if (r != -EBADR) /* job type not applicable */
@ -1032,7 +1021,7 @@ int transaction_add_job_and_dependencies(
}
}
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_BINDS_TO], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_BINDS_TO]) {
r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, true, false, false, ignore_order, e);
if (r < 0) {
if (r != -EBADR) /* job type not applicable */
@ -1042,7 +1031,7 @@ int transaction_add_job_and_dependencies(
}
}
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_WANTS], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_WANTS]) {
r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, false, false, false, ignore_order, e);
if (r < 0) {
/* unit masked, job type not applicable and unit not found are not considered as errors. */
@ -1054,7 +1043,7 @@ int transaction_add_job_and_dependencies(
}
}
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_REQUISITE], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_REQUISITE]) {
r = transaction_add_job_and_dependencies(tr, JOB_VERIFY_ACTIVE, dep, ret, true, false, false, ignore_order, e);
if (r < 0) {
if (r != -EBADR) /* job type not applicable */
@ -1064,7 +1053,7 @@ int transaction_add_job_and_dependencies(
}
}
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_CONFLICTS], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_CONFLICTS]) {
r = transaction_add_job_and_dependencies(tr, JOB_STOP, dep, ret, true, true, false, ignore_order, e);
if (r < 0) {
if (r != -EBADR) /* job type not applicable */
@ -1074,7 +1063,7 @@ int transaction_add_job_and_dependencies(
}
}
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_CONFLICTED_BY], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[UNIT_CONFLICTED_BY]) {
r = transaction_add_job_and_dependencies(tr, JOB_STOP, dep, ret, false, false, false, ignore_order, e);
if (r < 0) {
log_unit_warning(dep,
@ -1103,7 +1092,7 @@ int transaction_add_job_and_dependencies(
ptype = type == JOB_RESTART ? JOB_TRY_RESTART : type;
for (j = 0; j < ELEMENTSOF(propagate_deps); j++)
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[propagate_deps[j]], i) {
HASHMAP_FOREACH_KEY(v, dep, ret->unit->dependencies[propagate_deps[j]]) {
JobType nt;
nt = job_type_collapse(ptype, dep);
@ -1133,7 +1122,6 @@ fail:
}
int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
Iterator i;
Unit *u;
char *k;
int r;
@ -1141,7 +1129,7 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
assert(tr);
assert(m);
HASHMAP_FOREACH_KEY(u, k, m->units, i) {
HASHMAP_FOREACH_KEY(u, k, m->units) {
/* ignore aliases */
if (u->id != k)
@ -1167,7 +1155,6 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
}
int transaction_add_triggering_jobs(Transaction *tr, Unit *u) {
Iterator i;
void *v;
Unit *trigger;
int r;
@ -1175,7 +1162,7 @@ int transaction_add_triggering_jobs(Transaction *tr, Unit *u) {
assert(tr);
assert(u);
HASHMAP_FOREACH_KEY(v, trigger, u->dependencies[UNIT_TRIGGERED_BY], i) {
HASHMAP_FOREACH_KEY(v, trigger, u->dependencies[UNIT_TRIGGERED_BY]) {
/* No need to stop inactive jobs */
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(trigger)) && !trigger->job)
continue;

View File

@ -510,14 +510,13 @@ void unit_submit_to_stop_when_unneeded_queue(Unit *u) {
static void bidi_set_free(Unit *u, Hashmap *h) {
Unit *other;
Iterator i;
void *v;
assert(u);
/* Frees the hashmap and makes sure we are dropped from the inverse pointers */
HASHMAP_FOREACH_KEY(v, other, h, i) {
HASHMAP_FOREACH_KEY(v, other, h) {
for (UnitDependency d = 0; d < _UNIT_DEPENDENCY_MAX; d++)
hashmap_remove(other->dependencies[d], u);
@ -614,7 +613,6 @@ static void unit_done(Unit *u) {
}
void unit_free(Unit *u) {
Iterator i;
char *t;
if (!u)
@ -638,7 +636,7 @@ void unit_free(Unit *u) {
unit_free_requires_mounts_for(u);
SET_FOREACH(t, u->aliases, i)
SET_FOREACH(t, u->aliases)
hashmap_remove_value(u->manager->units, t, u);
if (u->id)
hashmap_remove_value(u->manager->units, u->id, u);
@ -819,7 +817,6 @@ static int hashmap_complete_move(Hashmap **s, Hashmap **other) {
static int merge_names(Unit *u, Unit *other) {
char *name;
Iterator i;
int r;
assert(u);
@ -838,7 +835,7 @@ static int merge_names(Unit *u, Unit *other) {
TAKE_PTR(other->id);
other->aliases = set_free_free(other->aliases);
SET_FOREACH(name, u->aliases, i)
SET_FOREACH(name, u->aliases)
assert_se(hashmap_replace(u->manager->units, name, u) == 0);
return 0;
@ -866,7 +863,6 @@ static int reserve_dependencies(Unit *u, Unit *other, UnitDependency d) {
}
static void merge_dependencies(Unit *u, Unit *other, const char *other_id, UnitDependency d) {
Iterator i;
Unit *back;
void *v;
int r;
@ -878,7 +874,7 @@ static void merge_dependencies(Unit *u, Unit *other, const char *other_id, UnitD
assert(d < _UNIT_DEPENDENCY_MAX);
/* Fix backwards pointers. Let's iterate through all dependent units of the other unit. */
HASHMAP_FOREACH_KEY(v, back, other->dependencies[d], i)
HASHMAP_FOREACH_KEY(v, back, other->dependencies[d])
/* Let's now iterate through the dependencies of that dependencies of the other units,
* looking for pointers back, and let's fix them up, to instead point to 'u'. */
@ -1040,8 +1036,6 @@ Unit* unit_follow_merge(Unit *u) {
}
int unit_add_exec_dependencies(Unit *u, ExecContext *c) {
ExecDirectoryType dt;
char **dp;
int r;
assert(u);
@ -1065,10 +1059,11 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) {
return r;
}
for (dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
for (ExecDirectoryType dt = 0; dt < _EXEC_DIRECTORY_TYPE_MAX; dt++) {
if (!u->manager->prefix[dt])
continue;
char **dp;
STRV_FOREACH(dp, c->directories[dt].paths) {
_cleanup_free_ char *p;
@ -1188,13 +1183,12 @@ static void print_unit_dependency_mask(FILE *f, const char *kind, UnitDependency
{ UNIT_DEPENDENCY_MOUNTINFO_DEFAULT, "mountinfo-default" },
{ UNIT_DEPENDENCY_PROC_SWAP, "proc-swap" },
};
size_t i;
assert(f);
assert(kind);
assert(space);
for (i = 0; i < ELEMENTSOF(table); i++) {
for (size_t i = 0; i < ELEMENTSOF(table); i++) {
if (mask == 0)
break;
@ -1218,12 +1212,10 @@ static void print_unit_dependency_mask(FILE *f, const char *kind, UnitDependency
void unit_dump(Unit *u, FILE *f, const char *prefix) {
char *t, **j;
Iterator i;
const char *prefix2;
char timestamp[5][FORMAT_TIMESTAMP_MAX], timespan[FORMAT_TIMESPAN_MAX];
Unit *following;
_cleanup_set_free_ Set *following_set = NULL;
const char *n;
CGroupMask m;
int r;
@ -1237,7 +1229,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
"%s-> Unit %s:\n",
prefix, u->id);
SET_FOREACH(t, u->aliases, i)
SET_FOREACH(t, u->aliases)
fprintf(f, "%s\tAlias: %s\n", prefix, t);
fprintf(f,
@ -1324,7 +1316,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
if (r >= 0) {
Unit *other;
SET_FOREACH(other, following_set, i)
SET_FOREACH(other, following_set)
fprintf(f, "%s\tFollowing Set Member: %s\n", prefix, other->id);
}
@ -1376,7 +1368,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
UnitDependencyInfo di;
Unit *other;
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d], i) {
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d]) {
bool space = false;
fprintf(f, "%s\t%s: %s (", prefix, unit_dependency_to_string(d), other->id);
@ -1392,7 +1384,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
UnitDependencyInfo di;
const char *path;
HASHMAP_FOREACH_KEY(di.data, path, u->requires_mounts_for, i) {
HASHMAP_FOREACH_KEY(di.data, path, u->requires_mounts_for) {
bool space = false;
fprintf(f, "%s\tRequiresMountsFor: %s (", prefix, path);
@ -1430,7 +1422,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
else if (u->load_state == UNIT_ERROR)
fprintf(f, "%s\tLoad Error Code: %s\n", prefix, strerror_safe(u->load_error));
for (n = sd_bus_track_first(u->bus_track); n; n = sd_bus_track_next(u->bus_track))
for (const char *n = sd_bus_track_first(u->bus_track); n; n = sd_bus_track_next(u->bus_track))
fprintf(f, "%s\tBus Ref: %s\n", prefix, n);
if (u->job)
@ -1539,12 +1531,11 @@ static int unit_add_slice_dependencies(Unit *u) {
static int unit_add_mount_dependencies(Unit *u) {
UnitDependencyInfo di;
const char *path;
Iterator i;
int r;
assert(u);
HASHMAP_FOREACH_KEY(di.data, path, u->requires_mounts_for, i) {
HASHMAP_FOREACH_KEY(di.data, path, u->requires_mounts_for) {
char prefix[strlen(path) + 1];
PATH_FOREACH_PREFIX_MORE(prefix, path) {
@ -1807,7 +1798,6 @@ bool unit_shall_confirm_spawn(Unit *u) {
static bool unit_verify_deps(Unit *u) {
Unit *other;
Iterator j;
void *v;
assert(u);
@ -1817,7 +1807,7 @@ static bool unit_verify_deps(Unit *u) {
* processing, but do not have any effect afterwards. We don't check BindsTo= dependencies that are not used in
* conjunction with After= as for them any such check would make things entirely racy. */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO], j) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO]) {
if (!hashmap_contains(u->dependencies[UNIT_AFTER], other))
continue;
@ -2044,7 +2034,6 @@ bool unit_is_unneeded(Unit *u) {
UNIT_WANTED_BY,
UNIT_BOUND_BY,
};
size_t j;
assert(u);
@ -2057,15 +2046,14 @@ bool unit_is_unneeded(Unit *u) {
if (u->job)
return false;
for (j = 0; j < ELEMENTSOF(deps); j++) {
for (size_t j = 0; j < ELEMENTSOF(deps); j++) {
Unit *other;
Iterator i;
void *v;
/* If a dependent unit has a job queued, is active or transitioning, or is marked for
* restart, then don't clean this one up. */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[deps[j]], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[deps[j]]) {
if (other->job)
return false;
@ -2088,18 +2076,16 @@ static void check_unneeded_dependencies(Unit *u) {
UNIT_WANTS,
UNIT_BINDS_TO,
};
size_t j;
assert(u);
/* Add all units this unit depends on to the queue that processes StopWhenUnneeded= behaviour. */
for (j = 0; j < ELEMENTSOF(deps); j++) {
for (size_t j = 0; j < ELEMENTSOF(deps); j++) {
Unit *other;
Iterator i;
void *v;
HASHMAP_FOREACH_KEY(v, other, u->dependencies[deps[j]], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[deps[j]])
unit_submit_to_stop_when_unneeded_queue(other);
}
}
@ -2108,7 +2094,6 @@ static void unit_check_binds_to(Unit *u) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
bool stop = false;
Unit *other;
Iterator i;
void *v;
int r;
@ -2120,7 +2105,7 @@ static void unit_check_binds_to(Unit *u) {
if (unit_active_state(u) != UNIT_ACTIVE)
return;
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO]) {
if (other->job)
continue;
@ -2156,54 +2141,51 @@ static void unit_check_binds_to(Unit *u) {
}
static void retroactively_start_dependencies(Unit *u) {
Iterator i;
Unit *other;
void *v;
assert(u);
assert(UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(u)));
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REQUIRES], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_REQUIRES])
if (!hashmap_get(u->dependencies[UNIT_AFTER], other) &&
!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, NULL, NULL, NULL);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BINDS_TO])
if (!hashmap_get(u->dependencies[UNIT_AFTER], other) &&
!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, NULL, NULL, NULL);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_WANTS], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_WANTS])
if (!hashmap_get(u->dependencies[UNIT_AFTER], other) &&
!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_START, other, JOB_FAIL, NULL, NULL, NULL);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_CONFLICTS], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_CONFLICTS])
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_STOP, other, JOB_REPLACE, NULL, NULL, NULL);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_CONFLICTED_BY], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_CONFLICTED_BY])
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_STOP, other, JOB_REPLACE, NULL, NULL, NULL);
}
static void retroactively_stop_dependencies(Unit *u) {
Unit *other;
Iterator i;
void *v;
assert(u);
assert(UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(u)));
/* Pull down units which are bound to us recursively if enabled */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BOUND_BY], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_BOUND_BY])
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
manager_add_job(u->manager, JOB_STOP, other, JOB_REPLACE, NULL, NULL, NULL);
}
void unit_start_on_failure(Unit *u) {
Unit *other;
Iterator i;
void *v;
int r;
@ -2214,7 +2196,7 @@ void unit_start_on_failure(Unit *u) {
log_unit_info(u, "Triggering OnFailure= dependencies.");
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_ON_FAILURE], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_ON_FAILURE]) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
r = manager_add_job(u->manager, JOB_START, other, u->on_failure_job_mode, NULL, &error, NULL);
@ -2225,12 +2207,11 @@ void unit_start_on_failure(Unit *u) {
void unit_trigger_notify(Unit *u) {
Unit *other;
Iterator i;
void *v;
assert(u);
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_TRIGGERED_BY], i)
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_TRIGGERED_BY])
if (UNIT_VTABLE(other)->trigger_notify)
UNIT_VTABLE(other)->trigger_notify(other, u);
}
@ -2251,8 +2232,6 @@ static int unit_log_resources(Unit *u) {
size_t n_message_parts = 0, n_iovec = 0;
char* message_parts[1 + 2 + 2 + 1], *t;
nsec_t nsec = NSEC_INFINITY;
CGroupIPAccountingMetric m;
size_t i;
int r;
const char* const ip_fields[_CGROUP_IP_ACCOUNTING_METRIC_MAX] = {
[CGROUP_IP_INGRESS_BYTES] = "IP_METRIC_INGRESS_BYTES",
@ -2364,7 +2343,7 @@ static int unit_log_resources(Unit *u) {
}
}
for (m = 0; m < _CGROUP_IP_ACCOUNTING_METRIC_MAX; m++) {
for (CGroupIPAccountingMetric m = 0; m < _CGROUP_IP_ACCOUNTING_METRIC_MAX; m++) {
char buf[FORMAT_BYTES_MAX] = "";
uint64_t value = UINT64_MAX;
@ -2467,10 +2446,10 @@ static int unit_log_resources(Unit *u) {
r = 0;
finish:
for (i = 0; i < n_message_parts; i++)
for (size_t i = 0; i < n_message_parts; i++)
free(message_parts[i]);
for (i = 0; i < n_iovec; i++)
for (size_t i = 0; i < n_iovec; i++)
free(iovec[i].iov_base);
return r;
@ -2798,10 +2777,10 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
/* Then, let's also drop the unit, in case it's in the array keyed by -pid */
array = hashmap_get(u->manager->watch_pids, PID_TO_PTR(-pid));
if (array) {
size_t n, m = 0;
/* Let's iterate through the array, dropping our own entry */
for (n = 0; array[n]; n++)
size_t m = 0;
for (size_t n = 0; array[n]; n++)
if (array[n] != u)
array[m++] = array[n];
array[m] = NULL;
@ -2827,7 +2806,6 @@ void unit_unwatch_all_pids(Unit *u) {
static void unit_tidy_watch_pids(Unit *u) {
pid_t except1, except2;
Iterator i;
void *e;
assert(u);
@ -2837,7 +2815,7 @@ static void unit_tidy_watch_pids(Unit *u) {
except1 = unit_main_pid(u);
except2 = unit_control_pid(u);
SET_FOREACH(e, u->pids, i) {
SET_FOREACH(e, u->pids) {
pid_t pid = PTR_TO_PID(e);
if (pid == except1 || pid == except2)
@ -3531,7 +3509,6 @@ static const char *const io_accounting_metric_field_last[_CGROUP_IO_ACCOUNTING_M
};
int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
CGroupIPAccountingMetric m;
int r;
assert(u);
@ -3603,7 +3580,7 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
bus_track_serialize(u->bus_track, f, "ref");
for (m = 0; m < _CGROUP_IP_ACCOUNTING_METRIC_MAX; m++) {
for (CGroupIPAccountingMetric m = 0; m < _CGROUP_IP_ACCOUNTING_METRIC_MAX; m++) {
uint64_t v;
r = unit_get_ip_accounting(u, m, &v);
@ -4444,7 +4421,6 @@ static int user_from_unit_name(Unit *u, char **ret) {
int unit_patch_contexts(Unit *u) {
CGroupContext *cc;
ExecContext *ec;
unsigned i;
int r;
assert(u);
@ -4456,7 +4432,7 @@ int unit_patch_contexts(Unit *u) {
ec = unit_get_exec_context(u);
if (ec) {
/* This only copies in the ones that need memory */
for (i = 0; i < _RLIMIT_MAX; i++)
for (unsigned i = 0; i < _RLIMIT_MAX; i++)
if (u->manager->rlimit[i] && !ec->rlimit[i]) {
ec->rlimit[i] = newdup(struct rlimit, u->manager->rlimit[i], 1);
if (!ec->rlimit[i])
@ -5111,7 +5087,6 @@ int unit_setup_exec_runtime(Unit *u) {
ExecRuntime **rt;
size_t offset;
Unit *other;
Iterator i;
void *v;
int r;
@ -5124,7 +5099,7 @@ int unit_setup_exec_runtime(Unit *u) {
return 0;
/* Try to get it from somebody else */
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_JOINS_NAMESPACE_OF], i) {
HASHMAP_FOREACH_KEY(v, other, u->dependencies[UNIT_JOINS_NAMESPACE_OF]) {
r = exec_runtime_acquire(u->manager, NULL, other->id, false, rt);
if (r == 1)
return 1;
@ -5527,11 +5502,10 @@ void unit_remove_dependencies(Unit *u, UnitDependencyMask mask) {
do {
UnitDependencyInfo di;
Unit *other;
Iterator i;
done = true;
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d], i) {
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d]) {
if ((di.origin_mask & ~mask) == di.origin_mask)
continue;
di.origin_mask &= ~mask;
@ -5646,7 +5620,6 @@ static int unit_export_log_extra_fields(Unit *u, const ExecContext *c) {
char *pattern;
le64_t *sizes;
ssize_t n;
size_t i;
int r;
if (u->exported_log_extra_fields)
@ -5658,7 +5631,7 @@ static int unit_export_log_extra_fields(Unit *u, const ExecContext *c) {
sizes = newa(le64_t, c->n_log_extra_fields);
iovec = newa(struct iovec, c->n_log_extra_fields * 2);
for (i = 0; i < c->n_log_extra_fields; i++) {
for (size_t i = 0; i < c->n_log_extra_fields; i++) {
sizes[i] = htole64(c->log_extra_fields[i].iov_len);
iovec[i*2] = IOVEC_MAKE(sizes + i, sizeof(le64_t));

View File

@ -644,10 +644,9 @@ static int add_crypttab_devices(void) {
static int add_proc_cmdline_devices(void) {
int r;
Iterator i;
crypto_device *d;
HASHMAP_FOREACH(d, arg_disks, i) {
HASHMAP_FOREACH(d, arg_disks) {
_cleanup_free_ char *device = NULL;
if (!d->create)

View File

@ -401,13 +401,9 @@ static int should_skip_path(const char *prefix, const char *suffix) {
static int process_suffix(const char *suffix, const char *onlyprefix) {
const char *p;
char *f;
OrderedHashmap *top, *bottom, *drops;
OrderedHashmap *h;
char *key;
int r = 0, k;
Iterator i, j;
int n_found = 0;
char *f, *key;
OrderedHashmap *top, *bottom, *drops, *h;
int r = 0, k, n_found = 0;
bool dropins;
assert(suffix);
@ -441,7 +437,7 @@ static int process_suffix(const char *suffix, const char *onlyprefix) {
r = k;
}
ORDERED_HASHMAP_FOREACH_KEY(f, key, top, i) {
ORDERED_HASHMAP_FOREACH_KEY(f, key, top) {
char *o;
o = ordered_hashmap_get(bottom, key);
@ -461,7 +457,7 @@ static int process_suffix(const char *suffix, const char *onlyprefix) {
h = ordered_hashmap_get(drops, key);
if (h)
ORDERED_HASHMAP_FOREACH(o, h, j)
ORDERED_HASHMAP_FOREACH(o, h)
if (!onlyprefix || startswith(o, onlyprefix))
n_found += notify_override_extended(f, o);
}
@ -470,7 +466,7 @@ finish:
ordered_hashmap_free_free(top);
ordered_hashmap_free_free(bottom);
ORDERED_HASHMAP_FOREACH_KEY(h, key, drops, i) {
ORDERED_HASHMAP_FOREACH_KEY(h, key, drops) {
ordered_hashmap_free_free(ordered_hashmap_remove(drops, key));
ordered_hashmap_remove(drops, key);
free(key);

View File

@ -211,14 +211,16 @@ static int run(int argc, char *argv[]) {
if (r < 0)
return log_error_errno(r, "Failed to extract instance: %m");
if (isempty(name))
return log_error("Unit %s is missing the instance name.", *i);
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Unit %s is missing the instance name.", *i);
r = unit_name_template(*i, &template);
if (r < 0)
return log_error_errno(r, "Failed to extract template: %m");
if (arg_template && !streq(arg_template, template))
return log_error("Unit %s template %s does not match specified template %s.",
*i, template, arg_template);
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Unit %s template %s does not match specified template %s.",
*i, template, arg_template);
} else {
name = strdup(*i);
if (!name)

View File

@ -729,10 +729,14 @@ static int add_mounts(void) {
int r;
r = get_block_device_harder("/", &devno);
if (r == -EUCLEAN)
return btrfs_log_dev_root(LOG_ERR, r, "root file system");
if (r < 0)
return log_error_errno(r, "Failed to determine block device of root file system: %m");
if (r == 0) {
if (r == 0) { /* Not backed by block device */
r = get_block_device_harder("/usr", &devno);
if (r == -EUCLEAN)
return btrfs_log_dev_root(LOG_ERR, r, "/usr");
if (r < 0)
return log_error_errno(r, "Failed to determine block device of /usr file system: %m");
if (r == 0) {

View File

@ -758,7 +758,6 @@ static int bus_home_node_enumerator(
_cleanup_strv_free_ char **l = NULL;
Manager *m = userdata;
size_t k = 0;
Iterator i;
Home *h;
int r;
@ -768,7 +767,7 @@ static int bus_home_node_enumerator(
if (!l)
return -ENOMEM;
HASHMAP_FOREACH(h, m->homes_by_uid, i) {
HASHMAP_FOREACH(h, m->homes_by_uid) {
r = bus_home_path(h, l + k);
if (r < 0)
return r;

View File

@ -25,7 +25,6 @@ static int property_get_auto_login(
sd_bus_error *error) {
Manager *m = userdata;
Iterator i;
Home *h;
int r;
@ -37,7 +36,7 @@ static int property_get_auto_login(
if (r < 0)
return r;
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
_cleanup_(strv_freep) char **seats = NULL;
_cleanup_free_ char *home_path = NULL;
char **s;
@ -151,7 +150,6 @@ static int method_list_homes(
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Iterator i;
Home *h;
int r;
@ -166,7 +164,7 @@ static int method_list_homes(
if (r < 0)
return r;
HASHMAP_FOREACH(h, m->homes_by_uid, i) {
HASHMAP_FOREACH(h, m->homes_by_uid) {
_cleanup_free_ char *path = NULL;
r = bus_home_path(h, &path);
@ -560,7 +558,6 @@ static int method_lock_all_homes(sd_bus_message *message, void *userdata, sd_bus
_cleanup_(operation_unrefp) Operation *o = NULL;
bool waiting = false;
Manager *m = userdata;
Iterator i;
Home *h;
int r;
@ -570,7 +567,7 @@ static int method_lock_all_homes(sd_bus_message *message, void *userdata, sd_bus
* for every suitable home we have and only when all of them completed we send a reply indicating
* completion. */
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
/* Automatically suspend all homes that have at least one client referencing it that asked
* for "please suspend", and no client that asked for "please do not suspend". */

View File

@ -267,7 +267,6 @@ Manager* manager_free(Manager *m) {
int manager_verify_user_record(Manager *m, UserRecord *hr) {
EVP_PKEY *pkey;
Iterator i;
int r;
assert(m);
@ -298,7 +297,7 @@ int manager_verify_user_record(Manager *m, UserRecord *hr) {
}
}
HASHMAP_FOREACH(pkey, m->public_keys, i) {
HASHMAP_FOREACH(pkey, m->public_keys) {
r = user_record_verify(hr, pkey);
switch (r) {
@ -1606,9 +1605,8 @@ int manager_gc_images(Manager *m) {
manager_revalidate_image(m, h);
} else {
/* Gc all */
Iterator i;
HASHMAP_FOREACH(h, m->homes_by_name, i)
HASHMAP_FOREACH(h, m->homes_by_name)
manager_revalidate_image(m, h);
}

View File

@ -103,13 +103,12 @@ int vl_method_get_user_record(Varlink *link, JsonVariant *parameters, VarlinkMet
else if (p.user_name)
h = hashmap_get(m->homes_by_name, p.user_name);
else {
Iterator i;
/* If neither UID nor name was specified, then dump all homes. Do so with varlink_notify()
* for all entries but the last, so that clients can stream the results, and easily process
* them piecemeal. */
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
if (!home_user_match_lookup_parameters(&p, h))
continue;
@ -219,9 +218,8 @@ int vl_method_get_group_record(Varlink *link, JsonVariant *parameters, VarlinkMe
else if (p.group_name)
h = hashmap_get(m->homes_by_name, p.group_name);
else {
Iterator i;
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
if (!home_group_match_lookup_parameters(&p, h))
continue;
@ -315,9 +313,8 @@ int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, VarlinkMet
} else if (p.group_name) {
const char *last = NULL;
Iterator i;
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
if (!strv_contains(h->record->member_of, p.group_name))
continue;
@ -337,9 +334,8 @@ int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, VarlinkMet
JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(p.group_name))));
} else {
const char *last_user_name = NULL, *last_group_name = NULL;
Iterator i;
HASHMAP_FOREACH(h, m->homes_by_name, i) {
HASHMAP_FOREACH(h, m->homes_by_name) {
char **j;
STRV_FOREACH(j, h->record->member_of) {

View File

@ -562,7 +562,6 @@ static int manager_on_notify(sd_event_source *s, int fd, uint32_t revents, void
Manager *m = userdata;
char *p, *e;
Transfer *t;
Iterator i;
ssize_t n;
int r;
@ -585,7 +584,7 @@ static int manager_on_notify(sd_event_source *s, int fd, uint32_t revents, void
return 0;
}
HASHMAP_FOREACH(t, m->transfers, i)
HASHMAP_FOREACH(t, m->transfers)
if (ucred->pid == t->pid)
break;
@ -670,13 +669,12 @@ static int manager_new(Manager **ret) {
static Transfer *manager_find(Manager *m, TransferType type, const char *remote) {
Transfer *t;
Iterator i;
assert(m);
assert(type >= 0);
assert(type < _TRANSFER_TYPE_MAX);
HASHMAP_FOREACH(t, m->transfers, i)
HASHMAP_FOREACH(t, m->transfers)
if (t->type == type && streq_ptr(t->remote, remote))
return t;
@ -990,7 +988,6 @@ static int method_list_transfers(sd_bus_message *msg, void *userdata, sd_bus_err
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Transfer *t;
Iterator i;
int r;
assert(msg);
@ -1004,7 +1001,7 @@ static int method_list_transfers(sd_bus_message *msg, void *userdata, sd_bus_err
if (r < 0)
return r;
HASHMAP_FOREACH(t, m->transfers, i) {
HASHMAP_FOREACH(t, m->transfers) {
r = sd_bus_message_append(
reply,
@ -1162,13 +1159,12 @@ static int transfer_node_enumerator(
Manager *m = userdata;
Transfer *t;
unsigned k = 0;
Iterator i;
l = new0(char*, hashmap_size(m->transfers) + 1);
if (!l)
return -ENOMEM;
HASHMAP_FOREACH(t, m->transfers, i) {
HASHMAP_FOREACH(t, m->transfers) {
l[k] = strdup(t->object_path);
if (!l[k])

View File

@ -450,7 +450,6 @@ int catalog_update(const char* database, const char* root, const char* const* di
ssize_t offset;
char *payload;
CatalogItem *i;
Iterator j;
unsigned n;
int r;
int64_t sz;
@ -482,7 +481,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
return log_oom();
n = 0;
ORDERED_HASHMAP_FOREACH_KEY(payload, i, h, j) {
ORDERED_HASHMAP_FOREACH_KEY(payload, i, h) {
log_debug("Found " SD_ID128_FORMAT_STR ", language %s",
SD_ID128_FORMAT_VAL(i->id),
isempty(i->language) ? "C" : i->language);

View File

@ -1644,14 +1644,13 @@ static int add_units(sd_journal *j) {
if (!strv_isempty(patterns)) {
_cleanup_set_free_free_ Set *units = NULL;
Iterator it;
char *u;
r = get_possible_units(j, SYSTEM_UNITS, patterns, &units);
if (r < 0)
return r;
SET_FOREACH(u, units, it) {
SET_FOREACH(u, units) {
r = add_matches_for_unit(j, u);
if (r < 0)
return r;
@ -1689,14 +1688,13 @@ static int add_units(sd_journal *j) {
if (!strv_isempty(patterns)) {
_cleanup_set_free_free_ Set *units = NULL;
Iterator it;
char *u;
r = get_possible_units(j, USER_UNITS, patterns, &units);
if (r < 0)
return r;
SET_FOREACH(u, units, it) {
SET_FOREACH(u, units) {
r = add_matches_for_user_unit(j, u, getuid());
if (r < 0)
return r;
@ -1745,10 +1743,9 @@ static int add_priorities(sd_journal *j) {
static int add_facilities(sd_journal *j) {
void *p;
Iterator it;
int r;
SET_FOREACH(p, arg_facilities, it) {
SET_FOREACH(p, arg_facilities) {
char match[STRLEN("SYSLOG_FACILITY=") + DECIMAL_STR_MAX(int)];
xsprintf(match, "SYSLOG_FACILITY=%d", PTR_TO_INT(p));
@ -1960,14 +1957,13 @@ static int setup_keys(void) {
static int verify(sd_journal *j) {
int r = 0;
Iterator i;
JournalFile *f;
assert(j);
log_show_color(true);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
int k;
usec_t first = 0, validated = 0, last = 0;
@ -2327,9 +2323,8 @@ int main(int argc, char *argv[]) {
case ACTION_VACUUM: {
Directory *d;
Iterator i;
HASHMAP_FOREACH(d, j->directories_by_path, i) {
HASHMAP_FOREACH(d, j->directories_by_path) {
int q;
q = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);

View File

@ -473,10 +473,9 @@ static int do_rotate(
static void server_process_deferred_closes(Server *s) {
JournalFile *f;
Iterator i;
/* Perform any deferred closes which aren't still offlining. */
SET_FOREACH(f, s->deferred_closes, i) {
SET_FOREACH(f, s->deferred_closes) {
if (journal_file_is_offlining(f))
continue;
@ -609,7 +608,6 @@ static int vacuum_offline_user_journals(Server *s) {
void server_rotate(Server *s) {
JournalFile *f;
Iterator i;
void *k;
int r;
@ -620,7 +618,7 @@ void server_rotate(Server *s) {
(void) do_rotate(s, &s->system_journal, "system", s->seal, 0);
/* Then, rotate all user journals we have open (keeping them open) */
ORDERED_HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) {
ORDERED_HASHMAP_FOREACH_KEY(f, k, s->user_journals) {
r = do_rotate(s, &f, "user", s->seal, PTR_TO_UID(k));
if (r >= 0)
ordered_hashmap_replace(s->user_journals, k, f);
@ -639,7 +637,6 @@ void server_rotate(Server *s) {
void server_sync(Server *s) {
JournalFile *f;
Iterator i;
int r;
if (s->system_journal) {
@ -648,7 +645,7 @@ void server_sync(Server *s) {
log_warning_errno(r, "Failed to sync system journal, ignoring: %m");
}
ORDERED_HASHMAP_FOREACH(f, s->user_journals, i) {
ORDERED_HASHMAP_FOREACH(f, s->user_journals) {
r = journal_file_set_offline(f, false);
if (r < 0)
log_warning_errno(r, "Failed to sync user journal, ignoring: %m");
@ -2433,7 +2430,6 @@ int server_init(Server *s, const char *namespace) {
void server_maybe_append_tags(Server *s) {
#if HAVE_GCRYPT
JournalFile *f;
Iterator i;
usec_t n;
n = now(CLOCK_REALTIME);
@ -2441,7 +2437,7 @@ void server_maybe_append_tags(Server *s) {
if (s->system_journal)
journal_file_maybe_append_tag(s->system_journal, n);
ORDERED_HASHMAP_FOREACH(f, s->user_journals, i)
ORDERED_HASHMAP_FOREACH(f, s->user_journals)
journal_file_maybe_append_tag(f, n);
#endif
}

View File

@ -834,13 +834,12 @@ int server_restore_streams(Server *s, FDSet *fds) {
FOREACH_DIRENT(de, d, goto fail) {
unsigned long st_dev, st_ino;
bool found = false;
Iterator i;
int fd;
if (sscanf(de->d_name, "%lu:%lu", &st_dev, &st_ino) != 2)
continue;
FDSET_FOREACH(fd, fds, i) {
FDSET_FOREACH(fd, fds) {
struct stat st;
if (fstat(fd, &st) < 0)

View File

@ -552,7 +552,6 @@ unsigned mmap_cache_get_missed(MMapCache *m) {
static void mmap_cache_process_sigbus(MMapCache *m) {
bool found = false;
MMapFileDescriptor *f;
Iterator i;
int r;
assert(m);
@ -572,7 +571,7 @@ static void mmap_cache_process_sigbus(MMapCache *m) {
}
ours = false;
HASHMAP_FOREACH(f, m->fds, i) {
HASHMAP_FOREACH(f, m->fds) {
Window *w;
LIST_FOREACH(by_fd, w, f->windows) {
@ -601,7 +600,7 @@ static void mmap_cache_process_sigbus(MMapCache *m) {
if (_likely_(!found))
return;
HASHMAP_FOREACH(f, m->fds, i) {
HASHMAP_FOREACH(f, m->fds) {
Window *w;
if (!f->sigbus)

View File

@ -105,7 +105,6 @@ static int journal_put_error(sd_journal *j, int r, const char *path) {
}
static void detach_location(sd_journal *j) {
Iterator i;
JournalFile *f;
assert(j);
@ -113,7 +112,7 @@ static void detach_location(sd_journal *j) {
j->current_file = NULL;
j->current_field = 0;
ORDERED_HASHMAP_FOREACH(f, j->files, i)
ORDERED_HASHMAP_FOREACH(f, j->files)
journal_file_reset_location(f);
}
@ -1859,7 +1858,6 @@ static int add_search_paths(sd_journal *j) {
}
static int add_current_paths(sd_journal *j) {
Iterator i;
JournalFile *f;
assert(j);
@ -1868,7 +1866,7 @@ static int add_current_paths(sd_journal *j) {
/* Simply adds all directories for files we have open as directories. We don't expect errors here, so we
* treat them as fatal. */
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
_cleanup_free_ char *dir;
int r;
@ -2103,7 +2101,6 @@ _public_ int sd_journal_open_directory_fd(sd_journal **ret, int fd, int flags) {
}
_public_ int sd_journal_open_files_fd(sd_journal **ret, int fds[], unsigned n_fds, int flags) {
Iterator iterator;
JournalFile *f;
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
unsigned i;
@ -2148,7 +2145,7 @@ _public_ int sd_journal_open_files_fd(sd_journal **ret, int fds[], unsigned n_fd
fail:
/* If we fail, make sure we don't take possession of the files we managed to make use of successfully, and they
* remain open */
ORDERED_HASHMAP_FOREACH(f, j->files, iterator)
ORDERED_HASHMAP_FOREACH(f, j->files)
f->close_fd = false;
return r;
@ -2566,7 +2563,6 @@ _public_ int sd_journal_get_timeout(sd_journal *j, uint64_t *timeout_usec) {
static void process_q_overflow(sd_journal *j) {
JournalFile *f;
Directory *m;
Iterator i;
assert(j);
@ -2580,7 +2576,7 @@ static void process_q_overflow(sd_journal *j) {
j->generation++;
(void) reiterate_all_paths(j);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
if (f->last_seen_generation == j->generation)
continue;
@ -2589,7 +2585,7 @@ static void process_q_overflow(sd_journal *j) {
remove_file_real(j, f);
}
HASHMAP_FOREACH(m, j->directories_by_path, i) {
HASHMAP_FOREACH(m, j->directories_by_path) {
if (m->last_seen_generation == j->generation)
continue;
@ -2704,7 +2700,6 @@ _public_ int sd_journal_wait(sd_journal *j, uint64_t timeout_usec) {
assert_return(!journal_pid_changed(j), -ECHILD);
if (j->inotify_fd < 0) {
Iterator i;
JournalFile *f;
/* This is the first invocation, hence create the
@ -2715,7 +2710,7 @@ _public_ int sd_journal_wait(sd_journal *j, uint64_t timeout_usec) {
/* Server might have done some vacuuming while we weren't watching.
Get rid of the deleted files now so they don't stay around indefinitely. */
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
r = journal_file_fstat(f);
if (r == -EIDRM)
remove_file_real(j, f);
@ -2757,7 +2752,6 @@ _public_ int sd_journal_wait(sd_journal *j, uint64_t timeout_usec) {
}
_public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from, uint64_t *to) {
Iterator i;
JournalFile *f;
bool first = true;
uint64_t fmin = 0, tmax = 0;
@ -2768,7 +2762,7 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
assert_return(from || to, -EINVAL);
assert_return(from != to, -EINVAL);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
usec_t fr, t;
r = journal_file_get_cutoff_realtime_usec(f, &fr, &t);
@ -2798,7 +2792,6 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
}
_public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t *from, uint64_t *to) {
Iterator i;
JournalFile *f;
bool found = false;
int r;
@ -2808,7 +2801,7 @@ _public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot
assert_return(from || to, -EINVAL);
assert_return(from != to, -EINVAL);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
usec_t fr, t;
r = journal_file_get_cutoff_monotonic_usec(f, boot_id, &fr, &t);
@ -2837,13 +2830,12 @@ _public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot
}
void journal_print_header(sd_journal *j) {
Iterator i;
JournalFile *f;
bool newline = false;
assert(j);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
if (newline)
putchar('\n');
else
@ -2854,7 +2846,6 @@ void journal_print_header(sd_journal *j) {
}
_public_ int sd_journal_get_usage(sd_journal *j, uint64_t *bytes) {
Iterator i;
JournalFile *f;
uint64_t sum = 0;
@ -2862,7 +2853,7 @@ _public_ int sd_journal_get_usage(sd_journal *j, uint64_t *bytes) {
assert_return(!journal_pid_changed(j), -ECHILD);
assert_return(bytes, -EINVAL);
ORDERED_HASHMAP_FOREACH(f, j->files, i) {
ORDERED_HASHMAP_FOREACH(f, j->files) {
struct stat st;
if (fstat(f->fd, &st) < 0)
@ -2920,7 +2911,6 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
for (;;) {
JournalFile *of;
Iterator i;
Object *o;
const void *odata;
size_t ol;
@ -2988,7 +2978,7 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
* object by checking if it exists in the earlier
* traversed files. */
found = false;
ORDERED_HASHMAP_FOREACH(of, j->files, i) {
ORDERED_HASHMAP_FOREACH(of, j->files) {
if (of == j->unique_file)
break;
@ -3060,7 +3050,6 @@ _public_ int sd_journal_enumerate_fields(sd_journal *j, const char **field) {
for (;;) {
JournalFile *f, *of;
Iterator i;
uint64_t m;
Object *o;
size_t sz;
@ -3137,7 +3126,7 @@ _public_ int sd_journal_enumerate_fields(sd_journal *j, const char **field) {
/* Let's see if we already returned this field name before. */
found = false;
ORDERED_HASHMAP_FOREACH(of, j->files, i) {
ORDERED_HASHMAP_FOREACH(of, j->files) {
if (of == f)
break;

View File

@ -65,7 +65,6 @@ static void test_catalog_import_badid(void) {
static void test_catalog_import_one(void) {
_cleanup_ordered_hashmap_free_free_free_ OrderedHashmap *h = NULL;
char *payload;
Iterator j;
const char *input =
"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \
@ -80,7 +79,7 @@ static void test_catalog_import_one(void) {
h = test_import(input, -1, 0);
assert_se(ordered_hashmap_size(h) == 1);
ORDERED_HASHMAP_FOREACH(payload, h, j) {
ORDERED_HASHMAP_FOREACH(payload, h) {
printf("expect: %s\n", expect);
printf("actual: %s\n", payload);
assert_se(streq(expect, payload));
@ -90,7 +89,6 @@ static void test_catalog_import_one(void) {
static void test_catalog_import_merge(void) {
_cleanup_ordered_hashmap_free_free_free_ OrderedHashmap *h = NULL;
char *payload;
Iterator j;
const char *input =
"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \
@ -116,14 +114,13 @@ static void test_catalog_import_merge(void) {
h = test_import(input, -1, 0);
assert_se(ordered_hashmap_size(h) == 1);
ORDERED_HASHMAP_FOREACH(payload, h, j)
ORDERED_HASHMAP_FOREACH(payload, h)
assert_se(streq(combined, payload));
}
static void test_catalog_import_merge_no_body(void) {
_cleanup_ordered_hashmap_free_free_free_ OrderedHashmap *h = NULL;
char *payload;
Iterator j;
const char *input =
"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \
@ -148,7 +145,7 @@ static void test_catalog_import_merge_no_body(void) {
h = test_import(input, -1, 0);
assert_se(ordered_hashmap_size(h) == 1);
ORDERED_HASHMAP_FOREACH(payload, h, j)
ORDERED_HASHMAP_FOREACH(payload, h)
assert_se(streq(combined, payload));
}

View File

@ -81,9 +81,8 @@ static int option_append(uint8_t options[], size_t size, size_t *offset,
OrderedHashmap *s = (OrderedHashmap *) optval;
struct sd_dhcp_option *p;
size_t l = 0;
Iterator i;
ORDERED_HASHMAP_FOREACH(p, s, i)
ORDERED_HASHMAP_FOREACH(p, s)
l += p->length + 2;
if (*offset + l + 2 > size)
@ -94,7 +93,7 @@ static int option_append(uint8_t options[], size_t size, size_t *offset,
*offset += 2;
ORDERED_HASHMAP_FOREACH(p, s, i) {
ORDERED_HASHMAP_FOREACH(p, s) {
options[*offset] = p->option;
options[*offset + 1] = p->length;
memcpy(&options[*offset + 2], p->data, p->length);

View File

@ -81,7 +81,6 @@ int dhcp6_option_append(uint8_t **buf, size_t *buflen, uint16_t code,
int dhcp6_option_append_vendor_option(uint8_t **buf, size_t *buflen, OrderedHashmap *vendor_options) {
sd_dhcp6_option *options;
Iterator i;
int r;
assert(buf);
@ -89,7 +88,7 @@ int dhcp6_option_append_vendor_option(uint8_t **buf, size_t *buflen, OrderedHash
assert(buflen);
assert(vendor_options);
ORDERED_HASHMAP_FOREACH(options, vendor_options, i) {
ORDERED_HASHMAP_FOREACH(options, vendor_options) {
_cleanup_free_ uint8_t *p = NULL;
size_t total;

View File

@ -919,7 +919,6 @@ static int dhcp_client_send_raw(
static int client_append_common_discover_request_options(sd_dhcp_client *client, DHCPPacket *packet, size_t *optoffset, size_t optlen) {
sd_dhcp_option *j;
Iterator i;
int r;
assert(client);
@ -970,7 +969,7 @@ static int client_append_common_discover_request_options(sd_dhcp_client *client,
return r;
}
ORDERED_HASHMAP_FOREACH(j, client->extra_options, i) {
ORDERED_HASHMAP_FOREACH(j, client->extra_options) {
r = dhcp_option_append(&packet->dhcp, optlen, optoffset, 0,
j->option, j->length, j->data);
if (r < 0)

View File

@ -479,7 +479,6 @@ static int server_send_ack(
_cleanup_free_ DHCPPacket *packet = NULL;
be32_t lease_time;
sd_dhcp_option *j;
Iterator i;
size_t offset;
int r;
@ -531,7 +530,7 @@ static int server_send_ack(
return r;
}
ORDERED_HASHMAP_FOREACH(j, server->extra_options, i) {
ORDERED_HASHMAP_FOREACH(j, server->extra_options) {
r = dhcp_option_append(&packet->dhcp, req->max_optlen, &offset, 0,
j->option, j->length, j->data);
if (r < 0)

View File

@ -624,7 +624,6 @@ static int client_send_message(sd_dhcp6_client *client, usec_t time_now) {
IN6ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS_INIT;
struct sd_dhcp6_option *j;
size_t len, optlen = 512;
Iterator i;
uint8_t *opt;
int r;
usec_t elapsed_usec;
@ -859,7 +858,7 @@ static int client_send_message(sd_dhcp6_client *client, usec_t time_now) {
if (r < 0)
return r;
ORDERED_HASHMAP_FOREACH(j, client->extra_options, i) {
ORDERED_HASHMAP_FOREACH(j, client->extra_options) {
r = dhcp6_option_append(&opt, &optlen, j->option, j->length, j->data);
if (r < 0)
return r;

View File

@ -431,7 +431,6 @@ static int lldp_start_timer(sd_lldp *lldp, sd_lldp_neighbor *neighbor) {
_public_ int sd_lldp_get_neighbors(sd_lldp *lldp, sd_lldp_neighbor ***ret) {
sd_lldp_neighbor **l = NULL, *n;
Iterator i;
int k = 0, r;
assert_return(lldp, -EINVAL);
@ -452,7 +451,7 @@ _public_ int sd_lldp_get_neighbors(sd_lldp *lldp, sd_lldp_neighbor ***ret) {
return r;
}
HASHMAP_FOREACH(n, lldp->neighbor_by_id, i)
HASHMAP_FOREACH(n, lldp->neighbor_by_id)
l[k++] = sd_lldp_neighbor_ref(n);
assert((size_t) k == hashmap_size(lldp->neighbor_by_id));

View File

@ -961,9 +961,8 @@ void bus_match_free(struct bus_match_node *node) {
return;
if (BUS_MATCH_CAN_HASH(node->type)) {
Iterator i;
HASHMAP_FOREACH(c, node->compare.children, i)
HASHMAP_FOREACH(c, node->compare.children)
bus_match_free(c);
assert(hashmap_isempty(node->compare.children));
@ -1054,9 +1053,8 @@ void bus_match_dump(struct bus_match_node *node, unsigned level) {
putchar('\n');
if (BUS_MATCH_CAN_HASH(node->type)) {
Iterator i;
HASHMAP_FOREACH(c, node->compare.children, i)
HASHMAP_FOREACH(c, node->compare.children)
bus_match_dump(c, level + 1);
}

View File

@ -1235,7 +1235,6 @@ static int process_get_managed_objects(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_set_free_free_ Set *s = NULL;
Iterator i;
char *path;
int r;
@ -1265,7 +1264,7 @@ static int process_get_managed_objects(
if (r < 0)
return r;
SET_FOREACH(path, s, i) {
SET_FOREACH(path, s) {
r = object_manager_serialize_path_and_fallbacks(bus, reply, path, &error);
if (r < 0)
return bus_maybe_reply_error(m, r, &error);

View File

@ -597,7 +597,6 @@ static int bus_send_hello(sd_bus *bus) {
int bus_start_running(sd_bus *bus) {
struct reply_callback *c;
Iterator i;
usec_t n;
int r;
@ -609,7 +608,7 @@ int bus_start_running(sd_bus *bus) {
* adding a fixed value to all entries should not alter the internal order. */
n = now(CLOCK_MONOTONIC);
ORDERED_HASHMAP_FOREACH(c, bus->reply_callbacks, i) {
ORDERED_HASHMAP_FOREACH(c, bus->reply_callbacks) {
if (c->timeout_usec == 0)
continue;

View File

@ -308,16 +308,15 @@ static bool match_sysattr_value(sd_device *device, const char *sysattr, const ch
static bool match_sysattr(sd_device_enumerator *enumerator, sd_device *device) {
const char *sysattr;
const char *value;
Iterator i;
assert(enumerator);
assert(device);
HASHMAP_FOREACH_KEY(value, sysattr, enumerator->nomatch_sysattr, i)
HASHMAP_FOREACH_KEY(value, sysattr, enumerator->nomatch_sysattr)
if (match_sysattr_value(device, sysattr, value))
return false;
HASHMAP_FOREACH_KEY(value, sysattr, enumerator->match_sysattr, i)
HASHMAP_FOREACH_KEY(value, sysattr, enumerator->match_sysattr)
if (!match_sysattr_value(device, sysattr, value))
return false;
@ -327,7 +326,6 @@ static bool match_sysattr(sd_device_enumerator *enumerator, sd_device *device) {
static bool match_property(sd_device_enumerator *enumerator, sd_device *device) {
const char *property;
const char *value;
Iterator i;
assert(enumerator);
assert(device);
@ -335,7 +333,7 @@ static bool match_property(sd_device_enumerator *enumerator, sd_device *device)
if (hashmap_isempty(enumerator->match_property))
return true;
HASHMAP_FOREACH_KEY(value, property, enumerator->match_property, i) {
HASHMAP_FOREACH_KEY(value, property, enumerator->match_property) {
const char *property_dev, *value_dev;
FOREACH_DEVICE_PROPERTY(device, property_dev, value_dev) {
@ -358,12 +356,11 @@ static bool match_property(sd_device_enumerator *enumerator, sd_device *device)
static bool match_tag(sd_device_enumerator *enumerator, sd_device *device) {
const char *tag;
Iterator i;
assert(enumerator);
assert(device);
SET_FOREACH(tag, enumerator->match_tag, i)
SET_FOREACH(tag, enumerator->match_tag)
if (!sd_device_has_tag(device, tag))
return false;
@ -372,7 +369,6 @@ static bool match_tag(sd_device_enumerator *enumerator, sd_device *device) {
static bool match_parent(sd_device_enumerator *enumerator, sd_device *device) {
const char *syspath_parent, *syspath;
Iterator i;
assert(enumerator);
assert(device);
@ -382,7 +378,7 @@ static bool match_parent(sd_device_enumerator *enumerator, sd_device *device) {
assert_se(sd_device_get_syspath(device, &syspath) >= 0);
SET_FOREACH(syspath_parent, enumerator->match_parent, i)
SET_FOREACH(syspath_parent, enumerator->match_parent)
if (path_startswith(syspath, syspath_parent))
return true;
@ -391,7 +387,6 @@ static bool match_parent(sd_device_enumerator *enumerator, sd_device *device) {
static bool match_sysname(sd_device_enumerator *enumerator, const char *sysname) {
const char *sysname_match;
Iterator i;
assert(enumerator);
assert(sysname);
@ -399,7 +394,7 @@ static bool match_sysname(sd_device_enumerator *enumerator, const char *sysname)
if (set_isempty(enumerator->match_sysname))
return true;
SET_FOREACH(sysname_match, enumerator->match_sysname, i)
SET_FOREACH(sysname_match, enumerator->match_sysname)
if (fnmatch(sysname_match, sysname, 0) == 0)
return true;
@ -496,21 +491,20 @@ static int enumerator_scan_dir_and_add_devices(sd_device_enumerator *enumerator,
static bool match_subsystem(sd_device_enumerator *enumerator, const char *subsystem) {
const char *subsystem_match;
Iterator i;
assert(enumerator);
if (!subsystem)
return false;
SET_FOREACH(subsystem_match, enumerator->nomatch_subsystem, i)
SET_FOREACH(subsystem_match, enumerator->nomatch_subsystem)
if (fnmatch(subsystem_match, subsystem, 0) == 0)
return false;
if (set_isempty(enumerator->match_subsystem))
return true;
SET_FOREACH(subsystem_match, enumerator->match_subsystem, i)
SET_FOREACH(subsystem_match, enumerator->match_subsystem)
if (fnmatch(subsystem_match, subsystem, 0) == 0)
return true;
@ -626,12 +620,11 @@ static int enumerator_scan_devices_tag(sd_device_enumerator *enumerator, const c
static int enumerator_scan_devices_tags(sd_device_enumerator *enumerator) {
const char *tag;
Iterator i;
int r = 0;
assert(enumerator);
SET_FOREACH(tag, enumerator->match_tag, i) {
SET_FOREACH(tag, enumerator->match_tag) {
int k;
k = enumerator_scan_devices_tag(enumerator, tag);
@ -722,9 +715,8 @@ static int parent_crawl_children(sd_device_enumerator *enumerator, const char *p
static int enumerator_scan_devices_children(sd_device_enumerator *enumerator) {
const char *path;
int r = 0, k;
Iterator i;
SET_FOREACH(path, enumerator->match_parent, i) {
SET_FOREACH(path, enumerator->match_parent) {
k = parent_add_child(enumerator, path);
if (k < 0)
r = k;

View File

@ -353,7 +353,6 @@ DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(sd_device_monitor, sd_device_monitor, devic
static int passes_filter(sd_device_monitor *m, sd_device *device) {
const char *tag, *subsystem, *devtype, *s, *d = NULL;
Iterator i;
int r;
assert_return(m, -EINVAL);
@ -370,7 +369,7 @@ static int passes_filter(sd_device_monitor *m, sd_device *device) {
if (r < 0 && r != -ENOENT)
return r;
HASHMAP_FOREACH_KEY(devtype, subsystem, m->subsystem_filter, i) {
HASHMAP_FOREACH_KEY(devtype, subsystem, m->subsystem_filter) {
if (!streq(s, subsystem))
continue;
@ -390,7 +389,7 @@ tag:
if (set_isempty(m->tag_filter))
return 1;
SET_FOREACH(tag, m->tag_filter, i)
SET_FOREACH(tag, m->tag_filter)
if (sd_device_has_tag(device, tag) > 0)
return 1;
@ -631,7 +630,6 @@ _public_ int sd_device_monitor_filter_update(sd_device_monitor *m) {
struct sock_fprog filter;
const char *subsystem, *devtype, *tag;
unsigned i = 0;
Iterator it;
assert_return(m, -EINVAL);
@ -655,7 +653,7 @@ _public_ int sd_device_monitor_filter_update(sd_device_monitor *m) {
int tag_matches = set_size(m->tag_filter);
/* add all tags matches */
SET_FOREACH(tag, m->tag_filter, it) {
SET_FOREACH(tag, m->tag_filter) {
uint64_t tag_bloom_bits = string_bloom64(tag);
uint32_t tag_bloom_hi = tag_bloom_bits >> 32;
uint32_t tag_bloom_lo = tag_bloom_bits & 0xffffffff;
@ -682,7 +680,7 @@ _public_ int sd_device_monitor_filter_update(sd_device_monitor *m) {
/* add all subsystem matches */
if (!hashmap_isempty(m->subsystem_filter)) {
HASHMAP_FOREACH_KEY(devtype, subsystem, m->subsystem_filter, it) {
HASHMAP_FOREACH_KEY(devtype, subsystem, m->subsystem_filter) {
uint32_t hash = string_hash32(subsystem);
/* load device subsystem value in A */

View File

@ -732,7 +732,6 @@ int device_new_from_stat_rdev(sd_device **ret, const struct stat *st) {
int device_copy_properties(sd_device *device_dst, sd_device *device_src) {
const char *property, *value;
Iterator i;
int r;
assert(device_dst);
@ -742,13 +741,13 @@ int device_copy_properties(sd_device *device_dst, sd_device *device_src) {
if (r < 0)
return r;
ORDERED_HASHMAP_FOREACH_KEY(value, property, device_src->properties_db, i) {
ORDERED_HASHMAP_FOREACH_KEY(value, property, device_src->properties_db) {
r = device_add_property_aux(device_dst, property, value, true);
if (r < 0)
return r;
}
ORDERED_HASHMAP_FOREACH_KEY(value, property, device_src->properties, i) {
ORDERED_HASHMAP_FOREACH_KEY(value, property, device_src->properties) {
r = device_add_property_aux(device_dst, property, value, false);
if (r < 0)
return r;
@ -921,7 +920,6 @@ int device_update_db(sd_device *device) {
if (has_info) {
const char *property, *value, *tag;
Iterator i;
if (major(device->devnum) > 0) {
const char *devlink;
@ -939,13 +937,13 @@ int device_update_db(sd_device *device) {
if (device->usec_initialized > 0)
fprintf(f, "I:"USEC_FMT"\n", device->usec_initialized);
ORDERED_HASHMAP_FOREACH_KEY(value, property, device->properties_db, i)
ORDERED_HASHMAP_FOREACH_KEY(value, property, device->properties_db)
fprintf(f, "E:%s=%s\n", property, value);
FOREACH_DEVICE_TAG(device, tag)
fprintf(f, "G:%s\n", tag); /* Any tag */
SET_FOREACH(tag, device->current_tags, i)
SET_FOREACH(tag, device->current_tags)
fprintf(f, "Q:%s\n", tag); /* Current tag */
}

View File

@ -1502,7 +1502,6 @@ static char *join_string_set(Set *s) {
size_t ret_allocated = 0, ret_len;
_cleanup_free_ char *ret = NULL;
const char *tag;
Iterator i;
if (!GREEDY_REALLOC(ret, ret_allocated, 2))
return NULL;
@ -1510,7 +1509,7 @@ static char *join_string_set(Set *s) {
strcpy(ret, ":");
ret_len = 1;
SET_FOREACH(tag, s, i) {
SET_FOREACH(tag, s) {
char *e;
if (!GREEDY_REALLOC(ret, ret_allocated, ret_len + strlen(tag) + 2))

View File

@ -2870,7 +2870,6 @@ static int process_timer(
static int process_child(sd_event *e) {
sd_event_source *s;
Iterator i;
int r;
assert(e);
@ -2895,7 +2894,7 @@ static int process_child(sd_event *e) {
the callback still sees the process as a zombie.
*/
HASHMAP_FOREACH(s, e->child_sources, i) {
HASHMAP_FOREACH(s, e->child_sources) {
assert(s->type == SOURCE_CHILD);
if (s->pending)
@ -3100,12 +3099,11 @@ static int event_inotify_data_process(sd_event *e, struct inotify_data *d) {
if (d->buffer.ev.mask & IN_Q_OVERFLOW) {
struct inode_data *inode_data;
Iterator i;
/* The queue overran, let's pass this event to all event sources connected to this inotify
* object */
HASHMAP_FOREACH(inode_data, d->inodes, i) {
HASHMAP_FOREACH(inode_data, d->inodes) {
sd_event_source *s;
LIST_FOREACH(inotify.by_inode_data, s, inode_data->event_sources) {
@ -3203,12 +3201,11 @@ static int source_dispatch(sd_event_source *s) {
if (s->type != SOURCE_POST) {
sd_event_source *z;
Iterator i;
/* If we execute a non-post source, let's mark all
* post sources as pending */
SET_FOREACH(z, s->event->post_sources, i) {
SET_FOREACH(z, s->event->post_sources) {
if (z->enabled == SD_EVENT_OFF)
continue;

View File

@ -157,7 +157,6 @@ struct udev_list_entry *udev_list_get_entry(struct udev_list *list) {
else {
_cleanup_free_ struct udev_list_entry **buf = NULL;
struct udev_list_entry *entry, **p;
Iterator i;
size_t j;
buf = new(struct udev_list_entry *, n);
@ -165,7 +164,7 @@ struct udev_list_entry *udev_list_get_entry(struct udev_list *list) {
return NULL;
p = buf;
HASHMAP_FOREACH(entry, list->unique_entries, i)
HASHMAP_FOREACH(entry, list->unique_entries)
*p++ = entry;
typesafe_qsort(buf, n, udev_list_entry_compare_func);

View File

@ -168,7 +168,6 @@ int devnode_acl_all(const char *seat,
_cleanup_closedir_ DIR *dir = NULL;
struct dirent *dent;
sd_device *d;
Iterator i;
char *n;
int r;
@ -239,7 +238,7 @@ int devnode_acl_all(const char *seat,
}
r = 0;
SET_FOREACH(n, nodes, i) {
SET_FOREACH(n, nodes) {
int k;
log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT""UID_FMT"%s%s)",

View File

@ -391,13 +391,12 @@ int manager_get_idle_hint(Manager *m, dual_timestamp *t) {
Session *s;
bool idle_hint;
dual_timestamp ts = DUAL_TIMESTAMP_NULL;
Iterator i;
assert(m);
idle_hint = !manager_is_inhibited(m, INHIBIT_IDLE, INHIBIT_BLOCK, t, false, false, 0, NULL);
HASHMAP_FOREACH(s, m->sessions, i) {
HASHMAP_FOREACH(s, m->sessions) {
dual_timestamp k;
int ih;
@ -547,10 +546,9 @@ int manager_spawn_autovt(Manager *m, unsigned vtnr) {
}
bool manager_is_lid_closed(Manager *m) {
Iterator i;
Button *b;
HASHMAP_FOREACH(b, m->buttons, i)
HASHMAP_FOREACH(b, m->buttons)
if (b->lid_closed)
return true;
@ -558,10 +556,9 @@ bool manager_is_lid_closed(Manager *m) {
}
static bool manager_is_docked(Manager *m) {
Iterator i;
Button *b;
HASHMAP_FOREACH(b, m->buttons, i)
HASHMAP_FOREACH(b, m->buttons)
if (b->docked)
return true;

View File

@ -516,7 +516,6 @@ static int method_list_sessions(sd_bus_message *message, void *userdata, sd_bus_
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Session *session;
Iterator i;
int r;
assert(message);
@ -530,7 +529,7 @@ static int method_list_sessions(sd_bus_message *message, void *userdata, sd_bus_
if (r < 0)
return r;
HASHMAP_FOREACH(session, m->sessions, i) {
HASHMAP_FOREACH(session, m->sessions) {
_cleanup_free_ char *p = NULL;
p = session_bus_path(session);
@ -558,7 +557,6 @@ static int method_list_users(sd_bus_message *message, void *userdata, sd_bus_err
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
User *user;
Iterator i;
int r;
assert(message);
@ -572,7 +570,7 @@ static int method_list_users(sd_bus_message *message, void *userdata, sd_bus_err
if (r < 0)
return r;
HASHMAP_FOREACH(user, m->users, i) {
HASHMAP_FOREACH(user, m->users) {
_cleanup_free_ char *p = NULL;
p = user_bus_path(user);
@ -598,7 +596,6 @@ static int method_list_seats(sd_bus_message *message, void *userdata, sd_bus_err
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Seat *seat;
Iterator i;
int r;
assert(message);
@ -612,7 +609,7 @@ static int method_list_seats(sd_bus_message *message, void *userdata, sd_bus_err
if (r < 0)
return r;
HASHMAP_FOREACH(seat, m->seats, i) {
HASHMAP_FOREACH(seat, m->seats) {
_cleanup_free_ char *p = NULL;
p = seat_bus_path(seat);
@ -635,7 +632,6 @@ static int method_list_inhibitors(sd_bus_message *message, void *userdata, sd_bu
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Inhibitor *inhibitor;
Iterator i;
int r;
assert(message);
@ -649,7 +645,7 @@ static int method_list_inhibitors(sd_bus_message *message, void *userdata, sd_bu
if (r < 0)
return r;
HASHMAP_FOREACH(inhibitor, m->inhibitors, i) {
HASHMAP_FOREACH(inhibitor, m->inhibitors) {
r = sd_bus_message_append(reply, "(ssssuu)",
strempty(inhibit_what_to_string(inhibitor->what)),
@ -1499,13 +1495,12 @@ static int have_multiple_sessions(
uid_t uid) {
Session *session;
Iterator i;
assert(m);
/* Check for other users' sessions. Greeter sessions do not
* count, and non-login sessions do not count either. */
HASHMAP_FOREACH(session, m->sessions, i)
HASHMAP_FOREACH(session, m->sessions)
if (session->class == SESSION_USER &&
session->user->user_record->uid != uid)
return true;
@ -3900,7 +3895,6 @@ int match_properties_changed(sd_bus_message *message, void *userdata, sd_bus_err
int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *m = userdata;
Session *session;
Iterator i;
int b, r;
assert(message);
@ -3918,7 +3912,7 @@ int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error
/* systemd finished reloading, let's recheck all our sessions */
log_debug("System manager has been reloaded, rechecking sessions...");
HASHMAP_FOREACH(session, m->sessions, i)
HASHMAP_FOREACH(session, m->sessions)
session_add_to_gc_queue(session);
return 0;

View File

@ -372,12 +372,11 @@ bool inhibitor_is_orphan(Inhibitor *i) {
InhibitWhat manager_inhibit_what(Manager *m, InhibitMode mm) {
Inhibitor *i;
Iterator j;
InhibitWhat what = 0;
assert(m);
HASHMAP_FOREACH(i, m->inhibitors, j)
HASHMAP_FOREACH(i, m->inhibitors)
if (i->mode == mm && i->started)
what |= i->what;
@ -413,14 +412,13 @@ bool manager_is_inhibited(
Inhibitor **offending) {
Inhibitor *i;
Iterator j;
struct dual_timestamp ts = DUAL_TIMESTAMP_NULL;
bool inhibited = false;
assert(m);
assert(w > 0 && w < _INHIBIT_WHAT_MAX);
HASHMAP_FOREACH(i, m->inhibitors, j) {
HASHMAP_FOREACH(i, m->inhibitors) {
if (!i->started)
continue;

View File

@ -345,14 +345,13 @@ static int seat_node_enumerator(sd_bus *bus, const char *path, void *userdata, c
sd_bus_message *message;
Manager *m = userdata;
Seat *seat;
Iterator i;
int r;
assert(bus);
assert(path);
assert(nodes);
HASHMAP_FOREACH(seat, m->seats, i) {
HASHMAP_FOREACH(seat, m->seats) {
char *p;
p = seat_bus_path(seat);

View File

@ -635,14 +635,13 @@ static int session_node_enumerator(sd_bus *bus, const char *path, void *userdata
sd_bus_message *message;
Manager *m = userdata;
Session *session;
Iterator i;
int r;
assert(bus);
assert(path);
assert(nodes);
HASHMAP_FOREACH(session, m->sessions, i) {
HASHMAP_FOREACH(session, m->sessions) {
char *p;
p = session_bus_path(session);
@ -753,12 +752,11 @@ int session_send_lock(Session *s, bool lock) {
int session_send_lock_all(Manager *m, bool lock) {
Session *session;
Iterator i;
int r = 0;
assert(m);
HASHMAP_FOREACH(session, m->sessions, i) {
HASHMAP_FOREACH(session, m->sessions) {
int k;
k = session_send_lock(session, lock);

View File

@ -408,7 +408,6 @@ void session_device_free(SessionDevice *sd) {
void session_device_complete_pause(SessionDevice *sd) {
SessionDevice *iter;
Iterator i;
if (!sd->active)
return;
@ -416,7 +415,7 @@ void session_device_complete_pause(SessionDevice *sd) {
session_device_stop(sd);
/* if not all devices are paused, wait for further completion events */
HASHMAP_FOREACH(iter, sd->session->devices, i)
HASHMAP_FOREACH(iter, sd->session->devices)
if (iter->active)
return;
@ -426,11 +425,10 @@ void session_device_complete_pause(SessionDevice *sd) {
void session_device_resume_all(Session *s) {
SessionDevice *sd;
Iterator i;
assert(s);
HASHMAP_FOREACH(sd, s->devices, i) {
HASHMAP_FOREACH(sd, s->devices) {
if (sd->active)
continue;
@ -445,11 +443,10 @@ void session_device_resume_all(Session *s) {
void session_device_pause_all(Session *s) {
SessionDevice *sd;
Iterator i;
assert(s);
HASHMAP_FOREACH(sd, s->devices, i) {
HASHMAP_FOREACH(sd, s->devices) {
if (!sd->active)
continue;
@ -461,11 +458,10 @@ void session_device_pause_all(Session *s) {
unsigned session_device_try_pause_all(Session *s) {
unsigned num_pending = 0;
SessionDevice *sd;
Iterator i;
assert(s);
HASHMAP_FOREACH(sd, s->devices, i) {
HASHMAP_FOREACH(sd, s->devices) {
if (!sd->active)
continue;

View File

@ -189,11 +189,10 @@ int session_set_leader(Session *s, pid_t pid) {
static void session_save_devices(Session *s, FILE *f) {
SessionDevice *sd;
Iterator i;
if (!hashmap_isempty(s->devices)) {
fprintf(f, "DEVICES=");
HASHMAP_FOREACH(sd, s->devices, i)
HASHMAP_FOREACH(sd, s->devices)
fprintf(f, "%u:%u ", major(sd->dev), minor(sd->dev));
fprintf(f, "\n");
}

View File

@ -319,14 +319,13 @@ static int user_node_enumerator(sd_bus *bus, const char *path, void *userdata, c
sd_bus_message *message;
Manager *m = userdata;
User *user;
Iterator i;
int r;
assert(bus);
assert(path);
assert(nodes);
HASHMAP_FOREACH(user, m->users, i) {
HASHMAP_FOREACH(user, m->users) {
char *p;
p = user_bus_path(user);

View File

@ -1032,7 +1032,6 @@ static int manager_startup(Manager *m) {
User *user;
Button *button;
Inhibitor *inhibitor;
Iterator i;
assert(m);
@ -1102,16 +1101,16 @@ static int manager_startup(Manager *m) {
manager_read_utmp(m);
/* And start everything */
HASHMAP_FOREACH(seat, m->seats, i)
HASHMAP_FOREACH(seat, m->seats)
(void) seat_start(seat);
HASHMAP_FOREACH(user, m->users, i)
HASHMAP_FOREACH(user, m->users)
(void) user_start(user);
HASHMAP_FOREACH(session, m->sessions, i)
HASHMAP_FOREACH(session, m->sessions)
(void) session_start(session, NULL, NULL);
HASHMAP_FOREACH(inhibitor, m->inhibitors, i) {
HASHMAP_FOREACH(inhibitor, m->inhibitors) {
(void) inhibitor_start(inhibitor);
/* Let's see if the inhibitor is dead now, then remove it */
@ -1121,7 +1120,7 @@ static int manager_startup(Manager *m) {
}
}
HASHMAP_FOREACH(button, m->buttons, i)
HASHMAP_FOREACH(button, m->buttons)
button_check_switches(button);
manager_dispatch_idle_action(NULL, 0, m);

View File

@ -442,7 +442,6 @@ static int image_node_enumerator(sd_bus *bus, const char *path, void *userdata,
_cleanup_hashmap_free_ Hashmap *images = NULL;
_cleanup_strv_free_ char **l = NULL;
Image *image;
Iterator i;
int r;
assert(bus);
@ -457,7 +456,7 @@ static int image_node_enumerator(sd_bus *bus, const char *path, void *userdata,
if (r < 0)
return r;
HASHMAP_FOREACH(image, images, i) {
HASHMAP_FOREACH(image, images) {
char *p;
p = image_bus_path(image->name);

View File

@ -1382,14 +1382,13 @@ static int machine_node_enumerator(sd_bus *bus, const char *path, void *userdata
_cleanup_strv_free_ char **l = NULL;
Machine *machine = NULL;
Manager *m = userdata;
Iterator i;
int r;
assert(bus);
assert(path);
assert(nodes);
HASHMAP_FOREACH(machine, m->machines, i) {
HASHMAP_FOREACH(machine, m->machines) {
char *p;
p = machine_bus_path(machine);

View File

@ -38,7 +38,6 @@ int manager_enqueue_nscd_cache_flush(Manager *m) {
int manager_find_machine_for_uid(Manager *m, uid_t uid, Machine **ret_machine, uid_t *ret_internal_uid) {
Machine *machine;
Iterator i;
int r;
assert(m);
@ -47,7 +46,7 @@ int manager_find_machine_for_uid(Manager *m, uid_t uid, Machine **ret_machine, u
/* Finds the machine for the specified host UID and returns it along with the UID translated into the
* internal UID inside the machine */
HASHMAP_FOREACH(machine, m->machines, i) {
HASHMAP_FOREACH(machine, m->machines) {
uid_t converted;
r = machine_owns_uid(machine, uid, &converted);
@ -74,13 +73,12 @@ int manager_find_machine_for_uid(Manager *m, uid_t uid, Machine **ret_machine, u
int manager_find_machine_for_gid(Manager *m, gid_t gid, Machine **ret_machine, gid_t *ret_internal_gid) {
Machine *machine;
Iterator i;
int r;
assert(m);
assert(gid_is_valid(gid));
HASHMAP_FOREACH(machine, m->machines, i) {
HASHMAP_FOREACH(machine, m->machines) {
gid_t converted;
r = machine_owns_gid(machine, gid, &converted);

View File

@ -185,7 +185,6 @@ static int method_list_machines(sd_bus_message *message, void *userdata, sd_bus_
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *m = userdata;
Machine *machine;
Iterator i;
int r;
assert(message);
@ -199,7 +198,7 @@ static int method_list_machines(sd_bus_message *message, void *userdata, sd_bus_
if (r < 0)
return sd_bus_error_set_errno(error, r);
HASHMAP_FOREACH(machine, m->machines, i) {
HASHMAP_FOREACH(machine, m->machines) {
_cleanup_free_ char *p = NULL;
p = machine_bus_path(machine);
@ -474,7 +473,6 @@ static int method_list_images(sd_bus_message *message, void *userdata, sd_bus_er
_cleanup_hashmap_free_ Hashmap *images = NULL;
_unused_ Manager *m = userdata;
Image *image;
Iterator i;
int r;
assert(message);
@ -496,7 +494,7 @@ static int method_list_images(sd_bus_message *message, void *userdata, sd_bus_er
if (r < 0)
return r;
HASHMAP_FOREACH(image, images, i) {
HASHMAP_FOREACH(image, images) {
_cleanup_free_ char *p = NULL;
p = image_bus_path(image->name);
@ -749,7 +747,6 @@ static int method_clean_pool(sd_bus_message *message, void *userdata, sd_bus_err
_cleanup_hashmap_free_ Hashmap *images = NULL;
bool success = true;
Image *image;
Iterator i;
ssize_t l;
errno_pipe_fd[0] = safe_close(errno_pipe_fd[0]);
@ -770,7 +767,7 @@ static int method_clean_pool(sd_bus_message *message, void *userdata, sd_bus_err
goto child_fail;
}
HASHMAP_FOREACH(image, images, i) {
HASHMAP_FOREACH(image, images) {
/* We can't remove vendor images (i.e. those in /usr) */
if (IMAGE_IS_VENDOR(image))
@ -1421,7 +1418,6 @@ int match_unit_removed(sd_bus_message *message, void *userdata, sd_bus_error *er
int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *m = userdata;
Machine *machine;
Iterator i;
int b, r;
assert(message);
@ -1438,7 +1434,7 @@ int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error
/* systemd finished reloading, let's recheck all our machines */
log_debug("System manager has been reloaded, rechecking machines...");
HASHMAP_FOREACH(machine, m->machines, i)
HASHMAP_FOREACH(machine, m->machines)
machine_add_to_gc_queue(machine);
return 0;

View File

@ -265,7 +265,6 @@ static void manager_gc(Manager *m, bool drop_not_started) {
static int manager_startup(Manager *m) {
Machine *machine;
Iterator i;
int r;
assert(m);
@ -287,7 +286,7 @@ static int manager_startup(Manager *m) {
manager_gc(m, false);
/* And start everything */
HASHMAP_FOREACH(machine, m->machines, i)
HASHMAP_FOREACH(machine, m->machines)
machine_start(machine, NULL, NULL);
return 0;

View File

@ -83,7 +83,6 @@ static int context_save(Context *context) {
Network *network;
NetDev *netdev;
Link *link;
Iterator i;
int k, r;
const char *p;
@ -93,19 +92,19 @@ static int context_save(Context *context) {
if (r < 0)
return log_error_errno(r, "Failed to create directory " NETWORKD_UNIT_DIRECTORY ": %m");
HASHMAP_FOREACH(network, context->networks_by_name, i) {
HASHMAP_FOREACH(network, context->networks_by_name) {
k = network_save(network, p);
if (k < 0 && r >= 0)
r = k;
}
HASHMAP_FOREACH(netdev, context->netdevs_by_name, i) {
HASHMAP_FOREACH(netdev, context->netdevs_by_name) {
k = netdev_save(netdev, p);
if (k < 0 && r >= 0)
r = k;
}
HASHMAP_FOREACH(link, context->links_by_name, i) {
HASHMAP_FOREACH(link, context->links_by_name) {
k = link_save(link, p);
if (k < 0 && r >= 0)
r = k;

View File

@ -957,7 +957,6 @@ int parse_cmdline_item(const char *key, const char *value, void *data) {
int context_merge_networks(Context *context) {
Network *all, *network;
Route *route;
Iterator i;
int r;
assert(context);
@ -974,7 +973,7 @@ int context_merge_networks(Context *context) {
if (hashmap_size(context->networks_by_name) <= 1)
return 0;
HASHMAP_FOREACH(network, context->networks_by_name, i) {
HASHMAP_FOREACH(network, context->networks_by_name) {
if (network == all)
continue;

View File

@ -201,7 +201,6 @@ static int netdev_bond_fill_message_create(NetDev *netdev, Link *link, sd_netlin
}
if (b->arp_interval > 0 && !ordered_set_isempty(b->arp_ip_targets)) {
Iterator i;
void *val;
int n = 0;
@ -209,7 +208,7 @@ static int netdev_bond_fill_message_create(NetDev *netdev, Link *link, sd_netlin
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not open contaniner IFLA_BOND_ARP_IP_TARGET : %m");
ORDERED_SET_FOREACH(val, b->arp_ip_targets, i) {
ORDERED_SET_FOREACH(val, b->arp_ip_targets) {
r = sd_netlink_message_append_u32(m, n++, PTR_TO_UINT32(val));
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %m");

View File

@ -275,7 +275,6 @@ static int l2tp_acquire_local_address_one(L2tpTunnel *t, Address *a, union in_ad
static int l2tp_acquire_local_address(L2tpTunnel *t, Link *link, union in_addr_union *ret) {
Address *a;
Iterator i;
assert(t);
assert(link);
@ -288,11 +287,11 @@ static int l2tp_acquire_local_address(L2tpTunnel *t, Link *link, union in_addr_u
return 0;
}
SET_FOREACH(a, link->addresses, i)
SET_FOREACH(a, link->addresses)
if (l2tp_acquire_local_address_one(t, a, ret) >= 0)
return 1;
SET_FOREACH(a, link->addresses_foreign, i)
SET_FOREACH(a, link->addresses_foreign)
if (l2tp_acquire_local_address_one(t, a, ret) >= 0)
return 1;
@ -348,7 +347,6 @@ static int l2tp_create_session(NetDev *netdev, L2tpSession *session) {
static int l2tp_create_tunnel_handler(sd_netlink *rtnl, sd_netlink_message *m, NetDev *netdev) {
L2tpSession *session;
L2tpTunnel *t;
Iterator i;
int r;
assert(netdev);
@ -370,7 +368,7 @@ static int l2tp_create_tunnel_handler(sd_netlink *rtnl, sd_netlink_message *m, N
log_netdev_debug(netdev, "L2TP tunnel is created");
ORDERED_HASHMAP_FOREACH(session, t->sessions_by_section, i)
ORDERED_HASHMAP_FOREACH(session, t->sessions_by_section)
(void) l2tp_create_session(netdev, session);
return 1;
@ -677,7 +675,6 @@ static int l2tp_session_verify(L2tpSession *session) {
static int netdev_l2tp_tunnel_verify(NetDev *netdev, const char *filename) {
L2tpTunnel *t;
L2tpSession *session;
Iterator i;
assert(netdev);
assert(filename);
@ -701,7 +698,7 @@ static int netdev_l2tp_tunnel_verify(NetDev *netdev, const char *filename) {
"%s: L2TP tunnel without tunnel IDs configured. Ignoring",
filename);
ORDERED_HASHMAP_FOREACH(session, t->sessions_by_section, i)
ORDERED_HASHMAP_FOREACH(session, t->sessions_by_section)
if (l2tp_session_verify(session) < 0)
l2tp_session_free(session);

View File

@ -494,7 +494,6 @@ static int netdev_macsec_configure_transmit_association(NetDev *netdev, Transmit
static int netdev_macsec_configure(NetDev *netdev, Link *link, sd_netlink_message *m) {
TransmitAssociation *a;
ReceiveChannel *c;
Iterator i;
MACsec *s;
int r;
@ -502,13 +501,13 @@ static int netdev_macsec_configure(NetDev *netdev, Link *link, sd_netlink_messag
s = MACSEC(netdev);
assert(s);
ORDERED_HASHMAP_FOREACH(a, s->transmit_associations_by_section, i) {
ORDERED_HASHMAP_FOREACH(a, s->transmit_associations_by_section) {
r = netdev_macsec_configure_transmit_association(netdev, a);
if (r < 0)
return r;
}
ORDERED_HASHMAP_FOREACH(c, s->receive_channels, i) {
ORDERED_HASHMAP_FOREACH(c, s->receive_channels) {
r = netdev_macsec_configure_receive_channel(netdev, c);
if (r < 0)
return r;
@ -1148,7 +1147,6 @@ static int netdev_macsec_verify(NetDev *netdev, const char *filename) {
TransmitAssociation *a;
ReceiveAssociation *n;
ReceiveChannel *c;
Iterator i;
uint8_t an, encoding_an;
bool use_for_encoding;
int r;
@ -1157,7 +1155,7 @@ static int netdev_macsec_verify(NetDev *netdev, const char *filename) {
assert(v);
assert(filename);
ORDERED_HASHMAP_FOREACH(c, v->receive_channels_by_section, i) {
ORDERED_HASHMAP_FOREACH(c, v->receive_channels_by_section) {
r = macsec_receive_channel_verify(c);
if (r < 0)
macsec_receive_channel_free(c);
@ -1166,7 +1164,7 @@ static int netdev_macsec_verify(NetDev *netdev, const char *filename) {
an = 0;
use_for_encoding = false;
encoding_an = 0;
ORDERED_HASHMAP_FOREACH(a, v->transmit_associations_by_section, i) {
ORDERED_HASHMAP_FOREACH(a, v->transmit_associations_by_section) {
r = macsec_transmit_association_verify(a);
if (r < 0) {
macsec_transmit_association_free(a);
@ -1201,7 +1199,7 @@ static int netdev_macsec_verify(NetDev *netdev, const char *filename) {
assert(encoding_an < MACSEC_MAX_ASSOCIATION_NUMBER);
v->encoding_an = encoding_an;
ORDERED_HASHMAP_FOREACH(n, v->receive_associations_by_section, i) {
ORDERED_HASHMAP_FOREACH(n, v->receive_associations_by_section) {
r = macsec_receive_association_verify(n);
if (r < 0)
macsec_receive_association_free(n);

View File

@ -24,7 +24,6 @@ static int netdev_macvlan_fill_message_create(NetDev *netdev, Link *link, sd_net
assert(m);
if (m->mode == NETDEV_MACVLAN_MODE_SOURCE && !set_isempty(m->match_source_mac)) {
Iterator i;
const struct ether_addr *mac_addr;
r = sd_netlink_message_append_u32(req, IFLA_MACVLAN_MACADDR_MODE, MACVLAN_MACADDR_SET);
@ -35,7 +34,7 @@ static int netdev_macvlan_fill_message_create(NetDev *netdev, Link *link, sd_net
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not open IFLA_MACVLAN_MACADDR_DATA container: %m");
SET_FOREACH(mac_addr, m->match_source_mac, i) {
SET_FOREACH(mac_addr, m->match_source_mac) {
r = sd_netlink_message_append_ether_addr(req, IFLA_MACVLAN_MACADDR, mac_addr);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_MACVLAN_MACADDR attribute: %m");

View File

@ -395,14 +395,13 @@ static void resolve_endpoints(NetDev *netdev) {
};
WireguardPeer *peer;
Wireguard *w;
Iterator i;
int r;
assert(netdev);
w = WIREGUARD(netdev);
assert(w);
SET_FOREACH(peer, w->peers_with_unresolved_endpoint, i) {
SET_FOREACH(peer, w->peers_with_unresolved_endpoint) {
r = resolve_getaddrinfo(netdev->manager->resolve,
NULL,
peer->endpoint_host,

View File

@ -2477,7 +2477,6 @@ static int link_up_down(int argc, char *argv[], void *userdata) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_set_free_ Set *indexes = NULL;
int index, r, i;
Iterator j;
void *p;
r = sd_netlink_open(&rtnl);
@ -2498,7 +2497,7 @@ static int link_up_down(int argc, char *argv[], void *userdata) {
return log_oom();
}
SET_FOREACH(p, indexes, j) {
SET_FOREACH(p, indexes) {
index = PTR_TO_INT(p);
r = link_up_down_send_message(rtnl, argv[0], index);
if (r < 0) {
@ -2516,7 +2515,6 @@ static int link_delete(int argc, char *argv[], void *userdata) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_set_free_ Set *indexes = NULL;
int index, r, i;
Iterator j;
void *p;
r = sd_netlink_open(&rtnl);
@ -2537,7 +2535,7 @@ static int link_delete(int argc, char *argv[], void *userdata) {
return log_oom();
}
SET_FOREACH(p, indexes, j) {
SET_FOREACH(p, indexes) {
index = PTR_TO_INT(p);
r = link_delete_send_message(rtnl, index);
if (r < 0) {
@ -2641,7 +2639,6 @@ static int verb_reconfigure(int argc, char *argv[], void *userdata) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_set_free_ Set *indexes = NULL;
int index, i, r;
Iterator j;
void *p;
r = sd_bus_open_system(&bus);
@ -2662,7 +2659,7 @@ static int verb_reconfigure(int argc, char *argv[], void *userdata) {
return log_oom();
}
SET_FOREACH(p, indexes, j) {
SET_FOREACH(p, indexes) {
index = PTR_TO_INT(p);
r = bus_call_method(bus, bus_network_mgr, "ReconfigureLink", &error, NULL, "i", index);
if (r < 0) {

View File

@ -75,19 +75,17 @@ static bool address_pool_prefix_is_taken(
const union in_addr_union *u,
unsigned prefixlen) {
Iterator i;
Link *l;
Network *n;
assert(p);
assert(u);
HASHMAP_FOREACH(l, p->manager->links, i) {
HASHMAP_FOREACH(l, p->manager->links) {
Address *a;
Iterator j;
/* Don't clash with assigned addresses */
SET_FOREACH(a, l->addresses, j) {
SET_FOREACH(a, l->addresses) {
if (a->family != p->family)
continue;
@ -106,7 +104,7 @@ static bool address_pool_prefix_is_taken(
}
/* And don't clash with configured but un-assigned addresses either */
ORDERED_HASHMAP_FOREACH(n, p->manager->networks, i) {
ORDERED_HASHMAP_FOREACH(n, p->manager->networks) {
Address *a;
LIST_FOREACH(addresses, a, n->static_addresses) {

View File

@ -125,7 +125,6 @@ void address_free(Address *address) {
if (address->link && !address->acd) {
NDiscAddress *n;
Iterator i;
set_remove(address->link->addresses, address);
set_remove(address->link->addresses_foreign, address);
@ -138,7 +137,7 @@ void address_free(Address *address) {
set_remove(address->link->dhcp6_addresses_old, address);
set_remove(address->link->dhcp6_pd_addresses, address);
set_remove(address->link->dhcp6_pd_addresses_old, address);
SET_FOREACH(n, address->link->ndisc_addresses, i)
SET_FOREACH(n, address->link->ndisc_addresses)
if (n->address == address)
free(set_remove(address->link->ndisc_addresses, n));
@ -455,9 +454,8 @@ int address_get(Link *link,
static bool address_exists_internal(Set *addresses, int family, const union in_addr_union *in_addr) {
Address *address;
Iterator i;
SET_FOREACH(address, addresses, i) {
SET_FOREACH(address, addresses) {
if (address->family != family)
continue;
if (in_addr_equal(address->family, &address->in_addr, in_addr))

View File

@ -22,7 +22,6 @@ static int property_get_leases(
Link *l = userdata;
sd_dhcp_server *s;
DHCPLease *lease;
Iterator i;
int r;
assert(reply);
@ -36,7 +35,7 @@ static int property_get_leases(
if (r < 0)
return r;
HASHMAP_FOREACH(lease, s->leases_by_client_id, i) {
HASHMAP_FOREACH(lease, s->leases_by_client_id) {
r = sd_bus_message_open_container(reply, 'r', "uayayayayt");
if (r < 0)
return r;

View File

@ -228,7 +228,6 @@ int dhcp4_server_configure(Link *link) {
sd_dhcp_option *p;
Link *uplink = NULL;
Address *address;
Iterator i;
int r;
address = link_find_dhcp_server_address(link);
@ -322,7 +321,7 @@ int dhcp4_server_configure(Link *link) {
return log_link_error_errno(link, r, "Failed to set timezone for DHCP server: %m");
}
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_options, i) {
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_options) {
r = sd_dhcp_server_add_option(link->dhcp_server, p);
if (r == -EEXIST)
continue;
@ -330,7 +329,7 @@ int dhcp4_server_configure(Link *link) {
return log_link_error_errno(link, r, "Failed to set DHCPv4 option: %m");
}
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_vendor_options, i) {
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_vendor_options) {
r = sd_dhcp_server_add_vendor_option(link->dhcp_server, p);
if (r == -EEXIST)
continue;

View File

@ -25,7 +25,6 @@ static int dhcp4_remove_all(Link *link);
static int dhcp4_release_old_lease(Link *link) {
Route *route;
Iterator i;
int k, r = 0;
assert(link);
@ -37,7 +36,7 @@ static int dhcp4_release_old_lease(Link *link) {
link_dirty(link);
SET_FOREACH(route, link->dhcp_routes_old, i) {
SET_FOREACH(route, link->dhcp_routes_old) {
k = route_remove(route, link, NULL);
if (k < 0)
r = k;
@ -507,12 +506,11 @@ static int dhcp4_remove_address_handler(sd_netlink *rtnl, sd_netlink_message *m,
static int dhcp4_remove_all(Link *link) {
Route *route;
Iterator i;
int k, r = 0;
assert(link);
SET_FOREACH(route, link->dhcp_routes, i) {
SET_FOREACH(route, link->dhcp_routes) {
k = route_remove(route, link, dhcp4_remove_route_handler);
if (k < 0)
r = k;
@ -1245,7 +1243,6 @@ int dhcp4_set_client_identifier(Link *link) {
int dhcp4_configure(Link *link) {
sd_dhcp_option *send_option;
void *request_options;
Iterator i;
int r;
assert(link);
@ -1337,7 +1334,7 @@ int dhcp4_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set request flag for timezone: %m");
}
SET_FOREACH(request_options, link->network->dhcp_request_options, i) {
SET_FOREACH(request_options, link->network->dhcp_request_options) {
uint32_t option = PTR_TO_UINT32(request_options);
r = sd_dhcp_client_set_request_option(link->dhcp_client, option);
@ -1349,7 +1346,7 @@ int dhcp4_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set request flag for '%u': %m", option);
}
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_options, i) {
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_options) {
r = sd_dhcp_client_add_option(link->dhcp_client, send_option);
if (r == -EEXIST)
continue;
@ -1357,7 +1354,7 @@ int dhcp4_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set send option: %m");
}
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_vendor_options, i) {
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_vendor_options) {
r = sd_dhcp_client_add_vendor_option(link->dhcp_client, send_option);
if (r == -EEXIST)
continue;

View File

@ -108,13 +108,12 @@ static int dhcp6_pd_remove_old(Link *link, bool force);
static int dhcp6_pd_address_callback(Address *address) {
Address *a;
Iterator i;
assert(address);
assert(address->link);
/* Make this called only once */
SET_FOREACH(a, address->link->dhcp6_pd_addresses, i)
SET_FOREACH(a, address->link->dhcp6_pd_addresses)
a->callback = NULL;
return dhcp6_pd_remove_old(address->link, true);
@ -123,7 +122,6 @@ static int dhcp6_pd_address_callback(Address *address) {
static int dhcp6_pd_remove_old(Link *link, bool force) {
Address *address;
Route *route;
Iterator i;
int k, r = 0;
assert(link);
@ -138,14 +136,14 @@ static int dhcp6_pd_remove_old(Link *link, bool force) {
if (!force) {
bool set_callback = !set_isempty(link->dhcp6_pd_addresses);
SET_FOREACH(address, link->dhcp6_pd_addresses, i)
SET_FOREACH(address, link->dhcp6_pd_addresses)
if (address_is_ready(address)) {
set_callback = false;
break;
}
if (set_callback) {
SET_FOREACH(address, link->dhcp6_pd_addresses, i)
SET_FOREACH(address, link->dhcp6_pd_addresses)
address->callback = dhcp6_pd_address_callback;
return 0;
}
@ -155,7 +153,7 @@ static int dhcp6_pd_remove_old(Link *link, bool force) {
link_dirty(link);
SET_FOREACH(route, link->dhcp6_pd_routes_old, i) {
SET_FOREACH(route, link->dhcp6_pd_routes_old) {
k = route_remove(route, link, NULL);
if (k < 0)
r = k;
@ -164,7 +162,7 @@ static int dhcp6_pd_remove_old(Link *link, bool force) {
dhcp6_pd_free(hashmap_get(link->manager->dhcp6_prefixes, &route->dst.in6));
}
SET_FOREACH(address, link->dhcp6_pd_addresses_old, i) {
SET_FOREACH(address, link->dhcp6_pd_addresses_old) {
k = address_remove(address, link, NULL);
if (k < 0)
r = k;
@ -176,7 +174,6 @@ static int dhcp6_pd_remove_old(Link *link, bool force) {
int dhcp6_pd_remove(Link *link) {
Address *address;
Route *route;
Iterator i;
int k, r = 0;
assert(link);
@ -196,7 +193,7 @@ int dhcp6_pd_remove(Link *link) {
link_dirty(link);
SET_FOREACH(route, link->dhcp6_pd_routes, i) {
SET_FOREACH(route, link->dhcp6_pd_routes) {
k = route_remove(route, link, NULL);
if (k < 0)
r = k;
@ -205,7 +202,7 @@ int dhcp6_pd_remove(Link *link) {
dhcp6_pd_free(hashmap_get(link->manager->dhcp6_prefixes, &route->dst.in6));
}
SET_FOREACH(address, link->dhcp6_pd_addresses, i) {
SET_FOREACH(address, link->dhcp6_pd_addresses) {
k = address_remove(address, link, NULL);
if (k < 0)
r = k;
@ -517,7 +514,6 @@ static void dhcp6_pd_prefix_distribute(Link *dhcp6_link,
uint32_t lifetime_valid,
bool assign_preferred_subnet_id) {
Iterator i;
Link *link;
int r;
@ -526,7 +522,7 @@ static void dhcp6_pd_prefix_distribute(Link *dhcp6_link,
assert(masked_pd_prefix);
assert(pd_prefix_len <= 64);
HASHMAP_FOREACH(link, dhcp6_link->manager->links, i) {
HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
_cleanup_free_ char *assigned_buf = NULL;
union in_addr_union assigned_prefix;
@ -636,13 +632,12 @@ static int dhcp6_pd_finalize(Link *link) {
static void dhcp6_pd_prefix_lost(Link *dhcp6_link) {
Link *link;
Iterator i;
int r;
assert(dhcp6_link);
assert(dhcp6_link->manager);
HASHMAP_FOREACH(link, dhcp6_link->manager->links, i) {
HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
if (link == dhcp6_link)
continue;
@ -659,13 +654,12 @@ static int dhcp6_remove_old(Link *link, bool force);
static int dhcp6_address_callback(Address *address) {
Address *a;
Iterator i;
assert(address);
assert(address->link);
/* Make this called only once */
SET_FOREACH(a, address->link->dhcp6_addresses, i)
SET_FOREACH(a, address->link->dhcp6_addresses)
a->callback = NULL;
return dhcp6_remove_old(address->link, true);
@ -674,7 +668,6 @@ static int dhcp6_address_callback(Address *address) {
static int dhcp6_remove_old(Link *link, bool force) {
Address *address;
Route *route;
Iterator i;
int k, r = 0;
assert(link);
@ -688,14 +681,14 @@ static int dhcp6_remove_old(Link *link, bool force) {
if (!force) {
bool set_callback = !set_isempty(link->dhcp6_addresses);
SET_FOREACH(address, link->dhcp6_addresses, i)
SET_FOREACH(address, link->dhcp6_addresses)
if (address_is_ready(address)) {
set_callback = false;
break;
}
if (set_callback) {
SET_FOREACH(address, link->dhcp6_addresses, i)
SET_FOREACH(address, link->dhcp6_addresses)
address->callback = dhcp6_address_callback;
return 0;
}
@ -705,13 +698,13 @@ static int dhcp6_remove_old(Link *link, bool force) {
link_dirty(link);
SET_FOREACH(route, link->dhcp6_routes_old, i) {
SET_FOREACH(route, link->dhcp6_routes_old) {
k = route_remove(route, link, NULL);
if (k < 0)
r = k;
}
SET_FOREACH(address, link->dhcp6_addresses_old, i) {
SET_FOREACH(address, link->dhcp6_addresses_old) {
k = address_remove(address, link, NULL);
if (k < 0)
r = k;
@ -723,7 +716,6 @@ static int dhcp6_remove_old(Link *link, bool force) {
static int dhcp6_remove(Link *link) {
Address *address;
Route *route;
Iterator i;
int k, r = 0;
assert(link);
@ -742,13 +734,13 @@ static int dhcp6_remove(Link *link) {
link_dirty(link);
SET_FOREACH(route, link->dhcp6_routes, i) {
SET_FOREACH(route, link->dhcp6_routes) {
k = route_remove(route, link, NULL);
if (k < 0)
r = k;
}
SET_FOREACH(address, link->dhcp6_addresses, i) {
SET_FOREACH(address, link->dhcp6_addresses) {
k = address_remove(address, link, NULL);
if (k < 0)
r = k;
@ -846,14 +838,13 @@ static int dhcp6_set_unreachable_route(Link *link, const union in_addr_union *ad
}
static int dhcp6_pd_prefix_acquired(Link *dhcp6_link) {
Iterator i;
Link *link;
int r;
assert(dhcp6_link);
assert(dhcp6_link->dhcp6_lease);
HASHMAP_FOREACH(link, dhcp6_link->manager->links, i) {
HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
if (link == dhcp6_link)
continue;
@ -918,7 +909,7 @@ static int dhcp6_pd_prefix_acquired(Link *dhcp6_link) {
false);
}
HASHMAP_FOREACH(link, dhcp6_link->manager->links, i) {
HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
if (link == dhcp6_link)
continue;
@ -1230,7 +1221,6 @@ int dhcp6_request_address(Link *link, int ir) {
int dhcp6_request_prefix_delegation(Link *link) {
Link *l;
Iterator i;
assert(link);
assert(link->manager);
@ -1240,7 +1230,7 @@ int dhcp6_request_prefix_delegation(Link *link) {
log_link_debug(link, "Requesting DHCPv6 prefixes to be delegated for new link");
HASHMAP_FOREACH(l, link->manager->links, i) {
HASHMAP_FOREACH(l, link->manager->links) {
int r, enabled;
if (l == link)
@ -1334,12 +1324,11 @@ static int dhcp6_set_hostname(sd_dhcp6_client *client, Link *link) {
static bool dhcp6_enable_prefix_delegation(Link *dhcp6_link) {
Link *link;
Iterator i;
assert(dhcp6_link);
assert(dhcp6_link->manager);
HASHMAP_FOREACH(link, dhcp6_link->manager->links, i) {
HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
if (link == dhcp6_link)
continue;
@ -1358,7 +1347,6 @@ int dhcp6_configure(Link *link) {
sd_dhcp6_option *send_option;
void *request_options;
const DUID *duid;
Iterator i;
int r;
assert(link);
@ -1400,7 +1388,7 @@ int dhcp6_configure(Link *link) {
if (r < 0)
return log_link_error_errno(link, r, "DHCP6 CLIENT: Failed to set DUID: %m");
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp6_client_send_options, i) {
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp6_client_send_options) {
r = sd_dhcp6_client_add_option(client, send_option);
if (r == -EEXIST)
continue;
@ -1428,7 +1416,7 @@ int dhcp6_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP6 CLIENT: Failed to set MUD URL: %m");
}
SET_FOREACH(request_options, link->network->dhcp6_request_options, i) {
SET_FOREACH(request_options, link->network->dhcp6_request_options) {
uint32_t option = PTR_TO_UINT32(request_options);
r = sd_dhcp6_client_set_request_option(client, option);
@ -1452,7 +1440,7 @@ int dhcp6_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP6 CLIENT: Failed to set vendor class: %m");
}
ORDERED_HASHMAP_FOREACH(vendor_option, link->network->dhcp6_client_send_vendor_options, i) {
ORDERED_HASHMAP_FOREACH(vendor_option, link->network->dhcp6_client_send_vendor_options) {
r = sd_dhcp6_client_add_vendor_option(client, vendor_option);
if (r == -EEXIST)
continue;

View File

@ -727,7 +727,6 @@ int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***
Manager *m = userdata;
unsigned c = 0;
Link *link;
Iterator i;
assert(bus);
assert(path);
@ -738,7 +737,7 @@ int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***
if (!l)
return -ENOMEM;
HASHMAP_FOREACH(link, m->links, i) {
HASHMAP_FOREACH(link, m->links) {
char *p;
p = link_bus_path(link);

View File

@ -365,7 +365,6 @@ void link_update_operstate(Link *link, bool also_update_master) {
uint8_t scope = RT_SCOPE_NOWHERE;
bool changed = false;
Address *address;
Iterator i;
assert(link);
@ -384,7 +383,7 @@ void link_update_operstate(Link *link, bool also_update_master) {
if (carrier_state >= LINK_CARRIER_STATE_CARRIER) {
Link *slave;
SET_FOREACH(slave, link->slaves, i) {
SET_FOREACH(slave, link->slaves) {
link_update_operstate(slave, false);
if (slave->carrier_state < LINK_CARRIER_STATE_CARRIER)
@ -392,7 +391,7 @@ void link_update_operstate(Link *link, bool also_update_master) {
}
}
SET_FOREACH(address, link->addresses, i) {
SET_FOREACH(address, link->addresses) {
if (!address_is_ready(address))
continue;
@ -401,7 +400,7 @@ void link_update_operstate(Link *link, bool also_update_master) {
}
/* for operstate we also take foreign addresses into account */
SET_FOREACH(address, link->addresses_foreign, i) {
SET_FOREACH(address, link->addresses_foreign) {
if (!address_is_ready(address))
continue;
@ -886,10 +885,9 @@ void link_enter_failed(Link *link) {
static int link_join_netdevs_after_configured(Link *link) {
NetDev *netdev;
Iterator i;
int r;
HASHMAP_FOREACH(netdev, link->network->stacked_netdevs, i) {
HASHMAP_FOREACH(netdev, link->network->stacked_netdevs) {
if (netdev->ifindex > 0)
/* Assume already enslaved. */
continue;
@ -1101,7 +1099,6 @@ int link_request_set_routes(Link *link) {
void link_check_ready(Link *link) {
Address *a;
Iterator i;
assert(link);
@ -1126,7 +1123,7 @@ void link_check_ready(Link *link) {
return;
}
SET_FOREACH(a, link->addresses, i)
SET_FOREACH(a, link->addresses)
if (!address_is_ready(a)) {
_cleanup_free_ char *str = NULL;
@ -1175,7 +1172,7 @@ void link_check_ready(Link *link) {
return;
}
SET_FOREACH(n, link->ndisc_addresses, i)
SET_FOREACH(n, link->ndisc_addresses)
if (!n->marked) {
has_ndisc_address = true;
break;
@ -1259,7 +1256,6 @@ static int link_set_bridge_fdb(Link *link) {
static int static_address_ready_callback(Address *address) {
Address *a;
Iterator i;
Link *link;
assert(address);
@ -1270,7 +1266,7 @@ static int static_address_ready_callback(Address *address) {
if (!link->addresses_configured)
return 0;
SET_FOREACH(a, link->static_addresses, i)
SET_FOREACH(a, link->static_addresses)
if (!address_is_ready(a)) {
_cleanup_free_ char *str = NULL;
@ -1280,7 +1276,7 @@ static int static_address_ready_callback(Address *address) {
}
/* This should not be called again */
SET_FOREACH(a, link->static_addresses, i)
SET_FOREACH(a, link->static_addresses)
a->callback = NULL;
link->addresses_ready = true;
@ -1567,9 +1563,8 @@ static bool link_reduces_vlan_mtu(Link *link) {
static uint32_t link_get_requested_mtu_by_stacked_netdevs(Link *link) {
uint32_t mtu = 0;
NetDev *dev;
Iterator i;
HASHMAP_FOREACH(dev, link->network->stacked_netdevs, i)
HASHMAP_FOREACH(dev, link->network->stacked_netdevs)
if (dev->kind == NETDEV_KIND_VLAN && dev->mtu > 0)
/* See vlan_dev_change_mtu() in kernel. */
mtu = MAX(mtu, link_reduces_vlan_mtu(link) ? dev->mtu + 4 : dev->mtu);
@ -2031,7 +2026,6 @@ static int link_set_group(Link *link) {
static int link_handle_bound_to_list(Link *link) {
Link *l;
Iterator i;
int r;
bool required_up = false;
bool link_is_up = false;
@ -2044,7 +2038,7 @@ static int link_handle_bound_to_list(Link *link) {
if (link->flags & IFF_UP)
link_is_up = true;
HASHMAP_FOREACH (l, link->bound_to_links, i)
HASHMAP_FOREACH (l, link->bound_to_links)
if (link_has_carrier(l)) {
required_up = true;
break;
@ -2064,7 +2058,6 @@ static int link_handle_bound_to_list(Link *link) {
}
static int link_handle_bound_by_list(Link *link) {
Iterator i;
Link *l;
int r;
@ -2073,7 +2066,7 @@ static int link_handle_bound_by_list(Link *link) {
if (hashmap_isempty(link->bound_by_links))
return 0;
HASHMAP_FOREACH (l, link->bound_by_links, i) {
HASHMAP_FOREACH (l, link->bound_by_links) {
r = link_handle_bound_to_list(l);
if (r < 0)
return r;
@ -2108,7 +2101,6 @@ static int link_put_carrier(Link *link, Link *carrier, Hashmap **h) {
static int link_new_bound_by_list(Link *link) {
Manager *m;
Link *carrier;
Iterator i;
int r;
bool list_updated = false;
@ -2117,7 +2109,7 @@ static int link_new_bound_by_list(Link *link) {
m = link->manager;
HASHMAP_FOREACH(carrier, m->links, i) {
HASHMAP_FOREACH(carrier, m->links) {
if (!carrier->network)
continue;
@ -2136,7 +2128,7 @@ static int link_new_bound_by_list(Link *link) {
if (list_updated)
link_dirty(link);
HASHMAP_FOREACH(carrier, link->bound_by_links, i) {
HASHMAP_FOREACH(carrier, link->bound_by_links) {
r = link_put_carrier(carrier, link, &carrier->bound_to_links);
if (r < 0)
return r;
@ -2150,7 +2142,6 @@ static int link_new_bound_by_list(Link *link) {
static int link_new_bound_to_list(Link *link) {
Manager *m;
Link *carrier;
Iterator i;
int r;
bool list_updated = false;
@ -2165,7 +2156,7 @@ static int link_new_bound_to_list(Link *link) {
m = link->manager;
HASHMAP_FOREACH (carrier, m->links, i) {
HASHMAP_FOREACH (carrier, m->links) {
if (strv_fnmatch(link->network->bind_carrier, carrier->ifname)) {
r = link_put_carrier(link, carrier, &link->bound_to_links);
if (r < 0)
@ -2178,7 +2169,7 @@ static int link_new_bound_to_list(Link *link) {
if (list_updated)
link_dirty(link);
HASHMAP_FOREACH (carrier, link->bound_to_links, i) {
HASHMAP_FOREACH (carrier, link->bound_to_links) {
r = link_put_carrier(carrier, link, &carrier->bound_by_links);
if (r < 0)
return r;
@ -2213,9 +2204,8 @@ static int link_new_carrier_maps(Link *link) {
static void link_free_bound_to_list(Link *link) {
Link *bound_to;
Iterator i;
HASHMAP_FOREACH (bound_to, link->bound_to_links, i) {
HASHMAP_FOREACH (bound_to, link->bound_to_links) {
hashmap_remove(link->bound_to_links, INT_TO_PTR(bound_to->ifindex));
if (hashmap_remove(bound_to->bound_by_links, INT_TO_PTR(link->ifindex)))
@ -2227,9 +2217,8 @@ static void link_free_bound_to_list(Link *link) {
static void link_free_bound_by_list(Link *link) {
Link *bound_by;
Iterator i;
HASHMAP_FOREACH (bound_by, link->bound_by_links, i) {
HASHMAP_FOREACH (bound_by, link->bound_by_links) {
hashmap_remove(link->bound_by_links, INT_TO_PTR(bound_by->ifindex));
if (hashmap_remove(bound_by->bound_to_links, INT_TO_PTR(link->ifindex))) {
@ -2413,7 +2402,6 @@ static int netdev_join_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *li
static int link_enter_join_netdev(Link *link) {
NetDev *netdev;
Iterator i;
int r;
assert(link);
@ -2486,7 +2474,7 @@ static int link_enter_join_netdev(Link *link) {
}
}
HASHMAP_FOREACH(netdev, link->network->stacked_netdevs, i) {
HASHMAP_FOREACH(netdev, link->network->stacked_netdevs) {
if (netdev->ifindex > 0)
/* Assume already enslaved. */
@ -2745,7 +2733,6 @@ static bool link_is_static_route_configured(Link *link, Route *route) {
static bool link_address_is_dynamic(Link *link, Address *address) {
Route *route;
Iterator i;
assert(link);
assert(address);
@ -2756,7 +2743,7 @@ static bool link_address_is_dynamic(Link *link, Address *address) {
/* Even when the address is leased from a DHCP server, networkd assign the address
* without lifetime when KeepConfiguration=dhcp. So, let's check that we have
* corresponding routes with RTPROT_DHCP. */
SET_FOREACH(route, link->routes_foreign, i) {
SET_FOREACH(route, link->routes_foreign) {
if (route->protocol != RTPROT_DHCP)
continue;
@ -2816,7 +2803,6 @@ static int link_drop_foreign_config(Link *link) {
Address *address;
Neighbor *neighbor;
Route *route;
Iterator i;
int r;
/* The kernel doesn't notify us about tentative addresses;
@ -2827,7 +2813,7 @@ static int link_drop_foreign_config(Link *link) {
return r;
}
SET_FOREACH(address, link->addresses_foreign, i) {
SET_FOREACH(address, link->addresses_foreign) {
/* we consider IPv6LL addresses to be managed by the kernel */
if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1 && link_ipv6ll_enabled(link))
continue;
@ -2849,7 +2835,7 @@ static int link_drop_foreign_config(Link *link) {
}
}
SET_FOREACH(neighbor, link->neighbors_foreign, i) {
SET_FOREACH(neighbor, link->neighbors_foreign) {
if (link_is_neighbor_configured(link, neighbor)) {
r = neighbor_add(link, neighbor->family, &neighbor->in_addr, &neighbor->lladdr, neighbor->lladdr_size, NULL);
if (r < 0)
@ -2861,7 +2847,7 @@ static int link_drop_foreign_config(Link *link) {
}
}
SET_FOREACH(route, link->routes_foreign, i) {
SET_FOREACH(route, link->routes_foreign) {
/* do not touch routes managed by the kernel */
if (route->protocol == RTPROT_KERNEL)
continue;
@ -2930,10 +2916,9 @@ static int link_drop_config(Link *link) {
Address *address, *pool_address;
Neighbor *neighbor;
Route *route;
Iterator i;
int r;
SET_FOREACH(address, link->addresses, i) {
SET_FOREACH(address, link->addresses) {
/* we consider IPv6LL addresses to be managed by the kernel */
if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1 && link_ipv6ll_enabled(link))
continue;
@ -2953,13 +2938,13 @@ static int link_drop_config(Link *link) {
}
}
SET_FOREACH(neighbor, link->neighbors, i) {
SET_FOREACH(neighbor, link->neighbors) {
r = neighbor_remove(neighbor, link, NULL);
if (r < 0)
return r;
}
SET_FOREACH(route, link->routes, i) {
SET_FOREACH(route, link->routes) {
/* do not touch routes managed by the kernel */
if (route->protocol == RTPROT_KERNEL)
continue;
@ -2994,13 +2979,12 @@ static int link_configure_ipv4_dad(Link *link) {
static int link_configure_traffic_control(Link *link) {
TrafficControl *tc;
Iterator i;
int r;
link->tc_configured = false;
link->tc_messages = 0;
ORDERED_HASHMAP_FOREACH(tc, link->network->tc_by_section, i) {
ORDERED_HASHMAP_FOREACH(tc, link->network->tc_by_section) {
r = traffic_control_configure(link, tc);
if (r < 0)
return r;
@ -3016,13 +3000,12 @@ static int link_configure_traffic_control(Link *link) {
static int link_configure_sr_iov(Link *link) {
SRIOV *sr_iov;
Iterator i;
int r;
link->sr_iov_configured = false;
link->sr_iov_messages = 0;
ORDERED_HASHMAP_FOREACH(sr_iov, link->network->sr_iov_by_section, i) {
ORDERED_HASHMAP_FOREACH(sr_iov, link->network->sr_iov_by_section) {
r = sr_iov_configure(link, sr_iov);
if (r < 0)
return r;
@ -4224,7 +4207,6 @@ int link_update(Link *link, sd_netlink_message *m) {
static void print_link_hashmap(FILE *f, const char *prefix, Hashmap* h) {
bool space = false;
Iterator i;
Link *link;
assert(f);
@ -4234,7 +4216,7 @@ static void print_link_hashmap(FILE *f, const char *prefix, Hashmap* h) {
return;
fputs(prefix, f);
HASHMAP_FOREACH(link, h, i) {
HASHMAP_FOREACH(link, h) {
if (space)
fputc(' ', f);
@ -4319,7 +4301,6 @@ int link_save(Link *link) {
_cleanup_fclose_ FILE *f = NULL;
Route *route;
Address *a;
Iterator i;
int r;
assert(link);
@ -4401,7 +4382,7 @@ int link_save(Link *link) {
if (link->network->ipv6_accept_ra_use_dns && link->ndisc_rdnss) {
NDiscRDNSS *dd;
SET_FOREACH(dd, link->ndisc_rdnss, i)
SET_FOREACH(dd, link->ndisc_rdnss)
serialize_in6_addrs(f, &dd->address, 1, &space);
}
@ -4439,7 +4420,7 @@ int link_save(Link *link) {
fputs("DOMAINS=", f);
space = false;
ORDERED_SET_FOREACH(p, link->search_domains ?: link->network->search_domains, i)
ORDERED_SET_FOREACH(p, link->search_domains ?: link->network->search_domains)
fputs_with_space(f, p, NULL, &space);
if (link->network->dhcp_use_domains == DHCP_USE_DOMAINS_YES) {
@ -4454,7 +4435,7 @@ int link_save(Link *link) {
if (link->network->ipv6_accept_ra_use_domains == DHCP_USE_DOMAINS_YES) {
NDiscDNSSL *dd;
SET_FOREACH(dd, link->ndisc_dnssl, i)
SET_FOREACH(dd, link->ndisc_dnssl)
fputs_with_space(f, NDISC_DNSSL_DOMAIN(dd), NULL, &space);
}
@ -4464,7 +4445,7 @@ int link_save(Link *link) {
fputs("ROUTE_DOMAINS=", f);
space = false;
ORDERED_SET_FOREACH(p, link->route_domains ?: link->network->route_domains, i)
ORDERED_SET_FOREACH(p, link->route_domains ?: link->network->route_domains)
fputs_with_space(f, p, NULL, &space);
if (link->network->dhcp_use_domains == DHCP_USE_DOMAINS_ROUTE) {
@ -4479,7 +4460,7 @@ int link_save(Link *link) {
if (link->network->ipv6_accept_ra_use_domains == DHCP_USE_DOMAINS_ROUTE) {
NDiscDNSSL *dd;
SET_FOREACH(dd, link->ndisc_dnssl, i)
SET_FOREACH(dd, link->ndisc_dnssl)
fputs_with_space(f, NDISC_DNSSL_DOMAIN(dd), NULL, &space);
}
@ -4530,7 +4511,7 @@ int link_save(Link *link) {
fputs("DNSSEC_NTA=", f);
space = false;
SET_FOREACH(n, nta_anchors, i)
SET_FOREACH(n, nta_anchors)
fputs_with_space(f, n, NULL, &space);
fputc('\n', f);
}
@ -4539,7 +4520,7 @@ int link_save(Link *link) {
fputs("ADDRESSES=", f);
space = false;
SET_FOREACH(a, link->addresses, i) {
SET_FOREACH(a, link->addresses) {
_cleanup_free_ char *address_str = NULL;
r = in_addr_to_string(a->family, &a->in_addr, &address_str);
@ -4555,7 +4536,7 @@ int link_save(Link *link) {
fputs("ROUTES=", f);
space = false;
SET_FOREACH(route, link->routes, i) {
SET_FOREACH(route, link->routes) {
_cleanup_free_ char *route_str = NULL;
r = in_addr_to_string(route->family, &route->dst, &route_str);

View File

@ -20,7 +20,6 @@
static int method_list_links(sd_bus_message *message, void *userdata, sd_bus_error *error) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
Manager *manager = userdata;
Iterator i;
Link *link;
int r;
@ -32,7 +31,7 @@ static int method_list_links(sd_bus_message *message, void *userdata, sd_bus_err
if (r < 0)
return r;
HASHMAP_FOREACH(link, manager->links, i) {
HASHMAP_FOREACH(link, manager->links) {
_cleanup_free_ char *path = NULL;
path = link_bus_path(link);
@ -201,7 +200,6 @@ static int bus_method_reconfigure_link(sd_bus_message *message, void *userdata,
static int bus_method_reload(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *manager = userdata;
Iterator i;
Link *link;
int r;
@ -222,7 +220,7 @@ static int bus_method_reload(sd_bus_message *message, void *userdata, sd_bus_err
if (r < 0)
return r;
HASHMAP_FOREACH(link, manager->links, i) {
HASHMAP_FOREACH(link, manager->links) {
r = link_reconfigure(link, false);
if (r < 0)
return r;

View File

@ -81,12 +81,11 @@ static int setup_default_address_pool(Manager *m) {
static int manager_reset_all(Manager *m) {
Link *link;
Iterator i;
int r;
assert(m);
HASHMAP_FOREACH(link, m->links, i) {
HASHMAP_FOREACH(link, m->links) {
r = link_carrier_reset(link);
if (r < 0)
log_link_warning_errno(link, r, "Could not reset carrier: %m");
@ -1519,7 +1518,6 @@ static int manager_save(Manager *m) {
_cleanup_strv_free_ char **p = NULL;
_cleanup_fclose_ FILE *f = NULL;
Link *link;
Iterator i;
int r;
assert(m);
@ -1546,7 +1544,7 @@ static int manager_save(Manager *m) {
if (!route_domains)
return -ENOMEM;
HASHMAP_FOREACH(link, m->links, i) {
HASHMAP_FOREACH(link, m->links) {
const struct in_addr *addresses;
if (link->flags & IFF_LOOPBACK)
@ -1723,14 +1721,13 @@ fail:
static int manager_dirty_handler(sd_event_source *s, void *userdata) {
Manager *m = userdata;
Link *link;
Iterator i;
assert(m);
if (m->dirty)
manager_save(m);
SET_FOREACH(link, m->dirty_links, i)
SET_FOREACH(link, m->dirty_links)
(void) link_save_and_clean(link);
return 1;
@ -1827,14 +1824,13 @@ int manager_new(Manager **ret) {
void manager_free(Manager *m) {
AddressPool *pool;
Link *link;
Iterator i;
if (!m)
return;
free(m->state_file);
HASHMAP_FOREACH(link, m->links, i)
HASHMAP_FOREACH(link, m->links)
(void) link_stop_clients(link, true);
m->dhcp6_prefixes = hashmap_free_with_destructor(m->dhcp6_prefixes, dhcp6_pd_free);
@ -1880,7 +1876,6 @@ void manager_free(Manager *m) {
int manager_start(Manager *m) {
Link *link;
Iterator i;
int r;
assert(m);
@ -1894,7 +1889,7 @@ int manager_start(Manager *m) {
manager_save(m);
HASHMAP_FOREACH(link, m->links, i)
HASHMAP_FOREACH(link, m->links)
(void) link_save(link);
return 0;

Some files were not shown because too many files have changed in this diff Show More