From 0f7994328d9c5fe9ced2ed556b635531514ec3a3 Mon Sep 17 00:00:00 2001 From: Antonio Cardace Date: Thu, 19 Dec 2019 11:30:38 +0100 Subject: [PATCH] shared: move nm-dbus-auth-subject to shared/nm-libnm-core-intern Move it to shared as it's useful for clients as well. Move and rename nm_dbus_manager_new_auth_subject_from_context() and nm_dbus_manager_new_auth_subject_from_message() in nm-dbus-manager.c as they're needed there. --- Makefile.am | 4 +- libnm-core/meson.build | 2 +- shared/meson.build | 2 + .../nm-libnm-core-intern}/nm-auth-subject.c | 107 ++++++------------ .../nm-libnm-core-intern}/nm-auth-subject.h | 5 +- src/meson.build | 1 - src/nm-act-request.c | 2 +- src/nm-active-connection.c | 2 +- src/nm-audit-manager.c | 5 +- src/nm-auth-manager.h | 2 +- src/nm-auth-utils.c | 5 +- src/nm-checkpoint.c | 2 +- src/nm-dbus-manager.c | 64 +++++++++++ src/nm-dbus-manager.h | 5 + src/nm-manager.c | 10 +- src/settings/nm-agent-manager.c | 2 +- src/settings/nm-secret-agent.c | 2 +- src/settings/nm-settings-connection.c | 4 +- src/settings/nm-settings.c | 6 +- src/supplicant/nm-supplicant-config.c | 2 +- src/vpn/nm-vpn-connection.h | 2 +- 21 files changed, 134 insertions(+), 102 deletions(-) rename {src => shared/nm-libnm-core-intern}/nm-auth-subject.c (78%) rename {src => shared/nm-libnm-core-intern}/nm-auth-subject.h (90%) diff --git a/Makefile.am b/Makefile.am index abee1d13c5..c213eb75c7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -476,6 +476,8 @@ shared_nm_libnm_core_intern_libnm_libnm_core_intern_la_SOURCES = \ shared/nm-libnm-core-intern/nm-ethtool-utils.h \ shared/nm-libnm-core-intern/nm-libnm-core-utils.c \ shared/nm-libnm-core-intern/nm-libnm-core-utils.h \ + shared/nm-libnm-core-intern/nm-auth-subject.c \ + shared/nm-libnm-core-intern/nm-auth-subject.h \ $(NULL) shared_nm_libnm_core_intern_libnm_libnm_core_intern_la_LDFLAGS = \ @@ -2244,8 +2246,6 @@ src_libNetworkManager_la_SOURCES = \ src/nm-proxy-config.h \ src/nm-auth-manager.c \ src/nm-auth-manager.h \ - src/nm-auth-subject.c \ - src/nm-auth-subject.h \ src/nm-auth-utils.c \ src/nm-auth-utils.h \ src/nm-manager.c \ diff --git a/libnm-core/meson.build b/libnm-core/meson.build index 4c72590e7b..857e0330a1 100644 --- a/libnm-core/meson.build +++ b/libnm-core/meson.build @@ -85,7 +85,7 @@ libnm_core_enum_sources = gnome.mkenums_simple( libnm_libnm_core_intern = static_library( 'nm-libnm-core-intern', - sources: nm_ethtool_utils_source + nm_libnm_core_utils_source + [libnm_core_enum_sources[1]], + sources: nm_ethtool_utils_source + nm_libnm_core_utils_source + nm_auth_subject_source + [libnm_core_enum_sources[1]], dependencies: libnm_core_nm_default_dep, c_args: common_c_flags, ) diff --git a/shared/meson.build b/shared/meson.build index dd350cd0aa..481df98317 100644 --- a/shared/meson.build +++ b/shared/meson.build @@ -119,6 +119,8 @@ nm_test_utils_impl_source = files('nm-test-utils-impl.c') nm_vpn_plugin_utils_source = files('nm-utils/nm-vpn-plugin-utils.c') +nm_auth_subject_source = files('nm-libnm-core-intern/nm-auth-subject.c') + c_flags = [ '-DG_LOG_DOMAIN="@0@"'.format(libnm_name), '-DNETWORKMANAGER_COMPILATION=0', diff --git a/src/nm-auth-subject.c b/shared/nm-libnm-core-intern/nm-auth-subject.c similarity index 78% rename from src/nm-auth-subject.c rename to shared/nm-libnm-core-intern/nm-auth-subject.c index ecf6b0138f..2597867a56 100644 --- a/src/nm-auth-subject.c +++ b/shared/nm-libnm-core-intern/nm-auth-subject.c @@ -17,8 +17,6 @@ #include -#include "nm-dbus-manager.h" - enum { PROP_0, PROP_SUBJECT_TYPE, @@ -152,74 +150,6 @@ nm_auth_subject_get_unix_process_dbus_sender (NMAuthSubject *subject) /*****************************************************************************/ -static NMAuthSubject * -_new_unix_process (GDBusMethodInvocation *context, - GDBusConnection *connection, - GDBusMessage *message) -{ - NMAuthSubject *self; - const char *dbus_sender = NULL; - gulong uid = 0; - gulong pid = 0; - gboolean success; - - g_return_val_if_fail (context || (connection && message), NULL); - - if (context) { - success = nm_dbus_manager_get_caller_info (nm_dbus_manager_get (), - context, - &dbus_sender, - &uid, - &pid); - } else { - nm_assert (message); - success = nm_dbus_manager_get_caller_info_from_message (nm_dbus_manager_get (), - connection, - message, - &dbus_sender, - &uid, - &pid); - } - - if (!success) - return NULL; - - g_return_val_if_fail (dbus_sender && *dbus_sender, NULL); - /* polkit glib library stores uid and pid as int. There might be some - * pitfalls if the id ever happens to be larger then that. Just assert against - * it here. */ - g_return_val_if_fail (uid <= MIN (G_MAXINT, G_MAXINT32), NULL); - g_return_val_if_fail (pid > 0 && pid <= MIN (G_MAXINT, G_MAXINT32), NULL); - - self = NM_AUTH_SUBJECT (g_object_new (NM_TYPE_AUTH_SUBJECT, - NM_AUTH_SUBJECT_SUBJECT_TYPE, (int) NM_AUTH_SUBJECT_TYPE_UNIX_PROCESS, - NM_AUTH_SUBJECT_UNIX_PROCESS_DBUS_SENDER, dbus_sender, - NM_AUTH_SUBJECT_UNIX_PROCESS_PID, (gulong) pid, - NM_AUTH_SUBJECT_UNIX_PROCESS_UID, (gulong) uid, - NULL)); - - if (NM_AUTH_SUBJECT_GET_PRIVATE (self)->subject_type != NM_AUTH_SUBJECT_TYPE_UNIX_PROCESS) { - /* this most likely happened because the process is gone (start_time==0). - * Either that is not assert-worthy, or constructed() already asserted. - * Just return NULL. */ - g_clear_object (&self); - } - return self; -} - -NMAuthSubject * -nm_auth_subject_new_unix_process_from_context (GDBusMethodInvocation *context) -{ - return _new_unix_process (context, NULL, NULL); -} - -NMAuthSubject * -nm_auth_subject_new_unix_process_from_message (GDBusConnection *connection, - GDBusMessage *message) -{ - return _new_unix_process (NULL, connection, message); -} - /** * nm_auth_subject_new_internal(): * @@ -231,8 +161,39 @@ NMAuthSubject * nm_auth_subject_new_internal (void) { return NM_AUTH_SUBJECT (g_object_new (NM_TYPE_AUTH_SUBJECT, - NM_AUTH_SUBJECT_SUBJECT_TYPE, (int) NM_AUTH_SUBJECT_TYPE_INTERNAL, - NULL)); + NM_AUTH_SUBJECT_SUBJECT_TYPE, (int) NM_AUTH_SUBJECT_TYPE_INTERNAL, + NULL)); +} + +/** + * nm_auth_subject_new_unix_process(): + * + * Creates a new auth subject representing a give unix process. + * + * Returns: the new #NMAuthSubject + */ +NMAuthSubject * +nm_auth_subject_new_unix_process (const char *dbus_sender, gulong pid, gulong uid) +{ + return NM_AUTH_SUBJECT (g_object_new (NM_TYPE_AUTH_SUBJECT, + NM_AUTH_SUBJECT_SUBJECT_TYPE, (int) NM_AUTH_SUBJECT_TYPE_UNIX_PROCESS, + NM_AUTH_SUBJECT_UNIX_PROCESS_DBUS_SENDER, dbus_sender, + NM_AUTH_SUBJECT_UNIX_PROCESS_PID, pid, + NM_AUTH_SUBJECT_UNIX_PROCESS_UID, uid, + NULL)); +} + +/** + * nm_auth_subject_new_unix_process_self(): + * + * Creates a new auth subject representing the current executing process. + * + * Returns: the new #NMAuthSubject + */ +NMAuthSubject * +nm_auth_subject_new_unix_process_self (void) +{ + return nm_auth_subject_new_unix_process (NULL, getpid(), getuid()); } /*****************************************************************************/ @@ -349,8 +310,6 @@ constructed (GObject *object) * Don't bother and require the user id as parameter. */ break; } - if (!priv->unix_process.dbus_sender || !*priv->unix_process.dbus_sender) - break; priv->unix_process.start_time = nm_utils_get_start_time_for_pid (priv->unix_process.pid, NULL, NULL); diff --git a/src/nm-auth-subject.h b/shared/nm-libnm-core-intern/nm-auth-subject.h similarity index 90% rename from src/nm-auth-subject.h rename to shared/nm-libnm-core-intern/nm-auth-subject.h index 7a75aca922..9454e7f7ee 100644 --- a/src/nm-auth-subject.h +++ b/shared/nm-libnm-core-intern/nm-auth-subject.h @@ -25,14 +25,15 @@ typedef enum { #define NM_AUTH_SUBJECT_UNIX_PROCESS_UID "unix-process-uid" typedef struct _NMAuthSubjectClass NMAuthSubjectClass; +typedef struct _NMAuthSubject NMAuthSubject; GType nm_auth_subject_get_type (void); NMAuthSubject *nm_auth_subject_new_internal (void); -NMAuthSubject *nm_auth_subject_new_unix_process_from_context (GDBusMethodInvocation *context); +NMAuthSubject *nm_auth_subject_new_unix_process (const char *dbus_sender, gulong pid, gulong uid); -NMAuthSubject *nm_auth_subject_new_unix_process_from_message (GDBusConnection *connection, GDBusMessage *message); +NMAuthSubject *nm_auth_subject_new_unix_process_self (void); NMAuthSubjectType nm_auth_subject_get_subject_type (NMAuthSubject *subject); diff --git a/src/meson.build b/src/meson.build index 748fa519bc..9251cfd1ab 100644 --- a/src/meson.build +++ b/src/meson.build @@ -125,7 +125,6 @@ sources = files( 'nm-act-request.c', 'nm-audit-manager.c', 'nm-auth-manager.c', - 'nm-auth-subject.c', 'nm-auth-utils.c', 'nm-dbus-manager.c', 'nm-checkpoint.c', diff --git a/src/nm-act-request.c b/src/nm-act-request.c index ef36a40d45..1c252052bb 100644 --- a/src/nm-act-request.c +++ b/src/nm-act-request.c @@ -19,7 +19,7 @@ #include "devices/nm-device.h" #include "nm-active-connection.h" #include "settings/nm-settings-connection.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" typedef struct { char *table; diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c index bf50e55d86..3e333f405b 100644 --- a/src/nm-active-connection.c +++ b/src/nm-active-connection.c @@ -14,7 +14,7 @@ #include "nm-simple-connection.h" #include "nm-auth-utils.h" #include "nm-auth-manager.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-keep-alive.h" #include "NetworkManagerUtils.h" #include "nm-core-internal.h" diff --git a/src/nm-audit-manager.c b/src/nm-audit-manager.c index b219b35a13..54ecb796e1 100644 --- a/src/nm-audit-manager.c +++ b/src/nm-audit-manager.c @@ -11,8 +11,9 @@ #include #endif -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-config.h" +#include "nm-dbus-manager.h" #include "settings/nm-settings-connection.h" /*****************************************************************************/ @@ -195,7 +196,7 @@ _audit_log_helper (NMAuditManager *self, else if (G_IS_DBUS_METHOD_INVOCATION (subject_context)) { GDBusMethodInvocation *context = subject_context; - subject = subject_free = nm_auth_subject_new_unix_process_from_context (context); + subject = subject_free = nm_dbus_manager_new_auth_subject_from_context (context); } else g_warn_if_reached (); } diff --git a/src/nm-auth-manager.h b/src/nm-auth-manager.h index ab924e69a5..0a17055e43 100644 --- a/src/nm-auth-manager.h +++ b/src/nm-auth-manager.h @@ -6,7 +6,7 @@ #ifndef NM_AUTH_MANAGER_H #define NM_AUTH_MANAGER_H -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-config-data.h" /*****************************************************************************/ diff --git a/src/nm-auth-utils.c b/src/nm-auth-utils.c index a5b951ab78..c7acdc02a3 100644 --- a/src/nm-auth-utils.c +++ b/src/nm-auth-utils.c @@ -9,9 +9,10 @@ #include "nm-glib-aux/nm-c-list.h" #include "nm-setting-connection.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-auth-manager.h" #include "nm-session-monitor.h" +#include "nm-dbus-manager.h" /*****************************************************************************/ @@ -395,7 +396,7 @@ nm_auth_chain_new_context (GDBusMethodInvocation *context, g_return_val_if_fail (context, NULL); nm_assert (done_func); - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) return NULL; diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c index 1ab0f07d36..8d3fab765a 100644 --- a/src/nm-checkpoint.c +++ b/src/nm-checkpoint.c @@ -9,7 +9,7 @@ #include "nm-active-connection.h" #include "nm-act-request.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-core-utils.h" #include "nm-dbus-interface.h" #include "devices/nm-device.h" diff --git a/src/nm-dbus-manager.c b/src/nm-dbus-manager.c index f2d63b4bdc..3e0c8ada3d 100644 --- a/src/nm-dbus-manager.c +++ b/src/nm-dbus-manager.c @@ -19,6 +19,7 @@ #include "nm-std-aux/nm-dbus-compat.h" #include "nm-dbus-object.h" #include "NetworkManagerUtils.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" /* The base path for our GDBusObjectManagerServers. They do not contain * "NetworkManager" because GDBusObjectManagerServer requires that all @@ -1669,3 +1670,66 @@ nm_dbus_manager_class_init (NMDBusManagerClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_POINTER); } + +static NMAuthSubject * +_new_unix_process (GDBusMethodInvocation *context, + GDBusConnection *connection, + GDBusMessage *message) +{ + NMAuthSubject *self; + const char *dbus_sender = NULL; + gulong uid = 0; + gulong pid = 0; + gboolean success; + + g_return_val_if_fail (context || (connection && message), NULL); + + if (context) { + success = nm_dbus_manager_get_caller_info (nm_dbus_manager_get (), + context, + &dbus_sender, + &uid, + &pid); + } else { + nm_assert (message); + success = nm_dbus_manager_get_caller_info_from_message (nm_dbus_manager_get (), + connection, + message, + &dbus_sender, + &uid, + &pid); + } + + if (!success) + return NULL; + + g_return_val_if_fail (dbus_sender && *dbus_sender, NULL); + /* polkit glib library stores uid and pid as int. There might be some + * pitfalls if the id ever happens to be larger then that. Just assert against + * it here. */ + g_return_val_if_fail (uid <= MIN (G_MAXINT, G_MAXINT32), NULL); + g_return_val_if_fail (pid > 0 && pid <= MIN (G_MAXINT, G_MAXINT32), NULL); + + self = nm_auth_subject_new_unix_process (dbus_sender, pid, uid); + + if (nm_auth_subject_get_subject_type (self) != NM_AUTH_SUBJECT_TYPE_UNIX_PROCESS) { + /* this most likely happened because the process is gone (start_time==0). + * Either that is not assert-worthy, or constructed() already asserted. + * Just return NULL. */ + g_clear_object (&self); + } + return self; +} + +NMAuthSubject * +nm_dbus_manager_new_auth_subject_from_context (GDBusMethodInvocation *context) +{ + return _new_unix_process (context, NULL, NULL); +} + +NMAuthSubject * +nm_dbus_manager_new_auth_subject_from_message (GDBusConnection *connection, + GDBusMessage *message) +{ + return _new_unix_process (NULL, connection, message); +} diff --git a/src/nm-dbus-manager.h b/src/nm-dbus-manager.h index a609493891..2878587409 100644 --- a/src/nm-dbus-manager.h +++ b/src/nm-dbus-manager.h @@ -88,4 +88,9 @@ void nm_dbus_manager_private_server_register (NMDBusManager *self, const char *path, const char *tag); +NMAuthSubject *nm_dbus_manager_new_auth_subject_from_context (GDBusMethodInvocation *context); + +NMAuthSubject *nm_dbus_manager_new_auth_subject_from_message (GDBusConnection *connection, + GDBusMessage *message); + #endif /* __NM_DBUS_MANAGER_H__ */ diff --git a/src/nm-manager.c b/src/nm-manager.c index be61d7dcfa..3085ba9a49 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -2437,7 +2437,7 @@ device_auth_request_cb (NMDevice *device, char *permission_dup; /* Validate the caller */ - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) { error = g_error_new_literal (NM_MANAGER_ERROR, NM_MANAGER_ERROR_PERMISSION_DENIED, @@ -5174,7 +5174,7 @@ validate_activation_request (NMManager *self, connection = nm_settings_connection_get_connection (sett_conn); /* Validate the caller */ - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) { g_set_error_literal (error, NM_MANAGER_ERROR, @@ -5824,7 +5824,7 @@ impl_manager_deactivate_connection (NMDBusObject *obj, } /* Validate the caller */ - subject = nm_auth_subject_new_unix_process_from_context (invocation); + subject = nm_dbus_manager_new_auth_subject_from_context (invocation); if (!subject) { error = g_error_new_literal (NM_MANAGER_ERROR, NM_MANAGER_ERROR_PERMISSION_DENIED, @@ -6108,7 +6108,7 @@ impl_manager_sleep (NMDBusObject *obj, g_variant_get (parameters, "(b)", &do_sleep); - subject = nm_auth_subject_new_unix_process_from_context (invocation); + subject = nm_dbus_manager_new_auth_subject_from_context (invocation); if (priv->sleeping == do_sleep) { error = g_error_new (NM_MANAGER_ERROR, @@ -6935,7 +6935,7 @@ nm_manager_dbus_set_property_handle (NMDBusObject *obj, gs_unref_object NMAuthSubject *subject = NULL; DBusSetPropertyHandle *handle_data; - subject = nm_auth_subject_new_unix_process_from_context (invocation); + subject = nm_dbus_manager_new_auth_subject_from_context (invocation); if (!subject) { error_message = NM_UTILS_ERROR_MSG_REQ_UID_UKNOWN; goto err; diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index ecca0eb3ac..53dd953af8 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -374,7 +374,7 @@ agent_manager_register_with_capabilities (NMAgentManager *self, NMSecretAgent *agent; NMAuthChain *chain; - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c index 74bd9b2f59..d550ada740 100644 --- a/src/settings/nm-secret-agent.c +++ b/src/settings/nm-secret-agent.c @@ -14,7 +14,7 @@ #include "nm-glib-aux/nm-dbus-aux.h" #include "nm-dbus-interface.h" #include "nm-core-internal.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-simple-connection.h" #include "NetworkManagerUtils.h" #include "c-list/src/c-list.h" diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 555d1e1a6f..3368359980 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -18,12 +18,12 @@ #include "nm-session-monitor.h" #include "nm-auth-manager.h" #include "nm-auth-utils.h" -#include "nm-auth-subject.h" #include "nm-agent-manager.h" #include "NetworkManagerUtils.h" #include "nm-core-internal.h" #include "nm-audit-manager.h" #include "nm-settings.h" +#include "nm-dbus-manager.h" #include "settings/plugins/keyfile/nms-keyfile-storage.h" #define AUTOCONNECT_RETRIES_UNSET -2 @@ -1249,7 +1249,7 @@ _new_auth_subject (GDBusMethodInvocation *context, GError **error) { NMAuthSubject *subject; - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) { g_set_error_literal (error, NM_SETTINGS_ERROR, diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index bbf4595463..d4fff4f2fa 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -54,7 +54,7 @@ #include "nm-settings-plugin.h" #include "nm-dbus-manager.h" #include "nm-auth-utils.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-session-monitor.h" #include "plugins/keyfile/nms-keyfile-plugin.h" #include "plugins/keyfile/nms-keyfile-storage.h" @@ -2574,7 +2574,7 @@ settings_add_connection_helper (NMSettings *self, return; } - subject = nm_auth_subject_new_unix_process_from_context (context); + subject = nm_dbus_manager_new_auth_subject_from_context (context); if (!subject) { g_dbus_method_invocation_return_error_literal (context, NM_SETTINGS_ERROR, @@ -2918,7 +2918,7 @@ impl_settings_get_connection_by_uuid (NMDBusObject *obj, goto error; } - subject = nm_auth_subject_new_unix_process_from_context (invocation); + subject = nm_dbus_manager_new_auth_subject_from_context (invocation); if (!subject) { error = g_error_new_literal (NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_PERMISSION_DENIED, diff --git a/src/supplicant/nm-supplicant-config.c b/src/supplicant/nm-supplicant-config.c index 8b9c0ceb40..52e9defd29 100644 --- a/src/supplicant/nm-supplicant-config.c +++ b/src/supplicant/nm-supplicant-config.c @@ -14,7 +14,7 @@ #include "nm-supplicant-settings-verify.h" #include "nm-setting.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "NetworkManagerUtils.h" #include "nm-utils.h" #include "nm-setting-ip4-config.h" diff --git a/src/vpn/nm-vpn-connection.h b/src/vpn/nm-vpn-connection.h index 43242a8e86..b2d3e37025 100644 --- a/src/vpn/nm-vpn-connection.h +++ b/src/vpn/nm-vpn-connection.h @@ -9,7 +9,7 @@ #include "nm-vpn-dbus-interface.h" #include "devices/nm-device.h" -#include "nm-auth-subject.h" +#include "nm-libnm-core-intern/nm-auth-subject.h" #include "nm-active-connection.h" #include "nm-vpn-plugin-info.h"