summary refs log tree commit diff
path: root/libnm-core/nm-keyfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-keyfile.h')
-rw-r--r--libnm-core/nm-keyfile.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/libnm-core/nm-keyfile.h b/libnm-core/nm-keyfile.h
new file mode 100644
index 00000000..28c052f9
--- /dev/null
+++ b/libnm-core/nm-keyfile.h
@@ -0,0 +1,165 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#ifndef __NM_KEYFILE_H__
+#define __NM_KEYFILE_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+    #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-core-types.h"
+
+G_BEGIN_DECLS
+
+/**
+ * NMKeyfileHandlerFlags:
+ * @NM_KEYFILE_HANDLER_FLAGS_NONE: no flags set.
+ *
+ * Flags for customizing nm_keyfile_read() and nm_keyfile_write().
+ *
+ * Currently no flags are implemented.
+ *
+ * Since: 1.30
+ */
+typedef enum { /*< flags >*/
+               NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
+} NMKeyfileHandlerFlags;
+
+/**
+ * NMKeyfileHandlerType:
+ * @NM_KEYFILE_HANDLER_TYPE_WARN: a warning.
+ * @NM_KEYFILE_HANDLER_TYPE_WRITE_CERT: for handling certificates while writing
+ *   a connection to keyfile.
+ *
+ * The type of the callback for %NMKeyfileReadHandler and %NMKeyfileWriteHandler.
+ * Depending on the type, you can interpret %NMKeyfileHandlerData.
+ *
+ * Since: 1.30
+ */
+typedef enum {
+    NM_KEYFILE_HANDLER_TYPE_WARN       = 1,
+    NM_KEYFILE_HANDLER_TYPE_WRITE_CERT = 2,
+} NMKeyfileHandlerType;
+
+/**
+ * NMKeyfileHandlerData:
+ *
+ * Opaque type with parameters for the callback. The actual content
+ * depends on the %NMKeyfileHandlerType.
+ *
+ * Since: 1.30
+ */
+typedef struct _NMKeyfileHandlerData NMKeyfileHandlerData;
+
+/**
+ * NMKeyfileReadHandler:
+ * @keyfile: the #GKeyFile that is currently read
+ * @connection: the #NMConnection that is being constructed.
+ * @handler_type: the %NMKeyfileHandlerType that indicates which type
+ *   the request is.
+ * @handler_data: the #NMKeyfileHandlerData. What you can do with it
+ *   depends on the @handler_type.
+ * @user_data: the user-data argument to nm_keyfile_read().
+ *
+ * Hook to nm_keyfile_read().
+ *
+ * The callee may abort the reading by setting an error via nm_keyfile_handler_data_fail_with_error().
+ *
+ * Returns: the callee should return TRUE, if the event was handled and/or recognized.
+ *   Otherwise, a default action will be performed that depends on the @type.
+ *   For %NM_KEYFILE_HANDLER_TYPE_WARN type, the default action is doing nothing.
+ *
+ * Since: 1.30
+ */
+typedef gboolean (*NMKeyfileReadHandler)(GKeyFile *            keyfile,
+                                         NMConnection *        connection,
+                                         NMKeyfileHandlerType  handler_type,
+                                         NMKeyfileHandlerData *handler_data,
+                                         void *                user_data);
+
+NM_AVAILABLE_IN_1_30
+NMConnection *nm_keyfile_read(GKeyFile *            keyfile,
+                              const char *          base_dir,
+                              NMKeyfileHandlerFlags handler_flags,
+                              NMKeyfileReadHandler  handler,
+                              void *                user_data,
+                              GError **             error);
+
+/**
+ * NMKeyfileWriteHandler:
+ * @connection: the #NMConnection that is currently written.
+ * @keyfile: the #GKeyFile that is currently constructed.
+ * @handler_type: the %NMKeyfileHandlerType that indicates which type
+ *   the request is.
+ * @handler_data: the #NMKeyfileHandlerData. What you can do with it
+ *   depends on the @handler_type.
+ * @user_data: the user-data argument to nm_keyfile_read().
+ *
+ * This is a hook to tweak the serialization.
+ *
+ * Handler for certain properties or events that are not entirely contained
+ * within the keyfile or that might be serialized differently. The @type and
+ * @handler_data arguments tell which kind of argument we have at hand.
+ *
+ * Currently only the type %NM_KEYFILE_HANDLER_TYPE_WRITE_CERT is supported.
+ *
+ * The callee may call nm_keyfile_handler_data_fail_with_error() to abort
+ * the writing with error.
+ *
+ * Returns: the callee should return %TRUE if the event was handled. If the
+ *   event was unhandled, a default action will be performed that depends on
+ *   the @handler_type.
+ *
+ * Since: 1.30
+ */
+typedef gboolean (*NMKeyfileWriteHandler)(NMConnection *        connection,
+                                          GKeyFile *            keyfile,
+                                          NMKeyfileHandlerType  handler_type,
+                                          NMKeyfileHandlerData *handler_data,
+                                          void *                user_data);
+
+NM_AVAILABLE_IN_1_30
+GKeyFile *nm_keyfile_write(NMConnection *        connection,
+                           NMKeyfileHandlerFlags handler_flags,
+                           NMKeyfileWriteHandler handler,
+                           void *                user_data,
+                           GError **             error);
+
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_fail_with_error(NMKeyfileHandlerData *handler_data, GError *src);
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_get_context(const NMKeyfileHandlerData *handler_data,
+                                         const char **               out_kf_group_name,
+                                         const char **               out_kf_key_name,
+                                         NMSetting **                out_cur_setting,
+                                         const char **               out_cur_property_name);
+
+/**
+ * NMKeyfileWarnSeverity:
+ * @NM_KEYFILE_WARN_SEVERITY_DEBUG: debug message
+ * @NM_KEYFILE_WARN_SEVERITY_INFO: info message
+ * @NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE: info message about a missing file
+ * @NM_KEYFILE_WARN_SEVERITY_WARN: a warning message
+ *
+ * The severity level of %NM_KEYFILE_HANDLER_TYPE_WARN events.
+ *
+ * Since: 1.30
+ */
+typedef enum {
+    NM_KEYFILE_WARN_SEVERITY_DEBUG             = 1000,
+    NM_KEYFILE_WARN_SEVERITY_INFO              = 2000,
+    NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE = 2901,
+    NM_KEYFILE_WARN_SEVERITY_WARN              = 3000,
+} NMKeyfileWarnSeverity;
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_warn_get(const NMKeyfileHandlerData *handler_data,
+                                      const char **               out_message,
+                                      NMKeyfileWarnSeverity *     out_severity);
+
+G_END_DECLS
+
+#endif /* __NM_KEYFILE_H__ */