diff options
| author | Michael Biebl <biebl@debian.org> | 2018-09-23 10:11:11 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2018-09-23 10:11:11 +0200 |
| commit | 135c3be0fb0eedb7a1b493ffde6c1ab3d23771f6 (patch) | |
| tree | 40408d2ad887437e3ca63ff7fc6334bf22ae3fe6 /src/nm-ip4-config.c | |
| parent | 81e5928f26b40b0227604ccaf4b051fe14c9b3ef (diff) | |
| parent | e126f3e804c35480c4f075777430419d6ece23da (diff) | |
Update upstream source from tag 'upstream/1.12.4'
Update to upstream version '1.12.4' with Debian dir 650b52e60bf462f2972d0c33deec2cb171953445
Diffstat (limited to 'src/nm-ip4-config.c')
| -rw-r--r-- | src/nm-ip4-config.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 6ae81b57..657ebfc0 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -646,6 +646,37 @@ nm_ip4_config_capture (NMDedupMultiIndex *multi_idx, NMPlatform *platform, int i } void +nm_ip4_config_update_routes_metric (NMIP4Config *self, gint64 metric) +{ + gs_free NMPlatformIP4Route *routes = NULL; + gboolean need_update = FALSE; + const NMPlatformIP4Route *r; + NMDedupMultiIter iter; + guint num = 0, i = 0; + + nm_ip_config_iter_ip4_route_for_each (&iter, self, &r) { + if (r->metric != metric) + need_update = TRUE; + num++; + } + if (!need_update) + return; + + routes = g_new (NMPlatformIP4Route, num); + nm_ip_config_iter_ip4_route_for_each (&iter, self, &r) { + routes[i] = *r; + routes[i].metric = metric; + i++; + } + + g_object_freeze_notify (G_OBJECT (self)); + nm_ip4_config_reset_routes (self); + for (i = 0; i < num; i++) + nm_ip4_config_add_route (self, &routes[i], NULL); + g_object_thaw_notify (G_OBJECT (self)); +} + +void nm_ip4_config_add_dependent_routes (NMIP4Config *self, guint32 route_table, guint32 route_metric, |