summaryrefslogtreecommitdiff
path: root/libnm-glib/nm-access-point.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-glib/nm-access-point.c')
-rw-r--r--libnm-glib/nm-access-point.c239
1 files changed, 35 insertions, 204 deletions
diff --git a/libnm-glib/nm-access-point.c b/libnm-glib/nm-access-point.c
index 2712f36ce..777e41de6 100644
--- a/libnm-glib/nm-access-point.c
+++ b/libnm-glib/nm-access-point.c
@@ -18,18 +18,10 @@
* Boston, MA 02110-1301 USA.
*
* Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2011 Red Hat, Inc.
+ * Copyright (C) 2007 - 2008 Red Hat, Inc.
*/
-#include <config.h>
#include <string.h>
-#include <netinet/ether.h>
-
-#include <nm-connection.h>
-#include <nm-setting-connection.h>
-#include <nm-setting-wireless.h>
-#include <nm-setting-wireless-security.h>
-#include <nm-utils.h>
#include "nm-access-point.h"
#include "NetworkManager.h"
@@ -46,12 +38,12 @@ typedef struct {
gboolean disposed;
DBusGProxy *proxy;
- NM80211ApFlags flags;
- NM80211ApSecurityFlags wpa_flags;
- NM80211ApSecurityFlags rsn_flags;
+ guint32 flags;
+ guint32 wpa_flags;
+ guint32 rsn_flags;
GByteArray *ssid;
guint32 frequency;
- char *bssid;
+ char *hw_address;
NM80211Mode mode;
guint32 max_bitrate;
guint8 strength;
@@ -68,7 +60,6 @@ enum {
PROP_MODE,
PROP_MAX_BITRATE,
PROP_STRENGTH,
- PROP_BSSID,
LAST_PROP
};
@@ -90,7 +81,7 @@ enum {
*
* Creates a new #NMAccessPoint.
*
- * Returns: (transfer full): a new access point
+ * Returns: a new access point
**/
GObject *
nm_access_point_new (DBusGConnection *connection, const char *path)
@@ -108,11 +99,11 @@ nm_access_point_new (DBusGConnection *connection, const char *path)
* nm_access_point_get_flags:
* @ap: a #NMAccessPoint
*
- * Gets the flags of the access point.
+ * Gets the flags of the access point
*
* Returns: the flags
**/
-NM80211ApFlags
+guint32
nm_access_point_get_flags (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
@@ -123,8 +114,7 @@ nm_access_point_get_flags (NMAccessPoint *ap)
if (!priv->flags) {
priv->flags = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_FLAGS,
- NULL);
+ DBUS_PROP_FLAGS);
}
return priv->flags;
@@ -134,11 +124,11 @@ nm_access_point_get_flags (NMAccessPoint *ap)
* nm_access_point_get_wpa_flags:
* @ap: a #NMAccessPoint
*
- * Gets the WPA (version 1) flags of the access point.
+ * Gets the WPA flags of the access point.
*
* Returns: the WPA flags
**/
-NM80211ApSecurityFlags
+guint32
nm_access_point_get_wpa_flags (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
@@ -149,8 +139,7 @@ nm_access_point_get_wpa_flags (NMAccessPoint *ap)
if (!priv->wpa_flags) {
priv->wpa_flags = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_WPA_FLAGS,
- NULL);
+ DBUS_PROP_WPA_FLAGS);
}
return priv->wpa_flags;
@@ -160,12 +149,11 @@ nm_access_point_get_wpa_flags (NMAccessPoint *ap)
* nm_access_point_get_rsn_flags:
* @ap: a #NMAccessPoint
*
- * Gets the RSN (Robust Secure Network, ie WPA version 2) flags of the access
- * point.
+ * Gets the RSN flags of the access point.
*
* Returns: the RSN flags
**/
-NM80211ApSecurityFlags
+guint32
nm_access_point_get_rsn_flags (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
@@ -176,8 +164,7 @@ nm_access_point_get_rsn_flags (NMAccessPoint *ap)
if (!priv->rsn_flags) {
priv->rsn_flags = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_RSN_FLAGS,
- NULL);
+ DBUS_PROP_RSN_FLAGS);
}
return priv->rsn_flags;
@@ -203,8 +190,7 @@ nm_access_point_get_ssid (NMAccessPoint *ap)
if (!priv->ssid) {
priv->ssid = _nm_object_get_byte_array_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_SSID,
- NULL);
+ DBUS_PROP_SSID);
}
return priv->ssid;
@@ -229,55 +215,36 @@ nm_access_point_get_frequency (NMAccessPoint *ap)
if (!priv->frequency) {
priv->frequency = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_FREQUENCY,
- NULL);
+ DBUS_PROP_FREQUENCY);
}
return priv->frequency;
}
/**
- * nm_access_point_get_bssid:
+ * nm_access_point_get_hw_address:
* @ap: a #NMAccessPoint
*
- * Gets the Basic Service Set ID (BSSID) of the WiFi access point.
+ * Gets the hardware (MAC) address of the access point.
*
- * Returns: the BSSID of the access point. This is an internal string and must
- * not be modified or freed.
+ * Returns: the hardware address of the access point. This is the internal string used by the
+ * access point and must not be modified.
**/
const char *
-nm_access_point_get_bssid (NMAccessPoint *ap)
+nm_access_point_get_hw_address (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL);
priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
- if (!priv->bssid) {
- priv->bssid = _nm_object_get_string_property (NM_OBJECT (ap),
- NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_HW_ADDRESS,
- NULL);
+ if (!priv->hw_address) {
+ priv->hw_address = _nm_object_get_string_property (NM_OBJECT (ap),
+ NM_DBUS_INTERFACE_ACCESS_POINT,
+ DBUS_PROP_HW_ADDRESS);
}
- return priv->bssid;
-}
-
-/**
- * nm_access_point_get_hw_address:
- * @ap: a #NMAccessPoint
- *
- * Gets the hardware (MAC) address of the access point.
- *
- * Returns: the hardware address of the access point. This is the internal string used by the
- * access point and must not be modified.
- *
- * Deprecated: 0.9: Use nm_access_point_get_bssid() instead.
- **/
-const char *
-nm_access_point_get_hw_address (NMAccessPoint *ap)
-{
- return nm_access_point_get_bssid (ap);
+ return priv->hw_address;
}
/**
@@ -299,8 +266,7 @@ nm_access_point_get_mode (NMAccessPoint *ap)
if (!priv->mode) {
priv->mode = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_MODE,
- NULL);
+ DBUS_PROP_MODE);
}
return priv->mode;
@@ -325,8 +291,7 @@ nm_access_point_get_max_bitrate (NMAccessPoint *ap)
if (!priv->max_bitrate) {
priv->max_bitrate = _nm_object_get_uint_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_MAX_BITRATE,
- NULL);
+ DBUS_PROP_MAX_BITRATE);
}
return priv->max_bitrate;
@@ -351,131 +316,12 @@ nm_access_point_get_strength (NMAccessPoint *ap)
if (!priv->strength) {
priv->strength = _nm_object_get_byte_property (NM_OBJECT (ap),
NM_DBUS_INTERFACE_ACCESS_POINT,
- DBUS_PROP_STRENGTH,
- NULL);
+ DBUS_PROP_STRENGTH);
}
return priv->strength;
}
-/**
- * nm_access_point_filter_connections:
- * @ap: an #NMAccessPoint to filter connections for
- * @connections: a list of #NMConnection objects to filter
- *
- * Filters a given list of connections for a given #NMAccessPoint object and
- * return connections which may be activated with the access point. Any
- * returned connections will match the @ap's SSID and (if given) BSSID and
- * other attributes like security settings, channel, etc.
- *
- * Returns: (transfer container) (element-type NetworkManager.Connection): a
- * list of #NMConnection objects that could be activated with the given @ap.
- * The elements of the list are owned by their creator and should not be freed
- * by the caller, but the returned list itself is owned by the caller and should
- * be freed with g_slist_free() when it is no longer required.
- **/
-GSList *
-nm_access_point_filter_connections (NMAccessPoint *ap, const GSList *connections)
-{
- GSList *filtered = NULL;
- const GSList *iter;
-
- for (iter = connections; iter; iter = g_slist_next (iter)) {
- NMConnection *candidate = NM_CONNECTION (iter->data);
- NMSettingConnection *s_con;
- NMSettingWireless *s_wifi;
- NMSettingWirelessSecurity *s_wsec;
- const char *ctype, *ap_bssid_str;
- const GByteArray *setting_ssid;
- const GByteArray *ap_ssid;
- const GByteArray *setting_bssid;
- struct ether_addr *ap_bssid;
- const char *setting_mode;
- NM80211Mode ap_mode;
- const char *setting_band;
- guint32 ap_freq, setting_chan, ap_chan;
-
- s_con = (NMSettingConnection *) nm_connection_get_setting (candidate, NM_TYPE_SETTING_CONNECTION);
- g_assert (s_con);
- ctype = nm_setting_connection_get_connection_type (s_con);
- if (strcmp (ctype, NM_SETTING_WIRELESS_SETTING_NAME) != 0)
- continue;
-
- s_wifi = (NMSettingWireless *) nm_connection_get_setting (candidate, NM_TYPE_SETTING_WIRELESS);
- if (!s_wifi)
- continue;
-
- /* SSID checks */
- ap_ssid = nm_access_point_get_ssid (ap);
- g_warn_if_fail (ap_ssid != NULL);
- setting_ssid = nm_setting_wireless_get_ssid (s_wifi);
- if (!setting_ssid || !ap_ssid || (setting_ssid->len != ap_ssid->len))
- continue;
- if (memcmp (setting_ssid->data, ap_ssid->data, ap_ssid->len) != 0)
- continue;
-
- /* BSSID checks */
- ap_bssid_str = nm_access_point_get_bssid (ap);
- g_warn_if_fail (ap_bssid_str);
- setting_bssid = nm_setting_wireless_get_bssid (s_wifi);
- if (setting_bssid && ap_bssid_str) {
- g_assert (setting_bssid->len == ETH_ALEN);
- ap_bssid = ether_aton (ap_bssid_str);
- g_warn_if_fail (ap_bssid);
- if (ap_bssid) {
- if (memcmp (ap_bssid->ether_addr_octet, setting_bssid->data, ETH_ALEN) != 0)
- continue;
- }
- }
-
- /* Mode */
- ap_mode = nm_access_point_get_mode (ap);
- g_warn_if_fail (ap_mode != NM_802_11_MODE_UNKNOWN);
- setting_mode = nm_setting_wireless_get_mode (s_wifi);
- if (setting_mode && ap_mode) {
- if (!strcmp (setting_mode, "infrastructure") && (ap_mode != NM_802_11_MODE_INFRA))
- return NULL;
- if (!strcmp (setting_mode, "adhoc") && (ap_mode != NM_802_11_MODE_ADHOC))
- return NULL;
- }
-
- /* Band and Channel/Frequency */
- ap_freq = nm_access_point_get_frequency (ap);
- g_warn_if_fail (ap_freq > 0);
- if (ap_freq) {
- setting_band = nm_setting_wireless_get_band (s_wifi);
- if (g_strcmp0 (setting_band, "a") == 0) {
- if (ap_freq < 4915 || ap_freq > 5825)
- continue;
- } else if (g_strcmp0 (setting_band, "bg") == 0) {
- if (ap_freq < 2412 || ap_freq > 2484)
- continue;
- }
-
- setting_chan = nm_setting_wireless_get_channel (s_wifi);
- if (setting_chan) {
- ap_chan = nm_utils_wifi_freq_to_channel (ap_freq);
- if (setting_chan != ap_chan)
- continue;
- }
- }
-
- s_wsec = (NMSettingWirelessSecurity *) nm_connection_get_setting (candidate, NM_TYPE_SETTING_WIRELESS_SECURITY);
- if (!nm_setting_wireless_ap_security_compatible (s_wifi,
- s_wsec,
- nm_access_point_get_flags (ap),
- nm_access_point_get_wpa_flags (ap),
- nm_access_point_get_rsn_flags (ap),
- ap_mode))
- continue;
-
- /* Connection applies to this device */
- filtered = g_slist_prepend (filtered, candidate);
- }
-
- return g_slist_reverse (filtered);
-}
-
/************************************************************/
static void
@@ -508,7 +354,8 @@ finalize (GObject *object)
if (priv->ssid)
g_byte_array_free (priv->ssid, TRUE);
- g_free (priv->bssid);
+ if (priv->hw_address)
+ g_free (priv->hw_address);
G_OBJECT_CLASS (nm_access_point_parent_class)->finalize (object);
}
@@ -538,10 +385,7 @@ get_property (GObject *object,
g_value_set_uint (value, nm_access_point_get_frequency (ap));
break;
case PROP_HW_ADDRESS:
- g_value_set_string (value, nm_access_point_get_bssid (ap));
- break;
- case PROP_BSSID:
- g_value_set_string (value, nm_access_point_get_bssid (ap));
+ g_value_set_string (value, nm_access_point_get_hw_address (ap));
break;
case PROP_MODE:
g_value_set_uint (value, nm_access_point_get_mode (ap));
@@ -576,9 +420,9 @@ register_for_property_changed (NMAccessPoint *ap)
{ NM_ACCESS_POINT_FLAGS, _nm_object_demarshal_generic, &priv->flags },
{ NM_ACCESS_POINT_WPA_FLAGS, _nm_object_demarshal_generic, &priv->wpa_flags },
{ NM_ACCESS_POINT_RSN_FLAGS, _nm_object_demarshal_generic, &priv->rsn_flags },
- { NM_ACCESS_POINT_SSID, demarshal_ssid, &priv->ssid },
+ { NM_ACCESS_POINT_SSID, demarshal_ssid, &priv->ssid },
{ NM_ACCESS_POINT_FREQUENCY, _nm_object_demarshal_generic, &priv->frequency },
- { NM_ACCESS_POINT_HW_ADDRESS, _nm_object_demarshal_generic, &priv->bssid },
+ { NM_ACCESS_POINT_HW_ADDRESS, _nm_object_demarshal_generic, &priv->hw_address },
{ NM_ACCESS_POINT_MODE, _nm_object_demarshal_generic, &priv->mode },
{ NM_ACCESS_POINT_MAX_BITRATE, _nm_object_demarshal_generic, &priv->max_bitrate },
{ NM_ACCESS_POINT_STRENGTH, _nm_object_demarshal_generic, &priv->strength },
@@ -700,19 +544,6 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
G_PARAM_READABLE));
/**
- * NMAccessPoint:bssid:
- *
- * The BSSID of the access point.
- **/
- g_object_class_install_property
- (object_class, PROP_BSSID,
- g_param_spec_string (NM_ACCESS_POINT_BSSID,
- "BSSID",
- "BSSID",
- NULL,
- G_PARAM_READABLE));
-
- /**
* NMAccessPoint:hw-address:
*
* The hardware address of the access point.