diff options
| author | Michael Biebl <biebl@debian.org> | 2020-08-19 10:13:49 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2020-08-19 10:13:49 +0200 |
| commit | e7b44ef4c80907346ec7492a09c45277459924fc (patch) | |
| tree | b1388af193ca205f73336eca47e81815e43a61ca /src/nm-ip4-config.c | |
| parent | 136d191f1c96dbae1489fed7c2565f5e1b1f8d40 (diff) | |
New upstream version 1.26.2 upstream/1.26.2
Diffstat (limited to 'src/nm-ip4-config.c')
| -rw-r--r-- | src/nm-ip4-config.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 490296c8..23c0d3f9 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -384,7 +384,7 @@ nm_ip4_config_lookup_routes (const NMIP4Config *self) void nm_ip_config_iter_ip4_route_init (NMDedupMultiIter *ipconf_iter, const NMIP4Config *self) { - g_return_if_fail (NM_IS_IP4_CONFIG (self)); + nm_assert (NM_IS_IP4_CONFIG (self)); nm_dedup_multi_iter_init (ipconf_iter, nm_ip4_config_lookup_routes (self)); } @@ -672,9 +672,11 @@ nm_ip4_config_update_routes_metric (NMIP4Config *self, gint64 metric) } static void -_add_local_route_from_addr4 (NMIP4Config *self, - const NMPlatformIP4Address *addr, - int ifindex) +_add_local_route_from_addr4 (NMIP4Config * self, + const NMPlatformIP4Address *addr, + int ifindex, + guint32 route_table, + gboolean is_vrf) { nm_auto_nmpobj NMPObject *r = NULL; NMPlatformIP4Route *route; @@ -686,18 +688,19 @@ _add_local_route_from_addr4 (NMIP4Config *self, route->network = addr->address; route->plen = 32; route->pref_src = addr->address; - route->table_coerced = nm_platform_route_table_coerce (RT_TABLE_LOCAL); route->type_coerced = nm_platform_route_type_coerce (RTN_LOCAL); route->scope_inv = nm_platform_route_scope_inv (RT_SCOPE_HOST); + route->table_coerced = nm_platform_route_table_coerce (is_vrf ? route_table : RT_TABLE_LOCAL); _add_route (self, r, NULL, NULL); } void nm_ip4_config_add_dependent_routes (NMIP4Config *self, - guint32 route_table, - guint32 route_metric, - GPtrArray **out_ip4_dev_route_blacklist) + guint32 route_table, + guint32 route_metric, + gboolean is_vrf, + GPtrArray ** out_ip4_dev_route_blacklist) { GPtrArray *ip4_dev_route_blacklist = NULL; const NMPlatformIP4Address *my_addr; @@ -729,7 +732,7 @@ nm_ip4_config_add_dependent_routes (NMIP4Config *self, if (my_addr->external) continue; - _add_local_route_from_addr4 (self, my_addr, ifindex); + _add_local_route_from_addr4 (self, my_addr, ifindex, route_table, is_vrf); if (_ipv4_is_zeronet (network)) { /* Kernel doesn't add device-routes for destinations that @@ -3224,6 +3227,9 @@ out_addresses_cached: nm_assert (_route_valid (route)); + if (route->type_coerced != nm_platform_route_type_coerce (RTN_UNICAST)) + continue; + g_variant_builder_init (&route_builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&route_builder, "{sv}", "dest", |