mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-06 16:21:50 +00:00
core: add DNS priority to NMIP4Config
This commit is contained in:
parent
d5855ed807
commit
f09f5e1ec8
|
@ -76,6 +76,13 @@
|
||||||
-->
|
-->
|
||||||
<property name="DnsOptions" type="as" access="read"/>
|
<property name="DnsOptions" type="as" access="read"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
DnsPriority:
|
||||||
|
|
||||||
|
The relative priority of DNS servers.
|
||||||
|
-->
|
||||||
|
<property name="DnsPriority" type="i" access="read"/>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
WinsServers:
|
WinsServers:
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ typedef struct {
|
||||||
int ifindex;
|
int ifindex;
|
||||||
gint64 route_metric;
|
gint64 route_metric;
|
||||||
gboolean metered;
|
gboolean metered;
|
||||||
|
gint dns_priority;
|
||||||
} NMIP4ConfigPrivate;
|
} NMIP4ConfigPrivate;
|
||||||
|
|
||||||
struct _NMIP4Config {
|
struct _NMIP4Config {
|
||||||
|
@ -96,6 +97,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMIP4Config,
|
||||||
PROP_SEARCHES,
|
PROP_SEARCHES,
|
||||||
PROP_DNS_OPTIONS,
|
PROP_DNS_OPTIONS,
|
||||||
PROP_WINS_SERVERS,
|
PROP_WINS_SERVERS,
|
||||||
|
PROP_DNS_PRIORITY,
|
||||||
);
|
);
|
||||||
|
|
||||||
NMIP4Config *
|
NMIP4Config *
|
||||||
|
@ -447,7 +449,7 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu
|
||||||
{
|
{
|
||||||
NMIP4ConfigPrivate *priv;
|
NMIP4ConfigPrivate *priv;
|
||||||
guint naddresses, nroutes, nnameservers, nsearches;
|
guint naddresses, nroutes, nnameservers, nsearches;
|
||||||
int i;
|
int i, priority;
|
||||||
|
|
||||||
if (!setting)
|
if (!setting)
|
||||||
return;
|
return;
|
||||||
|
@ -546,6 +548,10 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priority = nm_setting_ip_config_get_dns_priority (setting);
|
||||||
|
if (priority)
|
||||||
|
nm_ip4_config_set_dns_priority (config, priority);
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (config));
|
g_object_thaw_notify (G_OBJECT (config));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,6 +661,11 @@ nm_ip4_config_create_setting (const NMIP4Config *config)
|
||||||
nm_setting_ip_config_add_dns_option (s_ip4, option);
|
nm_setting_ip_config_add_dns_option (s_ip4, option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_object_set (s_ip4,
|
||||||
|
NM_SETTING_IP_CONFIG_DNS_PRIORITY,
|
||||||
|
nm_ip4_config_get_dns_priority (config),
|
||||||
|
NULL);
|
||||||
|
|
||||||
return NM_SETTING (s_ip4);
|
return NM_SETTING (s_ip4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,6 +757,10 @@ nm_ip4_config_merge (NMIP4Config *dst, const NMIP4Config *src, NMIPConfigMergeFl
|
||||||
nm_ip4_config_set_metered (dst, nm_ip4_config_get_metered (dst) ||
|
nm_ip4_config_set_metered (dst, nm_ip4_config_get_metered (dst) ||
|
||||||
nm_ip4_config_get_metered (src));
|
nm_ip4_config_get_metered (src));
|
||||||
|
|
||||||
|
/* DNS priority */
|
||||||
|
if (nm_ip4_config_get_dns_priority (src))
|
||||||
|
nm_ip4_config_set_dns_priority (dst, nm_ip4_config_get_dns_priority (src));
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (dst));
|
g_object_thaw_notify (G_OBJECT (dst));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -969,6 +984,10 @@ nm_ip4_config_subtract (NMIP4Config *dst, const NMIP4Config *src)
|
||||||
nm_ip4_config_del_wins (dst, idx);
|
nm_ip4_config_del_wins (dst, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* DNS priority */
|
||||||
|
if (nm_ip4_config_get_dns_priority (src) == nm_ip4_config_get_dns_priority (dst))
|
||||||
|
nm_ip4_config_set_dns_priority (dst, 0);
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (dst));
|
g_object_thaw_notify (G_OBJECT (dst));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1210,6 +1229,12 @@ nm_ip4_config_replace (NMIP4Config *dst, const NMIP4Config *src, gboolean *relev
|
||||||
has_relevant_changes = TRUE;
|
has_relevant_changes = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* DNS priority */
|
||||||
|
if (src_priv->dns_priority != dst_priv->dns_priority) {
|
||||||
|
nm_ip4_config_set_dns_priority (dst, src_priv->dns_priority);
|
||||||
|
has_relevant_changes = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* mss */
|
/* mss */
|
||||||
if (src_priv->mss != dst_priv->mss) {
|
if (src_priv->mss != dst_priv->mss) {
|
||||||
nm_ip4_config_set_mss (dst, src_priv->mss);
|
nm_ip4_config_set_mss (dst, src_priv->mss);
|
||||||
|
@ -1333,6 +1358,7 @@ nm_ip4_config_dump (const NMIP4Config *config, const char *detail)
|
||||||
for (i = 0; i < nm_ip4_config_get_num_dns_options (config); i++)
|
for (i = 0; i < nm_ip4_config_get_num_dns_options (config); i++)
|
||||||
g_message (" dnsopt: %s", nm_ip4_config_get_dns_option (config, i));
|
g_message (" dnsopt: %s", nm_ip4_config_get_dns_option (config, i));
|
||||||
|
|
||||||
|
g_message (" dnspri: %d", nm_ip4_config_get_dns_priority (config));
|
||||||
|
|
||||||
g_message (" mss: %"G_GUINT32_FORMAT, nm_ip4_config_get_mss (config));
|
g_message (" mss: %"G_GUINT32_FORMAT, nm_ip4_config_get_mss (config));
|
||||||
g_message (" mtu: %"G_GUINT32_FORMAT, nm_ip4_config_get_mtu (config));
|
g_message (" mtu: %"G_GUINT32_FORMAT, nm_ip4_config_get_mtu (config));
|
||||||
|
@ -1922,6 +1948,27 @@ nm_ip4_config_get_dns_option (const NMIP4Config *config, guint i)
|
||||||
|
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
nm_ip4_config_set_dns_priority (NMIP4Config *config, gint priority)
|
||||||
|
{
|
||||||
|
NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
|
||||||
|
|
||||||
|
if (priority != priv->dns_priority) {
|
||||||
|
priv->dns_priority = priority;
|
||||||
|
_notify (config, PROP_DNS_PRIORITY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gint
|
||||||
|
nm_ip4_config_get_dns_priority (const NMIP4Config *config)
|
||||||
|
{
|
||||||
|
const NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
|
||||||
|
|
||||||
|
return priv->dns_priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
nm_ip4_config_set_mss (NMIP4Config *config, guint32 mss)
|
nm_ip4_config_set_mss (NMIP4Config *config, guint32 mss)
|
||||||
{
|
{
|
||||||
|
@ -2174,6 +2221,7 @@ nm_ip4_config_hash (const NMIP4Config *config, GChecksum *sum, gboolean dns_only
|
||||||
g_checksum_update (sum, (const guint8 *) s, strlen (s));
|
g_checksum_update (sum, (const guint8 *) s, strlen (s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hash_u32 (sum, (guint32) nm_ip4_config_get_dns_priority (config));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2405,6 +2453,9 @@ get_property (GObject *object, guint prop_id,
|
||||||
case PROP_DNS_OPTIONS:
|
case PROP_DNS_OPTIONS:
|
||||||
nm_utils_g_value_set_strv (value, priv->dns_options);
|
nm_utils_g_value_set_strv (value, priv->dns_options);
|
||||||
break;
|
break;
|
||||||
|
case PROP_DNS_PRIORITY:
|
||||||
|
g_value_set_int (value, priv->dns_priority);
|
||||||
|
break;
|
||||||
case PROP_WINS_SERVERS:
|
case PROP_WINS_SERVERS:
|
||||||
g_value_take_variant (value,
|
g_value_take_variant (value,
|
||||||
g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32,
|
g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32,
|
||||||
|
@ -2505,7 +2556,11 @@ nm_ip4_config_class_init (NMIP4ConfigClass *config_class)
|
||||||
G_TYPE_STRV,
|
G_TYPE_STRV,
|
||||||
G_PARAM_READABLE |
|
G_PARAM_READABLE |
|
||||||
G_PARAM_STATIC_STRINGS);
|
G_PARAM_STATIC_STRINGS);
|
||||||
|
obj_properties[PROP_DNS_PRIORITY] =
|
||||||
|
g_param_spec_int (NM_IP4_CONFIG_DNS_PRIORITY, "", "",
|
||||||
|
G_MININT32, G_MAXINT32, 0,
|
||||||
|
G_PARAM_READABLE |
|
||||||
|
G_PARAM_STATIC_STRINGS);
|
||||||
obj_properties[PROP_WINS_SERVERS] =
|
obj_properties[PROP_WINS_SERVERS] =
|
||||||
g_param_spec_variant (NM_IP4_CONFIG_WINS_SERVERS, "", "",
|
g_param_spec_variant (NM_IP4_CONFIG_WINS_SERVERS, "", "",
|
||||||
G_VARIANT_TYPE ("au"),
|
G_VARIANT_TYPE ("au"),
|
||||||
|
|
|
@ -44,6 +44,7 @@ typedef struct _NMIP4ConfigClass NMIP4ConfigClass;
|
||||||
#define NM_IP4_CONFIG_DOMAINS "domains"
|
#define NM_IP4_CONFIG_DOMAINS "domains"
|
||||||
#define NM_IP4_CONFIG_SEARCHES "searches"
|
#define NM_IP4_CONFIG_SEARCHES "searches"
|
||||||
#define NM_IP4_CONFIG_DNS_OPTIONS "dns-options"
|
#define NM_IP4_CONFIG_DNS_OPTIONS "dns-options"
|
||||||
|
#define NM_IP4_CONFIG_DNS_PRIORITY "dns-priority"
|
||||||
#define NM_IP4_CONFIG_WINS_SERVERS "wins-servers"
|
#define NM_IP4_CONFIG_WINS_SERVERS "wins-servers"
|
||||||
|
|
||||||
/* deprecated */
|
/* deprecated */
|
||||||
|
@ -126,6 +127,10 @@ void nm_ip4_config_del_dns_option (NMIP4Config *config, guint i);
|
||||||
guint32 nm_ip4_config_get_num_dns_options (const NMIP4Config *config);
|
guint32 nm_ip4_config_get_num_dns_options (const NMIP4Config *config);
|
||||||
const char * nm_ip4_config_get_dns_option (const NMIP4Config *config, guint i);
|
const char * nm_ip4_config_get_dns_option (const NMIP4Config *config, guint i);
|
||||||
|
|
||||||
|
/* DNS priority */
|
||||||
|
void nm_ip4_config_set_dns_priority (NMIP4Config *config, gint priority);
|
||||||
|
gint nm_ip4_config_get_dns_priority (const NMIP4Config *config);
|
||||||
|
|
||||||
/* MSS */
|
/* MSS */
|
||||||
void nm_ip4_config_set_mss (NMIP4Config *config, guint32 mss);
|
void nm_ip4_config_set_mss (NMIP4Config *config, guint32 mss);
|
||||||
guint32 nm_ip4_config_get_mss (const NMIP4Config *config);
|
guint32 nm_ip4_config_get_mss (const NMIP4Config *config);
|
||||||
|
|
Loading…
Reference in a new issue