mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-07 00:31:11 +00:00
l3cfg: allow injecting default dns-priority for NML3ConfigData
NML3ConfigData is supposed to be immutable. It can be initialized from a NMConnection, and its DNS priority property might be zero. For the DNS priority, the value can be overwritten by global defaults. We thus need to inject the default value at the right place.
This commit is contained in:
parent
45bcedb77e
commit
05c05b7a80
|
@ -2712,6 +2712,7 @@ nm_l3_config_data_merge(NML3ConfigData * self,
|
|||
const guint32 * default_route_table_x /* length 2, for IS_IPv4 */,
|
||||
const guint32 * default_route_metric_x /* length 2, for IS_IPv4 */,
|
||||
const guint32 * default_route_penalty_x /* length 2, for IS_IPv4 */,
|
||||
const int * default_dns_priority_x /* length 2, for IS_IPv4 */,
|
||||
NML3ConfigMergeHookAddObj hook_add_obj,
|
||||
gpointer hook_user_data)
|
||||
{
|
||||
|
@ -2719,6 +2720,8 @@ nm_l3_config_data_merge(NML3ConfigData * self,
|
|||
static const guint32 x_default_route_metric_x[2] = {NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
|
||||
NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP4};
|
||||
static const guint32 x_default_route_penalty_x[2] = {0, 0};
|
||||
static const int x_default_dns_priority_x[2] = {NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL};
|
||||
NMDedupMultiIter iter;
|
||||
const NMPObject * obj;
|
||||
int IS_IPv4;
|
||||
|
@ -2732,6 +2735,8 @@ nm_l3_config_data_merge(NML3ConfigData * self,
|
|||
default_route_metric_x = x_default_route_metric_x;
|
||||
if (!default_route_penalty_x)
|
||||
default_route_penalty_x = x_default_route_penalty_x;
|
||||
if (!default_dns_priority_x)
|
||||
default_dns_priority_x = x_default_dns_priority_x;
|
||||
|
||||
nm_assert(default_route_table_x[0] != 0);
|
||||
nm_assert(default_route_table_x[1] != 0);
|
||||
|
@ -2893,7 +2898,12 @@ nm_l3_config_data_merge(NML3ConfigData * self,
|
|||
|
||||
if (!NM_FLAGS_ANY(self->flags, has_dns_priority_flag)
|
||||
&& NM_FLAGS_ANY(src->flags, has_dns_priority_flag)) {
|
||||
self->dns_priority_x[IS_IPv4] = src->dns_priority_x[IS_IPv4];
|
||||
int p = src->dns_priority_x[IS_IPv4];
|
||||
|
||||
if (p == 0 && !NM_FLAGS_HAS(merge_flags, NM_L3_CONFIG_MERGE_FLAGS_CLONE))
|
||||
p = default_dns_priority_x[IS_IPv4];
|
||||
|
||||
self->dns_priority_x[IS_IPv4] = p;
|
||||
self->flags |= has_dns_priority_flag;
|
||||
}
|
||||
|
||||
|
@ -2986,6 +2996,7 @@ nm_l3_config_data_new_clone(const NML3ConfigData *src, int ifindex)
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
nm_assert(nm_l3_config_data_cmp_full(src, self, NM_L3_CONFIG_CMP_FLAGS_IGNORE_IFINDEX) == 0);
|
||||
|
|
|
@ -151,6 +151,7 @@ void nm_l3_config_data_merge(NML3ConfigData * self,
|
|||
const guint32 *default_route_table_x /* length 2, for IS_IPv4 */,
|
||||
const guint32 *default_route_metric_x /* length 2, for IS_IPv4 */,
|
||||
const guint32 *default_route_penalty_x /* length 2, for IS_IPv4 */,
|
||||
const int * default_dns_priority_x /* length 2, for IS_IPv4 */,
|
||||
NML3ConfigMergeHookAddObj hook_add_obj,
|
||||
gpointer hook_user_data);
|
||||
|
||||
|
|
|
@ -591,6 +591,8 @@ _l3cd_config_add(NML3IPv4LL *self)
|
|||
NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
|
||||
0,
|
||||
0,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_L3_ACD_DEFEND_TYPE_ONCE,
|
||||
self->reg_timeout_msec,
|
||||
NM_L3CFG_CONFIG_FLAGS_ONLY_FOR_ACD,
|
||||
|
|
|
@ -414,6 +414,8 @@ _lladdr_handle_changed(NML3IPv6LL *self)
|
|||
NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
|
||||
0,
|
||||
0,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_L3_ACD_DEFEND_TYPE_ALWAYS,
|
||||
0,
|
||||
NM_L3CFG_CONFIG_FLAGS_ASSUME_CONFIG_ONCE,
|
||||
|
|
|
@ -189,6 +189,13 @@ typedef struct {
|
|||
};
|
||||
guint32 default_route_penalty_x[2];
|
||||
};
|
||||
union {
|
||||
struct {
|
||||
int default_dns_priority_6;
|
||||
int default_dns_priority_4;
|
||||
};
|
||||
int default_dns_priority_x[2];
|
||||
};
|
||||
gconstpointer tag_confdata;
|
||||
guint64 pseudo_timestamp_confdata;
|
||||
int priority_confdata;
|
||||
|
@ -3020,6 +3027,8 @@ nm_l3cfg_add_config(NML3Cfg * self,
|
|||
guint32 default_route_metric_6,
|
||||
guint32 default_route_penalty_4,
|
||||
guint32 default_route_penalty_6,
|
||||
int default_dns_priority_4,
|
||||
int default_dns_priority_6,
|
||||
NML3AcdDefendType acd_defend_type,
|
||||
guint32 acd_timeout_msec,
|
||||
NML3CfgConfigFlags config_flags,
|
||||
|
@ -3095,6 +3104,8 @@ nm_l3cfg_add_config(NML3Cfg * self,
|
|||
.default_route_metric_6 = default_route_metric_6,
|
||||
.default_route_penalty_4 = default_route_penalty_4,
|
||||
.default_route_penalty_6 = default_route_penalty_6,
|
||||
.default_dns_priority_4 = default_dns_priority_4,
|
||||
.default_dns_priority_6 = default_dns_priority_6,
|
||||
.acd_defend_type_confdata = acd_defend_type,
|
||||
.acd_timeout_msec_confdata = acd_timeout_msec,
|
||||
.priority_confdata = priority,
|
||||
|
@ -3143,6 +3154,14 @@ nm_l3cfg_add_config(NML3Cfg * self,
|
|||
l3_config_data->default_route_penalty_6 = default_route_penalty_6;
|
||||
changed = TRUE;
|
||||
}
|
||||
if (l3_config_data->default_dns_priority_4 != default_dns_priority_4) {
|
||||
l3_config_data->default_dns_priority_4 = default_dns_priority_4;
|
||||
changed = TRUE;
|
||||
}
|
||||
if (l3_config_data->default_dns_priority_6 != default_dns_priority_6) {
|
||||
l3_config_data->default_dns_priority_6 = default_dns_priority_6;
|
||||
changed = TRUE;
|
||||
}
|
||||
if (l3_config_data->acd_defend_type_confdata != acd_defend_type) {
|
||||
l3_config_data->acd_defend_type_confdata = acd_defend_type;
|
||||
changed = TRUE;
|
||||
|
@ -3382,6 +3401,7 @@ _l3cfg_update_combined_config(NML3Cfg * self,
|
|||
l3cd_data->default_route_table_x,
|
||||
l3cd_data->default_route_metric_x,
|
||||
l3cd_data->default_route_penalty_x,
|
||||
l3cd_data->default_dns_priority_x,
|
||||
_l3_hook_add_obj_cb,
|
||||
&hook_data);
|
||||
}
|
||||
|
|
|
@ -321,6 +321,8 @@ gboolean nm_l3cfg_add_config(NML3Cfg * self,
|
|||
guint32 default_route_metric_6,
|
||||
guint32 default_route_penalty_4,
|
||||
guint32 default_route_penalty_6,
|
||||
int default_dns_priority_4,
|
||||
int default_dns_priority_6,
|
||||
NML3AcdDefendType acd_defend_type,
|
||||
guint32 acd_timeout_msec,
|
||||
NML3CfgConfigFlags config_flags,
|
||||
|
|
|
@ -435,6 +435,8 @@ test_l3cfg(gconstpointer test_data)
|
|||
NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
|
||||
0,
|
||||
0,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
tdata->acd_defend_type_a,
|
||||
tdata->acd_timeout_msec_a,
|
||||
NM_L3CFG_CONFIG_FLAGS_NONE,
|
||||
|
@ -597,6 +599,8 @@ _test_l3_ipv4ll_signal_notify(NML3Cfg * l3cfg,
|
|||
105,
|
||||
0,
|
||||
0,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_DNS_PRIORITY_DEFAULT_NORMAL,
|
||||
NM_L3_ACD_DEFEND_TYPE_ONCE,
|
||||
nmtst_get_rand_bool() ? tdata->acd_timeout_msec : 0u,
|
||||
NM_L3CFG_CONFIG_FLAGS_NONE,
|
||||
|
|
Loading…
Reference in a new issue