From b6d82bcc611f8b0abc5b527ce6960cd241e6643d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 13 Sep 2007 18:10:46 +0000 Subject: [PATCH] 2007-09-13 Dan Williams * libnm-glib/nm-vpn-manager.h libnm-glib/nm-vpn-manager.c - (nm_vpn_manager_connect): take routes as a GSList, not a char ** git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2803 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 6 ++++++ libnm-glib/nm-vpn-manager.c | 19 +++++++++++++++++-- libnm-glib/nm-vpn-manager.h | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15b753e01..cdb46d1ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-13 Dan Williams + + * libnm-glib/nm-vpn-manager.h + libnm-glib/nm-vpn-manager.c + - (nm_vpn_manager_connect): take routes as a GSList, not a char ** + 2007-09-13 Dan Williams * src/nm-device-802-3-ethernet.c diff --git a/libnm-glib/nm-vpn-manager.c b/libnm-glib/nm-vpn-manager.c index b59ad68cd..afff61b9d 100644 --- a/libnm-glib/nm-vpn-manager.c +++ b/libnm-glib/nm-vpn-manager.c @@ -41,10 +41,13 @@ nm_vpn_manager_connect (NMVPNManager *manager, const char *name, GHashTable *properties, NMDevice *device, - char **routes) + GSList *routes) { char *connection_path = NULL; GError *err = NULL; + char **routes_array = NULL; + GSList *elt; + int i, size; g_return_val_if_fail (NM_IS_VPN_MANAGER (manager), NULL); g_return_val_if_fail (type != NULL, NULL); @@ -52,18 +55,30 @@ nm_vpn_manager_connect (NMVPNManager *manager, g_return_val_if_fail (properties != NULL, NULL); g_return_val_if_fail (NM_IS_DEVICE (device), NULL); + size = sizeof (char *) * (g_slist_length (routes) + 1); + routes_array = g_slice_alloc0 (size); + if (!routes_array) { + g_warning ("Couldn't allocate string list."); + return NULL; + } + + for (elt = routes, i = 0; elt; elt = g_slist_next (elt)) + routes_array[i++] = elt->data; + if (!org_freedesktop_NetworkManager_VPN_Manager_connect (NM_VPN_MANAGER_GET_PRIVATE (manager)->manager_proxy, type, name, properties, nm_object_get_path (NM_OBJECT (device)), - routes, + (const char **) routes_array, &connection_path, &err)) { g_warning ("Error in VPN Connect: %s", err->message); g_error_free (err); + g_slice_free1 (size, routes_array); return NULL; } + g_slice_free1 (size, routes_array); return nm_vpn_connection_new (nm_object_get_connection (NM_OBJECT (manager)), connection_path); } diff --git a/libnm-glib/nm-vpn-manager.h b/libnm-glib/nm-vpn-manager.h index f92a10384..e49ed159c 100644 --- a/libnm-glib/nm-vpn-manager.h +++ b/libnm-glib/nm-vpn-manager.h @@ -38,7 +38,7 @@ NMVPNConnection *nm_vpn_manager_connect (NMVPNManager *manager, const char *name, GHashTable *properties, NMDevice *device, - char **routes); + GSList *routes); GSList *nm_vpn_manager_get_connections (NMVPNManager *manager);