mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-01 11:30:31 +01:00
Our coding style recommends C style comments (/* */) instead of C++ (//). Also, systemd (which we partly fork) uses C style comments for the SPDX-License-Identifier. Unify the style. $ sed -i '1 s#// SPDX-License-Identifier: \([^ ]\+\)$#/* SPDX-License-Identifier: \1 */#' -- $(git ls-files -- '*.[hc]' '*.[hc]pp')
112 lines
3.9 KiB
C
112 lines
3.9 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
/*
|
|
* Copyright (C) 2018 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_SETTINGS_STORAGE_H__
|
|
#define __NM_SETTINGS_STORAGE_H__
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include "c-list/src/c-list.h"
|
|
|
|
#define NM_TYPE_SETTINGS_STORAGE (nm_settings_storage_get_type())
|
|
#define NM_SETTINGS_STORAGE(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorage))
|
|
#define NM_SETTINGS_STORAGE_CLASS(klass) \
|
|
(G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorageClass))
|
|
#define NM_IS_SETTINGS_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTINGS_STORAGE))
|
|
#define NM_IS_SETTINGS_STORAGE_CLASS(klass) \
|
|
(G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTINGS_STORAGE))
|
|
#define NM_SETTINGS_STORAGE_GET_CLASS(obj) \
|
|
(G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorageClass))
|
|
|
|
#define NM_SETTINGS_STORAGE_PLUGIN "plugin"
|
|
#define NM_SETTINGS_STORAGE_UUID "uuid"
|
|
#define NM_SETTINGS_STORAGE_FILENAME "filename"
|
|
|
|
struct _NMSettingsPlugin;
|
|
|
|
typedef struct NMSettingsStorage {
|
|
GObject parent;
|
|
struct _NMSettingsPlugin *_plugin;
|
|
char * _uuid;
|
|
char * _filename;
|
|
CList _storage_lst;
|
|
CList _storage_by_uuid_lst;
|
|
} NMSettingsStorage;
|
|
|
|
typedef struct {
|
|
GObjectClass parent;
|
|
|
|
int (*cmp_fcn)(NMSettingsStorage *a, NMSettingsStorage *b);
|
|
|
|
} NMSettingsStorageClass;
|
|
|
|
GType nm_settings_storage_get_type(void);
|
|
|
|
NMSettingsStorage *
|
|
nm_settings_storage_new(struct _NMSettingsPlugin *plugin, const char *uuid, const char *filename);
|
|
|
|
static inline struct _NMSettingsPlugin *
|
|
nm_settings_storage_get_plugin(const NMSettingsStorage *self)
|
|
{
|
|
GType nm_settings_plugin_get_type(void);
|
|
|
|
g_return_val_if_fail(NM_IS_SETTINGS_STORAGE(self), NULL);
|
|
|
|
nm_assert(G_TYPE_CHECK_INSTANCE_TYPE(self->_plugin, nm_settings_plugin_get_type()));
|
|
return self->_plugin;
|
|
}
|
|
|
|
static inline const char *
|
|
nm_settings_storage_get_uuid(const NMSettingsStorage *self)
|
|
{
|
|
gboolean nm_utils_is_uuid(const char *str);
|
|
|
|
g_return_val_if_fail(NM_IS_SETTINGS_STORAGE(self), NULL);
|
|
|
|
nm_assert(nm_utils_is_uuid(self->_uuid));
|
|
return self->_uuid;
|
|
}
|
|
|
|
static inline const char *
|
|
nm_settings_storage_get_uuid_opt(const NMSettingsStorage *self)
|
|
{
|
|
gboolean nm_utils_is_uuid(const char *str);
|
|
|
|
g_return_val_if_fail(NM_IS_SETTINGS_STORAGE(self), NULL);
|
|
|
|
nm_assert(!self->_uuid || nm_utils_is_uuid(self->_uuid));
|
|
return self->_uuid;
|
|
}
|
|
|
|
static inline const char *
|
|
nm_settings_storage_get_filename(const NMSettingsStorage *self)
|
|
{
|
|
g_return_val_if_fail(NM_IS_SETTINGS_STORAGE(self), NULL);
|
|
|
|
return self->_filename;
|
|
}
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define nm_assert_valid_settings_storage(plugin, storage) \
|
|
G_STMT_START \
|
|
{ \
|
|
NMSettingsPlugin *const _plugin = (plugin); \
|
|
NMSettingsStorage *const _storage = (storage); \
|
|
\
|
|
nm_assert(!_plugin || NM_IS_SETTINGS_PLUGIN(_plugin)); \
|
|
nm_assert(NM_IS_SETTINGS_STORAGE(_storage)); \
|
|
nm_assert(!_plugin || nm_settings_storage_get_plugin(_storage) == _plugin); \
|
|
} \
|
|
G_STMT_END
|
|
|
|
/*****************************************************************************/
|
|
|
|
int nm_settings_storage_cmp(NMSettingsStorage *sd_a,
|
|
NMSettingsStorage *sd_b,
|
|
const GSList * plugin_list);
|
|
|
|
#endif /* __NM_SETTINGS_STORAGE_H__ */
|