mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 14:10:08 +01:00
Keyfile support was initially added under GPL-2.0+ license as part of
core. It was moved to "libnm-core" in commit 59eb5312a5 ('keyfile: merge
branch 'th/libnm-keyfile-bgo744699'').
"libnm-core" is statically linked with by core and "libnm". In
the former case under terms of GPL-2.0+ (good) and in the latter case
under terms of LGPL-2.1+ (bad).
In fact, to this day, "libnm" doesn't actually use the code. The linker
will probably remove all the GPL-2.0+ symbols when compiled with
gc-sections or LTO. Still, linking them together in the first place
makes "libnm" only available under GPL code (despite the code
not actually being used).
Instead, move the GPL code to a separate static library
"shared/nm-keyfile/libnm-keyfile.la" and only link it to the part
that actually uses the code (and which is GPL licensed too).
This fixes the license violation.
Eventually, it would be very useful to be able to expose keyfile
handling via "libnm". However that is not straight forward due to the
licensing conflict.
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/381
85 lines
3.7 KiB
C
85 lines
3.7 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2010 - 2015 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_KEYFILE_UTILS_H__
|
|
#define __NM_KEYFILE_UTILS_H__
|
|
|
|
#if !((NETWORKMANAGER_COMPILATION) & NM_NETWORKMANAGER_COMPILATION_WITH_LIBNM_CORE_INTERNAL)
|
|
#error Cannot use this header.
|
|
#endif
|
|
|
|
#define NM_KEYFILE_GROUP_VPN_SECRETS "vpn-secrets"
|
|
#define NM_KEYFILE_GROUPPREFIX_WIREGUARD_PEER "wireguard-peer."
|
|
|
|
const char *nm_keyfile_plugin_get_alias_for_setting_name (const char *setting_name);
|
|
|
|
const char *nm_keyfile_plugin_get_setting_name_for_alias (const char *alias);
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* List helpers */
|
|
#define DEFINE_KF_LIST_WRAPPER_PROTO(stype, get_ctype, set_ctype) \
|
|
get_ctype nm_keyfile_plugin_kf_get_##stype##_list (GKeyFile *kf, \
|
|
const char *group, \
|
|
const char *key, \
|
|
gsize *out_length, \
|
|
GError **error); \
|
|
\
|
|
void nm_keyfile_plugin_kf_set_##stype##_list (GKeyFile *kf, \
|
|
const char *group, \
|
|
const char *key, \
|
|
set_ctype list[], \
|
|
gsize length);
|
|
DEFINE_KF_LIST_WRAPPER_PROTO(integer, int*, int)
|
|
DEFINE_KF_LIST_WRAPPER_PROTO(string, char**, const char* const)
|
|
|
|
void nm_keyfile_plugin_kf_set_integer_list_uint8 (GKeyFile *kf,
|
|
const char *group,
|
|
const char *key,
|
|
const guint8 *list,
|
|
gsize length);
|
|
|
|
/* Single-value helpers */
|
|
#define DEFINE_KF_WRAPPER_PROTO(stype, get_ctype, set_ctype) \
|
|
get_ctype nm_keyfile_plugin_kf_get_##stype (GKeyFile *kf, \
|
|
const char *group, \
|
|
const char *key, \
|
|
GError **error); \
|
|
\
|
|
void nm_keyfile_plugin_kf_set_##stype (GKeyFile *kf, \
|
|
const char *group, \
|
|
const char *key, \
|
|
set_ctype value);
|
|
DEFINE_KF_WRAPPER_PROTO(string, char*, const char*)
|
|
DEFINE_KF_WRAPPER_PROTO(boolean, gboolean, gboolean)
|
|
DEFINE_KF_WRAPPER_PROTO(value, char*, const char*)
|
|
|
|
/* Misc */
|
|
gint64 nm_keyfile_plugin_kf_get_int64 (GKeyFile *kf,
|
|
const char *group,
|
|
const char *key,
|
|
guint base,
|
|
gint64 min,
|
|
gint64 max,
|
|
gint64 fallback,
|
|
GError **error);
|
|
|
|
char ** nm_keyfile_plugin_kf_get_keys (GKeyFile *kf,
|
|
const char *group,
|
|
gsize *out_length,
|
|
GError **error);
|
|
|
|
gboolean nm_keyfile_plugin_kf_has_key (GKeyFile *kf,
|
|
const char *group,
|
|
const char *key,
|
|
GError **error);
|
|
|
|
const char *nm_keyfile_key_encode (const char *name,
|
|
char **out_to_free);
|
|
|
|
const char *nm_keyfile_key_decode (const char *key,
|
|
char **out_to_free);
|
|
|
|
#endif /* __NM_KEYFILE_UTILS_H__ */
|