From 2f71e13495151e2b819fca9d6bad8ae7bb9b8b0a Mon Sep 17 00:00:00 2001 From: Robert Love Date: Thu, 2 Feb 2006 18:05:19 +0000 Subject: [PATCH] 2006-02-02 Robert Love * src/NetworkManagerAP.c: Add 'broadcast' property to the NMAccessPoint structure, which denotes whether or not the AP is hidden. This is a superset of 'artificial' -- we need 'broadcast' because a hidden AP can show up in the scan list. Add nm_ap_get_broadcast() and nm_ap_set_broadcast() accessor interfaces. * src/NetworkManagerAP.h: Add prototypes for nm_ap_get_broadcast() and nm_ap_set_broadcast(). * src/nm-dbus-net.c: Add new argument, boolean broadcast, to the "getProperties" method, which denotes whether or not the given network is hidden. * src/nm-device-802-11-wireless.c: Set broadcast to FALSE when creating an artificial network. Set broadcast to TRUE when scanning returns an ESSID and FALSE when not. * gnome/applet/applet-dbus-devices.c: Retrieve 'broadcast' argument from "getProperties" method on a network. Possible TODO is to somehow display this. * test/nm-tool.c: Display "Hidden" if the AP does not broadcast. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1429 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 20 ++++++++++++++++++++ gnome/applet/applet-dbus-devices.c | 16 +++++++++------- src/NetworkManagerAP.c | 19 +++++++++++++++++++ src/NetworkManagerAP.h | 3 +++ src/nm-dbus-net.c | 16 +++++++++------- src/nm-device-802-11-wireless.c | 8 +++++++- test/nm-tool.c | 20 +++++++++++--------- 7 files changed, 78 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32247de4da..f8d9cb49a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2006-02-02 Robert Love + + * src/NetworkManagerAP.c: Add 'broadcast' property to the NMAccessPoint + structure, which denotes whether or not the AP is hidden. This is a + superset of 'artificial' -- we need 'broadcast' because a hidden AP + can show up in the scan list. Add nm_ap_get_broadcast() and + nm_ap_set_broadcast() accessor interfaces. + * src/NetworkManagerAP.h: Add prototypes for nm_ap_get_broadcast() and + nm_ap_set_broadcast(). + * src/nm-dbus-net.c: Add new argument, boolean broadcast, to the + "getProperties" method, which denotes whether or not the given + network is hidden. + * src/nm-device-802-11-wireless.c: Set broadcast to FALSE when creating + an artificial network. Set broadcast to TRUE when scanning returns + an ESSID and FALSE when not. + * gnome/applet/applet-dbus-devices.c: Retrieve 'broadcast' argument + from "getProperties" method on a network. Possible TODO is to + somehow display this. + * test/nm-tool.c: Display "Hidden" if the AP does not broadcast. + 2006-02-02 Dan Williams * src/nm-device-802-11-wireless.c diff --git a/gnome/applet/applet-dbus-devices.c b/gnome/applet/applet-dbus-devices.c index fef86719e3..54ee8d0c25 100644 --- a/gnome/applet/applet-dbus-devices.c +++ b/gnome/applet/applet-dbus-devices.c @@ -540,6 +540,7 @@ static void nmwa_dbus_net_properties_cb (DBusPendingCall *pcall, void *user_data dbus_int32_t rate = 0; dbus_int32_t mode = -1; dbus_int32_t capabilities = NM_802_11_CAP_NONE; + dbus_bool_t broadcast = TRUE; g_return_if_fail (pcall != NULL); g_return_if_fail (cb_data != NULL); @@ -570,13 +571,14 @@ static void nmwa_dbus_net_properties_cb (DBusPendingCall *pcall, void *user_data } if (dbus_message_get_args (reply, NULL, DBUS_TYPE_OBJECT_PATH, &op, - DBUS_TYPE_STRING, &essid, - DBUS_TYPE_STRING, &hw_addr, - DBUS_TYPE_INT32, &strength, - DBUS_TYPE_DOUBLE, &freq, - DBUS_TYPE_INT32, &rate, - DBUS_TYPE_INT32, &mode, - DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_STRING, &essid, + DBUS_TYPE_STRING, &hw_addr, + DBUS_TYPE_INT32, &strength, + DBUS_TYPE_DOUBLE, &freq, + DBUS_TYPE_INT32, &rate, + DBUS_TYPE_INT32, &mode, + DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_BOOLEAN, &broadcast, DBUS_TYPE_INVALID)) { NetworkDevice * dev; diff --git a/src/NetworkManagerAP.c b/src/NetworkManagerAP.c index ba5735ee38..23961cc629 100644 --- a/src/NetworkManagerAP.c +++ b/src/NetworkManagerAP.c @@ -46,6 +46,7 @@ struct NMAccessPoint /* Non-scanned attributes */ gboolean invalid; gboolean artificial; /* Whether or not the AP is from a scan */ + gboolean broadcast; /* Whether or not the AP is broadcasting (hidden) */ gboolean user_created; /* Whether or not the AP was created by the user with "Create network..." */ GTimeVal last_seen; /* Last time the AP was seen in a scan */ @@ -433,6 +434,24 @@ void nm_ap_set_artificial (NMAccessPoint *ap, gboolean artificial) } +/* + * Get/Set functions to indicate whether an access point is broadcasting + * (hidden). This is a superset of artificial. + */ +gboolean nm_ap_get_broadcast (const NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, TRUE); + return ap->broadcast; +} + + +void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast) +{ + g_return_if_fail (ap != NULL); + ap->broadcast = broadcast; +} + + /* * Get/Set functions for how long ago the AP was last seen in a scan. * APs older than a certain date are dropped from the list. diff --git a/src/NetworkManagerAP.h b/src/NetworkManagerAP.h index a0c7b9fc88..f6c36ede94 100644 --- a/src/NetworkManagerAP.h +++ b/src/NetworkManagerAP.h @@ -77,6 +77,9 @@ void nm_ap_set_trusted (NMAccessPoint *ap, gboolean trusted); gboolean nm_ap_get_artificial (const NMAccessPoint *ap); void nm_ap_set_artificial (NMAccessPoint *ap, gboolean artificial); +gboolean nm_ap_get_broadcast (const NMAccessPoint *ap); +void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast); + const GTimeVal * nm_ap_get_last_seen (const NMAccessPoint *ap); void nm_ap_set_last_seen (NMAccessPoint *ap, const GTimeVal *last_seen); diff --git a/src/nm-dbus-net.c b/src/nm-dbus-net.c index 7d634f7403..6795365812 100644 --- a/src/nm-dbus-net.c +++ b/src/nm-dbus-net.c @@ -246,19 +246,21 @@ static DBusMessage *nm_dbus_net_get_properties (DBusConnection *connection, DBus dbus_int32_t rate = nm_ap_get_rate (data->ap); dbus_int32_t mode = (dbus_int32_t) nm_ap_get_mode (data->ap); dbus_int32_t capabilities = (dbus_int32_t) nm_ap_get_capabilities (data->ap); + dbus_bool_t broadcast = (dbus_bool_t) nm_ap_get_broadcast (data->ap); memset (&hw_addr_buf[0], 0, 20); if (nm_ap_get_address (data->ap)) iw_ether_ntop((const struct ether_addr *) (nm_ap_get_address (data->ap)), &hw_addr_buf[0]); dbus_message_append_args (reply, DBUS_TYPE_OBJECT_PATH, &op, - DBUS_TYPE_STRING, &essid, - DBUS_TYPE_STRING, &hw_addr_buf_ptr, - DBUS_TYPE_INT32, &strength, - DBUS_TYPE_DOUBLE, &freq, - DBUS_TYPE_INT32, &rate, - DBUS_TYPE_INT32, &mode, - DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_STRING, &essid, + DBUS_TYPE_STRING, &hw_addr_buf_ptr, + DBUS_TYPE_INT32, &strength, + DBUS_TYPE_DOUBLE, &freq, + DBUS_TYPE_INT32, &rate, + DBUS_TYPE_INT32, &mode, + DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_BOOLEAN, &broadcast, DBUS_TYPE_INVALID); g_free (op); } diff --git a/src/nm-device-802-11-wireless.c b/src/nm-device-802-11-wireless.c index 00910892b7..9bb14e555b 100644 --- a/src/nm-device-802-11-wireless.c +++ b/src/nm-device-802-11-wireless.c @@ -666,6 +666,7 @@ nm_device_802_11_wireless_get_activation_ap (NMDevice80211Wireless *self, ap = nm_ap_new (); nm_ap_set_essid (ap, essid); nm_ap_set_artificial (ap, TRUE); + nm_ap_set_broadcast (ap, FALSE); nm_ap_list_append_ap (dev_ap_list, ap); nm_ap_unref (ap); } @@ -2488,7 +2489,7 @@ supplicant_send_network_config (NMDevice80211Wireless *self, goto out; /* For non-broadcast networks, we need to set "scan_ssid 1" to scan with probe request frames. */ - if (nm_ap_get_artificial (ap)) + if (!nm_ap_get_broadcast (ap)) { if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i scan_ssid 1", nwid)) @@ -3149,7 +3150,12 @@ process_scan_results (NMDevice80211Wireless *dev, else if ((strlen (essid) == 8) && (strcmp (essid, "") == 0)) /* Stupid ipw drivers use */ set = FALSE; if (set) + { + nm_ap_set_broadcast (ap, TRUE); nm_ap_set_essid (ap, essid); + } + else + nm_ap_set_broadcast (ap, FALSE); g_free (essid); } break; diff --git a/test/nm-tool.c b/test/nm-tool.c index 87874d44c9..82d339256a 100644 --- a/test/nm-tool.c +++ b/test/nm-tool.c @@ -122,6 +122,7 @@ static void detail_network (DBusConnection *connection, const char *path, const dbus_int32_t rate = 0; dbus_int32_t capabilities = NM_802_11_CAP_NONE; dbus_uint32_t mode = 0; + gboolean broadcast = TRUE; g_return_if_fail (connection != NULL); g_return_if_fail (path != NULL); @@ -141,13 +142,14 @@ static void detail_network (DBusConnection *connection, const char *path, const } if (dbus_message_get_args (reply, NULL, DBUS_TYPE_OBJECT_PATH, &op, - DBUS_TYPE_STRING, &essid, - DBUS_TYPE_STRING, &hw_addr, - DBUS_TYPE_INT32, &strength, - DBUS_TYPE_DOUBLE, &freq, - DBUS_TYPE_INT32, &rate, - DBUS_TYPE_INT32, &mode, - DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_STRING, &essid, + DBUS_TYPE_STRING, &hw_addr, + DBUS_TYPE_INT32, &strength, + DBUS_TYPE_DOUBLE, &freq, + DBUS_TYPE_INT32, &rate, + DBUS_TYPE_INT32, &mode, + DBUS_TYPE_INT32, &capabilities, + DBUS_TYPE_BOOLEAN, &broadcast, DBUS_TYPE_INVALID)) { char *temp = NULL; @@ -176,8 +178,8 @@ static void detail_network (DBusConnection *connection, const char *path, const enc_string = g_string_append (enc_string, ")"); } - temp = g_strdup_printf ("%s Mode, Freq %.3f MHz, Strength %d%%%s", (mode == IW_MODE_INFRA) ? "Infrastructure" : "Ad-Hoc", - flt_freq, strength, (enc_string && strlen (enc_string->str)) ? enc_string->str : ""); + temp = g_strdup_printf ("%s Mode, Freq %.3f MHz, Strength %d%%%s%s", (mode == IW_MODE_INFRA) ? "Infrastructure" : "Ad-Hoc", + flt_freq, strength, (enc_string && strlen (enc_string->str)) ? enc_string->str : "", !broadcast ? ", Hidden" : ""); temp_essid = g_strdup_printf (" %s%s", active ? "*" : "", essid); print_string (temp_essid, temp); g_string_free (enc_string, TRUE);