summaryrefslogtreecommitdiff
path: root/src/NetworkManagerUtils.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-08-30 19:17:29 +0200
committerThomas Haller <thaller@redhat.com>2017-09-08 11:05:04 +0200
commit315bd0a97d0f05f0e04297a48ed62d92d1b3aa9b (patch)
tree02e0554b33ce81dc34b188f63d8017778fbee3ea /src/NetworkManagerUtils.c
parente99a6039445445c4c9d9cef18abd2022985e7dfc (diff)
downloadNetworkManager-315bd0a97d0f05f0e04297a48ed62d92d1b3aa9b.tar.gz
core: add nm_utils_connection_has_default_route()
Taken from "src/nm-default-route-manager.c".
Diffstat (limited to 'src/NetworkManagerUtils.c')
-rw-r--r--src/NetworkManagerUtils.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c
index 229b05a3e6..316f4acf15 100644
--- a/src/NetworkManagerUtils.c
+++ b/src/NetworkManagerUtils.c
@@ -206,6 +206,55 @@ nm_utils_get_ip_config_method (NMConnection *connection,
g_assert_not_reached ();
}
+gboolean
+nm_utils_connection_has_default_route (NMConnection *connection,
+ int addr_family,
+ gboolean *out_is_never_default)
+{
+ const char *method;
+ NMSettingIPConfig *s_ip;
+ gboolean is_never_default = FALSE;
+ gboolean has_default_route = FALSE;
+
+ g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE);
+ g_return_val_if_fail (NM_IN_SET (addr_family, AF_INET, AF_INET6), FALSE);
+
+ if (!connection)
+ goto out;
+
+ if (addr_family == AF_INET)
+ s_ip = nm_connection_get_setting_ip4_config (connection);
+ else
+ s_ip = nm_connection_get_setting_ip6_config (connection);
+ if (!s_ip)
+ goto out;
+ if (nm_setting_ip_config_get_never_default (s_ip)) {
+ is_never_default = TRUE;
+ goto out;
+ }
+
+ if (addr_family == AF_INET) {
+ method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP4_CONFIG);
+ if (NM_IN_STRSET (method, NULL,
+ NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
+ NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL))
+ goto out;
+ } else {
+ method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP6_CONFIG);
+ if (NM_IN_STRSET (method, NULL,
+ NM_SETTING_IP6_CONFIG_METHOD_IGNORE,
+ NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL))
+ goto out;
+ }
+
+ has_default_route = TRUE;
+out:
+ NM_SET_OUT (out_is_never_default, is_never_default);
+ return has_default_route;
+}
+
+/*****************************************************************************/
+
void
nm_utils_complete_generic (NMPlatform *platform,
NMConnection *connection,