diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2017-10-10 15:00:59 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2017-10-26 20:13:07 +0200 |
commit | dc9b642856e558a7b4891cb43df5835d0552afd5 (patch) | |
tree | 599ffdd7dffa8c76069227c5a907042abd99e720 | |
parent | d9f4db647fc4d654b58ade8e166f9c0804ee18dc (diff) | |
download | NetworkManager-dc9b642856e558a7b4891cb43df5835d0552afd5.tar.gz |
manager: add a method to get a particular device of given type
And also make the remove_device() method use it behind the scenes.
-rw-r--r-- | src/devices/nm-device-ppp.c | 4 | ||||
-rw-r--r-- | src/nm-manager.c | 30 | ||||
-rw-r--r-- | src/nm-manager.h | 7 |
3 files changed, 31 insertions, 10 deletions
diff --git a/src/devices/nm-device-ppp.c b/src/devices/nm-device-ppp.c index 09b25f50e2..8b3968d513 100644 --- a/src/devices/nm-device-ppp.c +++ b/src/devices/nm-device-ppp.c @@ -117,7 +117,7 @@ ppp_ip4_config (NMPPPManager *ppp_manager, return; } if (renamed) - nm_manager_remove_device (nm_manager_get (), iface); + nm_manager_remove_device (nm_manager_get (), iface, NM_DEVICE_TYPE_PPP); nm_device_activate_schedule_ip4_config_result (device, config); return; @@ -195,7 +195,7 @@ act_stage3_ip4_config_start (NMDevice *device, if (!nm_device_take_over_link (device, priv->pending_ifname, &renamed)) return NM_ACT_STAGE_RETURN_FAILURE; if (renamed) - nm_manager_remove_device (nm_manager_get (), priv->pending_ifname); + nm_manager_remove_device (nm_manager_get (), priv->pending_ifname, NM_DEVICE_TYPE_PPP); if (out_config) *out_config = g_steal_pointer (&priv->pending_ip4_config); else diff --git a/src/nm-manager.c b/src/nm-manager.c index 575a15e6c6..f5ff5b6170 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -1270,22 +1270,38 @@ nm_manager_iface_for_uuid (NMManager *self, const char *uuid) return nm_connection_get_interface_name (NM_CONNECTION (connection)); } -gboolean -nm_manager_remove_device (NMManager *self, const char *ifname) +NMDevice * +nm_manager_get_device (NMManager *self, const char *ifname, NMDeviceType device_type) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); GSList *iter; NMDevice *d; + g_return_val_if_fail (ifname, NULL); + g_return_val_if_fail (device_type == NM_DEVICE_TYPE_UNKNOWN, NULL); + for (iter = priv->devices; iter; iter = iter->next) { d = iter->data; - if (nm_streq0 (nm_device_get_iface (d), ifname)) { - remove_device (self, d, FALSE, FALSE); - return TRUE; - } + + if ( nm_device_get_device_type (d) == device_type + && nm_streq0 (nm_device_get_iface (d), ifname)) + return d; } - return FALSE; + return NULL; +} + +gboolean +nm_manager_remove_device (NMManager *self, const char *ifname, NMDeviceType device_type) +{ + NMDevice *d; + + d = nm_manager_get_device (self, ifname, device_type); + if (!d) + return FALSE; + + remove_device (self, d, FALSE, FALSE); + return TRUE; } /** diff --git a/src/nm-manager.h b/src/nm-manager.h index fdcae121c5..622edb5b54 100644 --- a/src/nm-manager.h +++ b/src/nm-manager.h @@ -126,6 +126,11 @@ gboolean nm_manager_deactivate_connection (NMManager *manager, void nm_manager_set_capability (NMManager *self, NMCapability cap); -gboolean nm_manager_remove_device (NMManager *self, const char *ifname); +NMDevice * nm_manager_get_device (NMManager *self, + const char *ifname, + NMDeviceType device_type); +gboolean nm_manager_remove_device (NMManager *self, + const char *ifname, + NMDeviceType device_type); #endif /* __NETWORKMANAGER_MANAGER_H__ */ |