~ubuntu-branches/ubuntu/precise/network-manager/precise

« back to all changes in this revision

Viewing changes to libnm-glib/nm-access-point.c

  • Committer: Package Import Robot
  • Author(s): Mathieu Trudel-Lapierre
  • Date: 2012-02-09 16:45:41 UTC
  • mfrom: (1.1.53)
  • Revision ID: package-import@ubuntu.com-20120209164541-4h90zknlsfdb7x35
Tags: 0.9.2.0+git201202091925.c721477-0ubuntu1
* upstream snapshot 2012-02-09 19:25:59 (GMT)
  + c721477d11d4fe144111d6d2eec8f93f2e9186c9
* debian/patches/avoid-periodic-disk-wakeups.patch: refreshed.
* debian/patches/nl3-default-ip6-route.patch: refreshed.
* debian/libnm-glib4.symbols: add symbols:
  + nm_active_connection_get_master@Base
  + nm_client_new_async@Base
  + nm_client_new_finish@Base
  + nm_remote_settings_new_async@Base
  + nm_remote_settings_new_finish@Base
  + nm_device_get_state_reason@Base
* debian/libnm-util2.symbols: add symbols:
  + nm_setting_802_1x_get_pac_file@Base
  + nm_setting_infiniband_get_transport_mode@Base

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
#include "nm-types-private.h"
37
37
#include "nm-object-private.h"
38
38
 
39
 
#include "nm-access-point-bindings.h"
40
 
 
41
39
G_DEFINE_TYPE (NMAccessPoint, nm_access_point, NM_TYPE_OBJECT)
42
40
 
43
41
#define NM_ACCESS_POINT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACCESS_POINT, NMAccessPointPrivate))
115
113
NM80211ApFlags
116
114
nm_access_point_get_flags (NMAccessPoint *ap)
117
115
{
118
 
        NMAccessPointPrivate *priv;
119
 
 
120
116
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_FLAGS_NONE);
121
117
 
122
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
123
 
        if (!priv->flags) {
124
 
                priv->flags = _nm_object_get_uint_property (NM_OBJECT (ap),
125
 
                                                           NM_DBUS_INTERFACE_ACCESS_POINT,
126
 
                                                           DBUS_PROP_FLAGS,
127
 
                                                           NULL);
128
 
        }
129
 
 
130
 
        return priv->flags;
 
118
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
119
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->flags;
131
120
}
132
121
 
133
122
/**
141
130
NM80211ApSecurityFlags
142
131
nm_access_point_get_wpa_flags (NMAccessPoint *ap)
143
132
{
144
 
        NMAccessPointPrivate *priv;
145
 
 
146
133
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_SEC_NONE);
147
134
 
148
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
149
 
        if (!priv->wpa_flags) {
150
 
                priv->wpa_flags = _nm_object_get_uint_property (NM_OBJECT (ap),
151
 
                                                               NM_DBUS_INTERFACE_ACCESS_POINT,
152
 
                                                               DBUS_PROP_WPA_FLAGS,
153
 
                                                               NULL);
154
 
        }
155
 
 
156
 
        return priv->wpa_flags;
 
135
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
136
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->wpa_flags;
157
137
}
158
138
 
159
139
/**
168
148
NM80211ApSecurityFlags
169
149
nm_access_point_get_rsn_flags (NMAccessPoint *ap)
170
150
{
171
 
        NMAccessPointPrivate *priv;
172
 
 
173
151
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NM_802_11_AP_SEC_NONE);
174
152
 
175
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
176
 
        if (!priv->rsn_flags) {
177
 
                priv->rsn_flags = _nm_object_get_uint_property (NM_OBJECT (ap),
178
 
                                                               NM_DBUS_INTERFACE_ACCESS_POINT,
179
 
                                                               DBUS_PROP_RSN_FLAGS,
180
 
                                                               NULL);
181
 
        }
182
 
 
183
 
        return priv->rsn_flags;
 
153
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
154
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->rsn_flags;
184
155
}
185
156
 
186
157
/**
195
166
const GByteArray *
196
167
nm_access_point_get_ssid (NMAccessPoint *ap)
197
168
{
198
 
        NMAccessPointPrivate *priv;
199
 
 
200
169
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL);
201
170
 
202
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
203
 
        if (!priv->ssid) {
204
 
                priv->ssid = _nm_object_get_byte_array_property (NM_OBJECT (ap),
205
 
                                                                NM_DBUS_INTERFACE_ACCESS_POINT,
206
 
                                                                DBUS_PROP_SSID,
207
 
                                                                NULL);
208
 
        }
209
 
 
210
 
        return priv->ssid;
 
171
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
172
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->ssid;
211
173
}
212
174
 
213
175
/**
221
183
guint32
222
184
nm_access_point_get_frequency (NMAccessPoint *ap)
223
185
{
224
 
        NMAccessPointPrivate *priv;
225
 
 
226
186
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
227
187
 
228
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
229
 
        if (!priv->frequency) {
230
 
                priv->frequency = _nm_object_get_uint_property (NM_OBJECT (ap),
231
 
                                                               NM_DBUS_INTERFACE_ACCESS_POINT,
232
 
                                                               DBUS_PROP_FREQUENCY,
233
 
                                                               NULL);
234
 
        }
235
 
 
236
 
        return priv->frequency;
 
188
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
189
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->frequency;
237
190
}
238
191
 
239
192
/**
248
201
const char *
249
202
nm_access_point_get_bssid (NMAccessPoint *ap)
250
203
{
251
 
        NMAccessPointPrivate *priv;
252
 
 
253
204
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL);
254
205
 
255
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
256
 
        if (!priv->bssid) {
257
 
                priv->bssid = _nm_object_get_string_property (NM_OBJECT (ap),
258
 
                                                              NM_DBUS_INTERFACE_ACCESS_POINT,
259
 
                                                              DBUS_PROP_HW_ADDRESS,
260
 
                                                              NULL);
261
 
        }
262
 
 
263
 
        return priv->bssid;
 
206
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
207
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid;
264
208
}
265
209
 
266
210
/**
291
235
NM80211Mode
292
236
nm_access_point_get_mode (NMAccessPoint *ap)
293
237
{
294
 
        NMAccessPointPrivate *priv;
295
 
 
296
238
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
297
239
 
298
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
299
 
        if (!priv->mode) {
300
 
                priv->mode = _nm_object_get_uint_property (NM_OBJECT (ap),
301
 
                                                          NM_DBUS_INTERFACE_ACCESS_POINT,
302
 
                                                          DBUS_PROP_MODE,
303
 
                                                          NULL);
304
 
        }
305
 
 
306
 
        return priv->mode;
 
240
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
241
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->mode;
307
242
}
308
243
 
309
244
/**
317
252
guint32
318
253
nm_access_point_get_max_bitrate (NMAccessPoint *ap)
319
254
{
320
 
        NMAccessPointPrivate *priv;
321
 
 
322
255
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
323
256
 
324
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
325
 
        if (!priv->max_bitrate) {
326
 
                priv->max_bitrate = _nm_object_get_uint_property (NM_OBJECT (ap),
327
 
                                                              NM_DBUS_INTERFACE_ACCESS_POINT,
328
 
                                                              DBUS_PROP_MAX_BITRATE,
329
 
                                                              NULL);
330
 
        }
331
 
 
332
 
        return priv->max_bitrate;
 
257
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
258
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->max_bitrate;
333
259
}
334
260
 
335
261
/**
343
269
guint8
344
270
nm_access_point_get_strength (NMAccessPoint *ap)
345
271
{
346
 
        NMAccessPointPrivate *priv;
347
 
 
348
272
        g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
349
273
 
350
 
        priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
351
 
        if (!priv->strength) {
352
 
                priv->strength = _nm_object_get_byte_property (NM_OBJECT (ap),
353
 
                                                              NM_DBUS_INTERFACE_ACCESS_POINT,
354
 
                                                              DBUS_PROP_STRENGTH,
355
 
                                                              NULL);
356
 
        }
357
 
 
358
 
        return priv->strength;
 
274
        _nm_object_ensure_inited (NM_OBJECT (ap));
 
275
        return NM_ACCESS_POINT_GET_PRIVATE (ap)->strength;
359
276
}
360
277
 
361
278
/**
362
 
 * nm_access_point_filter_connections:
 
279
 * nm_access_point_connection_valid:
363
280
 * @ap: an #NMAccessPoint to validate @connection against
364
 
 * @connections: an #NMConnection to validate against @ap
 
281
 * @connection: an #NMConnection to validate against @ap
365
282
 *
366
283
 * Validates a given connection against a given WiFi access point to ensure that
367
284
 * the connection may be activated with that AP.  The connection must match the
475
392
 * returned connections will match the @ap's SSID and (if given) BSSID and
476
393
 * other attributes like security settings, channel, etc.
477
394
 *
 
395
 * To obtain the list of connections that are compatible with this access point,
 
396
 * use nm_remote_settings_list_connections() and then filter the returned list
 
397
 * for a given #NMDevice using nm_device_filter_connections() and finally
 
398
 * filter that list with this function.
 
399
 *
478
400
 * Returns: (transfer container) (element-type NetworkManager.Connection): a
479
401
 * list of #NMConnection objects that could be activated with the given @ap.
480
402
 * The elements of the list are owned by their creator and should not be freed
590
512
}
591
513
 
592
514
static void
593
 
register_for_property_changed (NMAccessPoint *ap)
 
515
register_properties (NMAccessPoint *ap)
594
516
{
595
517
        NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
596
 
        const NMPropertiesChangedInfo property_changed_info[] = {
597
 
                { NM_ACCESS_POINT_FLAGS,       _nm_object_demarshal_generic, &priv->flags },
598
 
                { NM_ACCESS_POINT_WPA_FLAGS,   _nm_object_demarshal_generic, &priv->wpa_flags },
599
 
                { NM_ACCESS_POINT_RSN_FLAGS,   _nm_object_demarshal_generic, &priv->rsn_flags },
600
 
                { NM_ACCESS_POINT_SSID,        demarshal_ssid,               &priv->ssid },
601
 
                { NM_ACCESS_POINT_FREQUENCY,   _nm_object_demarshal_generic, &priv->frequency },
602
 
                { NM_ACCESS_POINT_HW_ADDRESS,  _nm_object_demarshal_generic, &priv->bssid },
603
 
                { NM_ACCESS_POINT_MODE,        _nm_object_demarshal_generic, &priv->mode },
604
 
                { NM_ACCESS_POINT_MAX_BITRATE, _nm_object_demarshal_generic, &priv->max_bitrate },
605
 
                { NM_ACCESS_POINT_STRENGTH,    _nm_object_demarshal_generic, &priv->strength },
 
518
        const NMPropertiesInfo property_info[] = {
 
519
                { NM_ACCESS_POINT_FLAGS,       &priv->flags },
 
520
                { NM_ACCESS_POINT_WPA_FLAGS,   &priv->wpa_flags },
 
521
                { NM_ACCESS_POINT_RSN_FLAGS,   &priv->rsn_flags },
 
522
                { NM_ACCESS_POINT_SSID,        &priv->ssid, demarshal_ssid },
 
523
                { NM_ACCESS_POINT_FREQUENCY,   &priv->frequency },
 
524
                { NM_ACCESS_POINT_HW_ADDRESS,  &priv->bssid },
 
525
                { NM_ACCESS_POINT_MODE,        &priv->mode },
 
526
                { NM_ACCESS_POINT_MAX_BITRATE, &priv->max_bitrate },
 
527
                { NM_ACCESS_POINT_STRENGTH,    &priv->strength },
606
528
                { NULL },
607
529
        };
608
530
 
609
 
        _nm_object_handle_properties_changed (NM_OBJECT (ap),
610
 
                                             priv->proxy,
611
 
                                             property_changed_info);
 
531
        _nm_object_register_properties (NM_OBJECT (ap),
 
532
                                        priv->proxy,
 
533
                                        property_info);
612
534
}
613
535
 
614
 
static GObject*
615
 
constructor (GType type,
616
 
                         guint n_construct_params,
617
 
                         GObjectConstructParam *construct_params)
 
536
static void
 
537
constructed (GObject *object)
618
538
{
619
 
        NMObject *object;
620
539
        NMAccessPointPrivate *priv;
621
540
 
622
 
        object = (NMObject *) G_OBJECT_CLASS (nm_access_point_parent_class)->constructor (type,
623
 
                                                                                                                                          n_construct_params,
624
 
                                                                                                                                          construct_params);
625
 
        if (!object)
626
 
                return NULL;
 
541
        G_OBJECT_CLASS (nm_access_point_parent_class)->constructed (object);
627
542
 
628
543
        priv = NM_ACCESS_POINT_GET_PRIVATE (object);
629
544
 
630
 
        priv->proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (object),
 
545
        priv->proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (NM_OBJECT (object)),
631
546
                                                                            NM_DBUS_SERVICE,
632
 
                                                                            nm_object_get_path (object),
 
547
                                                                            nm_object_get_path (NM_OBJECT (object)),
633
548
                                                                            NM_DBUS_INTERFACE_ACCESS_POINT);
634
549
 
635
 
        register_for_property_changed (NM_ACCESS_POINT (object));
636
 
 
637
 
        return G_OBJECT (object);
 
550
        register_properties (NM_ACCESS_POINT (object));
638
551
}
639
552
 
640
553
 
646
559
        g_type_class_add_private (ap_class, sizeof (NMAccessPointPrivate));
647
560
 
648
561
        /* virtual methods */
649
 
        object_class->constructor = constructor;
 
562
        object_class->constructed = constructed;
650
563
        object_class->get_property = get_property;
651
564
        object_class->dispose = dispose;
652
565
        object_class->finalize = finalize;