mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-02 22:38:01 +00:00
libnm-core: add dns-priority to NMSettingIPConfig
This commit is contained in:
parent
e53aa0dcff
commit
bdd0e7fec0
|
@ -1120,6 +1120,7 @@ typedef struct {
|
|||
GPtrArray *dns; /* array of IP address strings */
|
||||
GPtrArray *dns_search; /* array of domain name strings */
|
||||
GPtrArray *dns_options;/* array of DNS options */
|
||||
gint dns_priority;
|
||||
GPtrArray *addresses; /* array of NMIPAddress */
|
||||
GPtrArray *routes; /* array of NMIPRoute */
|
||||
gint64 route_metric;
|
||||
|
@ -1140,6 +1141,7 @@ enum {
|
|||
PROP_DNS,
|
||||
PROP_DNS_SEARCH,
|
||||
PROP_DNS_OPTIONS,
|
||||
PROP_DNS_PRIORITY,
|
||||
PROP_ADDRESSES,
|
||||
PROP_GATEWAY,
|
||||
PROP_ROUTES,
|
||||
|
@ -1683,6 +1685,22 @@ nm_setting_ip_config_clear_dns_options (NMSettingIPConfig *setting, gboolean is_
|
|||
g_object_notify (G_OBJECT (setting), NM_SETTING_IP_CONFIG_DNS_OPTIONS);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_setting_ip_config_get_dns_priority:
|
||||
* @setting: the #NMSettingIPConfig
|
||||
*
|
||||
* Returns: the priority of DNS servers
|
||||
*
|
||||
* Since: 1.4
|
||||
**/
|
||||
gint
|
||||
nm_setting_ip_config_get_dns_priority (NMSettingIPConfig *setting)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_SETTING_IP_CONFIG (setting), 0);
|
||||
|
||||
return NM_SETTING_IP_CONFIG_GET_PRIVATE (setting)->dns_priority;
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_setting_ip_config_get_num_addresses:
|
||||
* @setting: the #NMSettingIPConfig
|
||||
|
@ -2362,6 +2380,9 @@ set_property (GObject *object, guint prop_id,
|
|||
}
|
||||
}
|
||||
break;
|
||||
case PROP_DNS_PRIORITY:
|
||||
priv->dns_priority = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_ADDRESSES:
|
||||
g_ptr_array_unref (priv->addresses);
|
||||
priv->addresses = _nm_utils_copy_array (g_value_get_boxed (value),
|
||||
|
@ -2434,6 +2455,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_DNS_OPTIONS:
|
||||
g_value_take_boxed (value, priv->dns_options ? _nm_utils_ptrarray_to_strv (priv->dns_options) : NULL);
|
||||
break;
|
||||
case PROP_DNS_PRIORITY:
|
||||
g_value_set_int (value, priv->dns_priority);
|
||||
break;
|
||||
case PROP_ADDRESSES:
|
||||
g_value_take_boxed (value, _nm_utils_copy_array (priv->addresses,
|
||||
(NMUtilsCopyFunc) nm_ip_address_dup,
|
||||
|
@ -2585,6 +2609,34 @@ nm_setting_ip_config_class_init (NMSettingIPConfigClass *setting_class)
|
|||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMSettingIPConfig:dns-priority:
|
||||
*
|
||||
* DNS priority.
|
||||
*
|
||||
* The relative priority to be used when determining the order of DNS
|
||||
* servers in resolv.conf. A lower value means that servers will be on top
|
||||
* of the file. Zero selects the default value, which is 50 for VPNs and
|
||||
* 100 for other connections. When multiple devices have configurations
|
||||
* with the same priority, the one with an active default route will be
|
||||
* preferred. Note that when using dns=dnsmasq the order is meaningless
|
||||
* since dnsmasq forwards queries to all known servers at the same time.
|
||||
*
|
||||
* Negative values have the special effect of excluding other configurations
|
||||
* with a greater priority value; so in presence of at least a negative
|
||||
* priority, only DNS servers from configurations with the lowest priority
|
||||
* value will be used.
|
||||
*
|
||||
* Since: 1.4
|
||||
**/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_DNS_PRIORITY,
|
||||
g_param_spec_int (NM_SETTING_IP_CONFIG_DNS_PRIORITY, "", "",
|
||||
G_MININT32, G_MAXINT32, 0,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMSettingIPConfig:addresses:
|
||||
*
|
||||
|
|
|
@ -136,6 +136,7 @@ void nm_ip_route_set_attribute (NMIPRoute *route,
|
|||
#define NM_SETTING_IP_CONFIG_DNS "dns"
|
||||
#define NM_SETTING_IP_CONFIG_DNS_SEARCH "dns-search"
|
||||
#define NM_SETTING_IP_CONFIG_DNS_OPTIONS "dns-options"
|
||||
#define NM_SETTING_IP_CONFIG_DNS_PRIORITY "dns-priority"
|
||||
#define NM_SETTING_IP_CONFIG_ADDRESSES "addresses"
|
||||
#define NM_SETTING_IP_CONFIG_GATEWAY "gateway"
|
||||
#define NM_SETTING_IP_CONFIG_ROUTES "routes"
|
||||
|
@ -219,6 +220,9 @@ gboolean nm_setting_ip_config_remove_dns_option_by_value (NMSettingIPConfig
|
|||
const char *dns_option);
|
||||
void nm_setting_ip_config_clear_dns_options (NMSettingIPConfig *setting, gboolean is_set);
|
||||
|
||||
NM_AVAILABLE_IN_1_4
|
||||
gint nm_setting_ip_config_get_dns_priority (NMSettingIPConfig *setting);
|
||||
|
||||
guint nm_setting_ip_config_get_num_addresses (NMSettingIPConfig *setting);
|
||||
NMIPAddress *nm_setting_ip_config_get_address (NMSettingIPConfig *setting,
|
||||
int idx);
|
||||
|
|
|
@ -1968,6 +1968,7 @@ test_connection_diff_a_only (void)
|
|||
{ NM_SETTING_IP_CONFIG_NEVER_DEFAULT, NM_SETTING_DIFF_RESULT_IN_A },
|
||||
{ NM_SETTING_IP_CONFIG_MAY_FAIL, NM_SETTING_DIFF_RESULT_IN_A },
|
||||
{ NM_SETTING_IP_CONFIG_DAD_TIMEOUT, NM_SETTING_DIFF_RESULT_IN_A },
|
||||
{ NM_SETTING_IP_CONFIG_DNS_PRIORITY, NM_SETTING_DIFF_RESULT_IN_A },
|
||||
{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
|
||||
} },
|
||||
};
|
||||
|
|
|
@ -1061,6 +1061,7 @@ global:
|
|||
|
||||
libnm_1_4_0 {
|
||||
global:
|
||||
nm_setting_ip_config_get_dns_priority;
|
||||
nm_vpn_editor_plugin_load;
|
||||
nm_vpn_plugin_info_get_auth_dialog;
|
||||
nm_vpn_plugin_info_get_service;
|
||||
|
|
Loading…
Reference in a new issue