mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-08 00:10:15 +01:00
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:
parent
5a4a6dc992
commit
229624b88f
8 changed files with 103 additions and 42 deletions
16
ChangeLog
16
ChangeLog
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue