summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2013-10-07 17:47:52 +0200
committerJiří Klimeš <jklimes@redhat.com>2013-10-07 18:10:27 +0200
commit2af8c08f6591b5b199bff1775d845c47ac131d58 (patch)
treec730ff6036727a9b4234b3e552537064b6a1d9dd
parent87041545b40fd0c0cfae16a8e605552b7715dc15 (diff)
downloadNetworkManager-2af8c08f6591b5b199bff1775d845c47ac131d58.tar.gz
ifcfg-rh: ignore default routes in route6 file (rh #991807)
Base on patch from Francesco Prelz <Francesco Prelz mi infn it>: https://mail.gnome.org/archives/networkmanager-list/2013-January/msg00095.html https://bugzilla.redhat.com/show_bug.cgi?id=991807
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c14
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual3
2 files changed, 13 insertions, 4 deletions
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 4586b5ccdf..f9dd034037 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -1120,9 +1120,9 @@ read_route6_file (const char *filename, NMSettingIP6Config *s_ip6, GError **erro
gboolean success = FALSE;
const char *pattern_empty = "^\\s*(\\#.*)?$";
- const char *pattern_to1 = "^\\s*(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
+ const char *pattern_to1 = "^\\s*(default|" IPV6_ADDR_REGEX ")" /* IPv6 or 'default' keyword */
"(?:/(\\d{1,3}))?"; /* optional prefix */
- const char *pattern_to2 = "to\\s+(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
+ const char *pattern_to2 = "to\\s+(default|" IPV6_ADDR_REGEX ")" /* IPv6 or 'default' keyword */
"(?:/(\\d{1,3}))?"; /* optional prefix */
const char *pattern_via = "via\\s+(" IPV6_ADDR_REGEX ")"; /* IPv6 of gateway */
const char *pattern_metric = "metric\\s+(\\d+)"; /* metric */
@@ -1168,8 +1168,14 @@ read_route6_file (const char *filename, NMSettingIP6Config *s_ip6, GError **erro
}
}
dest = g_match_info_fetch (match_info, 1);
- if (!strcmp (dest, "default"))
- strcpy (dest, "::");
+ if (!g_strcmp0 (dest, "default")) {
+ /* Ignore default route - NM handles it internally */
+ g_free (dest);
+ g_match_info_free (match_info);
+ PLUGIN_WARN (IFCFG_PLUGIN_NAME, " warning: ignoring manual default route: '%s' (%s)",
+ *iter, filename);
+ continue;
+ }
if (inet_pton (AF_INET6, dest, &ip6_addr) != 1) {
g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
"Invalid IP6 route destination address '%s'", dest);
diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual
index ae4e47ae55..2a994c502e 100644
--- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual
+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual
@@ -1 +1,4 @@
9876::1234/96 via 9876::7777 metric 2
+
+# default route is ignored by ifcfg-rh reader, because NM handles it internally
+default via dead::beaf