summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-06-03 13:44:52 +0200
committerThomas Haller <thaller@redhat.com>2017-06-07 09:07:18 +0200
commit40a295564775bb6a719d36286439e6498a283f58 (patch)
treeb19796651bd701ffebc9c7836696c0076059e63e
parent113e8ad6e633e2ca34e7bb05eb92850dd0b9cd20 (diff)
downloadNetworkManager-40a295564775bb6a719d36286439e6498a283f58.tar.gz
bluetooth: split _find_network_server() in two functions
Instead of having a complex _find_network_server() function with several arguments, split it. Having multiple optional arguments to a find() function is fine, if all arguments consistently narrow down the search. For example nmp_cache_lookup_link_full(), where each argument is optional, and it restricts the search. For _find_network_server() that was not the case, because setting "addr" and "device" together would be non-sensical.
-rw-r--r--src/devices/bluetooth/nm-bluez5-manager.c43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/devices/bluetooth/nm-bluez5-manager.c b/src/devices/bluetooth/nm-bluez5-manager.c
index 83028a2c85..ded308464f 100644
--- a/src/devices/bluetooth/nm-bluez5-manager.c
+++ b/src/devices/bluetooth/nm-bluez5-manager.c
@@ -93,30 +93,37 @@ typedef struct {
CList network_servers;
} NetworkServer;
-static NetworkServer*
-_find_network_server (NMBluez5Manager *self,
- const gchar *path, const gchar *addr, NMDevice *device)
+static NetworkServer *
+_find_network_server (NMBluez5Manager *self, const char *path, NMDevice *device)
{
NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
NetworkServer *network_server;
- CList *iter;
- c_list_for_each (iter, &priv->network_servers) {
- network_server = c_list_entry (iter, NetworkServer, network_servers);
+ nm_assert (path || NM_IS_DEVICE (device));
- /* Device and path matches are exact. */
- if ( (path && !strcmp (network_server->path, path))
- || (device && network_server->device == device))
- return network_server;
+ c_list_for_each_entry (network_server, &priv->network_servers, network_servers) {
+ if (path && !nm_streq (network_server->path, path))
+ continue;
+ if (device && network_server->device != device)
+ continue;
+ return network_server;
+ }
+ return NULL;
+}
+static NetworkServer *
+_find_network_server_for_addr (NMBluez5Manager *self, const char *addr)
+{
+ NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
+ NetworkServer *network_server;
+
+ c_list_for_each_entry (network_server, &priv->network_servers, network_servers) {
/* The address lookups need a server not assigned to a device
* and tolerate an empty address as a wildcard for "any". */
- if ( (!path && !device)
- && !network_server->device
- && (!addr || !strcmp (network_server->addr, addr)))
+ if ( !network_server->device
+ && (!addr || nm_streq (network_server->addr, addr)))
return network_server;
}
-
return NULL;
}
@@ -163,7 +170,7 @@ network_server_is_available (const NMBtVTableNetworkServer *vtable,
{
NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable);
- return !!_find_network_server (self, NULL, addr, NULL);
+ return !!_find_network_server_for_addr (self, addr);
}
static gboolean
@@ -173,7 +180,7 @@ network_server_register_bridge (const NMBtVTableNetworkServer *vtable,
{
NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable);
NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
- NetworkServer *network_server = _find_network_server (self, NULL, addr, NULL);
+ NetworkServer *network_server = _find_network_server_for_addr (self, addr);
if (!network_server) {
/* The device checked that a network server is available, before
@@ -205,7 +212,7 @@ network_server_unregister_bridge (const NMBtVTableNetworkServer *vtable,
NMDevice *device)
{
NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable);
- NetworkServer *network_server = _find_network_server (self, NULL, NULL, device);
+ NetworkServer *network_server = _find_network_server (self, NULL, device);
if (network_server)
_network_server_unregister (self, network_server);
@@ -218,7 +225,7 @@ network_server_removed (GDBusProxy *proxy, const gchar *path, NMBluez5Manager *s
{
NetworkServer *network_server;
- network_server = _find_network_server (self, path, NULL, NULL);
+ network_server = _find_network_server (self, path, NULL);
if (!network_server)
return;