Commit graph

10 commits

Author SHA1 Message Date
Beniamino Galvani
229bebfae9 nm-daemon-helper: add "service" argument
Introduce a new argument to specify a comma-separated list of NSS
services to use for the "resolve-address" command. For now only accept
"dns" and "files"; the latter can be used to do a lookup into
/etc/hosts.

Note that previously the command failed in presence of extra
arguments. Therefore, when downgrading NetworkManager without
restarting the service, the previously-installed version of the daemon
(newer) would spawn the helper with the extra argument, and the
newly-installed version of the helper (older) would fail. This issue
only impacts hostname resolution and can be fixed by just restarting
the daemon.

In the upgrade path everything works as before, with the only
difference that the helper will use by default both "dns" and "files"
services.

Don't strictly check for the absence of extra arguments, so that in
the future we can introduce more arguments without necessarily break
the downgrade path.
2024-07-04 15:39:03 +02:00
Thomas Haller
c42f6f0997 daemon-helper: use _nm_strerror_r() to avoid non-thread-safe strerror()
Yes, there probably are not multiple threads here. It's a matter of principle to
not use smelly functions.

Also, copy the "errno" value we want to print, before calling various functions.
2023-09-12 12:39:43 +00:00
Beniamino Galvani
ac5325e96b nm-daemon-helper: log to stderr any error from getaddrinfo()
Print errors from getaddrinfo() to stderr so that they will be logged
by NM.
2023-02-21 13:46:55 +01:00
Thomas Haller
501a7a3d00
daemon-helper: include "libnm-std-aux/nm-default-std.h" as first in "nm-daemon-helper.c"
All our sources should include one of the "nm-default*.h" headers
first. That one drags in <config.h>, which must be included first
and a few other basics.

Which is the right "nm-default*.h" header depends on the component. In
case of "nm-daemon-helper.c", it's "libnm-std-aux/nm-default-std.h".
2022-05-09 19:20:19 +02:00
Thomas Haller
ea49b50651
all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00
Thomas Haller
4e109bacab
clang-format: use "IndentPPDirectives:None" instead of "BeforeHash"
Subjectively, I think this looks better.
2021-07-09 08:49:06 +02:00
Beniamino Galvani
6914f4213f nm-daemon-helper: fix indentation
Ops.

Fixes: 9b802ff7f2 ('nm-daemon-helper: fix build with musl libc')
(cherry picked from commit e3e0afb011)
2021-06-16 18:33:59 +02:00
Beniamino Galvani
1d2f8f983c nm-daemon-helper: fix build with musl libc
NSS is not available in musl libc:

./src/nm-daemon-helper/nm-daemon-helper.c:9:10: fatal error: nss.h: No such file or directory
    9 | #include <nss.h>
      |          ^~~~~~~

(cherry picked from commit 9b802ff7f2)
2021-06-16 18:26:07 +02:00
Beniamino Galvani
ffd6c5e3f4 nm-daemon-helper: implement 'resolve-address' operation
Implement a new operation to resolve the hostname from an
address. Note the call to __nss_configure_lookup("hosts", "dns"): this
configures the glibc Name Service Switch (NSS) to only use DNS,
bypassing other modules that might be configured in
/etc/nsswitch.conf. Other modules like 'myhostname' or 'resolve' can
return synthesized names, while we are only interested in real DNS
results.

(cherry picked from commit 648b0848f1)
2021-06-11 21:59:11 +02:00
Beniamino Galvani
00126e57b4 core: add infrastructure for spawning a helper process
(cherry picked from commit 6ac21ba916)
2021-06-11 21:59:11 +02:00