Commit graph

16 commits

Author SHA1 Message Date
Thomas Haller
0298d54078 systemd: expose unbase64mem() as nm_sd_utils_unbase64mem()
glib has an base64 implementation, but g_base64_decode() et al. gives
no way to detect invalid encodings. All invalid codes are silently
ignored. That is not suitable for strictly validating user input.

Instead of reimplementing of copy-pasting the code from somewhere,
reuse systemd's unbase64mem().

But don't use "hexdecoct.h" directly. Instead, add a single accessor
function to our "nm-sd-utils-shared.h" gateway. We want to be careful
about which bits from systemd we use, because otherwise re-importing
systemd code becomes fragile as you don't know which relevant parts
changed.
2019-01-02 17:08:41 +01:00
Thomas Haller
2c537b9d21 systemd: move basic systemd library to shared/nm-utils
For better or worse, we already pull in large parts of systemd sources.

I need a base64 decode implementation (because glib's g_base64_decode()
cannot reject invalid encodings). Instead of coming up with my own or
copy-paste if from somewhere, reuse systemd's unbase64mem().

But for that, make systemd's basic bits an independent static library
first because I will need it in libnm-core.

This doesn't really change anything except making "libnm-systemd-core.la"
an indpendent static library that could be used from "libnm-core". We
shall still be mindful about which internal code of systemd we use, and only
access functionality that is exposed via "systemd/nm-sd-utils-shared.h".
2019-01-02 17:07:13 +01:00
Thomas Haller
9dce4a426b systemd: fix handling special cases kill_dots and path_simplify()
Previously, paths like ".", "./", ./." would all result in an
empty path. That is wrong, one dot must be kept.

afbae3e9f2
2018-10-23 10:32:53 +02:00
Thomas Haller
eece5aff09 core: add "nm-sd-utils.h" to access system internal helper
We have a fork of a lot of useful systemd helper code.
However, until now we shyed away from using it aside from
the bits that we really need.

That means, although we have some really nice implementations
in our source-tree, we didn't use them. Either we were missing
them, or we had to re-implement them.

Add "nm-sd-utils.h" header to very carefully make internal
systemd API accessible to the rest of core.

This is not intended as a vehicle to access all of internal
API. Instead, this must be used with care, and only a hand picked
selection of functions must be exposed. Use with caution, but where it
makes sense.
2018-10-23 10:32:53 +02:00
Thomas Haller
61f0f198bf systemd: merge branch systemd into master 2017-09-21 15:33:32 +02:00
Lubomir Rintel
ed552c732c logging: log device and connection along with the message 2017-03-24 12:42:09 +01:00
Thomas Haller
e3a072f3c0 build: don't add systemd path the include search path
Our internal copy of systemd should not be in the search path.
Instead, let users only
  #include "systemd/nm-sd.h"
which then includes everything from systemd that we need.

We want to avoid to accidentally include anything from our
systemd-copy. Any user of that should only include "nm-sd.h",
which then includes everything that is needed further.

For example, "src/devices/wwan/nm-modem-manager.c" has
  #include <systemd/nm-daemon.h>
which in turn includes
  #include "_sd-common.h"
This works all correctly before, because #include "" will first
look in the directory where sd-daemon.h is. However, our mixing of
external systemd library and internal copy is rather dangerous.
Try to avoid it further by keeping the include paths clean.
2016-09-27 14:13:21 +02:00
Thomas Haller
2f296cb8fe systemd: merge branch systemd into master
Conflicts:
    src/systemd/src/basic/fd-util.c
    src/systemd/src/basic/fileio.c
    src/systemd/src/libsystemd/sd-event/sd-event.c
    src/systemd/src/libsystemd/sd-id128/sd-id128.c
2016-08-12 09:20:16 +02:00
Thomas Haller
9c8b7b001e systemd/tests: don't link test-systemd against libNetworkManagerBase
One point of test-systemd is to see whether our internal systemd code can
fully link without external systemd library. In fact, we want all symbols
from the internal systemd code to resolve, because when we link against
an external libsystemd library, we may mix differing APIs, resulting in
subtle bugs.

Currently, it may well be that libNetworkManagerBase.la already links
against libsystemd, which would result in test-systemd to wrongly
succeed resolving all names.

Fix that, by don't link libNetworkManagerBase.la into test-systemd.
2016-08-12 08:14:53 +02:00
Thomas Haller
5ce62dccc5 systemd: merge branch systemd into master
Conflicts:
    src/systemd/src/basic/siphash24.c
    src/systemd/src/basic/time-util.c
    src/systemd/src/basic/util.c
2016-06-30 10:55:03 +02:00
Thomas Haller
a2c843499c all/tests: split core part out of "nm-test-utils.h"
A large part of "nm-test-utils.h" is only relevant for tests inside "src/"
directory, as they are helpers related to NetworkManager core part.

Split this part out of "nm-test-utils.h" header.
2016-05-17 16:48:52 +02:00
Thomas Haller
aed3c810b3 systemd: split "nm-sd.h" out of "nm-sd-adapt.h"
Now we have:

"nm-sd.h" is a header file of NetworkManager with utilities
related to systemd. It can be used anywhere freely.

Also, systemd headers that are considered public API (like
"sd-event.h") can be used without restrictions.

When compiling the systemd sources, we always must include
"nm-sd-adapt.h" as first. Similarly, systemd headers must
not include "nm-sd-adapt.h", because they are either public
(in which case the adapter is not needed) or they are internal
(in which case they are themself included via a systemd source).

Sometimes, we must internal API (like "dhcp-lease-internal.h").
In this case, we also must include "nm-sd-adapt.h".
2016-03-11 11:02:12 +01:00
Thomas Haller
a8bc65b1a1 systemd: integrate sd-event into glib main loop
We should not try to reimplement sd-event based on glib,
instead we should hook sd-event into the glib mainloop.
2016-03-11 09:28:12 +01:00
Thomas Haller
18133ea142 systemd: merge branch systemd into th/systemd-lldp-bgo763384
As the lldp API changed, adjust "nm-lldp-listener.c".

Note that the commit is not yet functional due to missing
sd_event_source_set_enabled() and sd_event_source_set_time().
2016-03-11 09:28:10 +01:00
Thomas Haller
98d14b0c15 systemd/tests: add test_lldp_create() test
This test makes sense because "test-systemd" is not
linked against any other systemd library. So this test
verifies that our libsystemd clone is self contained.
2016-03-01 13:50:16 +01:00
Thomas Haller
51e292885c systemd/tests: add test util for systemd
Most interestingly is also, whether we can link libsystemd.a without
having undefined references (which might be wrongly satisfied by an
externally loaded libsystem shared library.
2016-03-01 12:42:42 +01:00