mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-06 05:38:15 +02:00
cli: simplify setting creation
This commit is contained in:
parent
d4c8df4895
commit
16f5818927
3 changed files with 28 additions and 86 deletions
|
|
@ -3424,7 +3424,6 @@ gen_setting_names (char *text, int state)
|
|||
static char *
|
||||
gen_property_names (char *text, int state)
|
||||
{
|
||||
NmcSettingNewFunc new_func;
|
||||
NMSetting *setting = NULL;
|
||||
char **valid_props = NULL;
|
||||
char *ret = NULL;
|
||||
|
|
@ -3449,21 +3448,17 @@ gen_property_names (char *text, int state)
|
|||
|
||||
valid_settings_arr = get_valid_settings_array (nmc_completion_con_type);
|
||||
setting_name = check_valid_name (strv[0], valid_settings_arr, NULL);
|
||||
new_func = nmc_setting_new_func (setting_name);
|
||||
if (!new_func)
|
||||
goto finish;
|
||||
setting = new_func ();
|
||||
}
|
||||
/* Else take the current setting, if any */
|
||||
if (!setting)
|
||||
setting = nmc_setting_new_for_name (setting_name);
|
||||
} else {
|
||||
/* Else take the current setting, if any */
|
||||
setting = nmc_completion_setting ? g_object_ref (nmc_completion_setting) : NULL;
|
||||
if (!setting)
|
||||
goto finish;
|
||||
}
|
||||
|
||||
valid_props = nmc_setting_get_valid_properties (setting);
|
||||
ret = gen_nmcli_cmds (text_p, state, (const char **) valid_props);
|
||||
if (setting) {
|
||||
valid_props = nmc_setting_get_valid_properties (setting);
|
||||
ret = gen_nmcli_cmds (text_p, state, (const char **) valid_props);
|
||||
}
|
||||
|
||||
finish:
|
||||
g_free (line);
|
||||
g_strfreev (strv);
|
||||
g_strfreev (valid_props);
|
||||
|
|
@ -4319,10 +4314,9 @@ create_setting_by_name (const char *name, const NameItem *valid_settings)
|
|||
setting_name = check_valid_name (name, valid_settings, NULL);
|
||||
|
||||
if (setting_name) {
|
||||
NmcSettingNewFunc new_setting_func = nmc_setting_new_func (setting_name);
|
||||
if (!new_setting_func)
|
||||
setting = nmc_setting_new_for_name (setting_name);
|
||||
if (!setting)
|
||||
return NULL; /* This should really not happen */
|
||||
setting = new_setting_func ();
|
||||
nmc_setting_custom_init (setting);
|
||||
}
|
||||
return setting;
|
||||
|
|
@ -4426,7 +4420,6 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||
char *cmd_arg = NULL;
|
||||
char *cmd_arg_s, *cmd_arg_p, *cmd_arg_v;
|
||||
const char *BASE_PROMPT = "nmcli> ";
|
||||
NmcSettingNewFunc new_func;
|
||||
const NameItem *valid_settings_arr = NULL;
|
||||
char *valid_settings_str = NULL;
|
||||
AddConnectionInfo *info = NULL;
|
||||
|
|
@ -4574,13 +4567,11 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||
|
||||
setting = nm_connection_get_setting_by_name (connection, setting_name);
|
||||
if (!setting) {
|
||||
/* setting not created yet, do it now */
|
||||
new_func = nmc_setting_new_func (setting_name);
|
||||
if (!new_func) {
|
||||
setting = nmc_setting_new_for_name (setting_name);
|
||||
if (!setting) {
|
||||
printf (_("Error: unknown setting '%s'\n"), setting_name);
|
||||
break;
|
||||
}
|
||||
setting = new_func ();
|
||||
nmc_setting_custom_init (setting);
|
||||
nm_connection_add_setting (connection, setting);
|
||||
}
|
||||
|
|
@ -4868,7 +4859,6 @@ get_ethernet_device_name (NmCli *nmc)
|
|||
static void
|
||||
editor_init_new_connection (NmCli *nmc, NMConnection *connection)
|
||||
{
|
||||
NmcSettingNewFunc new_func;
|
||||
NMSetting *setting;
|
||||
NMSettingConnection *s_con;
|
||||
const char *con_type;
|
||||
|
|
@ -4902,10 +4892,7 @@ editor_init_new_connection (NmCli *nmc, NMConnection *connection)
|
|||
}
|
||||
else {
|
||||
/* Add a "base" setting to the connection by default */
|
||||
new_func = nmc_setting_new_func (con_type);
|
||||
if (!new_func)
|
||||
return;
|
||||
setting = new_func ();
|
||||
setting = nmc_setting_new_for_name (con_type);
|
||||
if (!setting)
|
||||
return;
|
||||
nm_connection_add_setting (connection, setting);
|
||||
|
|
@ -5249,8 +5236,8 @@ do_connection_modify (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
setting = nm_connection_get_setting_by_name (NM_CONNECTION (rc), setting_name);
|
||||
if (!setting) {
|
||||
NmcSettingNewFunc new_setting_func = nmc_setting_new_func (setting_name);
|
||||
if (!new_setting_func) {
|
||||
setting = nmc_setting_new_for_name (setting_name);
|
||||
if (!setting) {
|
||||
/* This should really not happen */
|
||||
g_string_printf (nmc->return_text,
|
||||
"Error: don't know how to create '%s' setting.",
|
||||
|
|
@ -5258,8 +5245,6 @@ do_connection_modify (NmCli *nmc, int argc, char **argv)
|
|||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
goto finish;
|
||||
}
|
||||
setting = new_setting_func ();
|
||||
g_assert (setting);
|
||||
nm_connection_add_setting (NM_CONNECTION (rc), setting);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1396,58 +1396,20 @@ typedef struct {
|
|||
NmcPropertyValuesFunc values_func; /* func returning allowed property values */
|
||||
} NmcPropertyFuncs;
|
||||
|
||||
NmcSettingNewFunc
|
||||
nmc_setting_new_func (const char *name)
|
||||
NMSetting *
|
||||
nmc_setting_new_for_name (const char *name)
|
||||
{
|
||||
if (!name)
|
||||
return NULL;
|
||||
GType stype;
|
||||
NMSetting *setting = NULL;
|
||||
|
||||
if (!strcmp (name, NM_SETTING_802_1X_SETTING_NAME))
|
||||
return nm_setting_802_1x_new;
|
||||
else if (!strcmp (name, NM_SETTING_ADSL_SETTING_NAME))
|
||||
return nm_setting_adsl_new;
|
||||
else if (!strcmp (name, NM_SETTING_BLUETOOTH_SETTING_NAME))
|
||||
return nm_setting_bluetooth_new;
|
||||
else if (!strcmp (name, NM_SETTING_BOND_SETTING_NAME))
|
||||
return nm_setting_bond_new;
|
||||
else if (!strcmp (name, NM_SETTING_BRIDGE_SETTING_NAME))
|
||||
return nm_setting_bridge_new;
|
||||
else if (!strcmp (name, NM_SETTING_BRIDGE_PORT_SETTING_NAME))
|
||||
return nm_setting_bridge_port_new;
|
||||
else if (!strcmp (name, NM_SETTING_CDMA_SETTING_NAME))
|
||||
return nm_setting_cdma_new;
|
||||
else if (!strcmp (name, NM_SETTING_CONNECTION_SETTING_NAME))
|
||||
return nm_setting_connection_new;
|
||||
else if (!strcmp (name, NM_SETTING_GSM_SETTING_NAME))
|
||||
return nm_setting_gsm_new;
|
||||
else if (!strcmp (name, NM_SETTING_INFINIBAND_SETTING_NAME))
|
||||
return nm_setting_infiniband_new;
|
||||
else if (!strcmp (name, NM_SETTING_IP4_CONFIG_SETTING_NAME))
|
||||
return nm_setting_ip4_config_new;
|
||||
else if (!strcmp (name, NM_SETTING_IP6_CONFIG_SETTING_NAME))
|
||||
return nm_setting_ip6_config_new;
|
||||
else if (!strcmp (name, NM_SETTING_OLPC_MESH_SETTING_NAME))
|
||||
return nm_setting_olpc_mesh_new;
|
||||
else if (!strcmp (name, NM_SETTING_PPP_SETTING_NAME))
|
||||
return nm_setting_ppp_new;
|
||||
else if (!strcmp (name, NM_SETTING_PPPOE_SETTING_NAME))
|
||||
return nm_setting_pppoe_new;
|
||||
else if (!strcmp (name, NM_SETTING_SERIAL_SETTING_NAME))
|
||||
return nm_setting_serial_new;
|
||||
else if (!strcmp (name, NM_SETTING_VLAN_SETTING_NAME))
|
||||
return nm_setting_vlan_new;
|
||||
else if (!strcmp (name, NM_SETTING_VPN_SETTING_NAME))
|
||||
return nm_setting_vpn_new;
|
||||
else if (!strcmp (name, NM_SETTING_WIMAX_SETTING_NAME))
|
||||
return nm_setting_wimax_new;
|
||||
else if (!strcmp (name, NM_SETTING_WIRED_SETTING_NAME))
|
||||
return nm_setting_wired_new;
|
||||
else if (!strcmp (name, NM_SETTING_WIRELESS_SETTING_NAME))
|
||||
return nm_setting_wireless_new;
|
||||
else if (!strcmp (name, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME))
|
||||
return nm_setting_wireless_security_new;
|
||||
|
||||
return NULL;
|
||||
if (name) {
|
||||
stype = nm_connection_lookup_setting_type (name);
|
||||
if (stype != G_TYPE_INVALID) {
|
||||
setting = g_object_new (stype, NULL);
|
||||
g_warn_if_fail (NM_IS_SETTING (setting));
|
||||
}
|
||||
}
|
||||
return setting;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -46,17 +46,12 @@
|
|||
#include "nmcli.h"
|
||||
#include "utils.h"
|
||||
|
||||
/* --- Types --- */
|
||||
|
||||
typedef NMSetting* (*NmcSettingNewFunc) (void);
|
||||
|
||||
|
||||
/* --- Functions --- */
|
||||
|
||||
void nmc_properties_init (void);
|
||||
void nmc_properties_cleanup (void);
|
||||
|
||||
NmcSettingNewFunc nmc_setting_new_func (const char *name);
|
||||
NMSetting *nmc_setting_new_for_name (const char *name);
|
||||
void nmc_setting_custom_init (NMSetting *setting);
|
||||
|
||||
char **nmc_setting_get_valid_properties (NMSetting *setting);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue