mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-06 06:48:07 +02:00
core: add parameters options to nm_utils_complete_generic()
This commit is contained in:
parent
eb634c6077
commit
f9b43ed7d4
2 changed files with 82 additions and 26 deletions
|
|
@ -227,19 +227,23 @@ out:
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
nm_utils_complete_generic(NMPlatform * platform,
|
_nm_utils_complete_generic_with_params(NMPlatform * platform,
|
||||||
NMConnection * connection,
|
NMConnection * connection,
|
||||||
const char * ctype,
|
const char * ctype,
|
||||||
NMConnection *const *existing_connections,
|
NMConnection *const *existing_connections,
|
||||||
const char * preferred_id,
|
const char * preferred_id,
|
||||||
const char * fallback_id_prefix,
|
const char * fallback_id_prefix,
|
||||||
const char * ifname_prefix,
|
const char * ifname_prefix,
|
||||||
const char * ifname,
|
const char * ifname,
|
||||||
gboolean default_enable_ipv6)
|
...)
|
||||||
{
|
{
|
||||||
NMSettingConnection *s_con;
|
NMSettingConnection *s_con;
|
||||||
char * id, *generated_ifname;
|
char * id;
|
||||||
GHashTable * parameters;
|
char * generated_ifname;
|
||||||
|
gs_unref_hashtable GHashTable *parameters = NULL;
|
||||||
|
va_list ap;
|
||||||
|
const char * p_val;
|
||||||
|
const char * p_key;
|
||||||
|
|
||||||
g_assert(fallback_id_prefix);
|
g_assert(fallback_id_prefix);
|
||||||
g_return_if_fail(ifname_prefix == NULL || ifname == NULL);
|
g_return_if_fail(ifname_prefix == NULL || ifname == NULL);
|
||||||
|
|
@ -279,13 +283,20 @@ nm_utils_complete_generic(NMPlatform * platform,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normalize */
|
/* Normalize */
|
||||||
parameters = g_hash_table_new(nm_str_hash, g_str_equal);
|
va_start(ap, ifname);
|
||||||
g_hash_table_insert(parameters,
|
while ((p_key = va_arg(ap, const char *))) {
|
||||||
NM_CONNECTION_NORMALIZE_PARAM_IP6_CONFIG_METHOD,
|
p_val = va_arg(ap, const char *);
|
||||||
default_enable_ipv6 ? NM_SETTING_IP6_CONFIG_METHOD_AUTO
|
if (!p_val) {
|
||||||
: NM_SETTING_IP6_CONFIG_METHOD_IGNORE);
|
if (parameters)
|
||||||
|
g_hash_table_remove(parameters, p_key);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!parameters)
|
||||||
|
parameters = g_hash_table_new(nm_str_hash, g_str_equal);
|
||||||
|
g_hash_table_insert(parameters, (char *) p_key, (char *) p_val);
|
||||||
|
}
|
||||||
|
va_end(ap);
|
||||||
nm_connection_normalize(connection, parameters, NULL, NULL);
|
nm_connection_normalize(connection, parameters, NULL, NULL);
|
||||||
g_hash_table_destroy(parameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -19,15 +19,60 @@ const char *nm_utils_get_ip_config_method(NMConnection *connection, int addr_fam
|
||||||
|
|
||||||
const char *nm_utils_get_shared_wifi_permission(NMConnection *connection);
|
const char *nm_utils_get_shared_wifi_permission(NMConnection *connection);
|
||||||
|
|
||||||
void nm_utils_complete_generic(NMPlatform * platform,
|
void _nm_utils_complete_generic_with_params(NMPlatform * platform,
|
||||||
NMConnection * connection,
|
NMConnection * connection,
|
||||||
const char * ctype,
|
const char * ctype,
|
||||||
NMConnection *const *existing_connections,
|
NMConnection *const *existing_connections,
|
||||||
const char * preferred_id,
|
const char * preferred_id,
|
||||||
const char * fallback_id_prefix,
|
const char * fallback_id_prefix,
|
||||||
const char * ifname_prefix,
|
const char * ifname_prefix,
|
||||||
const char * ifname,
|
const char * ifname,
|
||||||
gboolean default_enable_ipv6);
|
...) G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
|
#define nm_utils_complete_generic_with_params(platform, \
|
||||||
|
connection, \
|
||||||
|
ctype, \
|
||||||
|
existing_connections, \
|
||||||
|
preferred_id, \
|
||||||
|
fallback_id_prefix, \
|
||||||
|
ifname_prefix, \
|
||||||
|
ifname, \
|
||||||
|
...) \
|
||||||
|
_nm_utils_complete_generic_with_params(platform, \
|
||||||
|
connection, \
|
||||||
|
ctype, \
|
||||||
|
existing_connections, \
|
||||||
|
preferred_id, \
|
||||||
|
fallback_id_prefix, \
|
||||||
|
ifname_prefix, \
|
||||||
|
ifname, \
|
||||||
|
##__VA_ARGS__, \
|
||||||
|
NULL)
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
nm_utils_complete_generic(NMPlatform * platform,
|
||||||
|
NMConnection * connection,
|
||||||
|
const char * ctype,
|
||||||
|
NMConnection *const *existing_connections,
|
||||||
|
const char * preferred_id,
|
||||||
|
const char * fallback_id_prefix,
|
||||||
|
const char * ifname_prefix,
|
||||||
|
const char * ifname,
|
||||||
|
gboolean default_enable_ipv6)
|
||||||
|
{
|
||||||
|
nm_utils_complete_generic_with_params(platform,
|
||||||
|
connection,
|
||||||
|
ctype,
|
||||||
|
existing_connections,
|
||||||
|
preferred_id,
|
||||||
|
fallback_id_prefix,
|
||||||
|
ifname_prefix,
|
||||||
|
ifname,
|
||||||
|
NM_CONNECTION_NORMALIZE_PARAM_IP6_CONFIG_METHOD,
|
||||||
|
default_enable_ipv6
|
||||||
|
? NM_SETTING_IP6_CONFIG_METHOD_AUTO
|
||||||
|
: NM_SETTING_IP6_CONFIG_METHOD_IGNORE);
|
||||||
|
}
|
||||||
|
|
||||||
typedef gboolean(NMUtilsMatchFilterFunc)(NMConnection *connection, gpointer user_data);
|
typedef gboolean(NMUtilsMatchFilterFunc)(NMConnection *connection, gpointer user_data);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue