From ef53b47e7c480fdfb981e27506f7fa0ee5604f78 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 15:31:23 +0100 Subject: [PATCH 1/7] shared,core: move logging enums to header "shared/nm-utils/nm-logging-fwd.h" In core ("src/"), we use "nm-logging.h" for all logging. This dispatches for logging to syslog, glog or systemd-journald. If we want to log from a shared component under "shared/", we need to use a common logging function. Add "nm-utils/nm-logging-fwd.h" for forward declaring the used logging mechaism. The shared library will still need to link with "src/nm-logging.c" or an alternative implementation, depending on whether it is used inside core or not. --- Makefile.am | 1 + shared/nm-utils/nm-logging-fwd.h | 111 +++++++++++++++++++++++++++++++ src/nm-logging.c | 7 ++ src/nm-logging.h | 84 +---------------------- 4 files changed, 121 insertions(+), 82 deletions(-) create mode 100644 shared/nm-utils/nm-logging-fwd.h diff --git a/Makefile.am b/Makefile.am index b1378c0348..f16cafd38d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -309,6 +309,7 @@ shared_nm_utils_libnm_utils_base_la_SOURCES = \ shared/nm-utils/nm-hash-utils.h \ shared/nm-utils/nm-io-utils.c \ shared/nm-utils/nm-io-utils.h \ + shared/nm-utils/nm-logging-fwd.h \ shared/nm-utils/nm-macros-internal.h \ shared/nm-utils/nm-obj.h \ shared/nm-utils/nm-random-utils.c \ diff --git a/shared/nm-utils/nm-logging-fwd.h b/shared/nm-utils/nm-logging-fwd.h new file mode 100644 index 0000000000..303d59514c --- /dev/null +++ b/shared/nm-utils/nm-logging-fwd.h @@ -0,0 +1,111 @@ +/* NetworkManager -- Network link manager + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright (C) 2006 - 2018 Red Hat, Inc. + * Copyright (C) 2006 - 2008 Novell, Inc. + */ + +#ifndef __NM_LOGGING_DEFINES_H__ +#define __NM_LOGGING_DEFINES_H__ + +/* Log domains */ + +typedef enum { /*< skip >*/ + LOGD_NONE = 0LL, + LOGD_PLATFORM = (1LL << 0), /* Platform services */ + LOGD_RFKILL = (1LL << 1), + LOGD_ETHER = (1LL << 2), + LOGD_WIFI = (1LL << 3), + LOGD_BT = (1LL << 4), + LOGD_MB = (1LL << 5), /* mobile broadband */ + LOGD_DHCP4 = (1LL << 6), + LOGD_DHCP6 = (1LL << 7), + LOGD_PPP = (1LL << 8), + LOGD_WIFI_SCAN = (1LL << 9), + LOGD_IP4 = (1LL << 10), + LOGD_IP6 = (1LL << 11), + LOGD_AUTOIP4 = (1LL << 12), + LOGD_DNS = (1LL << 13), + LOGD_VPN = (1LL << 14), + LOGD_SHARING = (1LL << 15), /* Connection sharing/dnsmasq */ + LOGD_SUPPLICANT = (1LL << 16), /* Wi-Fi and 802.1x */ + LOGD_AGENTS = (1LL << 17), /* Secret agents */ + LOGD_SETTINGS = (1LL << 18), /* Settings */ + LOGD_SUSPEND = (1LL << 19), /* Suspend/Resume */ + LOGD_CORE = (1LL << 20), /* Core daemon and policy stuff */ + LOGD_DEVICE = (1LL << 21), /* Device state and activation */ + LOGD_OLPC = (1LL << 22), + LOGD_INFINIBAND = (1LL << 23), + LOGD_FIREWALL = (1LL << 24), + LOGD_ADSL = (1LL << 25), + LOGD_BOND = (1LL << 26), + LOGD_VLAN = (1LL << 27), + LOGD_BRIDGE = (1LL << 28), + LOGD_DBUS_PROPS = (1LL << 29), + LOGD_TEAM = (1LL << 30), + LOGD_CONCHECK = (1LL << 31), + LOGD_DCB = (1LL << 32), /* Data Center Bridging */ + LOGD_DISPATCH = (1LL << 33), + LOGD_AUDIT = (1LL << 34), + LOGD_SYSTEMD = (1LL << 35), + LOGD_VPN_PLUGIN = (1LL << 36), + LOGD_PROXY = (1LL << 37), + + __LOGD_MAX, + LOGD_ALL = (((__LOGD_MAX - 1LL) << 1) - 1LL), + LOGD_DEFAULT = LOGD_ALL & ~( + LOGD_DBUS_PROPS | + LOGD_WIFI_SCAN | + LOGD_VPN_PLUGIN | + 0), + + /* aliases: */ + LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6, + LOGD_IP = LOGD_IP4 | LOGD_IP6, +} NMLogDomain; + +/* Log levels */ +typedef enum { /*< skip >*/ + LOGL_TRACE, + LOGL_DEBUG, + LOGL_INFO, + LOGL_WARN, + LOGL_ERR, + + _LOGL_N_REAL, /* the number of actual logging levels */ + + _LOGL_OFF = _LOGL_N_REAL, /* special logging level that is always disabled. */ + _LOGL_KEEP, /* special logging level to indicate that the logging level should not be changed. */ + + _LOGL_N, /* the number of logging levels including "OFF" */ +} NMLogLevel; + +gboolean _nm_log_enabled (NMLogLevel level, + NMLogDomain domain); + +void _nm_log_impl (const char *file, + guint line, + const char *func, + NMLogLevel level, + NMLogDomain domain, + int error, + const char *ifname, + const char *con_uuid, + const char *fmt, + ...) _nm_printf (9, 10); + +#endif /* __NM_LOGGING_DEFINES_H__ */ diff --git a/src/nm-logging.c b/src/nm-logging.c index f64f03be48..7af64baefb 100644 --- a/src/nm-logging.c +++ b/src/nm-logging.c @@ -550,6 +550,13 @@ nm_logging_get_level (NMLogDomain domain) return sl; } +gboolean +_nm_log_enabled (NMLogLevel level, + NMLogDomain domain) +{ + return nm_logging_enabled (level, domain); +} + #if SYSTEMD_JOURNAL static void _iovec_set (struct iovec *iov, const void *str, gsize len) diff --git a/src/nm-logging.h b/src/nm-logging.h index cc09b067d1..21263c7b6d 100644 --- a/src/nm-logging.h +++ b/src/nm-logging.h @@ -26,65 +26,12 @@ #error nm-test-utils.h must be included as last header #endif +#include "nm-utils/nm-logging-fwd.h" + #define NM_LOG_CONFIG_BACKEND_DEBUG "debug" #define NM_LOG_CONFIG_BACKEND_SYSLOG "syslog" #define NM_LOG_CONFIG_BACKEND_JOURNAL "journal" -/* Log domains */ -typedef enum { /*< skip >*/ - LOGD_NONE = 0LL, - LOGD_PLATFORM = (1LL << 0), /* Platform services */ - LOGD_RFKILL = (1LL << 1), - LOGD_ETHER = (1LL << 2), - LOGD_WIFI = (1LL << 3), - LOGD_BT = (1LL << 4), - LOGD_MB = (1LL << 5), /* mobile broadband */ - LOGD_DHCP4 = (1LL << 6), - LOGD_DHCP6 = (1LL << 7), - LOGD_PPP = (1LL << 8), - LOGD_WIFI_SCAN = (1LL << 9), - LOGD_IP4 = (1LL << 10), - LOGD_IP6 = (1LL << 11), - LOGD_AUTOIP4 = (1LL << 12), - LOGD_DNS = (1LL << 13), - LOGD_VPN = (1LL << 14), - LOGD_SHARING = (1LL << 15), /* Connection sharing/dnsmasq */ - LOGD_SUPPLICANT = (1LL << 16), /* Wi-Fi and 802.1x */ - LOGD_AGENTS = (1LL << 17), /* Secret agents */ - LOGD_SETTINGS = (1LL << 18), /* Settings */ - LOGD_SUSPEND = (1LL << 19), /* Suspend/Resume */ - LOGD_CORE = (1LL << 20), /* Core daemon and policy stuff */ - LOGD_DEVICE = (1LL << 21), /* Device state and activation */ - LOGD_OLPC = (1LL << 22), - LOGD_INFINIBAND = (1LL << 23), - LOGD_FIREWALL = (1LL << 24), - LOGD_ADSL = (1LL << 25), - LOGD_BOND = (1LL << 26), - LOGD_VLAN = (1LL << 27), - LOGD_BRIDGE = (1LL << 28), - LOGD_DBUS_PROPS = (1LL << 29), - LOGD_TEAM = (1LL << 30), - LOGD_CONCHECK = (1LL << 31), - LOGD_DCB = (1LL << 32), /* Data Center Bridging */ - LOGD_DISPATCH = (1LL << 33), - LOGD_AUDIT = (1LL << 34), - LOGD_SYSTEMD = (1LL << 35), - LOGD_VPN_PLUGIN = (1LL << 36), - LOGD_PROXY = (1LL << 37), - - __LOGD_MAX, - LOGD_ALL = (((__LOGD_MAX - 1LL) << 1) - 1LL), - LOGD_DEFAULT = LOGD_ALL & ~( - LOGD_DBUS_PROPS | - LOGD_WIFI_SCAN | - LOGD_VPN_PLUGIN | - 0), - - /* aliases: */ - LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6, - LOGD_IP = LOGD_IP4 | LOGD_IP6, -} NMLogDomain; - static inline NMLogDomain LOGD_IP_from_af (int addr_family) { @@ -95,22 +42,6 @@ LOGD_IP_from_af (int addr_family) g_return_val_if_reached (LOGD_NONE); } -/* Log levels */ -typedef enum { /*< skip >*/ - LOGL_TRACE, - LOGL_DEBUG, - LOGL_INFO, - LOGL_WARN, - LOGL_ERR, - - _LOGL_N_REAL, /* the number of actual logging levels */ - - _LOGL_OFF = _LOGL_N_REAL, /* special logging level that is always disabled. */ - _LOGL_KEEP, /* special logging level to indicate that the logging level should not be changed. */ - - _LOGL_N, /* the number of logging levels including "OFF" */ -} NMLogLevel; - #define nm_log_err(domain, ...) nm_log (LOGL_ERR, (domain), NULL, NULL, __VA_ARGS__) #define nm_log_warn(domain, ...) nm_log (LOGL_WARN, (domain), NULL, NULL, __VA_ARGS__) #define nm_log_info(domain, ...) nm_log (LOGL_INFO, (domain), NULL, NULL, __VA_ARGS__) @@ -204,17 +135,6 @@ _nm_log_ptr_is_debug (NMLogLevel level) prefix, \ __VA_ARGS__) -void _nm_log_impl (const char *file, - guint line, - const char *func, - NMLogLevel level, - NMLogDomain domain, - int error, - const char *ifname, - const char *con_uuid, - const char *fmt, - ...) _nm_printf (9, 10); - const char *nm_logging_level_to_string (void); const char *nm_logging_domains_to_string (void); From 066357aa4766315fe9b9ed83f6cf16d9b87c6944 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 16:16:30 +0100 Subject: [PATCH 2/7] build: bump C standard to (gcc's) C11 We already import systemd code which is C11. To get this even to build, we need workaround like patching import of . Also, the libraries from c-util and nettools are C11. We cannot even compile them in C99 mode (and didn't do that either). It's time to bump the version. We need C11 from now on (or better: gcc's dialect of it). Also, note that since nettools/nacd is not optional, we could not even build NetworkManager without a C11 compiler. So, just use it everywhere. --- Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index f16cafd38d..9280f3fa9b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -105,7 +105,7 @@ endif endif -dflt_cppflags = -std=gnu99 +dflt_cppflags = -std=gnu11 ############################################################################### @@ -222,7 +222,10 @@ shared_libcsiphash_la_SOURCES = \ noinst_LTLIBRARIES += shared/libcrbtree.la -shared_libcrbtree_la_CFLAGS = $(AM_CFLAGS) -std=c11 +shared_libcrbtree_la_CFLAGS = \ + $(AM_CFLAGS) \ + -std=c11 \ + $(NULL) shared_libcrbtree_la_CPPFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ From 5f945adfaf8a2c9c34cd14209727dba4ef3284d8 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 16:20:12 +0100 Subject: [PATCH 3/7] systemd: drop workaround for missing C11 header Now as we build as C11, we can us it. --- Makefile.am | 2 +- src/systemd/sd-adapt/missing_type.h | 3 --- src/systemd/sd-adapt/nm-sd-adapt.h | 10 ++++------ src/systemd/src/basic/escape.h | 2 -- src/systemd/src/basic/missing_type.h | 12 ++++++++++++ src/systemd/src/basic/utf8.h | 2 -- 6 files changed, 17 insertions(+), 14 deletions(-) delete mode 100644 src/systemd/sd-adapt/missing_type.h create mode 100644 src/systemd/src/basic/missing_type.h diff --git a/Makefile.am b/Makefile.am index 9280f3fa9b..fe3c1eca4f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1550,7 +1550,6 @@ src_libsystemd_nm_la_SOURCES = \ src/systemd/sd-adapt/missing_socket.h \ src/systemd/sd-adapt/missing_syscall.h \ src/systemd/sd-adapt/missing_timerfd.h \ - src/systemd/sd-adapt/missing_type.h \ src/systemd/sd-adapt/mkdir.h \ src/systemd/sd-adapt/procfs-util.h \ src/systemd/sd-adapt/raw-clone.h \ @@ -1599,6 +1598,7 @@ src_libsystemd_nm_la_SOURCES = \ src/systemd/src/basic/macro.h \ src/systemd/src/basic/mempool.c \ src/systemd/src/basic/mempool.h \ + src/systemd/src/basic/missing_type.h \ src/systemd/src/basic/parse-util.c \ src/systemd/src/basic/parse-util.h \ src/systemd/src/basic/path-util.c \ diff --git a/src/systemd/sd-adapt/missing_type.h b/src/systemd/sd-adapt/missing_type.h deleted file mode 100644 index 637892c2d6..0000000000 --- a/src/systemd/sd-adapt/missing_type.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -/* dummy header */ diff --git a/src/systemd/sd-adapt/nm-sd-adapt.h b/src/systemd/sd-adapt/nm-sd-adapt.h index 72dcb45888..cd2d202590 100644 --- a/src/systemd/sd-adapt/nm-sd-adapt.h +++ b/src/systemd/sd-adapt/nm-sd-adapt.h @@ -44,6 +44,10 @@ #define HAVE_SYS_AUXV_H 0 #endif +/* we build with C11 and thus provides char32_t,char16_t. */ +#define HAVE_CHAR32_T 1 +#define HAVE_CHAR16_T 1 + /*****************************************************************************/ static inline NMLogLevel @@ -151,12 +155,6 @@ raw_getpid (void) { /*****************************************************************************/ -/* work around missing uchar.h */ -typedef guint16 char16_t; -typedef guint32 char32_t; - -/*****************************************************************************/ - static inline int sd_notify (int unset_environment, const char *state) { diff --git a/src/systemd/src/basic/escape.h b/src/systemd/src/basic/escape.h index cc6a897c49..515620993d 100644 --- a/src/systemd/src/basic/escape.h +++ b/src/systemd/src/basic/escape.h @@ -5,9 +5,7 @@ #include #include #include -#if 0 /* NM_IGNORED */ #include -#endif /* NM_IGNORED */ #include "string-util.h" #include "missing_type.h" diff --git a/src/systemd/src/basic/missing_type.h b/src/systemd/src/basic/missing_type.h new file mode 100644 index 0000000000..bf8a6caa1b --- /dev/null +++ b/src/systemd/src/basic/missing_type.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +#pragma once + +#include + +#if !HAVE_CHAR32_T +#define char32_t uint32_t +#endif + +#if !HAVE_CHAR16_T +#define char16_t uint16_t +#endif diff --git a/src/systemd/src/basic/utf8.h b/src/systemd/src/basic/utf8.h index eedfebe39c..628456936e 100644 --- a/src/systemd/src/basic/utf8.h +++ b/src/systemd/src/basic/utf8.h @@ -4,9 +4,7 @@ #include #include #include -#if 0 /* NM_IGNORED */ #include -#endif /* NM_IGNORED */ #include "macro.h" #include "missing_type.h" From 616abe865dc7606b4325e1e44fff587c83ad1de7 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sun, 30 Dec 2018 11:34:04 +0100 Subject: [PATCH 4/7] shared/trivial: add comment about compat macro _NM_CC_SUPPORT_GENERIC w.r.t. C11 C11 provides _Generic(). Until now we used it when the compiler supports it (in extended --std=gnu99 mode). In practice, now that we require C11 it should always be present. We will drop compatibility code in the future. For now, just add a comment and keep it. The reason is, that "shared/nm-utils/nm-macros-internal.h" may be used by VPN plugins or applet, which may or may not yet bump to C11. Keeping it for now, allows for an easier update. --- shared/nm-utils/nm-macros-internal.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shared/nm-utils/nm-macros-internal.h b/shared/nm-utils/nm-macros-internal.h index 946864d08b..7cebd56cc0 100644 --- a/shared/nm-utils/nm-macros-internal.h +++ b/shared/nm-utils/nm-macros-internal.h @@ -460,6 +460,10 @@ NM_G_ERROR_MSG (GError *error) #endif #ifndef _NM_CC_SUPPORT_GENERIC +/* In the meantime, NetworkManager requires C11 and _Generic() should always be available. + * However, shared/nm-utils may also be used in VPN/applet, which possibly did not yet + * bump the C standard requirement. Leave this for the moment, but eventually we can + * drop it. */ #if (defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9 ))) || (defined (__clang__)) #define _NM_CC_SUPPORT_GENERIC 1 #else From 2c537b9d2155118e5f6fe49386035659550ce64c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 18:11:16 +0100 Subject: [PATCH 5/7] 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". --- Makefile.am | 296 ++++++++++-------- shared/meson.build | 61 ++++ shared/nm-default.h | 7 +- .../systemd/nm-sd-utils-shared.c | 20 +- .../systemd/nm-sd-utils-shared.h | 12 +- .../systemd/sd-adapt-shared}/architecture.h | 0 .../systemd/sd-adapt-shared}/btrfs-util.h | 0 .../systemd/sd-adapt-shared}/build.h | 0 .../systemd/sd-adapt-shared}/cgroup-util.h | 0 .../systemd/sd-adapt-shared}/copy.h | 0 .../systemd/sd-adapt-shared}/def.h | 0 .../systemd/sd-adapt-shared}/device-nodes.h | 0 .../systemd/sd-adapt-shared}/dirent-util.h | 0 .../systemd/sd-adapt-shared}/errno-list.h | 0 .../systemd/sd-adapt-shared}/format-util.h | 0 .../systemd/sd-adapt-shared}/glob-util.h | 0 .../systemd/sd-adapt-shared}/gunicode.h | 0 .../systemd/sd-adapt-shared}/ioprio.h | 0 .../systemd/sd-adapt-shared}/locale-util.h | 0 .../systemd/sd-adapt-shared}/memfd-util.h | 0 .../systemd/sd-adapt-shared}/missing.h | 0 .../systemd/sd-adapt-shared}/missing_socket.h | 0 .../sd-adapt-shared}/missing_syscall.h | 0 .../sd-adapt-shared}/missing_timerfd.h | 0 .../systemd/sd-adapt-shared}/mkdir.h | 0 .../sd-adapt-shared/nm-sd-adapt-shared.h | 114 ++----- .../systemd/sd-adapt-shared}/procfs-util.h | 0 .../systemd/sd-adapt-shared}/raw-clone.h | 0 .../systemd/sd-adapt-shared}/rlimit-util.h | 0 .../systemd/sd-adapt-shared}/terminal-util.h | 0 .../systemd/sd-adapt-shared}/unaligned.h | 0 .../systemd/sd-adapt-shared}/user-util.h | 0 .../systemd/sd-adapt-shared}/virt.h | 0 .../systemd/src/basic/alloc-util.c | 2 +- .../systemd/src/basic/alloc-util.h | 0 {src => shared}/systemd/src/basic/async.h | 0 {src => shared}/systemd/src/basic/env-file.c | 2 +- {src => shared}/systemd/src/basic/env-file.h | 0 {src => shared}/systemd/src/basic/env-util.c | 2 +- {src => shared}/systemd/src/basic/env-util.h | 0 {src => shared}/systemd/src/basic/escape.c | 2 +- {src => shared}/systemd/src/basic/escape.h | 0 .../systemd/src/basic/ether-addr-util.c | 2 +- .../systemd/src/basic/ether-addr-util.h | 0 .../systemd/src/basic/extract-word.c | 2 +- .../systemd/src/basic/extract-word.h | 0 {src => shared}/systemd/src/basic/fd-util.c | 2 +- {src => shared}/systemd/src/basic/fd-util.h | 0 {src => shared}/systemd/src/basic/fileio.c | 2 +- {src => shared}/systemd/src/basic/fileio.h | 0 {src => shared}/systemd/src/basic/fs-util.c | 2 +- {src => shared}/systemd/src/basic/fs-util.h | 0 .../systemd/src/basic/hash-funcs.c | 2 +- .../systemd/src/basic/hash-funcs.h | 0 {src => shared}/systemd/src/basic/hashmap.c | 2 +- {src => shared}/systemd/src/basic/hashmap.h | 0 {src => shared}/systemd/src/basic/hexdecoct.c | 2 +- {src => shared}/systemd/src/basic/hexdecoct.h | 0 .../systemd/src/basic/hostname-util.c | 2 +- .../systemd/src/basic/hostname-util.h | 0 .../systemd/src/basic/in-addr-util.c | 2 +- .../systemd/src/basic/in-addr-util.h | 0 {src => shared}/systemd/src/basic/io-util.c | 2 +- {src => shared}/systemd/src/basic/io-util.h | 0 {src => shared}/systemd/src/basic/list.h | 0 {src => shared}/systemd/src/basic/log.h | 1 + {src => shared}/systemd/src/basic/macro.h | 0 {src => shared}/systemd/src/basic/mempool.c | 2 +- {src => shared}/systemd/src/basic/mempool.h | 0 .../systemd/src/basic/missing_type.h | 0 .../systemd/src/basic/parse-util.c | 2 +- .../systemd/src/basic/parse-util.h | 0 {src => shared}/systemd/src/basic/path-util.c | 2 +- {src => shared}/systemd/src/basic/path-util.h | 0 {src => shared}/systemd/src/basic/prioq.c | 2 +- {src => shared}/systemd/src/basic/prioq.h | 0 .../systemd/src/basic/process-util.c | 2 +- .../systemd/src/basic/process-util.h | 0 .../systemd/src/basic/random-util.c | 2 +- .../systemd/src/basic/random-util.h | 0 {src => shared}/systemd/src/basic/refcnt.h | 0 {src => shared}/systemd/src/basic/set.h | 0 .../systemd/src/basic/signal-util.h | 0 {src => shared}/systemd/src/basic/siphash24.h | 0 .../systemd/src/basic/socket-util.c | 2 +- .../systemd/src/basic/socket-util.h | 0 .../systemd/src/basic/sparse-endian.h | 0 {src => shared}/systemd/src/basic/stat-util.c | 2 +- {src => shared}/systemd/src/basic/stat-util.h | 0 .../systemd/src/basic/stdio-util.h | 0 .../systemd/src/basic/string-table.c | 2 +- .../systemd/src/basic/string-table.h | 0 .../systemd/src/basic/string-util.c | 2 +- .../systemd/src/basic/string-util.h | 0 {src => shared}/systemd/src/basic/strv.c | 2 +- {src => shared}/systemd/src/basic/strv.h | 0 {src => shared}/systemd/src/basic/time-util.c | 4 +- {src => shared}/systemd/src/basic/time-util.h | 0 .../systemd/src/basic/tmpfile-util.c | 2 +- .../systemd/src/basic/tmpfile-util.h | 0 .../systemd/src/basic/umask-util.h | 0 {src => shared}/systemd/src/basic/utf8.c | 2 +- {src => shared}/systemd/src/basic/utf8.h | 0 {src => shared}/systemd/src/basic/util.c | 2 +- {src => shared}/systemd/src/basic/util.h | 0 src/NetworkManagerUtils.c | 2 +- src/meson.build | 12 +- src/systemd/meson.build | 122 +++----- src/systemd/nm-sd-utils-core.c | 40 +++ src/systemd/nm-sd-utils-core.h | 30 ++ src/systemd/nm-sd.c | 2 +- .../{sd-adapt => sd-adapt-core}/condition.h | 0 .../{sd-adapt => sd-adapt-core}/conf-parser.h | 0 .../{sd-adapt => sd-adapt-core}/khash.h | 0 .../nm-sd-adapt-core.c} | 2 +- src/systemd/sd-adapt-core/nm-sd-adapt-core.h | 101 ++++++ .../{sd-adapt => sd-adapt-core}/sd-daemon.h | 0 .../{sd-adapt => sd-adapt-core}/sd-device.h | 0 .../{sd-adapt => sd-adapt-core}/stat-util.h | 0 src/systemd/sd-adapt/serialize.h | 3 - src/systemd/src/libsystemd-network/arp-util.c | 2 +- .../src/libsystemd-network/dhcp-identifier.c | 2 +- .../src/libsystemd-network/dhcp-network.c | 2 +- .../src/libsystemd-network/dhcp-option.c | 2 +- .../src/libsystemd-network/dhcp-packet.c | 2 +- .../src/libsystemd-network/dhcp6-network.c | 2 +- .../src/libsystemd-network/dhcp6-option.c | 2 +- .../src/libsystemd-network/lldp-neighbor.c | 2 +- .../src/libsystemd-network/lldp-network.c | 2 +- .../src/libsystemd-network/network-internal.c | 2 +- .../src/libsystemd-network/sd-dhcp-client.c | 2 +- .../src/libsystemd-network/sd-dhcp-lease.c | 2 +- .../src/libsystemd-network/sd-dhcp6-client.c | 2 +- .../src/libsystemd-network/sd-dhcp6-lease.c | 2 +- .../src/libsystemd-network/sd-ipv4acd.c | 2 +- .../src/libsystemd-network/sd-ipv4ll.c | 2 +- src/systemd/src/libsystemd-network/sd-lldp.c | 2 +- .../src/libsystemd/sd-event/event-util.c | 2 +- .../src/libsystemd/sd-event/sd-event.c | 2 +- .../src/libsystemd/sd-id128/id128-util.c | 2 +- .../src/libsystemd/sd-id128/sd-id128.c | 2 +- src/systemd/src/shared/dns-domain.c | 2 +- src/tests/meson.build | 5 +- src/tests/test-general.c | 2 +- src/tests/test-systemd.c | 9 +- 145 files changed, 564 insertions(+), 383 deletions(-) rename src/systemd/nm-sd-utils.c => shared/systemd/nm-sd-utils-shared.c (74%) rename src/systemd/nm-sd-utils.h => shared/systemd/nm-sd-utils-shared.h (81%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/architecture.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/btrfs-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/build.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/cgroup-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/copy.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/def.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/device-nodes.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/dirent-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/errno-list.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/format-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/glob-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/gunicode.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/ioprio.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/locale-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/memfd-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/missing.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/missing_socket.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/missing_syscall.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/missing_timerfd.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/mkdir.h (100%) rename src/systemd/sd-adapt/nm-sd-adapt.h => shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h (75%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/procfs-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/raw-clone.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/rlimit-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/terminal-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/unaligned.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/user-util.h (100%) rename {src/systemd/sd-adapt => shared/systemd/sd-adapt-shared}/virt.h (100%) rename {src => shared}/systemd/src/basic/alloc-util.c (98%) rename {src => shared}/systemd/src/basic/alloc-util.h (100%) rename {src => shared}/systemd/src/basic/async.h (100%) rename {src => shared}/systemd/src/basic/env-file.c (99%) rename {src => shared}/systemd/src/basic/env-file.h (100%) rename {src => shared}/systemd/src/basic/env-util.c (99%) rename {src => shared}/systemd/src/basic/env-util.h (100%) rename {src => shared}/systemd/src/basic/escape.c (99%) rename {src => shared}/systemd/src/basic/escape.h (100%) rename {src => shared}/systemd/src/basic/ether-addr-util.c (99%) rename {src => shared}/systemd/src/basic/ether-addr-util.h (100%) rename {src => shared}/systemd/src/basic/extract-word.c (99%) rename {src => shared}/systemd/src/basic/extract-word.h (100%) rename {src => shared}/systemd/src/basic/fd-util.c (99%) rename {src => shared}/systemd/src/basic/fd-util.h (100%) rename {src => shared}/systemd/src/basic/fileio.c (99%) rename {src => shared}/systemd/src/basic/fileio.h (100%) rename {src => shared}/systemd/src/basic/fs-util.c (99%) rename {src => shared}/systemd/src/basic/fs-util.h (100%) rename {src => shared}/systemd/src/basic/hash-funcs.c (98%) rename {src => shared}/systemd/src/basic/hash-funcs.h (100%) rename {src => shared}/systemd/src/basic/hashmap.c (99%) rename {src => shared}/systemd/src/basic/hashmap.h (100%) rename {src => shared}/systemd/src/basic/hexdecoct.c (99%) rename {src => shared}/systemd/src/basic/hexdecoct.h (100%) rename {src => shared}/systemd/src/basic/hostname-util.c (99%) rename {src => shared}/systemd/src/basic/hostname-util.h (100%) rename {src => shared}/systemd/src/basic/in-addr-util.c (99%) rename {src => shared}/systemd/src/basic/in-addr-util.h (100%) rename {src => shared}/systemd/src/basic/io-util.c (99%) rename {src => shared}/systemd/src/basic/io-util.h (100%) rename {src => shared}/systemd/src/basic/list.h (100%) rename {src => shared}/systemd/src/basic/log.h (99%) rename {src => shared}/systemd/src/basic/macro.h (100%) rename {src => shared}/systemd/src/basic/mempool.c (98%) rename {src => shared}/systemd/src/basic/mempool.h (100%) rename {src => shared}/systemd/src/basic/missing_type.h (100%) rename {src => shared}/systemd/src/basic/parse-util.c (99%) rename {src => shared}/systemd/src/basic/parse-util.h (100%) rename {src => shared}/systemd/src/basic/path-util.c (99%) rename {src => shared}/systemd/src/basic/path-util.h (100%) rename {src => shared}/systemd/src/basic/prioq.c (99%) rename {src => shared}/systemd/src/basic/prioq.h (100%) rename {src => shared}/systemd/src/basic/process-util.c (99%) rename {src => shared}/systemd/src/basic/process-util.h (100%) rename {src => shared}/systemd/src/basic/random-util.c (99%) rename {src => shared}/systemd/src/basic/random-util.h (100%) rename {src => shared}/systemd/src/basic/refcnt.h (100%) rename {src => shared}/systemd/src/basic/set.h (100%) rename {src => shared}/systemd/src/basic/signal-util.h (100%) rename {src => shared}/systemd/src/basic/siphash24.h (100%) rename {src => shared}/systemd/src/basic/socket-util.c (99%) rename {src => shared}/systemd/src/basic/socket-util.h (100%) rename {src => shared}/systemd/src/basic/sparse-endian.h (100%) rename {src => shared}/systemd/src/basic/stat-util.c (99%) rename {src => shared}/systemd/src/basic/stat-util.h (100%) rename {src => shared}/systemd/src/basic/stdio-util.h (100%) rename {src => shared}/systemd/src/basic/string-table.c (92%) rename {src => shared}/systemd/src/basic/string-table.h (100%) rename {src => shared}/systemd/src/basic/string-util.c (99%) rename {src => shared}/systemd/src/basic/string-util.h (100%) rename {src => shared}/systemd/src/basic/strv.c (99%) rename {src => shared}/systemd/src/basic/strv.h (100%) rename {src => shared}/systemd/src/basic/time-util.c (99%) rename {src => shared}/systemd/src/basic/time-util.h (100%) rename {src => shared}/systemd/src/basic/tmpfile-util.c (99%) rename {src => shared}/systemd/src/basic/tmpfile-util.h (100%) rename {src => shared}/systemd/src/basic/umask-util.h (100%) rename {src => shared}/systemd/src/basic/utf8.c (99%) rename {src => shared}/systemd/src/basic/utf8.h (100%) rename {src => shared}/systemd/src/basic/util.c (99%) rename {src => shared}/systemd/src/basic/util.h (100%) create mode 100644 src/systemd/nm-sd-utils-core.c create mode 100644 src/systemd/nm-sd-utils-core.h rename src/systemd/{sd-adapt => sd-adapt-core}/condition.h (100%) rename src/systemd/{sd-adapt => sd-adapt-core}/conf-parser.h (100%) rename src/systemd/{sd-adapt => sd-adapt-core}/khash.h (100%) rename src/systemd/{sd-adapt/nm-sd-adapt.c => sd-adapt-core/nm-sd-adapt-core.c} (97%) create mode 100644 src/systemd/sd-adapt-core/nm-sd-adapt-core.h rename src/systemd/{sd-adapt => sd-adapt-core}/sd-daemon.h (100%) rename src/systemd/{sd-adapt => sd-adapt-core}/sd-device.h (100%) rename src/systemd/{sd-adapt => sd-adapt-core}/stat-util.h (100%) delete mode 100644 src/systemd/sd-adapt/serialize.h diff --git a/Makefile.am b/Makefile.am index fe3c1eca4f..4685fbda24 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1490,7 +1490,8 @@ libexec_PROGRAMS += \ noinst_LTLIBRARIES += \ src/libNetworkManagerBase.la \ src/libNetworkManager.la \ - src/libsystemd-nm.la + src/libnm-systemd-core.la \ + $(NULL) check-config-options: $(srcdir)/tools/check-config-options.sh "$(srcdir)" @@ -1499,141 +1500,173 @@ check_local += check-config-options ############################################################################### -src_libsystemd_nm_la_cppflags = \ +libsystemd_cppflags = \ $(dflt_cppflags) \ -I$(srcdir)/shared \ -I$(builddir)/shared \ + -I$(srcdir)/shared/systemd/ \ + -I$(srcdir)/shared/systemd/sd-adapt-shared \ + -I$(srcdir)/shared/systemd/src/basic \ + $(LIBSYSTEMD_NM_CFLAGS) \ + $(GLIB_CFLAGS) \ + $(CODE_COVERAGE_CFLAGS) \ + $(NULL) + +libsystemd_libadd = \ + $(GLIB_LIBS) \ + $(CODE_COVERAGE_LDFLAGS) \ + $(NULL) + +noinst_LTLIBRARIES += shared/systemd/libnm-systemd-shared.la + +shared_systemd_libnm_systemd_shared_la_CPPFLAGS = \ + $(libsystemd_cppflags) \ + -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED \ + -DG_LOG_DOMAIN=\""libnm"\" \ + $(NULL) + +shared_systemd_libnm_systemd_shared_la_SOURCES = \ + shared/systemd/nm-sd-utils-shared.c \ + shared/systemd/nm-sd-utils-shared.h \ + shared/systemd/sd-adapt-shared/architecture.h \ + shared/systemd/sd-adapt-shared/btrfs-util.h \ + shared/systemd/sd-adapt-shared/build.h \ + shared/systemd/sd-adapt-shared/cgroup-util.h \ + shared/systemd/sd-adapt-shared/copy.h \ + shared/systemd/sd-adapt-shared/def.h \ + shared/systemd/sd-adapt-shared/device-nodes.h \ + shared/systemd/sd-adapt-shared/dirent-util.h \ + shared/systemd/sd-adapt-shared/errno-list.h \ + shared/systemd/sd-adapt-shared/format-util.h \ + shared/systemd/sd-adapt-shared/glob-util.h \ + shared/systemd/sd-adapt-shared/gunicode.h \ + shared/systemd/sd-adapt-shared/ioprio.h \ + shared/systemd/sd-adapt-shared/locale-util.h \ + shared/systemd/sd-adapt-shared/memfd-util.h \ + shared/systemd/sd-adapt-shared/missing.h \ + shared/systemd/sd-adapt-shared/missing_socket.h \ + shared/systemd/sd-adapt-shared/missing_syscall.h \ + shared/systemd/sd-adapt-shared/missing_timerfd.h \ + shared/systemd/sd-adapt-shared/mkdir.h \ + shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h \ + shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h \ + shared/systemd/sd-adapt-shared/procfs-util.h \ + shared/systemd/sd-adapt-shared/raw-clone.h \ + shared/systemd/sd-adapt-shared/rlimit-util.h \ + shared/systemd/sd-adapt-shared/terminal-util.h \ + shared/systemd/sd-adapt-shared/unaligned.h \ + shared/systemd/sd-adapt-shared/user-util.h \ + shared/systemd/sd-adapt-shared/virt.h \ + shared/systemd/src/basic/alloc-util.c \ + shared/systemd/src/basic/alloc-util.h \ + shared/systemd/src/basic/async.h \ + shared/systemd/src/basic/env-file.c \ + shared/systemd/src/basic/env-file.h \ + shared/systemd/src/basic/env-util.c \ + shared/systemd/src/basic/env-util.h \ + shared/systemd/src/basic/escape.c \ + shared/systemd/src/basic/escape.h \ + shared/systemd/src/basic/ether-addr-util.c \ + shared/systemd/src/basic/ether-addr-util.h \ + shared/systemd/src/basic/extract-word.c \ + shared/systemd/src/basic/extract-word.h \ + shared/systemd/src/basic/fd-util.c \ + shared/systemd/src/basic/fd-util.h \ + shared/systemd/src/basic/fileio.c \ + shared/systemd/src/basic/fileio.h \ + shared/systemd/src/basic/fs-util.c \ + shared/systemd/src/basic/fs-util.h \ + shared/systemd/src/basic/hash-funcs.c \ + shared/systemd/src/basic/hash-funcs.h \ + shared/systemd/src/basic/hashmap.c \ + shared/systemd/src/basic/hashmap.h \ + shared/systemd/src/basic/hexdecoct.c \ + shared/systemd/src/basic/hexdecoct.h \ + shared/systemd/src/basic/hostname-util.c \ + shared/systemd/src/basic/hostname-util.h \ + shared/systemd/src/basic/in-addr-util.c \ + shared/systemd/src/basic/in-addr-util.h \ + shared/systemd/src/basic/io-util.c \ + shared/systemd/src/basic/io-util.h \ + shared/systemd/src/basic/list.h \ + shared/systemd/src/basic/log.h \ + shared/systemd/src/basic/macro.h \ + shared/systemd/src/basic/mempool.c \ + shared/systemd/src/basic/mempool.h \ + shared/systemd/src/basic/missing_type.h \ + shared/systemd/src/basic/parse-util.c \ + shared/systemd/src/basic/parse-util.h \ + shared/systemd/src/basic/path-util.c \ + shared/systemd/src/basic/path-util.h \ + shared/systemd/src/basic/prioq.c \ + shared/systemd/src/basic/prioq.h \ + shared/systemd/src/basic/process-util.c \ + shared/systemd/src/basic/process-util.h \ + shared/systemd/src/basic/random-util.c \ + shared/systemd/src/basic/random-util.h \ + shared/systemd/src/basic/refcnt.h \ + shared/systemd/src/basic/set.h \ + shared/systemd/src/basic/signal-util.h \ + shared/systemd/src/basic/siphash24.h \ + shared/systemd/src/basic/socket-util.c \ + shared/systemd/src/basic/socket-util.h \ + shared/systemd/src/basic/sparse-endian.h \ + shared/systemd/src/basic/stat-util.c \ + shared/systemd/src/basic/stat-util.h \ + shared/systemd/src/basic/stdio-util.h \ + shared/systemd/src/basic/string-table.c \ + shared/systemd/src/basic/string-table.h \ + shared/systemd/src/basic/string-util.c \ + shared/systemd/src/basic/string-util.h \ + shared/systemd/src/basic/strv.c \ + shared/systemd/src/basic/strv.h \ + shared/systemd/src/basic/time-util.c \ + shared/systemd/src/basic/time-util.h \ + shared/systemd/src/basic/tmpfile-util.c \ + shared/systemd/src/basic/tmpfile-util.h \ + shared/systemd/src/basic/umask-util.h \ + shared/systemd/src/basic/utf8.c \ + shared/systemd/src/basic/utf8.h \ + shared/systemd/src/basic/util.c \ + shared/systemd/src/basic/util.h \ + $(NULL) + +shared_systemd_libnm_systemd_shared_la_LIBADD = \ + $(libsystemd_libadd) \ + $(NULL) + +############################################################################### + +src_libnm_systemd_core_la_cppflags = \ + $(libsystemd_cppflags) \ -I$(srcdir)/libnm-core \ -I$(builddir)/libnm-core \ -I$(srcdir)/src \ - -I$(srcdir)/src/systemd/sd-adapt \ + -I$(srcdir)/src/systemd/sd-adapt-core \ -I$(srcdir)/src/systemd/src/systemd \ - -I$(srcdir)/src/systemd/src/basic \ -I$(srcdir)/src/systemd/src/shared \ -I$(srcdir)/src/systemd/src/libsystemd-network \ -I$(srcdir)/src/systemd/src/libsystemd/sd-event \ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD \ - $(LIBSYSTEMD_NM_CFLAGS) \ - $(GLIB_CFLAGS) \ - $(CODE_COVERAGE_CFLAGS) + $(NULL) -src_libsystemd_nm_la_libadd = \ - $(GLIB_LIBS) \ - $(CODE_COVERAGE_LDFLAGS) +src_libnm_systemd_core_la_libadd = \ + $(libsystemd_libadd) \ + $(NULL) -src_libsystemd_nm_la_SOURCES = \ +src_libnm_systemd_core_la_SOURCES = \ + src/systemd/nm-sd-utils-core.c \ + src/systemd/nm-sd-utils-core.h \ src/systemd/nm-sd.c \ src/systemd/nm-sd.h \ - src/systemd/nm-sd-utils.c \ - src/systemd/nm-sd-utils.h \ - src/systemd/sd-adapt/nm-sd-adapt.c \ - src/systemd/sd-adapt/nm-sd-adapt.h \ - src/systemd/sd-adapt/architecture.h \ - src/systemd/sd-adapt/btrfs-util.h \ - src/systemd/sd-adapt/build.h \ - src/systemd/sd-adapt/cgroup-util.h \ - src/systemd/sd-adapt/condition.h \ - src/systemd/sd-adapt/conf-parser.h \ - src/systemd/sd-adapt/copy.h \ - src/systemd/sd-adapt/def.h \ - src/systemd/sd-adapt/device-nodes.h \ - src/systemd/sd-adapt/dirent-util.h \ - src/systemd/sd-adapt/errno-list.h \ - src/systemd/sd-adapt/format-util.h \ - src/systemd/sd-adapt/glob-util.h \ - src/systemd/sd-adapt/gunicode.h \ - src/systemd/sd-adapt/ioprio.h \ - src/systemd/sd-adapt/khash.h \ - src/systemd/sd-adapt/locale-util.h \ - src/systemd/sd-adapt/memfd-util.h \ - src/systemd/sd-adapt/missing.h \ - src/systemd/sd-adapt/missing_socket.h \ - src/systemd/sd-adapt/missing_syscall.h \ - src/systemd/sd-adapt/missing_timerfd.h \ - src/systemd/sd-adapt/mkdir.h \ - src/systemd/sd-adapt/procfs-util.h \ - src/systemd/sd-adapt/raw-clone.h \ - src/systemd/sd-adapt/rlimit-util.h \ - src/systemd/sd-adapt/sd-daemon.h \ - src/systemd/sd-adapt/sd-device.h \ - src/systemd/sd-adapt/serialize.h \ - src/systemd/sd-adapt/stat-util.h \ - src/systemd/sd-adapt/terminal-util.h \ - src/systemd/sd-adapt/unaligned.h \ - src/systemd/sd-adapt/user-util.h \ - src/systemd/sd-adapt/virt.h \ - src/systemd/src/basic/alloc-util.c \ - src/systemd/src/basic/alloc-util.h \ - src/systemd/src/basic/async.h \ - src/systemd/src/basic/env-file.c \ - src/systemd/src/basic/env-file.h \ - src/systemd/src/basic/env-util.c \ - src/systemd/src/basic/env-util.h \ - src/systemd/src/basic/escape.c \ - src/systemd/src/basic/escape.h \ - src/systemd/src/basic/ether-addr-util.c \ - src/systemd/src/basic/ether-addr-util.h \ - src/systemd/src/basic/extract-word.c \ - src/systemd/src/basic/extract-word.h \ - src/systemd/src/basic/fd-util.c \ - src/systemd/src/basic/fd-util.h \ - src/systemd/src/basic/fileio.c \ - src/systemd/src/basic/fileio.h \ - src/systemd/src/basic/fs-util.c \ - src/systemd/src/basic/fs-util.h \ - src/systemd/src/basic/hash-funcs.c \ - src/systemd/src/basic/hash-funcs.h \ - src/systemd/src/basic/hashmap.c \ - src/systemd/src/basic/hashmap.h \ - src/systemd/src/basic/hexdecoct.c \ - src/systemd/src/basic/hexdecoct.h \ - src/systemd/src/basic/hostname-util.c \ - src/systemd/src/basic/hostname-util.h \ - src/systemd/src/basic/in-addr-util.c \ - src/systemd/src/basic/in-addr-util.h \ - src/systemd/src/basic/io-util.c \ - src/systemd/src/basic/io-util.h \ - src/systemd/src/basic/list.h \ - src/systemd/src/basic/log.h \ - src/systemd/src/basic/macro.h \ - src/systemd/src/basic/mempool.c \ - src/systemd/src/basic/mempool.h \ - src/systemd/src/basic/missing_type.h \ - src/systemd/src/basic/parse-util.c \ - src/systemd/src/basic/parse-util.h \ - src/systemd/src/basic/path-util.c \ - src/systemd/src/basic/path-util.h \ - src/systemd/src/basic/prioq.c \ - src/systemd/src/basic/prioq.h \ - src/systemd/src/basic/process-util.c \ - src/systemd/src/basic/process-util.h \ - src/systemd/src/basic/random-util.c \ - src/systemd/src/basic/random-util.h \ - src/systemd/src/basic/refcnt.h \ - src/systemd/src/basic/set.h \ - src/systemd/src/basic/signal-util.h \ - src/systemd/src/basic/siphash24.h \ - src/systemd/src/basic/socket-util.c \ - src/systemd/src/basic/socket-util.h \ - src/systemd/src/basic/sparse-endian.h \ - src/systemd/src/basic/stat-util.c \ - src/systemd/src/basic/stat-util.h \ - src/systemd/src/basic/stdio-util.h \ - src/systemd/src/basic/string-table.c \ - src/systemd/src/basic/string-table.h \ - src/systemd/src/basic/string-util.c \ - src/systemd/src/basic/string-util.h \ - src/systemd/src/basic/strv.c \ - src/systemd/src/basic/strv.h \ - src/systemd/src/basic/time-util.c \ - src/systemd/src/basic/time-util.h \ - src/systemd/src/basic/tmpfile-util.c \ - src/systemd/src/basic/tmpfile-util.h \ - src/systemd/src/basic/umask-util.h \ - src/systemd/src/basic/utf8.c \ - src/systemd/src/basic/utf8.h \ - src/systemd/src/basic/util.c \ - src/systemd/src/basic/util.h \ + src/systemd/sd-adapt-core/condition.h \ + src/systemd/sd-adapt-core/conf-parser.h \ + src/systemd/sd-adapt-core/khash.h \ + src/systemd/sd-adapt-core/nm-sd-adapt-core.c \ + src/systemd/sd-adapt-core/nm-sd-adapt-core.h \ + src/systemd/sd-adapt-core/sd-daemon.h \ + src/systemd/sd-adapt-core/sd-device.h \ + src/systemd/sd-adapt-core/stat-util.h \ src/systemd/src/libsystemd-network/arp-util.c \ src/systemd/src/libsystemd-network/arp-util.h \ src/systemd/src/libsystemd-network/dhcp-identifier.c \ @@ -1684,9 +1717,9 @@ src_libsystemd_nm_la_SOURCES = \ src/systemd/src/systemd/sd-lldp.h \ src/systemd/src/systemd/sd-ndisc.h -src_libsystemd_nm_la_CPPFLAGS = $(src_libsystemd_nm_la_cppflags) -src_libsystemd_nm_la_LIBADD = $(src_libsystemd_nm_la_libadd) -$(src_libsystemd_nm_la_OBJECTS): $(libnm_core_lib_h_pub_mkenums) +src_libnm_systemd_core_la_CPPFLAGS = $(src_libnm_systemd_core_la_cppflags) +src_libnm_systemd_core_la_LIBADD = $(src_libnm_systemd_core_la_libadd) +$(src_libnm_systemd_core_la_OBJECTS): $(libnm_core_lib_h_pub_mkenums) EXTRA_DIST += \ src/systemd/meson.build @@ -1960,7 +1993,8 @@ src_libNetworkManager_la_SOURCES = \ src_libNetworkManager_la_LIBADD = \ src/libNetworkManagerBase.la \ - src/libsystemd-nm.la \ + src/libnm-systemd-core.la \ + shared/systemd/libnm-systemd-shared.la \ shared/libnacd.la \ $(GLIB_LIBS) \ $(LIBUDEV_LIBS) \ @@ -2033,7 +2067,8 @@ src_nm_iface_helper_SOURCES = \ src_nm_iface_helper_LDADD = \ src/libNetworkManagerBase.la \ - src/libsystemd-nm.la \ + src/libnm-systemd-core.la \ + shared/systemd/libnm-systemd-shared.la \ $(GLIB_LIBS) \ $(LIBUDEV_LIBS) \ $(LIBNDP_LIBS) \ @@ -3609,14 +3644,13 @@ $(src_tests_test_wired_defname_OBJECTS): $(libnm_core_lib_h_pub_mkenums) $(src_tests_test_utils_OBJECTS): $(libnm_core_lib_h_pub_mkenums) src_tests_test_systemd_CPPFLAGS = \ - $(src_libsystemd_nm_la_cppflags) \ + $(src_libnm_systemd_core_la_cppflags) \ -DNETWORKMANAGER_COMPILATION_TEST -src_tests_test_systemd_SOURCES = \ - src/tests/test-systemd.c src_tests_test_systemd_LDADD = \ - src/libsystemd-nm.la \ + src/libnm-systemd-core.la \ + shared/systemd/libnm-systemd-shared.la \ shared/libcsiphash.la \ - $(src_libsystemd_nm_la_libadd) \ + $(src_libnm_systemd_core_la_libadd) \ $(NULL) $(src_tests_test_systemd_OBJECTS): $(libnm_core_lib_h_pub_mkenums) diff --git a/shared/meson.build b/shared/meson.build index 753c6fb25f..76f09ee8c0 100644 --- a/shared/meson.build +++ b/shared/meson.build @@ -146,3 +146,64 @@ test( test_script, args: test_args + [test_shared_general.full_path()] ) + +############################################################################### + +libnm_systemd_shared = static_library( + 'nm-systemd-shared', + sources: files( + 'systemd/src/basic/alloc-util.c', + 'systemd/src/basic/escape.c', + 'systemd/src/basic/env-file.c', + 'systemd/src/basic/env-util.c', + 'systemd/src/basic/ether-addr-util.c', + 'systemd/src/basic/extract-word.c', + 'systemd/src/basic/fd-util.c', + 'systemd/src/basic/fileio.c', + 'systemd/src/basic/fs-util.c', + 'systemd/src/basic/hash-funcs.c', + 'systemd/src/basic/hashmap.c', + 'systemd/src/basic/hexdecoct.c', + 'systemd/src/basic/hostname-util.c', + 'systemd/src/basic/in-addr-util.c', + 'systemd/src/basic/io-util.c', + 'systemd/src/basic/mempool.c', + 'systemd/src/basic/parse-util.c', + 'systemd/src/basic/path-util.c', + 'systemd/src/basic/prioq.c', + 'systemd/src/basic/process-util.c', + 'systemd/src/basic/random-util.c', + 'systemd/src/basic/socket-util.c', + 'systemd/src/basic/stat-util.c', + 'systemd/src/basic/string-table.c', + 'systemd/src/basic/string-util.c', + 'systemd/src/basic/strv.c', + 'systemd/src/basic/time-util.c', + 'systemd/src/basic/tmpfile-util.c', + 'systemd/src/basic/utf8.c', + 'systemd/src/basic/util.c', + 'systemd/nm-sd-utils-shared.c', + ), + include_directories: include_directories( + 'systemd/sd-adapt-shared', + 'systemd/src/basic', + ), + dependencies: shared_dep, + c_args: [ + '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED', + '-DG_LOG_DOMAIN="libnm"', + ], +) + +libnm_systemd_shared_dep = declare_dependency( + include_directories: include_directories( + 'systemd/sd-adapt-shared', + 'systemd/src/basic', + ), + dependencies: [ + shared_dep, + ], + link_with: [ + libnm_systemd_shared, + ], +) diff --git a/shared/nm-default.h b/shared/nm-default.h index 35c6009ff9..c006f33d35 100644 --- a/shared/nm-default.h +++ b/shared/nm-default.h @@ -78,9 +78,14 @@ | NM_NETWORKMANAGER_COMPILATION_WITH_DAEMON \ ) +#define NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED ( 0 \ + | NM_NETWORKMANAGER_COMPILATION_WITH_GLIB \ + | NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD \ + ) + #define NM_NETWORKMANAGER_COMPILATION_SYSTEMD ( 0 \ | NM_NETWORKMANAGER_COMPILATION_DAEMON \ - | NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD \ + | NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED \ ) #define NM_NETWORKMANAGER_COMPILATION_GLIB ( 0 \ diff --git a/src/systemd/nm-sd-utils.c b/shared/systemd/nm-sd-utils-shared.c similarity index 74% rename from src/systemd/nm-sd-utils.c rename to shared/systemd/nm-sd-utils-shared.c index c6c4c12328..6c71702502 100644 --- a/src/systemd/nm-sd-utils.c +++ b/shared/systemd/nm-sd-utils-shared.c @@ -18,14 +18,11 @@ #include "nm-default.h" -#include "nm-sd-utils.h" +#include "nm-sd-utils-shared.h" -#include "nm-core-internal.h" - -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include "path-util.h" -#include "sd-id128.h" /*****************************************************************************/ @@ -46,16 +43,3 @@ nm_sd_utils_path_startswith (const char *path, const char *prefix) { return path_startswith (path, prefix); } - -/*****************************************************************************/ - -NMUuid * -nm_sd_utils_id128_get_machine (NMUuid *out_uuid) -{ - g_assert (out_uuid); - - G_STATIC_ASSERT_EXPR (sizeof (*out_uuid) == sizeof (sd_id128_t)); - if (sd_id128_get_machine ((sd_id128_t *) out_uuid) < 0) - return NULL; - return out_uuid; -} diff --git a/src/systemd/nm-sd-utils.h b/shared/systemd/nm-sd-utils-shared.h similarity index 81% rename from src/systemd/nm-sd-utils.h rename to shared/systemd/nm-sd-utils-shared.h index 0af514eb84..3103b3c7c4 100644 --- a/src/systemd/nm-sd-utils.h +++ b/shared/systemd/nm-sd-utils-shared.h @@ -16,8 +16,8 @@ * Copyright (C) 2018 Red Hat, Inc. */ -#ifndef __NM_SD_UTILS_H__ -#define __NM_SD_UTILS_H__ +#ifndef __NM_SD_UTILS_SHARED_H__ +#define __NM_SD_UTILS_SHARED_H__ /*****************************************************************************/ @@ -29,10 +29,4 @@ const char *nm_sd_utils_path_startswith (const char *path, const char *prefix); /*****************************************************************************/ -struct _NMUuid; - -struct _NMUuid *nm_sd_utils_id128_get_machine (struct _NMUuid *out_uuid); - -/*****************************************************************************/ - -#endif /* __NM_SD_UTILS_H__ */ +#endif /* __NM_SD_UTILS_SHARED_H__ */ diff --git a/src/systemd/sd-adapt/architecture.h b/shared/systemd/sd-adapt-shared/architecture.h similarity index 100% rename from src/systemd/sd-adapt/architecture.h rename to shared/systemd/sd-adapt-shared/architecture.h diff --git a/src/systemd/sd-adapt/btrfs-util.h b/shared/systemd/sd-adapt-shared/btrfs-util.h similarity index 100% rename from src/systemd/sd-adapt/btrfs-util.h rename to shared/systemd/sd-adapt-shared/btrfs-util.h diff --git a/src/systemd/sd-adapt/build.h b/shared/systemd/sd-adapt-shared/build.h similarity index 100% rename from src/systemd/sd-adapt/build.h rename to shared/systemd/sd-adapt-shared/build.h diff --git a/src/systemd/sd-adapt/cgroup-util.h b/shared/systemd/sd-adapt-shared/cgroup-util.h similarity index 100% rename from src/systemd/sd-adapt/cgroup-util.h rename to shared/systemd/sd-adapt-shared/cgroup-util.h diff --git a/src/systemd/sd-adapt/copy.h b/shared/systemd/sd-adapt-shared/copy.h similarity index 100% rename from src/systemd/sd-adapt/copy.h rename to shared/systemd/sd-adapt-shared/copy.h diff --git a/src/systemd/sd-adapt/def.h b/shared/systemd/sd-adapt-shared/def.h similarity index 100% rename from src/systemd/sd-adapt/def.h rename to shared/systemd/sd-adapt-shared/def.h diff --git a/src/systemd/sd-adapt/device-nodes.h b/shared/systemd/sd-adapt-shared/device-nodes.h similarity index 100% rename from src/systemd/sd-adapt/device-nodes.h rename to shared/systemd/sd-adapt-shared/device-nodes.h diff --git a/src/systemd/sd-adapt/dirent-util.h b/shared/systemd/sd-adapt-shared/dirent-util.h similarity index 100% rename from src/systemd/sd-adapt/dirent-util.h rename to shared/systemd/sd-adapt-shared/dirent-util.h diff --git a/src/systemd/sd-adapt/errno-list.h b/shared/systemd/sd-adapt-shared/errno-list.h similarity index 100% rename from src/systemd/sd-adapt/errno-list.h rename to shared/systemd/sd-adapt-shared/errno-list.h diff --git a/src/systemd/sd-adapt/format-util.h b/shared/systemd/sd-adapt-shared/format-util.h similarity index 100% rename from src/systemd/sd-adapt/format-util.h rename to shared/systemd/sd-adapt-shared/format-util.h diff --git a/src/systemd/sd-adapt/glob-util.h b/shared/systemd/sd-adapt-shared/glob-util.h similarity index 100% rename from src/systemd/sd-adapt/glob-util.h rename to shared/systemd/sd-adapt-shared/glob-util.h diff --git a/src/systemd/sd-adapt/gunicode.h b/shared/systemd/sd-adapt-shared/gunicode.h similarity index 100% rename from src/systemd/sd-adapt/gunicode.h rename to shared/systemd/sd-adapt-shared/gunicode.h diff --git a/src/systemd/sd-adapt/ioprio.h b/shared/systemd/sd-adapt-shared/ioprio.h similarity index 100% rename from src/systemd/sd-adapt/ioprio.h rename to shared/systemd/sd-adapt-shared/ioprio.h diff --git a/src/systemd/sd-adapt/locale-util.h b/shared/systemd/sd-adapt-shared/locale-util.h similarity index 100% rename from src/systemd/sd-adapt/locale-util.h rename to shared/systemd/sd-adapt-shared/locale-util.h diff --git a/src/systemd/sd-adapt/memfd-util.h b/shared/systemd/sd-adapt-shared/memfd-util.h similarity index 100% rename from src/systemd/sd-adapt/memfd-util.h rename to shared/systemd/sd-adapt-shared/memfd-util.h diff --git a/src/systemd/sd-adapt/missing.h b/shared/systemd/sd-adapt-shared/missing.h similarity index 100% rename from src/systemd/sd-adapt/missing.h rename to shared/systemd/sd-adapt-shared/missing.h diff --git a/src/systemd/sd-adapt/missing_socket.h b/shared/systemd/sd-adapt-shared/missing_socket.h similarity index 100% rename from src/systemd/sd-adapt/missing_socket.h rename to shared/systemd/sd-adapt-shared/missing_socket.h diff --git a/src/systemd/sd-adapt/missing_syscall.h b/shared/systemd/sd-adapt-shared/missing_syscall.h similarity index 100% rename from src/systemd/sd-adapt/missing_syscall.h rename to shared/systemd/sd-adapt-shared/missing_syscall.h diff --git a/src/systemd/sd-adapt/missing_timerfd.h b/shared/systemd/sd-adapt-shared/missing_timerfd.h similarity index 100% rename from src/systemd/sd-adapt/missing_timerfd.h rename to shared/systemd/sd-adapt-shared/missing_timerfd.h diff --git a/src/systemd/sd-adapt/mkdir.h b/shared/systemd/sd-adapt-shared/mkdir.h similarity index 100% rename from src/systemd/sd-adapt/mkdir.h rename to shared/systemd/sd-adapt-shared/mkdir.h diff --git a/src/systemd/sd-adapt/nm-sd-adapt.h b/shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h similarity index 75% rename from src/systemd/sd-adapt/nm-sd-adapt.h rename to shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h index cd2d202590..905e45c0e1 100644 --- a/src/systemd/sd-adapt/nm-sd-adapt.h +++ b/shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h @@ -13,40 +13,17 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2014 - 2015 Red Hat, Inc. + * Copyright (C) 2014 - 2018 Red Hat, Inc. */ -#ifndef NM_SD_ADAPT_H -#define NM_SD_ADAPT_H +#ifndef __NM_SD_ADAPT_BASIC_H__ +#define __NM_SD_ADAPT_BASIC_H__ #include "nm-default.h" -#include #include -#include -#include -#if defined(HAVE_DECL_REALLOCARRAY) && HAVE_DECL_REALLOCARRAY == 1 -#define HAVE_REALLOCARRAY 1 -#else -#define HAVE_REALLOCARRAY 0 -#endif - -#if defined(HAVE_DECL_EXPLICIT_BZERO) && HAVE_DECL_EXPLICIT_BZERO == 1 -#define HAVE_EXPLICIT_BZERO 1 -#else -#define HAVE_EXPLICIT_BZERO 0 -#endif - -#define ENABLE_DEBUG_HASHMAP 0 - -#ifndef HAVE_SYS_AUXV_H -#define HAVE_SYS_AUXV_H 0 -#endif - -/* we build with C11 and thus provides char32_t,char16_t. */ -#define HAVE_CHAR32_T 1 -#define HAVE_CHAR16_T 1 +#include "nm-utils/nm-logging-fwd.h" /*****************************************************************************/ @@ -77,7 +54,7 @@ _nm_log_get_max_level_realm (void) const int _nm_e = (error); \ const NMLogLevel _nm_l = _slog_level_to_nm ((level)); \ \ - if (nm_logging_enabled (_nm_l, LOGD_SYSTEMD)) { \ + if (_nm_log_enabled (_nm_l, LOGD_SYSTEMD)) { \ const char *_nm_location = strrchr ((""file), '/'); \ \ _nm_log_impl (_nm_location ? _nm_location + 1 : (""file), (line), (func), _nm_l, LOGD_SYSTEMD, _nm_e, NULL, NULL, ("%s"format), "libsystemd: ", ## __VA_ARGS__); \ @@ -104,6 +81,12 @@ G_STMT_START { \ (void) 0; \ }) +/*****************************************************************************/ + +#define VALGRIND 0 + +#define ENABLE_DEBUG_HASHMAP 0 + /***************************************************************************** * The remainder of the header is only enabled when building the systemd code * itself. @@ -111,39 +94,9 @@ G_STMT_START { \ #if (NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_AUXV_H -#include -#endif -#include #include #include -#include - -/* Missing in Linux 3.2.0, in Ubuntu 12.04 */ -#ifndef BPF_XOR -#define BPF_XOR 0xa0 -#endif - -#ifndef ETHERTYPE_LLDP -#define ETHERTYPE_LLDP 0x88cc -#endif - -#ifndef HAVE_SECURE_GETENV -# ifdef HAVE___SECURE_GETENV -# define secure_getenv __secure_getenv -# else -# error neither secure_getenv nor __secure_getenv is available -# endif -#endif - -#define VALGRIND 0 - static inline pid_t raw_getpid (void) { #if defined(__alpha__) @@ -153,37 +106,28 @@ raw_getpid (void) { #endif } -/*****************************************************************************/ - -static inline int -sd_notify (int unset_environment, const char *state) -{ - return 0; -} - -/* Can't include both net/if.h and linux/if.h; so have to define this here */ -#ifndef IF_NAMESIZE -#define IF_NAMESIZE 16 -#endif - -#ifndef IFNAMSIZ -#define IFNAMSIZ IF_NAMESIZE -#endif - -#ifndef MAX_HANDLE_SZ -#define MAX_HANDLE_SZ 128 -#endif - -#include "sd-id128.h" -#include "sparse-endian.h" -#include "async.h" -#include "util.h" - static inline pid_t gettid(void) { return (pid_t) syscall(SYS_gettid); } +/* we build with C11 and thus provides char32_t,char16_t. */ +#define HAVE_CHAR32_T 1 +#define HAVE_CHAR16_T 1 + +#if defined(HAVE_DECL_REALLOCARRAY) && HAVE_DECL_REALLOCARRAY == 1 +#define HAVE_REALLOCARRAY 1 +#else +#define HAVE_REALLOCARRAY 0 +#endif + +#if defined(HAVE_DECL_EXPLICIT_BZERO) && HAVE_DECL_EXPLICIT_BZERO == 1 +#define HAVE_EXPLICIT_BZERO 1 +#else +#define HAVE_EXPLICIT_BZERO 0 +#endif + #endif /* (NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD */ -#endif /* NM_SD_ADAPT_H */ +/*****************************************************************************/ +#endif /* __NM_SD_ADAPT_BASIC_H__ */ diff --git a/src/systemd/sd-adapt/procfs-util.h b/shared/systemd/sd-adapt-shared/procfs-util.h similarity index 100% rename from src/systemd/sd-adapt/procfs-util.h rename to shared/systemd/sd-adapt-shared/procfs-util.h diff --git a/src/systemd/sd-adapt/raw-clone.h b/shared/systemd/sd-adapt-shared/raw-clone.h similarity index 100% rename from src/systemd/sd-adapt/raw-clone.h rename to shared/systemd/sd-adapt-shared/raw-clone.h diff --git a/src/systemd/sd-adapt/rlimit-util.h b/shared/systemd/sd-adapt-shared/rlimit-util.h similarity index 100% rename from src/systemd/sd-adapt/rlimit-util.h rename to shared/systemd/sd-adapt-shared/rlimit-util.h diff --git a/src/systemd/sd-adapt/terminal-util.h b/shared/systemd/sd-adapt-shared/terminal-util.h similarity index 100% rename from src/systemd/sd-adapt/terminal-util.h rename to shared/systemd/sd-adapt-shared/terminal-util.h diff --git a/src/systemd/sd-adapt/unaligned.h b/shared/systemd/sd-adapt-shared/unaligned.h similarity index 100% rename from src/systemd/sd-adapt/unaligned.h rename to shared/systemd/sd-adapt-shared/unaligned.h diff --git a/src/systemd/sd-adapt/user-util.h b/shared/systemd/sd-adapt-shared/user-util.h similarity index 100% rename from src/systemd/sd-adapt/user-util.h rename to shared/systemd/sd-adapt-shared/user-util.h diff --git a/src/systemd/sd-adapt/virt.h b/shared/systemd/sd-adapt-shared/virt.h similarity index 100% rename from src/systemd/sd-adapt/virt.h rename to shared/systemd/sd-adapt-shared/virt.h diff --git a/src/systemd/src/basic/alloc-util.c b/shared/systemd/src/basic/alloc-util.c similarity index 98% rename from src/systemd/src/basic/alloc-util.c rename to shared/systemd/src/basic/alloc-util.c index 2e1c7ef61e..d23624d8ff 100644 --- a/src/systemd/src/basic/alloc-util.c +++ b/shared/systemd/src/basic/alloc-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/alloc-util.h b/shared/systemd/src/basic/alloc-util.h similarity index 100% rename from src/systemd/src/basic/alloc-util.h rename to shared/systemd/src/basic/alloc-util.h diff --git a/src/systemd/src/basic/async.h b/shared/systemd/src/basic/async.h similarity index 100% rename from src/systemd/src/basic/async.h rename to shared/systemd/src/basic/async.h diff --git a/src/systemd/src/basic/env-file.c b/shared/systemd/src/basic/env-file.c similarity index 99% rename from src/systemd/src/basic/env-file.c rename to shared/systemd/src/basic/env-file.c index 40051c312e..beafd8c207 100644 --- a/src/systemd/src/basic/env-file.c +++ b/shared/systemd/src/basic/env-file.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include diff --git a/src/systemd/src/basic/env-file.h b/shared/systemd/src/basic/env-file.h similarity index 100% rename from src/systemd/src/basic/env-file.h rename to shared/systemd/src/basic/env-file.h diff --git a/src/systemd/src/basic/env-util.c b/shared/systemd/src/basic/env-util.c similarity index 99% rename from src/systemd/src/basic/env-util.c rename to shared/systemd/src/basic/env-util.c index 1cd48a27e9..fd9eedc533 100644 --- a/src/systemd/src/basic/env-util.c +++ b/shared/systemd/src/basic/env-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/env-util.h b/shared/systemd/src/basic/env-util.h similarity index 100% rename from src/systemd/src/basic/env-util.h rename to shared/systemd/src/basic/env-util.h diff --git a/src/systemd/src/basic/escape.c b/shared/systemd/src/basic/escape.c similarity index 99% rename from src/systemd/src/basic/escape.c rename to shared/systemd/src/basic/escape.c index f430f2a99c..8f7a1b33b9 100644 --- a/src/systemd/src/basic/escape.c +++ b/shared/systemd/src/basic/escape.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/escape.h b/shared/systemd/src/basic/escape.h similarity index 100% rename from src/systemd/src/basic/escape.h rename to shared/systemd/src/basic/escape.h diff --git a/src/systemd/src/basic/ether-addr-util.c b/shared/systemd/src/basic/ether-addr-util.c similarity index 99% rename from src/systemd/src/basic/ether-addr-util.c rename to shared/systemd/src/basic/ether-addr-util.c index 602bbae059..4878a3d2ac 100644 --- a/src/systemd/src/basic/ether-addr-util.c +++ b/shared/systemd/src/basic/ether-addr-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/ether-addr-util.h b/shared/systemd/src/basic/ether-addr-util.h similarity index 100% rename from src/systemd/src/basic/ether-addr-util.h rename to shared/systemd/src/basic/ether-addr-util.h diff --git a/src/systemd/src/basic/extract-word.c b/shared/systemd/src/basic/extract-word.c similarity index 99% rename from src/systemd/src/basic/extract-word.c rename to shared/systemd/src/basic/extract-word.c index 404fe61558..782c868bc1 100644 --- a/src/systemd/src/basic/extract-word.c +++ b/shared/systemd/src/basic/extract-word.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/extract-word.h b/shared/systemd/src/basic/extract-word.h similarity index 100% rename from src/systemd/src/basic/extract-word.h rename to shared/systemd/src/basic/extract-word.h diff --git a/src/systemd/src/basic/fd-util.c b/shared/systemd/src/basic/fd-util.c similarity index 99% rename from src/systemd/src/basic/fd-util.c rename to shared/systemd/src/basic/fd-util.c index a242b739cd..219abd808c 100644 --- a/src/systemd/src/basic/fd-util.c +++ b/shared/systemd/src/basic/fd-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/fd-util.h b/shared/systemd/src/basic/fd-util.h similarity index 100% rename from src/systemd/src/basic/fd-util.h rename to shared/systemd/src/basic/fd-util.h diff --git a/src/systemd/src/basic/fileio.c b/shared/systemd/src/basic/fileio.c similarity index 99% rename from src/systemd/src/basic/fileio.c rename to shared/systemd/src/basic/fileio.c index 93b8b2439b..b172507b79 100644 --- a/src/systemd/src/basic/fileio.c +++ b/shared/systemd/src/basic/fileio.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/fileio.h b/shared/systemd/src/basic/fileio.h similarity index 100% rename from src/systemd/src/basic/fileio.h rename to shared/systemd/src/basic/fileio.h diff --git a/src/systemd/src/basic/fs-util.c b/shared/systemd/src/basic/fs-util.c similarity index 99% rename from src/systemd/src/basic/fs-util.c rename to shared/systemd/src/basic/fs-util.c index 767e5e078f..4b2341390f 100644 --- a/src/systemd/src/basic/fs-util.c +++ b/shared/systemd/src/basic/fs-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/fs-util.h b/shared/systemd/src/basic/fs-util.h similarity index 100% rename from src/systemd/src/basic/fs-util.h rename to shared/systemd/src/basic/fs-util.h diff --git a/src/systemd/src/basic/hash-funcs.c b/shared/systemd/src/basic/hash-funcs.c similarity index 98% rename from src/systemd/src/basic/hash-funcs.c rename to shared/systemd/src/basic/hash-funcs.c index 33264859ed..ec4f1de619 100644 --- a/src/systemd/src/basic/hash-funcs.c +++ b/shared/systemd/src/basic/hash-funcs.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include diff --git a/src/systemd/src/basic/hash-funcs.h b/shared/systemd/src/basic/hash-funcs.h similarity index 100% rename from src/systemd/src/basic/hash-funcs.h rename to shared/systemd/src/basic/hash-funcs.h diff --git a/src/systemd/src/basic/hashmap.c b/shared/systemd/src/basic/hashmap.c similarity index 99% rename from src/systemd/src/basic/hashmap.c rename to shared/systemd/src/basic/hashmap.c index e31ffaca5e..09303c6f63 100644 --- a/src/systemd/src/basic/hashmap.c +++ b/shared/systemd/src/basic/hashmap.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/hashmap.h b/shared/systemd/src/basic/hashmap.h similarity index 100% rename from src/systemd/src/basic/hashmap.h rename to shared/systemd/src/basic/hashmap.h diff --git a/src/systemd/src/basic/hexdecoct.c b/shared/systemd/src/basic/hexdecoct.c similarity index 99% rename from src/systemd/src/basic/hexdecoct.c rename to shared/systemd/src/basic/hexdecoct.c index 9267af6750..6a9869bcc4 100644 --- a/src/systemd/src/basic/hexdecoct.c +++ b/shared/systemd/src/basic/hexdecoct.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/hexdecoct.h b/shared/systemd/src/basic/hexdecoct.h similarity index 100% rename from src/systemd/src/basic/hexdecoct.h rename to shared/systemd/src/basic/hexdecoct.h diff --git a/src/systemd/src/basic/hostname-util.c b/shared/systemd/src/basic/hostname-util.c similarity index 99% rename from src/systemd/src/basic/hostname-util.c rename to shared/systemd/src/basic/hostname-util.c index 6a3d4afb46..60a94b9686 100644 --- a/src/systemd/src/basic/hostname-util.c +++ b/shared/systemd/src/basic/hostname-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/hostname-util.h b/shared/systemd/src/basic/hostname-util.h similarity index 100% rename from src/systemd/src/basic/hostname-util.h rename to shared/systemd/src/basic/hostname-util.h diff --git a/src/systemd/src/basic/in-addr-util.c b/shared/systemd/src/basic/in-addr-util.c similarity index 99% rename from src/systemd/src/basic/in-addr-util.c rename to shared/systemd/src/basic/in-addr-util.c index 0f2538e213..d2cc560620 100644 --- a/src/systemd/src/basic/in-addr-util.c +++ b/shared/systemd/src/basic/in-addr-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/in-addr-util.h b/shared/systemd/src/basic/in-addr-util.h similarity index 100% rename from src/systemd/src/basic/in-addr-util.h rename to shared/systemd/src/basic/in-addr-util.h diff --git a/src/systemd/src/basic/io-util.c b/shared/systemd/src/basic/io-util.c similarity index 99% rename from src/systemd/src/basic/io-util.c rename to shared/systemd/src/basic/io-util.c index 6f46c944ea..f7c2591548 100644 --- a/src/systemd/src/basic/io-util.c +++ b/shared/systemd/src/basic/io-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/io-util.h b/shared/systemd/src/basic/io-util.h similarity index 100% rename from src/systemd/src/basic/io-util.h rename to shared/systemd/src/basic/io-util.h diff --git a/src/systemd/src/basic/list.h b/shared/systemd/src/basic/list.h similarity index 100% rename from src/systemd/src/basic/list.h rename to shared/systemd/src/basic/list.h diff --git a/src/systemd/src/basic/log.h b/shared/systemd/src/basic/log.h similarity index 99% rename from src/systemd/src/basic/log.h rename to shared/systemd/src/basic/log.h index 28b07de334..364b8a49ec 100644 --- a/src/systemd/src/basic/log.h +++ b/shared/systemd/src/basic/log.h @@ -183,6 +183,7 @@ _noreturn_ void log_assert_failed_realm( #define log_assert_failed(text, ...) \ log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__) + _noreturn_ void log_assert_failed_unreachable_realm( LogRealm realm, const char *text, diff --git a/src/systemd/src/basic/macro.h b/shared/systemd/src/basic/macro.h similarity index 100% rename from src/systemd/src/basic/macro.h rename to shared/systemd/src/basic/macro.h diff --git a/src/systemd/src/basic/mempool.c b/shared/systemd/src/basic/mempool.c similarity index 98% rename from src/systemd/src/basic/mempool.c rename to shared/systemd/src/basic/mempool.c index bae4f2fcd6..0fa51fba9d 100644 --- a/src/systemd/src/basic/mempool.c +++ b/shared/systemd/src/basic/mempool.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/mempool.h b/shared/systemd/src/basic/mempool.h similarity index 100% rename from src/systemd/src/basic/mempool.h rename to shared/systemd/src/basic/mempool.h diff --git a/src/systemd/src/basic/missing_type.h b/shared/systemd/src/basic/missing_type.h similarity index 100% rename from src/systemd/src/basic/missing_type.h rename to shared/systemd/src/basic/missing_type.h diff --git a/src/systemd/src/basic/parse-util.c b/shared/systemd/src/basic/parse-util.c similarity index 99% rename from src/systemd/src/basic/parse-util.c rename to shared/systemd/src/basic/parse-util.c index 1f0b711113..02ef426f68 100644 --- a/src/systemd/src/basic/parse-util.c +++ b/shared/systemd/src/basic/parse-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/parse-util.h b/shared/systemd/src/basic/parse-util.h similarity index 100% rename from src/systemd/src/basic/parse-util.h rename to shared/systemd/src/basic/parse-util.h diff --git a/src/systemd/src/basic/path-util.c b/shared/systemd/src/basic/path-util.c similarity index 99% rename from src/systemd/src/basic/path-util.c rename to shared/systemd/src/basic/path-util.c index 1446ecdc85..6c5e725d16 100644 --- a/src/systemd/src/basic/path-util.c +++ b/shared/systemd/src/basic/path-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/path-util.h b/shared/systemd/src/basic/path-util.h similarity index 100% rename from src/systemd/src/basic/path-util.h rename to shared/systemd/src/basic/path-util.h diff --git a/src/systemd/src/basic/prioq.c b/shared/systemd/src/basic/prioq.c similarity index 99% rename from src/systemd/src/basic/prioq.c rename to shared/systemd/src/basic/prioq.c index 14e29c52e4..b218f37d9c 100644 --- a/src/systemd/src/basic/prioq.c +++ b/shared/systemd/src/basic/prioq.c @@ -10,7 +10,7 @@ * The underlying algorithm used in this implementation is a Heap. */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/prioq.h b/shared/systemd/src/basic/prioq.h similarity index 100% rename from src/systemd/src/basic/prioq.h rename to shared/systemd/src/basic/prioq.h diff --git a/src/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c similarity index 99% rename from src/systemd/src/basic/process-util.c rename to shared/systemd/src/basic/process-util.c index bf05b2e8ef..be7911a3ac 100644 --- a/src/systemd/src/basic/process-util.c +++ b/shared/systemd/src/basic/process-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/process-util.h b/shared/systemd/src/basic/process-util.h similarity index 100% rename from src/systemd/src/basic/process-util.h rename to shared/systemd/src/basic/process-util.h diff --git a/src/systemd/src/basic/random-util.c b/shared/systemd/src/basic/random-util.c similarity index 99% rename from src/systemd/src/basic/random-util.c rename to shared/systemd/src/basic/random-util.c index 39ca85eebb..7c670e591a 100644 --- a/src/systemd/src/basic/random-util.c +++ b/shared/systemd/src/basic/random-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #if defined(__i386__) || defined(__x86_64__) #include diff --git a/src/systemd/src/basic/random-util.h b/shared/systemd/src/basic/random-util.h similarity index 100% rename from src/systemd/src/basic/random-util.h rename to shared/systemd/src/basic/random-util.h diff --git a/src/systemd/src/basic/refcnt.h b/shared/systemd/src/basic/refcnt.h similarity index 100% rename from src/systemd/src/basic/refcnt.h rename to shared/systemd/src/basic/refcnt.h diff --git a/src/systemd/src/basic/set.h b/shared/systemd/src/basic/set.h similarity index 100% rename from src/systemd/src/basic/set.h rename to shared/systemd/src/basic/set.h diff --git a/src/systemd/src/basic/signal-util.h b/shared/systemd/src/basic/signal-util.h similarity index 100% rename from src/systemd/src/basic/signal-util.h rename to shared/systemd/src/basic/signal-util.h diff --git a/src/systemd/src/basic/siphash24.h b/shared/systemd/src/basic/siphash24.h similarity index 100% rename from src/systemd/src/basic/siphash24.h rename to shared/systemd/src/basic/siphash24.h diff --git a/src/systemd/src/basic/socket-util.c b/shared/systemd/src/basic/socket-util.c similarity index 99% rename from src/systemd/src/basic/socket-util.c rename to shared/systemd/src/basic/socket-util.c index 7fcedf3714..68a62f85ff 100644 --- a/src/systemd/src/basic/socket-util.c +++ b/shared/systemd/src/basic/socket-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h similarity index 100% rename from src/systemd/src/basic/socket-util.h rename to shared/systemd/src/basic/socket-util.h diff --git a/src/systemd/src/basic/sparse-endian.h b/shared/systemd/src/basic/sparse-endian.h similarity index 100% rename from src/systemd/src/basic/sparse-endian.h rename to shared/systemd/src/basic/sparse-endian.h diff --git a/src/systemd/src/basic/stat-util.c b/shared/systemd/src/basic/stat-util.c similarity index 99% rename from src/systemd/src/basic/stat-util.c rename to shared/systemd/src/basic/stat-util.c index e77f40aee5..8843aba85c 100644 --- a/src/systemd/src/basic/stat-util.c +++ b/shared/systemd/src/basic/stat-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/stat-util.h b/shared/systemd/src/basic/stat-util.h similarity index 100% rename from src/systemd/src/basic/stat-util.h rename to shared/systemd/src/basic/stat-util.h diff --git a/src/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h similarity index 100% rename from src/systemd/src/basic/stdio-util.h rename to shared/systemd/src/basic/stdio-util.h diff --git a/src/systemd/src/basic/string-table.c b/shared/systemd/src/basic/string-table.c similarity index 92% rename from src/systemd/src/basic/string-table.c rename to shared/systemd/src/basic/string-table.c index 94412ed2b4..14ae630804 100644 --- a/src/systemd/src/basic/string-table.c +++ b/shared/systemd/src/basic/string-table.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include "string-table.h" #include "string-util.h" diff --git a/src/systemd/src/basic/string-table.h b/shared/systemd/src/basic/string-table.h similarity index 100% rename from src/systemd/src/basic/string-table.h rename to shared/systemd/src/basic/string-table.h diff --git a/src/systemd/src/basic/string-util.c b/shared/systemd/src/basic/string-util.c similarity index 99% rename from src/systemd/src/basic/string-util.c rename to shared/systemd/src/basic/string-util.c index 1651239d8c..de35c18092 100644 --- a/src/systemd/src/basic/string-util.c +++ b/shared/systemd/src/basic/string-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/string-util.h b/shared/systemd/src/basic/string-util.h similarity index 100% rename from src/systemd/src/basic/string-util.h rename to shared/systemd/src/basic/string-util.h diff --git a/src/systemd/src/basic/strv.c b/shared/systemd/src/basic/strv.c similarity index 99% rename from src/systemd/src/basic/strv.c rename to shared/systemd/src/basic/strv.c index b679624f0c..1615c9baf8 100644 --- a/src/systemd/src/basic/strv.c +++ b/shared/systemd/src/basic/strv.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/strv.h b/shared/systemd/src/basic/strv.h similarity index 100% rename from src/systemd/src/basic/strv.h rename to shared/systemd/src/basic/strv.h diff --git a/src/systemd/src/basic/time-util.c b/shared/systemd/src/basic/time-util.c similarity index 99% rename from src/systemd/src/basic/time-util.c rename to shared/systemd/src/basic/time-util.c index a2f616d148..0f00c4a772 100644 --- a/src/systemd/src/basic/time-util.c +++ b/shared/systemd/src/basic/time-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include @@ -26,7 +26,9 @@ #include "parse-util.h" #include "path-util.h" #include "process-util.h" +#if 0 /* NM_IGNORED */ #include "serialize.h" +#endif /* NM_IGNORED */ #include "stat-util.h" #include "string-util.h" #include "strv.h" diff --git a/src/systemd/src/basic/time-util.h b/shared/systemd/src/basic/time-util.h similarity index 100% rename from src/systemd/src/basic/time-util.h rename to shared/systemd/src/basic/time-util.h diff --git a/src/systemd/src/basic/tmpfile-util.c b/shared/systemd/src/basic/tmpfile-util.c similarity index 99% rename from src/systemd/src/basic/tmpfile-util.c rename to shared/systemd/src/basic/tmpfile-util.c index b40da5dc8d..06e325f089 100644 --- a/src/systemd/src/basic/tmpfile-util.c +++ b/shared/systemd/src/basic/tmpfile-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include diff --git a/src/systemd/src/basic/tmpfile-util.h b/shared/systemd/src/basic/tmpfile-util.h similarity index 100% rename from src/systemd/src/basic/tmpfile-util.h rename to shared/systemd/src/basic/tmpfile-util.h diff --git a/src/systemd/src/basic/umask-util.h b/shared/systemd/src/basic/umask-util.h similarity index 100% rename from src/systemd/src/basic/umask-util.h rename to shared/systemd/src/basic/umask-util.h diff --git a/src/systemd/src/basic/utf8.c b/shared/systemd/src/basic/utf8.c similarity index 99% rename from src/systemd/src/basic/utf8.c rename to shared/systemd/src/basic/utf8.c index 25f556d9dc..e9958c9179 100644 --- a/src/systemd/src/basic/utf8.c +++ b/shared/systemd/src/basic/utf8.c @@ -23,7 +23,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/utf8.h b/shared/systemd/src/basic/utf8.h similarity index 100% rename from src/systemd/src/basic/utf8.h rename to shared/systemd/src/basic/utf8.h diff --git a/src/systemd/src/basic/util.c b/shared/systemd/src/basic/util.c similarity index 99% rename from src/systemd/src/basic/util.c rename to shared/systemd/src/basic/util.c index 382e95a072..50986cfb95 100644 --- a/src/systemd/src/basic/util.c +++ b/shared/systemd/src/basic/util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-shared.h" #include #include diff --git a/src/systemd/src/basic/util.h b/shared/systemd/src/basic/util.h similarity index 100% rename from src/systemd/src/basic/util.h rename to shared/systemd/src/basic/util.h diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index b3f2a70ba0..fc0c5b8d3b 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -34,7 +34,7 @@ #include "platform/nm-platform.h" #include "nm-auth-utils.h" -#include "systemd/nm-sd-utils.h" +#include "systemd/nm-sd-utils-shared.h" /*****************************************************************************/ diff --git a/src/meson.build b/src/meson.build index ec1c4241c1..ff2276e3f8 100644 --- a/src/meson.build +++ b/src/meson.build @@ -176,7 +176,11 @@ libnetwork_manager = static_library( sources: sources, dependencies: nm_deps, c_args: cflags, - link_with: [libnetwork_manager_base, libsystemd_nm], + link_with: [ + libnetwork_manager_base, + libnm_systemd_core, + libnm_systemd_shared, + ], ) deps = [ @@ -193,7 +197,11 @@ executable( name + '.c', dependencies: deps, c_args: cflags, - link_with: [libnetwork_manager_base, libsystemd_nm], + link_with: [ + libnetwork_manager_base, + libnm_systemd_core, + libnm_systemd_shared, + ], link_args: ldflags_linker_script_binary, link_depends: linker_script_binary, install: true, diff --git a/src/systemd/meson.build b/src/systemd/meson.build index adeeb6800b..7619783490 100644 --- a/src/systemd/meson.build +++ b/src/systemd/meson.build @@ -1,77 +1,47 @@ -sources = files( - 'sd-adapt/nm-sd-adapt.c', - 'src/basic/alloc-util.c', - 'src/basic/escape.c', - 'src/basic/env-file.c', - 'src/basic/env-util.c', - 'src/basic/ether-addr-util.c', - 'src/basic/extract-word.c', - 'src/basic/fd-util.c', - 'src/basic/fileio.c', - 'src/basic/fs-util.c', - 'src/basic/hash-funcs.c', - 'src/basic/hashmap.c', - 'src/basic/hexdecoct.c', - 'src/basic/hostname-util.c', - 'src/basic/in-addr-util.c', - 'src/basic/io-util.c', - 'src/basic/mempool.c', - 'src/basic/parse-util.c', - 'src/basic/path-util.c', - 'src/basic/prioq.c', - 'src/basic/process-util.c', - 'src/basic/random-util.c', - 'src/basic/socket-util.c', - 'src/basic/stat-util.c', - 'src/basic/string-table.c', - 'src/basic/string-util.c', - 'src/basic/strv.c', - 'src/basic/time-util.c', - 'src/basic/tmpfile-util.c', - 'src/basic/utf8.c', - 'src/basic/util.c', - 'src/libsystemd-network/arp-util.c', - 'src/libsystemd-network/dhcp-identifier.c', - 'src/libsystemd-network/dhcp-network.c', - 'src/libsystemd-network/dhcp-option.c', - 'src/libsystemd-network/dhcp-packet.c', - 'src/libsystemd-network/dhcp6-network.c', - 'src/libsystemd-network/dhcp6-option.c', - 'src/libsystemd-network/lldp-neighbor.c', - 'src/libsystemd-network/lldp-network.c', - 'src/libsystemd-network/network-internal.c', - 'src/libsystemd-network/sd-dhcp-client.c', - 'src/libsystemd-network/sd-dhcp-lease.c', - 'src/libsystemd-network/sd-dhcp6-client.c', - 'src/libsystemd-network/sd-dhcp6-lease.c', - 'src/libsystemd-network/sd-ipv4acd.c', - 'src/libsystemd-network/sd-ipv4ll.c', - 'src/libsystemd-network/sd-lldp.c', - 'src/libsystemd/sd-event/event-util.c', - 'src/libsystemd/sd-event/sd-event.c', - 'src/libsystemd/sd-id128/id128-util.c', - 'src/libsystemd/sd-id128/sd-id128.c', - 'src/shared/dns-domain.c', - 'nm-sd.c', - 'nm-sd-utils.c', -) - -incs = [ - src_inc, - include_directories( - 'sd-adapt', - 'src/basic', - 'src/libsystemd-network', - 'src/libsystemd/sd-event', - 'src/shared', - 'src/systemd', - ) -] - -libsystemd_nm = static_library( - 'systemd-nm', - sources: sources, - include_directories: incs, - dependencies: nm_core_dep, - c_args: '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD', +libnm_systemd_core = static_library( + 'nm-systemd-core', + sources: files( + 'sd-adapt-core/nm-sd-adapt-core.c', + 'src/libsystemd-network/arp-util.c', + 'src/libsystemd-network/dhcp-identifier.c', + 'src/libsystemd-network/dhcp-network.c', + 'src/libsystemd-network/dhcp-option.c', + 'src/libsystemd-network/dhcp-packet.c', + 'src/libsystemd-network/dhcp6-network.c', + 'src/libsystemd-network/dhcp6-option.c', + 'src/libsystemd-network/lldp-neighbor.c', + 'src/libsystemd-network/lldp-network.c', + 'src/libsystemd-network/network-internal.c', + 'src/libsystemd-network/sd-dhcp-client.c', + 'src/libsystemd-network/sd-dhcp-lease.c', + 'src/libsystemd-network/sd-dhcp6-client.c', + 'src/libsystemd-network/sd-dhcp6-lease.c', + 'src/libsystemd-network/sd-ipv4acd.c', + 'src/libsystemd-network/sd-ipv4ll.c', + 'src/libsystemd-network/sd-lldp.c', + 'src/libsystemd/sd-event/event-util.c', + 'src/libsystemd/sd-event/sd-event.c', + 'src/libsystemd/sd-id128/id128-util.c', + 'src/libsystemd/sd-id128/sd-id128.c', + 'src/shared/dns-domain.c', + 'nm-sd.c', + 'nm-sd-utils-core.c', + ), + include_directories: [ + src_inc, + include_directories( + 'sd-adapt-core', + 'src/libsystemd-network', + 'src/libsystemd/sd-event', + 'src/shared', + 'src/systemd', + ) + ], + dependencies: [ + libnm_systemd_shared_dep, + nm_core_dep, + ], + c_args: [ + '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD', + ], ) diff --git a/src/systemd/nm-sd-utils-core.c b/src/systemd/nm-sd-utils-core.c new file mode 100644 index 0000000000..425607891c --- /dev/null +++ b/src/systemd/nm-sd-utils-core.c @@ -0,0 +1,40 @@ +/* This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright (C) 2018 Red Hat, Inc. + */ + +#include "nm-default.h" + +#include "nm-sd-utils-core.h" + +#include "nm-core-internal.h" + +#include "nm-sd-adapt-core.h" + +#include "sd-id128.h" + +/*****************************************************************************/ + +NMUuid * +nm_sd_utils_id128_get_machine (NMUuid *out_uuid) +{ + g_assert (out_uuid); + + G_STATIC_ASSERT_EXPR (sizeof (*out_uuid) == sizeof (sd_id128_t)); + if (sd_id128_get_machine ((sd_id128_t *) out_uuid) < 0) + return NULL; + return out_uuid; +} diff --git a/src/systemd/nm-sd-utils-core.h b/src/systemd/nm-sd-utils-core.h new file mode 100644 index 0000000000..a7b092b320 --- /dev/null +++ b/src/systemd/nm-sd-utils-core.h @@ -0,0 +1,30 @@ +/* This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright (C) 2018 Red Hat, Inc. + */ + +#ifndef __NM_SD_UTILS_CORE_H__ +#define __NM_SD_UTILS_CORE_H__ + +/*****************************************************************************/ + +struct _NMUuid; + +struct _NMUuid *nm_sd_utils_id128_get_machine (struct _NMUuid *out_uuid); + +/*****************************************************************************/ + +#endif /* __NM_SD_UTILS_CORE_H__ */ diff --git a/src/systemd/nm-sd.c b/src/systemd/nm-sd.c index 44867ada4f..4009c61773 100644 --- a/src/systemd/nm-sd.c +++ b/src/systemd/nm-sd.c @@ -139,7 +139,7 @@ const bool mempool_use_allowed = true; /* ensure that defines in nm-sd.h correspond to the internal defines. */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include "dhcp-lease-internal.h" /*****************************************************************************/ diff --git a/src/systemd/sd-adapt/condition.h b/src/systemd/sd-adapt-core/condition.h similarity index 100% rename from src/systemd/sd-adapt/condition.h rename to src/systemd/sd-adapt-core/condition.h diff --git a/src/systemd/sd-adapt/conf-parser.h b/src/systemd/sd-adapt-core/conf-parser.h similarity index 100% rename from src/systemd/sd-adapt/conf-parser.h rename to src/systemd/sd-adapt-core/conf-parser.h diff --git a/src/systemd/sd-adapt/khash.h b/src/systemd/sd-adapt-core/khash.h similarity index 100% rename from src/systemd/sd-adapt/khash.h rename to src/systemd/sd-adapt-core/khash.h diff --git a/src/systemd/sd-adapt/nm-sd-adapt.c b/src/systemd/sd-adapt-core/nm-sd-adapt-core.c similarity index 97% rename from src/systemd/sd-adapt/nm-sd-adapt.c rename to src/systemd/sd-adapt-core/nm-sd-adapt-core.c index 4e3082762d..d7ed687e46 100644 --- a/src/systemd/sd-adapt/nm-sd-adapt.c +++ b/src/systemd/sd-adapt-core/nm-sd-adapt-core.c @@ -18,7 +18,7 @@ #include "nm-default.h" -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include "fd-util.h" diff --git a/src/systemd/sd-adapt-core/nm-sd-adapt-core.h b/src/systemd/sd-adapt-core/nm-sd-adapt-core.h new file mode 100644 index 0000000000..8c07c53a4d --- /dev/null +++ b/src/systemd/sd-adapt-core/nm-sd-adapt-core.h @@ -0,0 +1,101 @@ +/* This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright (C) 2014 - 2018 Red Hat, Inc. + */ + +#ifndef __NM_SD_ADAPT_CORE_H__ +#define __NM_SD_ADAPT_CORE_H__ + +#include "nm-default.h" + +#include +#include +#include + +#include "systemd/sd-adapt-shared/nm-sd-adapt-shared.h" + +#ifndef HAVE_SYS_AUXV_H +#define HAVE_SYS_AUXV_H 0 +#endif + +/***************************************************************************** + * The remainder of the header is only enabled when building the systemd code + * itself. + *****************************************************************************/ + +#if (NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD + +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_AUXV_H +#include +#endif +#include +#include +#include + +#include + +/* Missing in Linux 3.2.0, in Ubuntu 12.04 */ +#ifndef BPF_XOR +#define BPF_XOR 0xa0 +#endif + +#ifndef ETHERTYPE_LLDP +#define ETHERTYPE_LLDP 0x88cc +#endif + +#ifndef HAVE_SECURE_GETENV +# ifdef HAVE___SECURE_GETENV +# define secure_getenv __secure_getenv +# else +# error neither secure_getenv nor __secure_getenv is available +# endif +#endif + +/*****************************************************************************/ + +static inline int +sd_notify (int unset_environment, const char *state) +{ + return 0; +} + +/* Can't include both net/if.h and linux/if.h; so have to define this here */ +#ifndef IF_NAMESIZE +#define IF_NAMESIZE 16 +#endif + +#ifndef IFNAMSIZ +#define IFNAMSIZ IF_NAMESIZE +#endif + +#ifndef MAX_HANDLE_SZ +#define MAX_HANDLE_SZ 128 +#endif + +#include "sd-id128.h" +#include "sparse-endian.h" +#include "async.h" +#include "util.h" + +#endif /* (NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_SYSTEMD */ + +#endif /* __NM_SD_ADAPT_CORE_H__ */ + diff --git a/src/systemd/sd-adapt/sd-daemon.h b/src/systemd/sd-adapt-core/sd-daemon.h similarity index 100% rename from src/systemd/sd-adapt/sd-daemon.h rename to src/systemd/sd-adapt-core/sd-daemon.h diff --git a/src/systemd/sd-adapt/sd-device.h b/src/systemd/sd-adapt-core/sd-device.h similarity index 100% rename from src/systemd/sd-adapt/sd-device.h rename to src/systemd/sd-adapt-core/sd-device.h diff --git a/src/systemd/sd-adapt/stat-util.h b/src/systemd/sd-adapt-core/stat-util.h similarity index 100% rename from src/systemd/sd-adapt/stat-util.h rename to src/systemd/sd-adapt-core/stat-util.h diff --git a/src/systemd/sd-adapt/serialize.h b/src/systemd/sd-adapt/serialize.h deleted file mode 100644 index 637892c2d6..0000000000 --- a/src/systemd/sd-adapt/serialize.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -/* dummy header */ diff --git a/src/systemd/src/libsystemd-network/arp-util.c b/src/systemd/src/libsystemd-network/arp-util.c index 4fbecb540c..154ba6b72e 100644 --- a/src/systemd/src/libsystemd-network/arp-util.c +++ b/src/systemd/src/libsystemd-network/arp-util.c @@ -3,7 +3,7 @@ Copyright © 2014 Axis Communications AB. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp-identifier.c b/src/systemd/src/libsystemd-network/dhcp-identifier.c index e2055386b5..91f5e1b0c8 100644 --- a/src/systemd/src/libsystemd-network/dhcp-identifier.c +++ b/src/systemd/src/libsystemd-network/dhcp-identifier.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp-network.c b/src/systemd/src/libsystemd-network/dhcp-network.c index 8d8cdf9da7..ba59690817 100644 --- a/src/systemd/src/libsystemd-network/dhcp-network.c +++ b/src/systemd/src/libsystemd-network/dhcp-network.c @@ -3,7 +3,7 @@ Copyright © 2013 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp-option.c b/src/systemd/src/libsystemd-network/dhcp-option.c index 4a4f7de020..b065ae499e 100644 --- a/src/systemd/src/libsystemd-network/dhcp-option.c +++ b/src/systemd/src/libsystemd-network/dhcp-option.c @@ -3,7 +3,7 @@ Copyright © 2013 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp-packet.c b/src/systemd/src/libsystemd-network/dhcp-packet.c index a2e14ed2ee..9e565e2887 100644 --- a/src/systemd/src/libsystemd-network/dhcp-packet.c +++ b/src/systemd/src/libsystemd-network/dhcp-packet.c @@ -3,7 +3,7 @@ Copyright © 2013 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp6-network.c b/src/systemd/src/libsystemd-network/dhcp6-network.c index 22e4201746..73c195a71a 100644 --- a/src/systemd/src/libsystemd-network/dhcp6-network.c +++ b/src/systemd/src/libsystemd-network/dhcp6-network.c @@ -3,7 +3,7 @@ Copyright © 2014 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/dhcp6-option.c b/src/systemd/src/libsystemd-network/dhcp6-option.c index c53529d8bf..5a83aaaa45 100644 --- a/src/systemd/src/libsystemd-network/dhcp6-option.c +++ b/src/systemd/src/libsystemd-network/dhcp6-option.c @@ -3,7 +3,7 @@ Copyright © 2014-2015 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/lldp-neighbor.c b/src/systemd/src/libsystemd-network/lldp-neighbor.c index c2627bbe6e..0b4929af36 100644 --- a/src/systemd/src/libsystemd-network/lldp-neighbor.c +++ b/src/systemd/src/libsystemd-network/lldp-neighbor.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include "alloc-util.h" #include "escape.h" diff --git a/src/systemd/src/libsystemd-network/lldp-network.c b/src/systemd/src/libsystemd-network/lldp-network.c index c2af0368c1..5ba9f081ea 100644 --- a/src/systemd/src/libsystemd-network/lldp-network.c +++ b/src/systemd/src/libsystemd-network/lldp-network.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/network-internal.c b/src/systemd/src/libsystemd-network/network-internal.c index 520f0783c3..d33c4febcc 100644 --- a/src/systemd/src/libsystemd-network/network-internal.c +++ b/src/systemd/src/libsystemd-network/network-internal.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-dhcp-client.c b/src/systemd/src/libsystemd-network/sd-dhcp-client.c index aac24767c8..4fb0688062 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp-client.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp-client.c @@ -3,7 +3,7 @@ Copyright © 2013 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-dhcp-lease.c b/src/systemd/src/libsystemd-network/sd-dhcp-lease.c index b95ad0c978..fc5077c2b2 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp-lease.c @@ -3,7 +3,7 @@ Copyright © 2013 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c index 63b7cf2b71..6b55083ec6 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp6-client.c @@ -3,7 +3,7 @@ Copyright © 2014-2015 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c index 8c41dce0d0..48188bf3ec 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c @@ -3,7 +3,7 @@ Copyright © 2014-2015 Intel Corporation. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include diff --git a/src/systemd/src/libsystemd-network/sd-ipv4acd.c b/src/systemd/src/libsystemd-network/sd-ipv4acd.c index 210ff89efa..b43da6b496 100644 --- a/src/systemd/src/libsystemd-network/sd-ipv4acd.c +++ b/src/systemd/src/libsystemd-network/sd-ipv4acd.c @@ -3,7 +3,7 @@ Copyright © 2014 Axis Communications AB. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-ipv4ll.c b/src/systemd/src/libsystemd-network/sd-ipv4ll.c index 8f098f20dd..f1b94829af 100644 --- a/src/systemd/src/libsystemd-network/sd-ipv4ll.c +++ b/src/systemd/src/libsystemd-network/sd-ipv4ll.c @@ -3,7 +3,7 @@ Copyright © 2014 Axis Communications AB. All rights reserved. ***/ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd-network/sd-lldp.c b/src/systemd/src/libsystemd-network/sd-lldp.c index 72cb6e8bd5..741128e1d0 100644 --- a/src/systemd/src/libsystemd-network/sd-lldp.c +++ b/src/systemd/src/libsystemd-network/sd-lldp.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd/sd-event/event-util.c b/src/systemd/src/libsystemd/sd-event/event-util.c index 1eb54de442..e8384cfd6b 100644 --- a/src/systemd/src/libsystemd/sd-event/event-util.c +++ b/src/systemd/src/libsystemd/sd-event/event-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include diff --git a/src/systemd/src/libsystemd/sd-event/sd-event.c b/src/systemd/src/libsystemd/sd-event/sd-event.c index fc8c5148ee..e49cc9d865 100644 --- a/src/systemd/src/libsystemd/sd-event/sd-event.c +++ b/src/systemd/src/libsystemd/sd-event/sd-event.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd/sd-id128/id128-util.c b/src/systemd/src/libsystemd/sd-id128/id128-util.c index 1e654f0ea4..f8f0883caf 100644 --- a/src/systemd/src/libsystemd/sd-id128/id128-util.c +++ b/src/systemd/src/libsystemd/sd-id128/id128-util.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/libsystemd/sd-id128/sd-id128.c b/src/systemd/src/libsystemd/sd-id128/sd-id128.c index 4cad3bccd7..4a57b82fb0 100644 --- a/src/systemd/src/libsystemd/sd-id128/sd-id128.c +++ b/src/systemd/src/libsystemd/sd-id128/sd-id128.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #include #include diff --git a/src/systemd/src/shared/dns-domain.c b/src/systemd/src/shared/dns-domain.c index ccf6298eea..ebea861f15 100644 --- a/src/systemd/src/shared/dns-domain.c +++ b/src/systemd/src/shared/dns-domain.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -#include "nm-sd-adapt.h" +#include "nm-sd-adapt-core.h" #if 0 /* NM_IGNORED */ #if HAVE_LIBIDN2 diff --git a/src/tests/meson.build b/src/tests/meson.build index a009c8fc2c..9c51e8d423 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -37,7 +37,10 @@ exe = executable( include_directories: src_inc, dependencies: nm_core_dep, c_args: cflags, - link_with: libsystemd_nm, + link_with: [ + libnm_systemd_core, + libnm_systemd_shared, + ], ) test( diff --git a/src/tests/test-general.c b/src/tests/test-general.c index c9aad4b281..0166655d66 100644 --- a/src/tests/test-general.c +++ b/src/tests/test-general.c @@ -31,7 +31,7 @@ #include "NetworkManagerUtils.h" #include "nm-core-internal.h" #include "nm-core-utils.h" -#include "systemd/nm-sd-utils.h" +#include "systemd/nm-sd-utils-core.h" #include "dns/nm-dns-manager.h" #include "nm-connectivity.h" diff --git a/src/tests/test-systemd.c b/src/tests/test-systemd.c index 6015e9df07..2d018517c5 100644 --- a/src/tests/test-systemd.c +++ b/src/tests/test-systemd.c @@ -20,7 +20,7 @@ #include "nm-default.h" #include "systemd/nm-sd.h" -#include "systemd/nm-sd-utils.h" +#include "systemd/nm-sd-utils-shared.h" #include "nm-test-utils-core.h" @@ -48,6 +48,13 @@ nm_utils_get_monotonic_timestamp_s (void) NMLogDomain _nm_logging_enabled_state[_LOGL_N_REAL]; +gboolean +_nm_log_enabled (NMLogLevel level, + NMLogDomain domain) +{ + return FALSE; +} + void _nm_log_impl (const char *file, guint line, From 0298d540782b910bab15dd112eab6c006ed6b8bc Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 19:56:19 +0100 Subject: [PATCH 6/7] 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. --- shared/systemd/nm-sd-utils-shared.c | 37 +++++++++++ shared/systemd/nm-sd-utils-shared.h | 6 ++ shared/systemd/src/basic/hexdecoct.c | 4 ++ src/tests/test-systemd.c | 96 ++++++++++++++++++++++++++++ 4 files changed, 143 insertions(+) diff --git a/shared/systemd/nm-sd-utils-shared.c b/shared/systemd/nm-sd-utils-shared.c index 6c71702502..0e89fbb7d1 100644 --- a/shared/systemd/nm-sd-utils-shared.c +++ b/shared/systemd/nm-sd-utils-shared.c @@ -23,6 +23,7 @@ #include "nm-sd-adapt-shared.h" #include "path-util.h" +#include "hexdecoct.h" /*****************************************************************************/ @@ -43,3 +44,39 @@ nm_sd_utils_path_startswith (const char *path, const char *prefix) { return path_startswith (path, prefix); } + +/*****************************************************************************/ + +gboolean +nm_sd_utils_unbase64char (char ch, gboolean accept_padding_equal) +{ + if ( ch == '=' + && accept_padding_equal) + return G_MAXINT; + return unbase64char (ch); +} + +/** + * nm_sd_utils_unbase64mem: + * @p: a valid base64 string. Whitespace is ignored, but invalid encodings + * will cause the function to fail. + * @l: the length of @p. @p is not treated as NUL terminated string but + * merely as a buffer of ascii characters. + * @mem: (transfer full): the decoded buffer on success. + * @len: the length of @mem on success. + * + * glib provides g_base64_decode(), but that does not report any errors + * from invalid encodings. Expose systemd's implementation which does + * reject invalid inputs. + * + * Returns: a non-negative code on success. Invalid encoding let the + * function fail. + */ +int +nm_sd_utils_unbase64mem (const char *p, + size_t l, + guint8 **mem, + size_t *len) +{ + return unbase64mem (p, l, (void **) mem, len); +} diff --git a/shared/systemd/nm-sd-utils-shared.h b/shared/systemd/nm-sd-utils-shared.h index 3103b3c7c4..eddf0c285a 100644 --- a/shared/systemd/nm-sd-utils-shared.h +++ b/shared/systemd/nm-sd-utils-shared.h @@ -29,4 +29,10 @@ const char *nm_sd_utils_path_startswith (const char *path, const char *prefix); /*****************************************************************************/ +int nm_sd_utils_unbase64char (char ch, gboolean accept_padding_equal); + +int nm_sd_utils_unbase64mem (const char *p, size_t l, guint8 **mem, size_t *len); + +/*****************************************************************************/ + #endif /* __NM_SD_UTILS_SHARED_H__ */ diff --git a/shared/systemd/src/basic/hexdecoct.c b/shared/systemd/src/basic/hexdecoct.c index 6a9869bcc4..ffd9a8f60f 100644 --- a/shared/systemd/src/basic/hexdecoct.c +++ b/shared/systemd/src/basic/hexdecoct.c @@ -515,6 +515,7 @@ char base64char(int x) { "0123456789+/"; return table[x & 63]; } +#endif /* NM_IGNORED */ int unbase64char(char c) { unsigned offset; @@ -545,6 +546,7 @@ int unbase64char(char c) { return -EINVAL; } +#if 0 /* NM_IGNORED */ ssize_t base64mem(const void *p, size_t l, char **out) { char *r, *z; const uint8_t *x; @@ -644,6 +646,7 @@ int base64_append( /* leave plen on the left, keep last column free */ return base64_append_width(prefix, plen, NULL, plen, p, l, width - plen - 1); } +#endif /* NM_IGNORED */ static int unbase64_next(const char **p, size_t *l) { int ret; @@ -775,6 +778,7 @@ int unbase64mem(const char *p, size_t l, void **ret, size_t *ret_size) { return 0; } +#if 0 /* NM_IGNORED */ void hexdump(FILE *f, const void *p, size_t s) { const uint8_t *b = p; unsigned n = 0; diff --git a/src/tests/test-systemd.c b/src/tests/test-systemd.c index 2d018517c5..05e2277665 100644 --- a/src/tests/test-systemd.c +++ b/src/tests/test-systemd.c @@ -225,6 +225,101 @@ test_path_equal (void) /*****************************************************************************/ +static void +_test_unbase64char (char ch, gboolean maybe_invalid) +{ + int r; + + r = nm_sd_utils_unbase64char (ch, FALSE); + + if (ch == '=') { + g_assert (!maybe_invalid); + g_assert_cmpint (r, <, 0); + g_assert_cmpint (nm_sd_utils_unbase64char (ch, TRUE), ==, G_MAXINT); + } else { + g_assert_cmpint (r, ==, nm_sd_utils_unbase64char (ch, TRUE)); + if (r >= 0) + g_assert_cmpint (r, <=, 255); + if (!maybe_invalid) + g_assert_cmpint (r, >=, 0); + } +} + +static void +_test_unbase64mem_mem (const char *base64, const guint8 *expected_arr, gsize expected_len) +{ + gs_free char *expected_base64 = NULL; + int r; + gs_free guint8 *exp2_arr = NULL; + gs_free guint8 *exp3_arr = NULL; + gsize exp2_len; + gsize exp3_len; + gsize i; + + expected_base64 = g_base64_encode (expected_arr, expected_len); + + for (i = 0; expected_base64[i]; i++) + _test_unbase64char (expected_base64[i], FALSE); + + r = nm_sd_utils_unbase64mem (expected_base64, strlen (expected_base64), &exp2_arr, &exp2_len); + g_assert_cmpint (r, ==, 0); + g_assert_cmpmem (expected_arr, expected_len, exp2_arr, exp2_len); + + if (!nm_streq (base64, expected_base64)) { + r = nm_sd_utils_unbase64mem (base64, strlen (base64), &exp3_arr, &exp3_len); + g_assert_cmpint (r, ==, 0); + g_assert_cmpmem (expected_arr, expected_len, exp3_arr, exp3_len); + } +} + +#define _test_unbase64mem(base64, expected_str) _test_unbase64mem_mem (base64, (const guint8 *) ""expected_str"", NM_STRLEN (expected_str)) + +static void +_test_unbase64mem_inval (const char *base64) +{ + gs_free guint8 *exp_arr = NULL; + gsize exp_len = 0; + int r; + + r = nm_sd_utils_unbase64mem (base64, strlen (base64), &exp_arr, &exp_len); + g_assert_cmpint (r, <, 0); + g_assert (!exp_arr); + g_assert (exp_len == 0); +} + +static void +test_nm_sd_utils_unbase64mem (void) +{ + gs_free char *rnd_base64 = NULL; + guint8 rnd_buf[30]; + guint i, rnd_len; + + _test_unbase64mem ("", ""); + _test_unbase64mem (" ", ""); + _test_unbase64mem (" Y Q == ", "a"); + _test_unbase64mem (" Y WJjZGV mZ 2g = ", "abcdefgh"); + _test_unbase64mem_inval (" Y %WJjZGV mZ 2g = "); + _test_unbase64mem_inval (" Y %WJjZGV mZ 2g = a"); + _test_unbase64mem ("YQ==", "a"); + _test_unbase64mem_inval ("YQ==a"); + + rnd_len = nmtst_get_rand_int () % sizeof (rnd_buf); + for (i = 0; i < rnd_len; i++) + rnd_buf[i] = nmtst_get_rand_int () % 256; + rnd_base64 = g_base64_encode (rnd_buf, rnd_len); + _test_unbase64mem_mem (rnd_base64, rnd_buf, rnd_len); + + _test_unbase64char ('=', FALSE); + for (i = 0; i < 10; i++) { + char ch = nmtst_get_rand_int () % 256; + + if (ch != '=') + _test_unbase64char (ch, TRUE); + } +} + +/*****************************************************************************/ + NMTST_DEFINE (); int @@ -236,6 +331,7 @@ main (int argc, char **argv) g_test_add_func ("/systemd/lldp/create", test_lldp_create); g_test_add_func ("/systemd/sd-event", test_sd_event); g_test_add_func ("/systemd/test_path_equal", test_path_equal); + g_test_add_func ("/systemd/test_nm_sd_utils_unbase64mem", test_nm_sd_utils_unbase64mem); return g_test_run (); } From c4512f839fd1c22251fa3779eb799a471e5af4a6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 28 Dec 2018 21:30:03 +0100 Subject: [PATCH 7/7] libnm: use "libnm-systemd-shared.a" in "libnm-core.la" (and "libnm.so") It's not yet used, but it will be. We will need nm_sd_utils_unbase64mem() to strictly validate WireGuard settings, which contain keys in base64 encoding. Note that we also need a stub implementation for logging. This will do nothing for all logging from "libnm-systemd-shared.a". This makes sense because "libnm.so" as a library should not log directly. Also, "libnm.so" will only use a small portion of "libnm-systemd-shared.a" which doesn't log anything. Thus this code is unused and dropped by the linker with "--gc-sections". --- Makefile.am | 23 ++++++++++++++++ libnm-core/meson.build | 1 + libnm-core/tests/meson.build | 5 +++- libnm/meson.build | 1 + libnm/tests/meson.build | 1 + shared/meson.build | 25 ++++++++++++++++++ shared/systemd/nm-logging-stub.c | 45 ++++++++++++++++++++++++++++++++ src/systemd/meson.build | 1 - 8 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 shared/systemd/nm-logging-stub.c diff --git a/Makefile.am b/Makefile.am index 4685fbda24..c8a5ed0617 100644 --- a/Makefile.am +++ b/Makefile.am @@ -940,6 +940,8 @@ nodist_libnm_core_tests_test_general_SOURCES = \ libnm_core_tests_ldadd = \ libnm-core/libnm-core.la \ + shared/systemd/libnm-systemd-shared.la \ + shared/systemd/libnm-systemd-logging-stub.la \ shared/nm-utils/libnm-utils-base.la \ $(libnm_crypto_lib) \ $(GLIB_LIBS) @@ -1191,6 +1193,8 @@ EXTRA_libnm_libnm_la_DEPENDENCIES = \ libnm_libnm_la_LIBADD = \ libnm/libnm-utils.la \ + shared/systemd/libnm-systemd-shared.la \ + shared/systemd/libnm-systemd-logging-stub.la \ shared/nm-utils/libnm-utils-udev.la \ $(DL_LIBS) \ $(GLIB_LIBS) \ @@ -1357,6 +1361,8 @@ libnm_tests_cppflags = \ libnm_tests_ldadd = \ libnm/libnm.la \ + shared/systemd/libnm-systemd-shared.la \ + shared/systemd/libnm-systemd-logging-stub.la \ $(GLIB_LIBS) libnm_tests_ldflags = \ @@ -1517,6 +1523,22 @@ libsystemd_libadd = \ $(CODE_COVERAGE_LDFLAGS) \ $(NULL) +noinst_LTLIBRARIES += shared/systemd/libnm-systemd-logging-stub.la + +shared_systemd_libnm_systemd_logging_stub_la_CPPFLAGS = \ + $(libsystemd_cppflags) \ + -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED \ + -DG_LOG_DOMAIN=\""libnm"\" \ + $(NULL) + +shared_systemd_libnm_systemd_logging_stub_la_SOURCES = \ + shared/systemd/nm-logging-stub.c \ + $(NULL) + +shared_systemd_libnm_systemd_logging_stub_la_LIBADD = \ + $(libsystemd_libadd) \ + $(NULL) + noinst_LTLIBRARIES += shared/systemd/libnm-systemd-shared.la shared_systemd_libnm_systemd_shared_la_CPPFLAGS = \ @@ -2105,6 +2127,7 @@ src_initrd_nm_initrd_generator_LDADD = \ libnm-core/libnm-core.la \ src/initrd/libnmi-core.la \ src/libNetworkManagerBase.la \ + shared/systemd/libnm-systemd-shared.la \ shared/nm-utils/libnm-utils-base.la \ $(GLIB_LIBS) \ $(NULL) diff --git a/libnm-core/meson.build b/libnm-core/meson.build index 84f72cbe83..812f12bbcc 100644 --- a/libnm-core/meson.build +++ b/libnm-core/meson.build @@ -200,6 +200,7 @@ nm_core_dep = declare_dependency( dependencies: [ shared_dep, shared_c_siphash_dep, + libnm_systemd_shared_dep, ], ) diff --git a/libnm-core/tests/meson.build b/libnm-core/tests/meson.build index 265200a696..b941107432 100644 --- a/libnm-core/tests/meson.build +++ b/libnm-core/tests/meson.build @@ -33,7 +33,10 @@ foreach test_unit: test_units exe = executable( 'libnm-core-' + test_unit, [test_unit + '.c'] + enum, - dependencies: nm_core_dep, + dependencies: [ + nm_core_dep, + libnm_systemd_shared_no_logging_dep, + ], c_args: [ '-DNETWORKMANAGER_COMPILATION_TEST', '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIBNM_CORE', diff --git a/libnm/meson.build b/libnm/meson.build index 64df4674b4..2e44a6a49b 100644 --- a/libnm/meson.build +++ b/libnm/meson.build @@ -147,6 +147,7 @@ deps = [ libudev_dep, shared_dep, uuid_dep, + libnm_systemd_shared_no_logging_dep, ] linker_script = join_paths(meson.current_source_dir(), 'libnm.ver') diff --git a/libnm/tests/meson.build b/libnm/tests/meson.build index 16aafa60e9..d0a2dd306e 100644 --- a/libnm/tests/meson.build +++ b/libnm/tests/meson.build @@ -20,6 +20,7 @@ foreach test_unit: test_units dependencies: [ libnm_dep, nm_core_dep, + libnm_systemd_shared_no_logging_dep, ], c_args: cflags, link_with: test_unit[1], diff --git a/shared/meson.build b/shared/meson.build index 76f09ee8c0..54ef3a2e31 100644 --- a/shared/meson.build +++ b/shared/meson.build @@ -207,3 +207,28 @@ libnm_systemd_shared_dep = declare_dependency( libnm_systemd_shared, ], ) + +libnm_systemd_logging_stub = static_library( + 'nm-systemd-logging-stub', + sources: files( + 'systemd/nm-logging-stub.c', + ), + include_directories: include_directories( + 'systemd/sd-adapt-shared', + 'systemd/src/basic', + ), + dependencies: shared_dep, + c_args: [ + '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_SYSTEMD_SHARED', + '-DG_LOG_DOMAIN="libnm"', + ], +) + +libnm_systemd_shared_no_logging_dep = declare_dependency( + dependencies: [ + libnm_systemd_shared_dep, + ], + link_with: [ + libnm_systemd_logging_stub, + ], +) diff --git a/shared/systemd/nm-logging-stub.c b/shared/systemd/nm-logging-stub.c new file mode 100644 index 0000000000..80d4360783 --- /dev/null +++ b/shared/systemd/nm-logging-stub.c @@ -0,0 +1,45 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright 2018 Red Hat, Inc. + */ + +#include "nm-default.h" + +#include "nm-utils/nm-logging-fwd.h" + +/*****************************************************************************/ + +gboolean +_nm_log_enabled (NMLogLevel level, + NMLogDomain domain) +{ + return FALSE; +} + +void +_nm_log_impl (const char *file, + guint line, + const char *func, + NMLogLevel level, + NMLogDomain domain, + int error, + const char *ifname, + const char *con_uuid, + const char *fmt, + ...) +{ +} diff --git a/src/systemd/meson.build b/src/systemd/meson.build index 7619783490..9dea4fb593 100644 --- a/src/systemd/meson.build +++ b/src/systemd/meson.build @@ -38,7 +38,6 @@ libnm_systemd_core = static_library( ) ], dependencies: [ - libnm_systemd_shared_dep, nm_core_dep, ], c_args: [