dns/trivial: rename NMDnsIPConfigData to NMDnsConfigIPData

Let's try to rework and improve the implementation.

The code is already rather complicated from the start. Let's first try
to use consistent names for things. Naming is very important, so that
they follow a pattern that tells you what something does.
This commit is contained in:
Thomas Haller
2020-11-20 12:26:13 +01:00
parent d358f96104
commit 297e84d569
5 changed files with 104 additions and 94 deletions

View File

@@ -804,7 +804,7 @@ add_global_config(NMDnsDnsmasq * self,
} }
static void static void
add_ip_config(NMDnsDnsmasq *self, GVariantBuilder *servers, const NMDnsIPConfigData *ip_data) add_ip_config(NMDnsDnsmasq *self, GVariantBuilder *servers, const NMDnsConfigIPData *ip_data)
{ {
NMIPConfig * ip_config = ip_data->ip_config; NMIPConfig * ip_config = ip_data->ip_config;
gconstpointer addr; gconstpointer addr;
@@ -850,7 +850,7 @@ create_update_args(NMDnsDnsmasq * self,
const char * hostname) const char * hostname)
{ {
GVariantBuilder servers; GVariantBuilder servers;
const NMDnsIPConfigData *ip_data; const NMDnsConfigIPData *ip_data;
g_variant_builder_init(&servers, G_VARIANT_TYPE("aas")); g_variant_builder_init(&servers, G_VARIANT_TYPE("aas"));

View File

@@ -80,16 +80,16 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDnsManager, PROP_MODE, PROP_RC_MANAGER, PROP_CONF
static guint signals[LAST_SIGNAL] = {0}; static guint signals[LAST_SIGNAL] = {0};
typedef struct { typedef struct {
GHashTable *configs; GHashTable *configs_dict;
CList configs_lst_head; CList configs_lst_head;
CList ip_config_lst_head; CList ip_configs_lst_head;
GVariant *config_variant; GVariant *config_variant;
NMDnsIPConfigData *best_ip_config_4; NMDnsConfigIPData *best_ip_config_4;
NMDnsIPConfigData *best_ip_config_6; NMDnsConfigIPData *best_ip_config_6;
bool ip_config_lst_need_sort : 1; bool ip_configs_lst_need_sort : 1;
bool configs_lst_need_sort : 1; bool configs_lst_need_sort : 1;
@@ -162,7 +162,7 @@ NM_DEFINE_SINGLETON_GETTER(NMDnsManager, nm_dns_manager_get, NM_TYPE_DNS_MANAGER
/*****************************************************************************/ /*****************************************************************************/
static void static void
_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsIPConfigData *ip_data); _ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsConfigIPData *ip_data);
/*****************************************************************************/ /*****************************************************************************/
@@ -211,7 +211,7 @@ static NM_UTILS_LOOKUP_STR_DEFINE(
/*****************************************************************************/ /*****************************************************************************/
static void static void
_ASSERT_config_data(const NMDnsConfigData *data) _ASSERT_dns_config_data(const NMDnsConfigData *data)
{ {
nm_assert(data); nm_assert(data);
nm_assert(NM_IS_DNS_MANAGER(data->self)); nm_assert(NM_IS_DNS_MANAGER(data->self));
@@ -219,10 +219,10 @@ _ASSERT_config_data(const NMDnsConfigData *data)
} }
static void static void
_ASSERT_ip_config_data(const NMDnsIPConfigData *ip_data) _ASSERT_dns_config_ip_data(const NMDnsConfigIPData *ip_data)
{ {
nm_assert(ip_data); nm_assert(ip_data);
_ASSERT_config_data(ip_data->data); _ASSERT_dns_config_data(ip_data->data);
nm_assert(NM_IS_IP_CONFIG(ip_data->ip_config)); nm_assert(NM_IS_IP_CONFIG(ip_data->ip_config));
nm_assert(c_list_contains(&ip_data->data->data_lst_head, &ip_data->data_lst)); nm_assert(c_list_contains(&ip_data->data->data_lst_head, &ip_data->data_lst));
nm_assert(ip_data->data->ifindex == nm_ip_config_get_ifindex(ip_data->ip_config)); nm_assert(ip_data->data->ifindex == nm_ip_config_get_ifindex(ip_data->ip_config));
@@ -248,23 +248,25 @@ _ASSERT_ip_config_data(const NMDnsIPConfigData *ip_data)
#endif #endif
} }
static NMDnsIPConfigData * static NMDnsConfigIPData *
_ip_config_data_new(NMDnsConfigData *data, NMIPConfig *ip_config, NMDnsIPConfigType ip_config_type) _dns_config_ip_data_new(NMDnsConfigData * data,
NMIPConfig * ip_config,
NMDnsIPConfigType ip_config_type)
{ {
NMDnsIPConfigData *ip_data; NMDnsConfigIPData *ip_data;
_ASSERT_config_data(data); _ASSERT_dns_config_data(data);
nm_assert(NM_IS_IP_CONFIG(ip_config)); nm_assert(NM_IS_IP_CONFIG(ip_config));
nm_assert(ip_config_type != NM_DNS_IP_CONFIG_TYPE_REMOVED); nm_assert(ip_config_type != NM_DNS_IP_CONFIG_TYPE_REMOVED);
ip_data = g_slice_new(NMDnsIPConfigData); ip_data = g_slice_new(NMDnsConfigIPData);
*ip_data = (NMDnsIPConfigData){ *ip_data = (NMDnsConfigIPData){
.data = data, .data = data,
.ip_config = g_object_ref(ip_config), .ip_config = g_object_ref(ip_config),
.ip_config_type = ip_config_type, .ip_config_type = ip_config_type,
}; };
c_list_link_tail(&data->data_lst_head, &ip_data->data_lst); c_list_link_tail(&data->data_lst_head, &ip_data->data_lst);
c_list_link_tail(&NM_DNS_MANAGER_GET_PRIVATE(data->self)->ip_config_lst_head, c_list_link_tail(&NM_DNS_MANAGER_GET_PRIVATE(data->self)->ip_configs_lst_head,
&ip_data->ip_config_lst); &ip_data->ip_config_lst);
g_signal_connect(ip_config, g_signal_connect(ip_config,
@@ -273,14 +275,14 @@ _ip_config_data_new(NMDnsConfigData *data, NMIPConfig *ip_config, NMDnsIPConfigT
(GCallback) _ip_config_dns_priority_changed, (GCallback) _ip_config_dns_priority_changed,
ip_data); ip_data);
_ASSERT_ip_config_data(ip_data); _ASSERT_dns_config_ip_data(ip_data);
return ip_data; return ip_data;
} }
static void static void
_ip_config_data_free(NMDnsIPConfigData *ip_data) _dns_config_ip_data_free(NMDnsConfigIPData *ip_data)
{ {
_ASSERT_ip_config_data(ip_data); _ASSERT_dns_config_ip_data(ip_data);
c_list_unlink_stale(&ip_data->data_lst); c_list_unlink_stale(&ip_data->data_lst);
c_list_unlink_stale(&ip_data->ip_config_lst); c_list_unlink_stale(&ip_data->ip_config_lst);
@@ -296,15 +298,15 @@ _ip_config_data_free(NMDnsIPConfigData *ip_data)
nm_g_slice_free(ip_data); nm_g_slice_free(ip_data);
} }
static NMDnsIPConfigData * static NMDnsConfigIPData *
_config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config) _dns_config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config)
{ {
NMDnsIPConfigData *ip_data; NMDnsConfigIPData *ip_data;
_ASSERT_config_data(data); _ASSERT_dns_config_data(data);
c_list_for_each_entry (ip_data, &data->data_lst_head, data_lst) { c_list_for_each_entry (ip_data, &data->data_lst_head, data_lst) {
_ASSERT_ip_config_data(ip_data); _ASSERT_dns_config_ip_data(ip_data);
if (ip_data->ip_config == ip_config) if (ip_data->ip_config == ip_config)
return ip_data; return ip_data;
@@ -313,9 +315,9 @@ _config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config)
} }
static void static void
_config_data_free(NMDnsConfigData *data) _dns_config_data_free(NMDnsConfigData *data)
{ {
_ASSERT_config_data(data); _ASSERT_dns_config_data(data);
nm_assert(c_list_is_empty(&data->data_lst_head)); nm_assert(c_list_is_empty(&data->data_lst_head));
c_list_unlink_stale(&data->configs_lst); c_list_unlink_stale(&data->configs_lst);
@@ -323,10 +325,10 @@ _config_data_free(NMDnsConfigData *data)
} }
static int static int
_ip_config_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data) _mgr_get_ip_configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
{ {
const NMDnsIPConfigData *a = c_list_entry(a_lst, NMDnsIPConfigData, ip_config_lst); const NMDnsConfigIPData *a = c_list_entry(a_lst, NMDnsConfigIPData, ip_config_lst);
const NMDnsIPConfigData *b = c_list_entry(b_lst, NMDnsIPConfigData, ip_config_lst); const NMDnsConfigIPData *b = c_list_entry(b_lst, NMDnsConfigIPData, ip_config_lst);
/* Configurations with lower priority value first */ /* Configurations with lower priority value first */
NM_CMP_DIRECT(nm_ip_config_get_dns_priority(a->ip_config), NM_CMP_DIRECT(nm_ip_config_get_dns_priority(a->ip_config),
@@ -339,20 +341,20 @@ _ip_config_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data
} }
static CList * static CList *
_ip_config_lst_head(NMDnsManager *self) _mgr_get_ip_configs_lst_head(NMDnsManager *self)
{ {
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self); NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
if (G_UNLIKELY(priv->ip_config_lst_need_sort)) { if (G_UNLIKELY(priv->ip_configs_lst_need_sort)) {
priv->ip_config_lst_need_sort = FALSE; priv->ip_configs_lst_need_sort = FALSE;
c_list_sort(&priv->ip_config_lst_head, _ip_config_lst_cmp, NULL); c_list_sort(&priv->ip_configs_lst_head, _mgr_get_ip_configs_lst_cmp, NULL);
} }
return &priv->ip_config_lst_head; return &priv->ip_configs_lst_head;
} }
static int static int
_configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data) _mgr_get_configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
{ {
const NMDnsConfigData *a = c_list_entry(a_lst, NMDnsConfigData, configs_lst); const NMDnsConfigData *a = c_list_entry(a_lst, NMDnsConfigData, configs_lst);
const NMDnsConfigData *b = c_list_entry(b_lst, NMDnsConfigData, configs_lst); const NMDnsConfigData *b = c_list_entry(b_lst, NMDnsConfigData, configs_lst);
@@ -362,13 +364,13 @@ _configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
} }
_nm_unused static CList * _nm_unused static CList *
_config_data_lst_head(NMDnsManager *self) _mgr_get_configs_lst_head(NMDnsManager *self)
{ {
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self); NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
if (G_UNLIKELY(priv->configs_lst_need_sort)) { if (G_UNLIKELY(priv->configs_lst_need_sort)) {
priv->configs_lst_need_sort = FALSE; priv->configs_lst_need_sort = FALSE;
c_list_sort(&priv->configs_lst_head, _configs_lst_cmp, NULL); c_list_sort(&priv->configs_lst_head, _mgr_get_configs_lst_cmp, NULL);
} }
return &priv->configs_lst_head; return &priv->configs_lst_head;
@@ -1105,7 +1107,7 @@ static void
compute_hash(NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer[HASH_LEN]) compute_hash(NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer[HASH_LEN])
{ {
nm_auto_free_checksum GChecksum *sum = NULL; nm_auto_free_checksum GChecksum *sum = NULL;
NMDnsIPConfigData * ip_data; NMDnsConfigIPData * ip_data;
sum = g_checksum_new(G_CHECKSUM_SHA1); sum = g_checksum_new(G_CHECKSUM_SHA1);
nm_assert(HASH_LEN == g_checksum_type_get_length(G_CHECKSUM_SHA1)); nm_assert(HASH_LEN == g_checksum_type_get_length(G_CHECKSUM_SHA1));
@@ -1117,7 +1119,7 @@ compute_hash(NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer[
/* FIXME(ip-config-checksum): this relies on the fact that an IP /* FIXME(ip-config-checksum): this relies on the fact that an IP
* configuration without DNS parameters gives a zero checksum. */ * configuration without DNS parameters gives a zero checksum. */
head = _ip_config_lst_head(self); head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) c_list_for_each_entry (ip_data, head, ip_config_lst)
nm_ip_config_hash(ip_data->ip_config, sum, TRUE); nm_ip_config_hash(ip_data->ip_config, sum, TRUE);
} }
@@ -1224,15 +1226,15 @@ _collect_resolv_conf_data(NMDnsManager * self,
else { else {
nm_auto_free_gstring GString *tmp_gstring = NULL; nm_auto_free_gstring GString *tmp_gstring = NULL;
int prio, first_prio = 0; int prio, first_prio = 0;
const NMDnsIPConfigData * ip_data; const NMDnsConfigIPData * ip_data;
const CList * head; const CList * head;
gboolean is_first = TRUE; gboolean is_first = TRUE;
head = _ip_config_lst_head(self); head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) { c_list_for_each_entry (ip_data, head, ip_config_lst) {
gboolean skip = FALSE; gboolean skip = FALSE;
_ASSERT_ip_config_data(ip_data); _ASSERT_dns_config_ip_data(ip_data);
prio = nm_ip_config_get_dns_priority(ip_data->ip_config); prio = nm_ip_config_get_dns_priority(ip_data->ip_config);
@@ -1287,6 +1289,8 @@ _collect_resolv_conf_data(NMDnsManager * self,
*out_nis_domain = rc.nis_domain; *out_nis_domain = rc.nis_domain;
} }
/*****************************************************************************/
static char ** static char **
get_ip_rdns_domains(NMIPConfig *ip_config) get_ip_rdns_domains(NMIPConfig *ip_config)
{ {
@@ -1327,7 +1331,7 @@ get_ip_rdns_domains(NMIPConfig *ip_config)
} }
static gboolean static gboolean
domain_ht_get_priority(GHashTable *ht, const char *domain, int *out_priority) _domain_track_get_priority(GHashTable *ht, const char *domain, int *out_priority)
{ {
gpointer ptr; gpointer ptr;
@@ -1341,7 +1345,7 @@ domain_ht_get_priority(GHashTable *ht, const char *domain, int *out_priority)
/* Check if the domain is shadowed by a parent domain with more negative priority */ /* Check if the domain is shadowed by a parent domain with more negative priority */
static gboolean static gboolean
domain_is_shadowed(GHashTable * ht, _domain_track_is_shadowed(GHashTable * ht,
const char * domain, const char * domain,
int priority, int priority,
const char **out_parent, const char **out_parent,
@@ -1355,7 +1359,7 @@ domain_is_shadowed(GHashTable * ht,
nm_assert(!g_hash_table_contains(ht, domain)); nm_assert(!g_hash_table_contains(ht, domain));
if (domain_ht_get_priority(ht, "", &parent_priority)) { if (_domain_track_get_priority(ht, "", &parent_priority)) {
nm_assert(parent_priority <= priority); nm_assert(parent_priority <= priority);
if (parent_priority < 0 && parent_priority < priority) { if (parent_priority < 0 && parent_priority < priority) {
*out_parent = ""; *out_parent = "";
@@ -1367,7 +1371,7 @@ domain_is_shadowed(GHashTable * ht,
parent = strchr(domain, '.'); parent = strchr(domain, '.');
while (parent && parent[1]) { while (parent && parent[1]) {
parent++; parent++;
if (domain_ht_get_priority(ht, parent, &parent_priority)) { if (_domain_track_get_priority(ht, parent, &parent_priority)) {
nm_assert(parent_priority <= priority); nm_assert(parent_priority <= priority);
if (parent_priority < 0 && parent_priority < priority) { if (parent_priority < 0 && parent_priority < priority) {
*out_parent = parent; *out_parent = parent;
@@ -1382,18 +1386,18 @@ domain_is_shadowed(GHashTable * ht,
} }
static void static void
rebuild_domain_lists(NMDnsManager *self) _mgr_configs_data_construct(NMDnsManager *self)
{ {
NMDnsIPConfigData *ip_data; NMDnsConfigIPData *ip_data;
gs_unref_hashtable GHashTable *ht = NULL; gs_unref_hashtable GHashTable *ht = NULL;
gs_unref_hashtable GHashTable *wildcard_entries = NULL; gs_unref_hashtable GHashTable *wildcard_entries = NULL;
CList * head; CList * head;
int prev_priority = G_MININT; int prev_priority = G_MININT;
head = _ip_config_lst_head(self); head = _mgr_get_ip_configs_lst_head(self);
#if NM_MORE_ASSERTS #if NM_MORE_ASSERTS
/* we call clear_domain_lists() at the end of update. We /* we call _mgr_configs_data_clear() at the end of update. We
* don't expect any domain settings here. */ * don't expect any domain settings here. */
c_list_for_each_entry (ip_data, head, ip_config_lst) { c_list_for_each_entry (ip_data, head, ip_config_lst) {
nm_assert(!ip_data->domains.search); nm_assert(!ip_data->domains.search);
@@ -1516,7 +1520,7 @@ rebuild_domain_lists(NMDnsManager *self)
break; break;
/* Remove domains with lower priority */ /* Remove domains with lower priority */
if (domain_ht_get_priority(ht, domain_clean, &old_priority)) { if (_domain_track_get_priority(ht, domain_clean, &old_priority)) {
nm_assert(old_priority <= priority); nm_assert(old_priority <= priority);
if (old_priority < priority) { if (old_priority < priority) {
_LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) because it already exists " _LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) because it already exists "
@@ -1531,7 +1535,11 @@ rebuild_domain_lists(NMDnsManager *self)
old_priority); old_priority);
continue; continue;
} }
} else if (domain_is_shadowed(ht, domain_clean, priority, &parent, &parent_priority)) { } else if (_domain_track_is_shadowed(ht,
domain_clean,
priority,
&parent,
&parent_priority)) {
_LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) shadowed by '%s' (p=%d)", _LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) shadowed by '%s' (p=%d)",
NM_PRINT_FMT_QUOTED(!check_default_route, NM_PRINT_FMT_QUOTED(!check_default_route,
"'", "'",
@@ -1598,12 +1606,12 @@ rebuild_domain_lists(NMDnsManager *self)
} }
static void static void
clear_domain_lists(NMDnsManager *self) _mgr_configs_data_clear(NMDnsManager *self)
{ {
NMDnsIPConfigData *ip_data; NMDnsConfigIPData *ip_data;
CList * head; CList * head;
head = _ip_config_lst_head(self); head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) { c_list_for_each_entry (ip_data, head, ip_config_lst) {
nm_clear_g_free(&ip_data->domains.search); nm_clear_g_free(&ip_data->domains.search);
nm_clear_pointer(&ip_data->domains.reverse, g_strfreev); nm_clear_pointer(&ip_data->domains.reverse, g_strfreev);
@@ -1613,6 +1621,8 @@ clear_domain_lists(NMDnsManager *self)
} }
} }
/*****************************************************************************/
static gboolean static gboolean
update_dns(NMDnsManager *self, gboolean no_caching, GError **error) update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
{ {
@@ -1665,12 +1675,12 @@ update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
&nis_domain); &nis_domain);
if (priv->plugin || priv->sd_resolve_plugin) if (priv->plugin || priv->sd_resolve_plugin)
rebuild_domain_lists(self); _mgr_configs_data_construct(self);
if (priv->sd_resolve_plugin) { if (priv->sd_resolve_plugin) {
nm_dns_plugin_update(priv->sd_resolve_plugin, nm_dns_plugin_update(priv->sd_resolve_plugin,
global_config, global_config,
_ip_config_lst_head(self), _mgr_get_ip_configs_lst_head(self),
priv->hostname, priv->hostname,
NULL); NULL);
} }
@@ -1692,7 +1702,7 @@ update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
_LOGD("update-dns: updating plugin %s", plugin_name); _LOGD("update-dns: updating plugin %s", plugin_name);
if (!nm_dns_plugin_update(plugin, if (!nm_dns_plugin_update(plugin,
global_config, global_config,
_ip_config_lst_head(self), _mgr_get_ip_configs_lst_head(self),
priv->hostname, priv->hostname,
&plugin_error)) { &plugin_error)) {
_LOGW("update-dns: plugin %s update failed: %s", plugin_name, plugin_error->message); _LOGW("update-dns: plugin %s update failed: %s", plugin_name, plugin_error->message);
@@ -1709,7 +1719,7 @@ plugin_skip:;
/* Clear the generated search list as it points to /* Clear the generated search list as it points to
* strings owned by IP configurations and we can't * strings owned by IP configurations and we can't
* guarantee they stay alive. */ * guarantee they stay alive. */
clear_domain_lists(self); _mgr_configs_data_clear(self);
update_resolv_conf_no_stub(self, update_resolv_conf_no_stub(self,
NM_CAST_STRV_CC(searches), NM_CAST_STRV_CC(searches),
@@ -1825,11 +1835,11 @@ plugin_skip:;
/*****************************************************************************/ /*****************************************************************************/
static void static void
_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsIPConfigData *ip_data) _ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsConfigIPData *ip_data)
{ {
_ASSERT_ip_config_data(ip_data); _ASSERT_dns_config_ip_data(ip_data);
NM_DNS_MANAGER_GET_PRIVATE(ip_data->data->self)->ip_config_lst_need_sort = TRUE; NM_DNS_MANAGER_GET_PRIVATE(ip_data->data->self)->ip_configs_lst_need_sort = TRUE;
} }
gboolean gboolean
@@ -1838,10 +1848,10 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
NMDnsIPConfigType ip_config_type) NMDnsIPConfigType ip_config_type)
{ {
NMDnsManagerPrivate *priv; NMDnsManagerPrivate *priv;
NMDnsIPConfigData * ip_data; NMDnsConfigIPData * ip_data;
NMDnsConfigData * data; NMDnsConfigData * data;
int ifindex; int ifindex;
NMDnsIPConfigData ** p_best; NMDnsConfigIPData ** p_best;
g_return_val_if_fail(NM_IS_DNS_MANAGER(self), FALSE); g_return_val_if_fail(NM_IS_DNS_MANAGER(self), FALSE);
g_return_val_if_fail(NM_IS_IP_CONFIG(ip_config), FALSE); g_return_val_if_fail(NM_IS_IP_CONFIG(ip_config), FALSE);
@@ -1851,11 +1861,11 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
priv = NM_DNS_MANAGER_GET_PRIVATE(self); priv = NM_DNS_MANAGER_GET_PRIVATE(self);
data = g_hash_table_lookup(priv->configs, &ifindex); data = g_hash_table_lookup(priv->configs_dict, &ifindex);
if (!data) if (!data)
ip_data = NULL; ip_data = NULL;
else else
ip_data = _config_data_find_ip_config(data, ip_config); ip_data = _dns_config_data_find_ip_config(data, ip_config);
if (ip_config_type == NM_DNS_IP_CONFIG_TYPE_REMOVED) { if (ip_config_type == NM_DNS_IP_CONFIG_TYPE_REMOVED) {
if (!ip_data) if (!ip_data)
@@ -1865,9 +1875,9 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
if (priv->best_ip_config_6 == ip_data) if (priv->best_ip_config_6 == ip_data)
priv->best_ip_config_6 = NULL; priv->best_ip_config_6 = NULL;
/* deleting a config doesn't invalidate the configs' sort order. */ /* deleting a config doesn't invalidate the configs' sort order. */
_ip_config_data_free(ip_data); _dns_config_ip_data_free(ip_data);
if (c_list_is_empty(&data->data_lst_head)) if (c_list_is_empty(&data->data_lst_head))
g_hash_table_remove(priv->configs, &ifindex); g_hash_table_remove(priv->configs_dict, &ifindex);
goto changed; goto changed;
} }
@@ -1883,18 +1893,18 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
.self = self, .self = self,
.data_lst_head = C_LIST_INIT(data->data_lst_head), .data_lst_head = C_LIST_INIT(data->data_lst_head),
}; };
_ASSERT_config_data(data); _ASSERT_dns_config_data(data);
g_hash_table_add(priv->configs, data); g_hash_table_add(priv->configs_dict, data);
c_list_link_tail(&priv->configs_lst_head, &data->configs_lst); c_list_link_tail(&priv->configs_lst_head, &data->configs_lst);
priv->configs_lst_need_sort = TRUE; priv->configs_lst_need_sort = TRUE;
} }
if (!ip_data) if (!ip_data)
ip_data = _ip_config_data_new(data, ip_config, ip_config_type); ip_data = _dns_config_ip_data_new(data, ip_config, ip_config_type);
else else
ip_data->ip_config_type = ip_config_type; ip_data->ip_config_type = ip_config_type;
priv->ip_config_lst_need_sort = TRUE; priv->ip_configs_lst_need_sort = TRUE;
p_best = NM_IS_IP4_CONFIG(ip_config) ? &priv->best_ip_config_4 : &priv->best_ip_config_6; p_best = NM_IS_IP4_CONFIG(ip_config) ? &priv->best_ip_config_4 : &priv->best_ip_config_6;
@@ -2414,7 +2424,7 @@ _get_config_variant(NMDnsManager *self)
NMGlobalDnsConfig * global_config; NMGlobalDnsConfig * global_config;
gs_free char * str = NULL; gs_free char * str = NULL;
GVariantBuilder builder; GVariantBuilder builder;
NMDnsIPConfigData * ip_data; NMDnsConfigIPData * ip_data;
const CList * head; const CList * head;
gs_unref_ptrarray GPtrArray *array_domains = NULL; gs_unref_ptrarray GPtrArray *array_domains = NULL;
@@ -2430,7 +2440,7 @@ _get_config_variant(NMDnsManager *self)
g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}")); g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}"));
head = _ip_config_lst_head(self); head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) { c_list_for_each_entry (ip_data, head, ip_config_lst) {
const NMIPConfig *ip_config = ip_data->ip_config; const NMIPConfig *ip_config = ip_data->ip_config;
GVariantBuilder entry_builder; GVariantBuilder entry_builder;
@@ -2536,14 +2546,14 @@ nm_dns_manager_init(NMDnsManager *self)
_LOGT("creating..."); _LOGT("creating...");
c_list_init(&priv->configs_lst_head); c_list_init(&priv->configs_lst_head);
c_list_init(&priv->ip_config_lst_head); c_list_init(&priv->ip_configs_lst_head);
priv->config = g_object_ref(nm_config_get()); priv->config = g_object_ref(nm_config_get());
G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NMDnsConfigData, ifindex) == 0); G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NMDnsConfigData, ifindex) == 0);
priv->configs = g_hash_table_new_full(nm_pint_hash, priv->configs_dict = g_hash_table_new_full(nm_pint_hash,
nm_pint_equals, nm_pint_equals,
(GDestroyNotify) _config_data_free, (GDestroyNotify) _dns_config_data_free,
NULL); NULL);
/* Set the initial hash */ /* Set the initial hash */
@@ -2561,7 +2571,7 @@ dispose(GObject *object)
{ {
NMDnsManager * self = NM_DNS_MANAGER(object); NMDnsManager * self = NM_DNS_MANAGER(object);
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self); NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
NMDnsIPConfigData * ip_data, *ip_data_safe; NMDnsConfigIPData * ip_data, *ip_data_safe;
_LOGT("disposing"); _LOGT("disposing");
@@ -2577,10 +2587,10 @@ dispose(GObject *object)
priv->best_ip_config_4 = NULL; priv->best_ip_config_4 = NULL;
priv->best_ip_config_6 = NULL; priv->best_ip_config_6 = NULL;
c_list_for_each_entry_safe (ip_data, ip_data_safe, &priv->ip_config_lst_head, ip_config_lst) c_list_for_each_entry_safe (ip_data, ip_data_safe, &priv->ip_configs_lst_head, ip_config_lst)
_ip_config_data_free(ip_data); _dns_config_ip_data_free(ip_data);
nm_clear_pointer(&priv->configs, g_hash_table_destroy); nm_clear_pointer(&priv->configs_dict, g_hash_table_destroy);
nm_assert(c_list_is_empty(&priv->configs_lst_head)); nm_assert(c_list_is_empty(&priv->configs_lst_head));
nm_clear_g_source(&priv->plugin_ratelimit.timer); nm_clear_g_source(&priv->plugin_ratelimit.timer);

View File

@@ -62,7 +62,7 @@ typedef struct {
* With systemd-resolved, this is the value for SetLinkDefaultRoute(). */ * With systemd-resolved, this is the value for SetLinkDefaultRoute(). */
bool has_default_route : 1; bool has_default_route : 1;
} domains; } domains;
} NMDnsIPConfigData; } NMDnsConfigIPData;
typedef struct _NMDnsConfigData { typedef struct _NMDnsConfigData {
int ifindex; int ifindex;

View File

@@ -26,7 +26,7 @@ typedef struct {
GObjectClass parent; GObjectClass parent;
/* Called when DNS information is changed. 'configs' is an array /* Called when DNS information is changed. 'configs' is an array
* of pointers to NMDnsIPConfigData sorted by priority. * of pointers to NMDnsConfigIPData sorted by priority.
* 'global_config' is the optional global DNS * 'global_config' is the optional global DNS
* configuration. * configuration.
*/ */

View File

@@ -139,7 +139,7 @@ static gboolean
update_add_ip_config(NMDnsSystemdResolved *self, update_add_ip_config(NMDnsSystemdResolved *self,
GVariantBuilder * dns, GVariantBuilder * dns,
GVariantBuilder * domains, GVariantBuilder * domains,
NMDnsIPConfigData * data) NMDnsConfigIPData * data)
{ {
int addr_family; int addr_family;
gsize addr_size; gsize addr_size;
@@ -216,7 +216,7 @@ prepare_one_interface(NMDnsSystemdResolved *self, InterfaceConfig *ic)
g_variant_builder_open(&domains, G_VARIANT_TYPE("a(sb)")); g_variant_builder_open(&domains, G_VARIANT_TYPE("a(sb)"));
c_list_for_each_entry (elem, &ic->configs_lst_head, lst) { c_list_for_each_entry (elem, &ic->configs_lst_head, lst) {
NMDnsIPConfigData *data = elem->data; NMDnsConfigIPData *data = elem->data;
NMIPConfig * ip_config = data->ip_config; NMIPConfig * ip_config = data->ip_config;
has_config |= update_add_ip_config(self, &dns, &domains, data); has_config |= update_add_ip_config(self, &dns, &domains, data);
@@ -367,7 +367,7 @@ update(NMDnsPlugin * plugin,
gs_free gpointer * interfaces_keys = NULL; gs_free gpointer * interfaces_keys = NULL;
guint interfaces_len; guint interfaces_len;
int ifindex; int ifindex;
NMDnsIPConfigData *ip_data; NMDnsConfigIPData *ip_data;
GHashTableIter iter; GHashTableIter iter;
guint i; guint i;