diff options
| author | Michael Biebl <biebl@debian.org> | 2019-12-18 18:29:24 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2019-12-18 18:29:24 +0100 |
| commit | 28028b26b3371756811e95d894f709f4b1207c00 (patch) | |
| tree | 6fe7316fd743b51042db47601a8ef8814b3134ac /src/nm-ip6-config.c | |
| parent | e22609983008e1a669196ad64ba3a59ae8c76e0d (diff) | |
New upstream version 1.22.0 upstream/1.22.0
Diffstat (limited to 'src/nm-ip6-config.c')
| -rw-r--r-- | src/nm-ip6-config.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 1810d511..12553657 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -1,19 +1,5 @@ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * +// SPDX-License-Identifier: GPL-2.0+ +/* * Copyright (C) 2005 - 2017 Red Hat, Inc. * Copyright (C) 2006 - 2008 Novell, Inc. */ @@ -494,6 +480,8 @@ nm_ip6_config_add_dependent_routes (NMIP6Config *self, gboolean has_peer; int routes_n, routes_i; + if (my_addr->external) + continue; if (NM_FLAGS_HAS (my_addr->n_ifa_flags, IFA_F_NOPREFIXROUTE)) continue; if (my_addr->plen == 0) @@ -672,8 +660,6 @@ nm_ip6_config_merge_setting (NMIP6Config *self, route.plen = nm_ip_route_get_prefix (s_route); nm_assert (route.plen <= 128); - if (route.plen == 0) - continue; nm_ip_route_get_next_hop_binary (s_route, &route.gateway); if (nm_ip_route_get_metric (s_route) == -1) @@ -865,8 +851,17 @@ nm_ip6_config_merge (NMIP6Config *dst, g_object_freeze_notify (G_OBJECT (dst)); /* addresses */ - nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, src, &address) - _add_address (dst, NMP_OBJECT_UP_CAST (address), NULL); + nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, src, &address) { + if ( NM_FLAGS_HAS (merge_flags, NM_IP_CONFIG_MERGE_EXTERNAL) + && !address->external) { + NMPlatformIP6Address a; + + a = *address; + a.external = TRUE; + _add_address (dst, NULL, &a); + } else + _add_address (dst, NMP_OBJECT_UP_CAST (address), NULL); + } /* nameservers */ if (!NM_FLAGS_HAS (merge_flags, NM_IP_CONFIG_MERGE_NO_DNS)) { |