diff options
author | Thomas Haller <thaller@redhat.com> | 2014-11-12 11:22:01 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-11-19 22:55:32 +0100 |
commit | 462456f2554163f15037305c3b5320028476bd36 (patch) | |
tree | cda16f32ab1fb717c4c8ebd86c94ed31032f2cde | |
parent | 393f213c3bad9935e25652dade02237578562f17 (diff) | |
download | NetworkManager-462456f2554163f15037305c3b5320028476bd36.tar.gz |
policy: remove redundant remove_default_route() functions from NMDefaultRouteManager
When calling update_default_route(), NMDefaultRouteManager will look at the
source, and determine whether it has a default route or not. For example
for device sources, this means calling nm_device_get_ip4_default_route().
If the source indicates that it has no default route, the effect of
calling update_default_route() is the same as calling
remove_default_route() (hence, remove() can be replaced by update()).
If the source however still indicates a default route, the behavior
would be different. This case would be an undesired inconsistancy,
because source and NMDefaultRouteManager would disagree of whether
the source has a default route.
Source must always properly indicate whether it has a default route
or not, hence this situation does not arise.
Hence it is always better to call update().
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r-- | src/devices/nm-device.c | 4 | ||||
-rw-r--r-- | src/nm-default-route-manager.c | 29 | ||||
-rw-r--r-- | src/nm-default-route-manager.h | 3 | ||||
-rw-r--r-- | src/vpn-manager/nm-vpn-connection.c | 9 |
4 files changed, 4 insertions, 41 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 864a7d57bd..a533048c62 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -6935,8 +6935,8 @@ _cleanup_generic_post (NMDevice *self, gboolean deconfigure) priv->default_route.v4_has = FALSE; priv->default_route.v6_has = FALSE; - nm_default_route_manager_ip4_remove_default_route (nm_default_route_manager_get (), self); - nm_default_route_manager_ip6_remove_default_route (nm_default_route_manager_get (), self); + nm_default_route_manager_ip4_update_default_route (nm_default_route_manager_get (), self); + nm_default_route_manager_ip6_update_default_route (nm_default_route_manager_get (), self); /* Clean up IP configs; this does not actually deconfigure the * interface; the caller must flush routes and addresses explicitly. diff --git a/src/nm-default-route-manager.c b/src/nm-default-route-manager.c index cc2c6daee7..0cd7c1b582 100644 --- a/src/nm-default-route-manager.c +++ b/src/nm-default-route-manager.c @@ -589,35 +589,6 @@ nm_default_route_manager_ip6_update_default_route (NMDefaultRouteManager *self, /***********************************************************************************/ -static void -_ipx_remove_default_route (const VTableIP *vtable, NMDefaultRouteManager *self, gpointer source) -{ - NMDefaultRouteManagerPrivate *priv; - guint entry_idx; - - g_return_if_fail (NM_IS_DEFAULT_ROUTE_MANAGER (self)); - g_return_if_fail (NM_IS_DEVICE (source) || NM_IS_VPN_CONNECTION (source)); - - priv = NM_DEFAULT_ROUTE_MANAGER_GET_PRIVATE (self); - - if (_entry_find_by_source (vtable->get_entries (priv), source, &entry_idx)) - _entry_at_idx_remove (vtable, self, entry_idx); -} - -void -nm_default_route_manager_ip4_remove_default_route (NMDefaultRouteManager *self, gpointer source) -{ - _ipx_remove_default_route (&vtable_ip4, self, source); -} - -void -nm_default_route_manager_ip6_remove_default_route (NMDefaultRouteManager *self, gpointer source) -{ - _ipx_remove_default_route (&vtable_ip6, self, source); -} - -/***********************************************************************************/ - static gboolean _ipx_connection_has_default_route (const VTableIP *vtable, NMDefaultRouteManager *self, NMConnection *connection) { diff --git a/src/nm-default-route-manager.h b/src/nm-default-route-manager.h index 88fb59f0c9..d8e422735e 100644 --- a/src/nm-default-route-manager.h +++ b/src/nm-default-route-manager.h @@ -51,9 +51,6 @@ NMDefaultRouteManager *nm_default_route_manager_get (void); void nm_default_route_manager_ip4_update_default_route (NMDefaultRouteManager *manager, gpointer source); void nm_default_route_manager_ip6_update_default_route (NMDefaultRouteManager *manager, gpointer source); -void nm_default_route_manager_ip4_remove_default_route (NMDefaultRouteManager *manager, gpointer source); -void nm_default_route_manager_ip6_remove_default_route (NMDefaultRouteManager *manager, gpointer source); - gboolean nm_default_route_manager_ip4_connection_has_default_route (NMDefaultRouteManager *manager, NMConnection *connection); gboolean nm_default_route_manager_ip6_connection_has_default_route (NMDefaultRouteManager *manager, NMConnection *connection); diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c index 682e1dc5b7..be1ce60f93 100644 --- a/src/vpn-manager/nm-vpn-connection.c +++ b/src/vpn-manager/nm-vpn-connection.c @@ -237,9 +237,6 @@ vpn_cleanup (NMVpnConnection *connection, NMDevice *parent_dev) nm_platform_address_flush (priv->ip_ifindex); } - nm_default_route_manager_ip4_remove_default_route (nm_default_route_manager_get (), connection); - nm_default_route_manager_ip6_remove_default_route (nm_default_route_manager_get (), connection); - nm_device_set_vpn4_config (parent_dev, NULL); nm_device_set_vpn6_config (parent_dev, NULL); @@ -327,10 +324,8 @@ _set_vpn_state (NMVpnConnection *connection, dispatcher_cleanup (connection); - if (vpn_state >= STATE_DISCONNECTED && vpn_state <= STATE_FAILED) { - nm_default_route_manager_ip4_remove_default_route (nm_default_route_manager_get (), connection); - nm_default_route_manager_ip6_remove_default_route (nm_default_route_manager_get (), connection); - } + nm_default_route_manager_ip4_update_default_route (nm_default_route_manager_get (), connection); + nm_default_route_manager_ip6_update_default_route (nm_default_route_manager_get (), connection); /* The connection gets destroyed by the VPN manager when it enters the * disconnected/failed state, but we need to keep it around for a bit |