2007-03-26 Tambet Ingo <tambet@ximian.com>

* src/vpn-manager/nm-dbus-vpn.c (dbus_message_handler): Implement DBUS message
	handler for VPN.

	* src/vpn-manager/nm-vpn-manager.c (nm_vpn_manager_new): Register VPN interface
	on DBUS again.

2007-03-26  Dan Williams  <dcbw@redhat.com>

	* src/NetworkManagerAPList.c
	* src/nm-device-802-11-wireless.c
	* src/NetworkManagerAP.c:
		- Store last seen as glong instead of GTimeVal.
		- Fix the upper bound of capabilities, it's a bitfield.




git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2500 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Tambet Ingo 2007-03-26 12:29:49 +00:00 committed by Tambet Ingo
parent 5a4a6dc992
commit 229624b88f
8 changed files with 103 additions and 42 deletions

View file

@ -1,3 +1,19 @@
2007-03-26 Tambet Ingo <tambet@ximian.com>
* src/vpn-manager/nm-dbus-vpn.c (dbus_message_handler): Implement DBUS message
handler for VPN.
* src/vpn-manager/nm-vpn-manager.c (nm_vpn_manager_new): Register VPN interface
on DBUS again.
2007-03-26 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerAPList.c
* src/nm-device-802-11-wireless.c
* src/NetworkManagerAP.c:
- Store last seen as glong instead of GTimeVal.
- Fix the upper bound of capabilities, it's a bitfield.
2007-03-16 Tambet Ingo <tambet@ximian.com>
* libnm-glib/nm-device.c (nm_device_get_description): Implement.

View file

@ -68,7 +68,7 @@ typedef struct
* implies Ad-Hoc, but not necessarily
* the other way around.
*/
GTimeVal last_seen; /* Last time the AP was seen in a scan */
glong last_seen; /* Last time the AP was seen in a scan in seconds */
/* Things from user prefs/NetworkManagerInfo */
gboolean fallback;
@ -224,6 +224,7 @@ static void
nm_ap_class_init (NMAccessPointClass *ap_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (ap_class);
guint32 all_caps;
g_type_class_add_private (ap_class, sizeof (NMAccessPointPrivate));
@ -234,12 +235,30 @@ nm_ap_class_init (NMAccessPointClass *ap_class)
/* properties */
all_caps = NM_802_11_CAP_NONE
| NM_802_11_CAP_PROTO_NONE
| NM_802_11_CAP_PROTO_WEP
| NM_802_11_CAP_PROTO_WPA
| NM_802_11_CAP_PROTO_WPA2
| NM_802_11_CAP_RESERVED1
| NM_802_11_CAP_RESERVED2
| NM_802_11_CAP_KEY_MGMT_PSK
| NM_802_11_CAP_KEY_MGMT_802_1X
| NM_802_11_CAP_RESERVED3
| NM_802_11_CAP_RESERVED4
| NM_802_11_CAP_RESERVED5
| NM_802_11_CAP_RESERVED6
| NM_802_11_CAP_CIPHER_WEP40
| NM_802_11_CAP_CIPHER_WEP104
| NM_802_11_CAP_CIPHER_TKIP
| NM_802_11_CAP_CIPHER_CCMP;
g_object_class_install_property
(object_class, PROP_CAPABILITIES,
g_param_spec_uint (NM_AP_CAPABILITIES,
"Capabilities",
"Capabilities",
NM_802_11_CAP_NONE, NM_802_11_CAP_CIPHER_CCMP, NM_802_11_CAP_PROTO_NONE,
NM_802_11_CAP_NONE, all_caps, NM_802_11_CAP_PROTO_NONE,
G_PARAM_READWRITE));
g_object_class_install_property
@ -469,7 +488,7 @@ nm_ap_new_from_properties (GHashTable *properties)
g_hash_table_foreach (properties, foreach_property_cb, ap);
g_get_current_time (&cur_time);
nm_ap_set_last_seen (ap, &cur_time);
nm_ap_set_last_seen (ap, cur_time.tv_sec);
if (!nm_ap_get_essid (ap))
nm_ap_set_broadcast (ap, FALSE);
@ -814,18 +833,18 @@ void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast)
* APs older than a certain date are dropped from the list.
*
*/
const GTimeVal *nm_ap_get_last_seen (const NMAccessPoint *ap)
glong nm_ap_get_last_seen (const NMAccessPoint *ap)
{
g_return_val_if_fail (NM_IS_AP (ap), FALSE);
return &NM_AP_GET_PRIVATE (ap)->last_seen;
return NM_AP_GET_PRIVATE (ap)->last_seen;
}
void nm_ap_set_last_seen (NMAccessPoint *ap, const GTimeVal *last_seen)
void nm_ap_set_last_seen (NMAccessPoint *ap, const glong last_seen)
{
g_return_if_fail (NM_IS_AP (ap));
NM_AP_GET_PRIVATE (ap)->last_seen = *last_seen;
NM_AP_GET_PRIVATE (ap)->last_seen = last_seen;
}

View file

@ -107,8 +107,8 @@ void nm_ap_set_artificial (NMAccessPoint *ap, gboolean artificial);
gboolean nm_ap_get_broadcast (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);
glong nm_ap_get_last_seen (const NMAccessPoint *ap);
void nm_ap_set_last_seen (NMAccessPoint *ap, const glong last_seen);
gboolean nm_ap_get_user_created (const NMAccessPoint *ap);
void nm_ap_set_user_created (NMAccessPoint *ap, gboolean user_created);

View file

@ -526,7 +526,7 @@ void nm_ap_list_print_members (NMAccessPointList *list, const char *name)
nm_info ("AP_LIST_PRINT: printing members of '%s'", name);
while ((ap = nm_ap_list_iter_next (iter))) {
const GTimeVal * timestamp = nm_ap_get_timestamp (ap);
const GTimeVal * seen = nm_ap_get_last_seen (ap);
const glong seen = nm_ap_get_last_seen (ap);
NMAPSecurity * security = nm_ap_get_security (ap);
const char * key = "";
const struct ether_addr * eth_addr = nm_ap_get_address (ap);
@ -552,7 +552,7 @@ void nm_ap_list_print_members (NMAccessPointList *list, const char *name)
nm_ap_get_rate (ap),
nm_ap_get_invalid (ap),
nm_ap_get_mode (ap),
seen->tv_sec);
seen);
i++;
}
nm_info ("AP_LIST_PRINT: done");

View file

@ -1943,9 +1943,9 @@ merge_scanned_ap (NMDevice80211Wireless *dev,
* be from a previous scan so the time_last_seen's are not equal. Update
* encryption, authentication method, strength, and the time_last_seen. */
const char * devlist_essid = nm_ap_get_essid (list_ap);
const char * merge_essid = nm_ap_get_essid (merge_ap);
const GTimeVal *merge_ap_seen = nm_ap_get_last_seen (merge_ap);
const char *devlist_essid = nm_ap_get_essid (list_ap);
const char *merge_essid = nm_ap_get_essid (merge_ap);
const glong merge_ap_seen = nm_ap_get_last_seen (merge_ap);
/* Did the AP's name change? */
if (!devlist_essid || !merge_essid || nm_null_safe_strcmp (devlist_essid, merge_essid)) {
@ -1985,13 +1985,13 @@ merge_scanned_ap (NMDevice80211Wireless *dev,
* equal, the merge AP and the list AP come from the same scan.
* Update the time_last_seen. */
const GTimeVal * merge_ap_seen = nm_ap_get_last_seen (merge_ap);
const GTimeVal * list_ap_seen = nm_ap_get_last_seen (list_ap);
const int merge_ap_strength = nm_ap_get_strength (merge_ap);
const glong merge_ap_seen = nm_ap_get_last_seen (merge_ap);
const glong list_ap_seen = nm_ap_get_last_seen (list_ap);
const int merge_ap_strength = nm_ap_get_strength (merge_ap);
nm_ap_set_capabilities (list_ap, nm_ap_get_capabilities (merge_ap));
if (!((list_ap_seen->tv_sec == merge_ap_seen->tv_sec)
if (!((list_ap_seen == merge_ap_seen)
&& (nm_ap_get_strength (list_ap) >= merge_ap_strength)))
{
nm_ap_set_strength (list_ap, merge_ap_strength);
@ -2038,10 +2038,10 @@ cull_scan_list (NMDevice80211Wireless * self)
* thrice the inactive scan interval.
*/
while ((outdated_ap = nm_ap_list_iter_next (iter))) {
const GTimeVal * ap_time = nm_ap_get_last_seen (outdated_ap);
gboolean keep_around = FALSE;
guint prune_interval_s;
const char * ssid;
const glong ap_time = nm_ap_get_last_seen (outdated_ap);
gboolean keep_around = FALSE;
guint prune_interval_s;
const char * ssid;
/* Don't ever prune the AP we're currently associated with */
ssid = nm_ap_get_essid (outdated_ap);
@ -2052,7 +2052,7 @@ cull_scan_list (NMDevice80211Wireless * self)
prune_interval_s = SCAN_INTERVAL_MAX * 3;
if (!keep_around && (ap_time->tv_sec + prune_interval_s < cur_time.tv_sec))
if (!keep_around && (ap_time + prune_interval_s < cur_time.tv_sec))
outdated_list = g_slist_append (outdated_list, outdated_ap);
}
nm_ap_list_iter_free (iter);

View file

@ -901,6 +901,32 @@ nm_dbus_vpn_deactivate_connection (DBusConnection *connection,
}
static DBusHandlerResult
dbus_message_handler (DBusConnection *con, DBusMessage *message, void *user_data)
{
DBusMessage *reply = NULL;
DBusHandlerResult result = DBUS_HANDLER_RESULT_HANDLED;
if (dbus_message_has_member (message, "getVPNConnections"))
reply = nm_dbus_vpn_get_vpn_connections (con, message, user_data);
else if (dbus_message_has_member (message, "getVPNConnectionProperties"))
reply = nm_dbus_vpn_get_vpn_connection_properties (con, message, user_data);
else if (dbus_message_has_member (message, "activateVPNConnection"))
reply = nm_dbus_vpn_activate_connection (con, message, user_data);
else if (dbus_message_has_member (message, "deactivateVPNConnection"))
reply = nm_dbus_vpn_deactivate_connection (con, message, user_data);
else
result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
if (reply) {
dbus_connection_send (con, reply, NULL);
dbus_message_unref (reply);
}
return result;
}
/*
* nm_dbus_vpn_methods_setup
*
@ -908,20 +934,20 @@ nm_dbus_vpn_deactivate_connection (DBusConnection *connection,
* org.freedesktop.NetworkManager.VPNConnections object.
*
*/
NMDbusMethodList *nm_dbus_vpn_methods_setup (NMVPNManager *mgr)
gboolean
nm_dbus_vpn_methods_setup (NMVPNManager *mgr)
{
NMDbusMethodList * list;
NMDBusManager *dbus_mgr;
gboolean success;
DBusObjectPathVTable vtable = { NULL, &dbus_message_handler, NULL, NULL, NULL, NULL };
list = nm_dbus_method_list_new (NM_DBUS_PATH_VPN, FALSE, mgr, NULL);
nm_dbus_method_list_add_method (list, "getVPNConnections",
nm_dbus_vpn_get_vpn_connections);
nm_dbus_method_list_add_method (list, "getVPNConnectionProperties",
nm_dbus_vpn_get_vpn_connection_properties);
nm_dbus_method_list_add_method (list, "activateVPNConnection",
nm_dbus_vpn_activate_connection);
nm_dbus_method_list_add_method (list, "deactivateVPNConnection",
nm_dbus_vpn_deactivate_connection);
dbus_mgr = nm_dbus_manager_get ();
success = dbus_connection_register_object_path (nm_dbus_manager_get_dbus_connection (dbus_mgr),
NM_DBUS_PATH_VPN, &vtable, mgr);
if (!success)
nm_warning ("Could not register a dbus handler for VPN. Not enough memory?");
return list;
g_object_unref (dbus_mgr);
return success;
}

View file

@ -38,6 +38,6 @@ void nm_dbus_vpn_signal_vpn_connection_state_change (DBusConnection *con, NMV
char ** nm_dbus_vpn_get_routes (DBusConnection *connection, NMVPNConnection *vpn, int *num_items);
NMDbusMethodList * nm_dbus_vpn_methods_setup (NMVPNManager *mgr);
gboolean nm_dbus_vpn_methods_setup (NMVPNManager *mgr);
#endif

View file

@ -44,7 +44,6 @@ struct NMVPNManager
GSList * connections;
NMVPNActRequest * act_req;
NMDbusMethodList * dbus_methods;
gulong device_signal_id;
};
@ -122,7 +121,11 @@ NMVPNManager *nm_vpn_manager_new (NMManager *nm_manager, NMData *app_data)
(GDestroyNotify) nm_vpn_service_unref);
load_services (manager, manager->service_table);
manager->dbus_methods = nm_dbus_vpn_methods_setup (manager);
if (!nm_dbus_vpn_methods_setup (manager)) {
nm_vpn_manager_dispose (manager);
return NULL;
}
dbus_mgr = nm_dbus_manager_get ();
g_signal_connect (dbus_mgr,
@ -139,8 +142,6 @@ NMVPNManager *nm_vpn_manager_new (NMManager *nm_manager, NMData *app_data)
if (nm_dbus_manager_name_has_owner (dbus_mgr, NMI_DBUS_SERVICE))
nm_dbus_vpn_schedule_vpn_connections_update (manager);
/* FIXME */
/* nm_dbus_manager_register_method_list (dbus_mgr, manager->dbus_methods); */
g_object_unref (dbus_mgr);
return manager;
@ -165,7 +166,6 @@ void nm_vpn_manager_dispose (NMVPNManager *manager)
g_hash_table_destroy (manager->service_table);
nm_dbus_method_list_unref (manager->dbus_methods);
g_object_unref (manager->nm_manager);
memset (manager, 0, sizeof (NMVPNManager));