// SPDX-License-Identifier: LGPL-2.1+
#ifndef __NM_CLOUD_SETUP_UTILS_H__
#define __NM_CLOUD_SETUP_UTILS_H__
#include "nm-glib-aux/nm-logging-fwd.h"
/*****************************************************************************/
/* mark names for variables that can be used as configuration. Search
* for NMCS_ENV_VARIABLE() to find all honored environment variables. */
#define NMCS_ENV_VARIABLE(var) ""var""
/*****************************************************************************/
extern volatile NMLogLevel _nm_logging_configured_level;
static inline gboolean
nm_logging_enabled (NMLogLevel level)
{
return level >= _nm_logging_configured_level;
}
void _nm_logging_enabled_init (const char *level_str);
void _nm_log_impl_cs (NMLogLevel level,
const char *fmt,
...) _nm_printf (2, 3);
#define _nm_log(level, ...) \
_nm_log_impl_cs ((level), __VA_ARGS__);
#define _NMLOG(level, ...) \
G_STMT_START { \
const NMLogLevel _level = (level); \
\
if (nm_logging_enabled (_level)) { \
_nm_log (_level, __VA_ARGS__); \
} \
} G_STMT_END
/*****************************************************************************/
#ifndef NM_DIST_VERSION
#define NM_DIST_VERSION VERSION
#endif
/*****************************************************************************/
gpointer nmcs_wait_for_objects_register (gpointer target);
gboolean nmcs_wait_for_objects_iterate_until_done (GMainContext *context,
int timeout_msec);
/*****************************************************************************/
typedef void (*NMCSUtilsPollProbeStartFcn) (GCancellable *cancellable,
gpointer probe_user_data,
GAsyncReadyCallback callback,
gpointer user_data);
typedef gboolean (*NMCSUtilsPollProbeFinishFcn) (GObject *source,
GAsyncResult *result,
gpointer probe_user_data,
GError **error);
void nmcs_utils_poll (int poll_timeout_ms,
int ratelimit_timeout_ms,
int sleep_timeout_ms,
NMCSUtilsPollProbeStartFcn probe_start_fcn,
NMCSUtilsPollProbeFinishFcn probe_finish_fcn,
gpointer probe_user_data,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean nmcs_utils_poll_finish (GAsyncResult *result,
gpointer *probe_user_data,
GError **error);
/*****************************************************************************/
char *nmcs_utils_hwaddr_normalize (const char *hwaddr, gssize len);
/*****************************************************************************/
const char *nmcs_utils_parse_memmem (GBytes *mem, const char *needle);
const char *nmcs_utils_parse_get_full_line (GBytes *mem, const char *needle);
/*****************************************************************************/
char *nmcs_utils_uri_build_concat_v (const char *base,
const char **components,
gsize n_components);
#define nmcs_utils_uri_build_concat(base, ...) nmcs_utils_uri_build_concat_v (base, ((const char *[]) { __VA_ARGS__ }), NM_NARG (__VA_ARGS__))
/*****************************************************************************/
gboolean nmcs_setting_ip_replace_ipv4_addresses (NMSettingIPConfig *s_ip,
NMIPAddress **entries_arr,
guint entries_len);
gboolean nmcs_setting_ip_replace_ipv4_routes (NMSettingIPConfig *s_ip,
NMIPRoute **entries_arr,
guint entries_len);
gboolean nmcs_setting_ip_replace_ipv4_rules (NMSettingIPConfig *s_ip,
NMIPRoutingRule **entries_arr,
guint entries_len);
/*****************************************************************************/
NMConnection *nmcs_device_get_applied_connection (NMDevice *device,
GCancellable *cancellable,
guint64 *version_id,
GError **error);
gboolean nmcs_device_reapply (NMDevice *device,
GCancellable *sigterm_cancellable,
NMConnection *connection,
guint64 version_id,
gboolean *out_version_id_changed,
GError **error);
#endif /* __NM_CLOUD_SETUP_UTILS_H__ */