about summary refs log tree commit diff
path: root/src/nmcli/nmcli.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nmcli/nmcli.h')
-rw-r--r--src/nmcli/nmcli.h160
1 files changed, 116 insertions, 44 deletions
diff --git a/src/nmcli/nmcli.h b/src/nmcli/nmcli.h
index 157aae99..f9b4cc7d 100644
--- a/src/nmcli/nmcli.h
+++ b/src/nmcli/nmcli.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
- * Copyright (C) 2010 - 2018 Red Hat, Inc.
+ * Copyright (C) 2010 - 2022 Red Hat, Inc.
  */
 
 #ifndef NMC_NMCLI_H
@@ -52,7 +52,11 @@ typedef enum {
     NMC_RESULT_COMPLETE_FILE = 65,
 } NMCResultCode;
 
-typedef enum { NMC_PRINT_TERSE = 0, NMC_PRINT_NORMAL = 1, NMC_PRINT_PRETTY = 2 } NMCPrintOutput;
+typedef enum {
+    NMC_PRINT_TERSE  = 0,
+    NMC_PRINT_NORMAL = 1,
+    NMC_PRINT_PRETTY = 2,
+} NMCPrintOutput;
 
 static inline NMMetaAccessorGetType
 nmc_print_output_to_accessor_get_type(NMCPrintOutput print_output)
@@ -65,12 +69,17 @@ nmc_print_output_to_accessor_get_type(NMCPrintOutput print_output)
 /* === Output fields === */
 
 typedef enum {
-    NMC_OF_FLAG_FIELD_NAMES = 0x00000001, /* Print field names instead of values */
-    NMC_OF_FLAG_SECTION_PREFIX =
-        0x00000002, /* Use the first value as section prefix for the other field names - just in multiline */
-    NMC_OF_FLAG_MAIN_HEADER_ADD =
-        0x00000004, /* Print main header in addition to values/field names */
-    NMC_OF_FLAG_MAIN_HEADER_ONLY = 0x00000008, /* Print main header only */
+    /* Print field names instead of values */
+    NMC_OF_FLAG_FIELD_NAMES = 0x00000001,
+
+    /* Use the first value as section prefix for the other field names - just in multiline */
+    NMC_OF_FLAG_SECTION_PREFIX = 0x00000002,
+
+    /* Print main header in addition to values/field names */
+    NMC_OF_FLAG_MAIN_HEADER_ADD = 0x00000004,
+
+    /* Print main header only */
+    NMC_OF_FLAG_MAIN_HEADER_ONLY = 0x00000008,
 } NmcOfFlags;
 
 typedef struct {
@@ -84,23 +93,45 @@ typedef struct _NmcMetaGenericInfo NmcMetaGenericInfo;
 
 struct _NmcOutputField {
     const NMMetaAbstractInfo *info;
-    int                       width; /* Width in screen columns */
-    void       *value; /* Value of current field - char* or char** (NULL-terminated array) */
-    gboolean    value_is_array; /* Whether value is char** instead of char* */
-    gboolean    free_value;     /* Whether to free the value */
-    NmcOfFlags  flags;          /* Flags - whether and how to print values/field names/headers */
-    NMMetaColor color;          /* Use this color to print value */
+
+    /* Width in screen columns */
+    int width;
+
+    /* Value of current field - char* or char** (NULL-terminated array) */
+    void *value;
+
+    /* Whether value is char** instead of char* */
+    bool value_is_array : 1;
+
+    /* Whether to free the value */
+    bool free_value : 1;
+
+    NmcOfFlags  flags; /* Flags - whether and how to print values/field names/headers */
+    NMMetaColor color; /* Use this color to print value */
 };
 
 typedef struct _NmcConfig {
-    NMCPrintOutput print_output;     /* Output mode */
-    bool           use_colors;       /* Whether to use colors for output: option '--color' */
-    bool           multiline_output; /* Multiline output instead of default tabular */
-    bool           escape_values;    /* Whether to escape ':' and '\' in terse tabular mode */
-    bool           in_editor;        /* Whether running the editor - nmcli con edit' */
-    bool
-        show_secrets; /* Whether to display secrets (both input and output): option '--show-secrets' */
-    bool            overview; /* Overview mode (hide default values) */
+    /* Output mode */
+    NMCPrintOutput print_output;
+
+    /* Whether to use colors for output: option '--color' */
+    bool use_colors;
+
+    /* Multiline output instead of default tabular */
+    bool multiline_output : 1;
+
+    /* Whether to escape ':' and '\' in terse tabular mode */
+    bool escape_values : 1;
+
+    /* Whether running the editor - nmcli con edit' */
+    bool in_editor : 1;
+
+    /* Whether to display secrets (both input and output): option '--show-secrets' */
+    bool show_secrets : 1;
+
+    /* Overview mode (hide default values) */
+    bool overview : 1;
+
     NmcColorPalette palette;
 } NmcConfig;
 
@@ -109,40 +140,71 @@ typedef struct {
 } NmcPagerData;
 
 typedef struct _NmcOutputData {
-    GPtrArray *
-        output_data; /* GPtrArray of arrays of NmcOutputField structs - accumulates data for output */
+    /* GPtrArray of arrays of NmcOutputField structs - accumulates data for output */
+    GPtrArray *output_data;
 } NmcOutputData;
 
 /* NmCli - main structure */
 typedef struct _NmCli {
-    NMClient *client; /* Pointer to NMClient of libnm */
+    /* Pointer to NMClient of libnm */
+    NMClient *client;
+
+    /* Return code of nmcli */
+    NMCResultCode return_value;
 
-    NMCResultCode return_value; /* Return code of nmcli */
-    GString      *return_text;  /* Reason text */
+    /* Reason text */
+    GString *return_text;
 
     NmcPagerData pager_data;
 
-    int timeout; /* Operation timeout */
+    /* Operation timeout */
+    int timeout;
 
-    NMSecretAgentSimple      *secret_agent; /* Secret agent */
-    GHashTable               *pwds_hash;    /* Hash table with passwords in passwd-file */
-    struct _NMPolkitListener *pk_listener;  /* polkit agent listener */
+    /* Secret agent */
+    NMSecretAgentSimple *secret_agent;
+
+    /* Hash table with passwords in passwd-file */
+    GHashTable *pwds_hash;
+
+    /* polkit agent listener */
+    struct _NMPolkitListener *pk_listener;
+
+    /* Semaphore indicating whether nmcli should not end or not yet */
+    int should_wait;
+
+    /* '--nowait' option; used for passing to callbacks */
+    bool nowait_flag : 1;
+
+    /* Whether tabular/multiline mode was specified via '--mode' option */
+    bool mode_specified : 1;
+
+    /* Communicate the connection data over stdin/stdout instead of talking to the daemon. */
+    bool offline : 1;
+
+    /* Ask for missing parameters: option '--ask' */
+    bool ask : 1;
+
+    /* Autocomplete the command line */
+    bool complete : 1;
+
+    /* Whether to display status line in connection editor */
+    bool editor_status_line : 1;
+
+    /* Whether to ask for confirmation on saving connections with 'autoconnect=yes' */
+    bool editor_save_confirmation : 1;
 
-    int      should_wait;    /* Semaphore indicating whether nmcli should not end or not yet */
-    gboolean nowait_flag;    /* '--nowait' option; used for passing to callbacks */
-    gboolean mode_specified; /* Whether tabular/multiline mode was specified via '--mode' option */
     union {
         const NmcConfig nmc_config;
         NmcConfig       nmc_config_mutable;
     };
-    char    *required_fields;    /* Required fields in output: '--fields' option */
-    gboolean ask;                /* Ask for missing parameters: option '--ask' */
-    gboolean complete;           /* Autocomplete the command line */
-    gboolean editor_status_line; /* Whether to display status line in connection editor */
-    gboolean
-        editor_save_confirmation; /* Whether to ask for confirmation on saving connections with 'autoconnect=yes' */
-
-    char *palette_buffer; /* Buffer with sequences for terminal-colors.d(5)-based coloring. */
+
+    /* Required fields in output: '--fields' option */
+    char *required_fields;
+
+    /* Buffer with sequences for terminal-colors.d(5)-based coloring. */
+    char *palette_buffer;
+
+    GPtrArray *offline_connections;
 } NmCli;
 
 extern const NmCli *const nm_cli_global_readline;
@@ -176,8 +238,18 @@ typedef struct _NMCCommand {
     const char *cmd;
     void (*func)(const struct _NMCCommand *cmd, NmCli *nmc, int argc, const char *const *argv);
     void (*usage)(void);
-    bool needs_client;
-    bool needs_nm_running;
+
+    /* Ensure a client instance is there before calling the handler (unless --offline has been given). */
+    bool needs_client : 1;
+
+    /* Client instance exists *and* the service is actually present on the bus. */
+    bool needs_nm_running : 1;
+
+    /* Run the handler without a client even if the comand usually requires one if --offline option was used. */
+    bool supports_offline : 1;
+
+    /* With --online, read in a keyfile from standard input before dispatching the handler. */
+    bool needs_offline_conn : 1;
 } NMCCommand;
 
 void nmc_command_func_agent(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const *argv);