Hi,while looking through the TODO list for 0.7 [1], I decided that I should contribute a bit, especially as it was me, that complained about the long list of exported symbols by libnm-glib and libnm-util.
So I went ahead and studied the docs a bit.There are basically two approaches, how to trim down the list of exported symbols:
a) GCC's visibility support [2] GCC extension, mostly used by C++ libraries b) ld linker/version scripts [3] b.1) either directly via LDFLAGS -Wl,--version-scriptb.2) or indirectly via libtools -export-symbols $FILE or -export-symbols-regex, which will create a version script on the fly.
Before trying to evaluate which approach is best, I analyzed the list of exported symbols (see attached *.symbols files) and checked which symbols are not part of the public API (see attached *.diff files).
There are basically 5 ways GCC visibility1.) Use -fvisibility=default (all symbols are exported by default) and augment all function declarations, which shall not be exported with __attribute__ ((visibility("hidden")))
Does not work, as we have autogenerated files, where we cannot add the visibility attribute.
2.) Use -fvisibility=hidden (all symbols are hidden by default) and augment all function declarations, which shall be exported with __attribute__ ((visibility("default"))).
Lots of code changes in the header files. To be manageable we'd have to define a macro like DLLEXPORT. All installed header files would either have to define such a macro or we would have to create a new header file (like visibility.h) which contains this macro and all other header files include that. Imho quite cumbersome
libtool 3.) -export-symbols-regex:as you can see from the attached symbols and diff files, we can't use a common prefix like nm_.*. We'd have to rename private function to something like _nm_* -> looks of code changes.
4.) -export-symbols $FILE List all exported symbols in a separate file and pass it to libtool.I chatted with libtool's upstream a bit, and he recommended though, to directly use a ld version script. as this provides the most flexibility,
5.) LDFLAGS = -Wl,--version-script=$FILEThat's the way I implemented it in the patch. I listed each exported symbol explicitely (although the version script syntax would allow regexes). See patch 0001 and 0002 for the details. Imho this is the nicest and cleanest approaches which requires the least changes. I generated the version scripts automatically (by using objdump and grepping for the symbols in the installed header files, dropping all symbols which are not part of the public API), so a careful review would be very appreciated. NOTE: I didn't enable symbol versioning as I didn't see the need for it yet, I only used the version script to control the list of exported symbols
After applying 0001 and 0002, the test-crypto binary will no longer build, as it uses private symbols from libnm-util. I simply removed it in patch 0003. An alternative would be, to add crypto.c and crypto_(gnutls|nss).c to test_crypto_SOURCES.
If someone has a need for this binary, I could change that. Comments and feedback welcome. MichaelP.S: As I have svn commit access now, I could commit those patches myself, if you ack the changes.
[1] http://live.gnome.org/NetworkManager07Release [2] http://gcc.gnu.org/wiki/Visibility[3] http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-linker/version.html
-- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?
From d452ca3f3f2a9ea6fda182498128b16ea2467990 Mon Sep 17 00:00:00 2001 From: Michael Biebl <biebl debian org> Date: Wed, 13 Aug 2008 02:42:02 +0200 Subject: [PATCH] symbol visibility Use a ld version script for libnm-util, libnm_glib and libnm_glib_vpn to control the list of exported symbols. --- libnm-glib/Makefile.am | 5 ++++- libnm-util/Makefile.am | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libnm-glib/Makefile.am b/libnm-glib/Makefile.am index d3c73b6..a8b4aca 100644 --- a/libnm-glib/Makefile.am +++ b/libnm-glib/Makefile.am @@ -91,6 +91,8 @@ libnm_glib_la_LIBADD = \ $(GCONF_LIBS) \ $(GNOME_KEYRING_LIBS) +libnm_glib_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libnm_glib.ver + noinst_PROGRAMS = libnm-glib-test libnm_glib_test_SOURCES = libnm-glib-test.c @@ -101,6 +103,7 @@ libnm_glib_test_LDADD = libnm_glib.la $(top_builddir)/libnm-util/libnm-util.la $ libnm_glib_vpn_la_SOURCES = nm-vpn-plugin.c nm-vpn-plugin-ui-interface.c libnm_glib_vpn_la_CFLAGS = $(GLIB_CFLAGS) $(DBUS_CFLAGS) libnm_glib_vpn_la_LIBADD = $(top_builddir)/libnm-util/libnm-util.la $(GLIB_LIBS) $(DBUS_LIBS) +libnm_glib_vpn_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libnm_glib_vpn.ver nm-client-bindings.h: $(top_srcdir)/introspection/nm-manager-client.xml @@ -153,7 +156,7 @@ pkgconfig_DATA = libnm_glib.pc libnm_glib_vpn.pc DISTCLEANFILES = libnm_glib.pc libnm_glib.pc -EXTRA_DIST = libnm_glib.pc.in libnm_glib_vpn.pc.in +EXTRA_DIST = libnm_glib.pc.in libnm_glib_vpn.pc.in libnm_glib.ver libnm_glib_vpn.ver CLEANFILES = \ $(BUILT_SOURCES) diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am index 21fd6b1..a7b577c 100644 --- a/libnm-util/Makefile.am +++ b/libnm-util/Makefile.am @@ -51,6 +51,8 @@ libnm_util_la_SOURCES= \ libnm_util_la_LIBADD = $(GLIB_LIBS) $(DBUS_LIBS) +libnm_util_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libnm-util.ver + if WITH_GNUTLS libnm_util_la_SOURCES += crypto_gnutls.c libnm_util_la_CPPFLAGS += $(LIBGCRYPT_CFLAGS) $(GNUTLS_CFLAGS) @@ -76,6 +78,5 @@ pkgconfig_DATA = libnm-util.pc DISTCLEANFILES = libnm-util.pc -EXTRA_DIST = \ - libnm-util.pc.in +EXTRA_DIST = libnm-util.pc.in libnm-util.ver -- 1.5.6.3
From d2c2c01f7436ad4031c1f78a3f6f690c1abd2ed8 Mon Sep 17 00:00:00 2001 From: Michael Biebl <biebl debian org> Date: Wed, 13 Aug 2008 03:44:41 +0200 Subject: [PATCH] Add the actual version scripts --- libnm-glib/libnm_glib.ver | 120 +++++++++++++++++++++++++++++++++++++++ libnm-glib/libnm_glib_vpn.ver | 24 ++++++++ libnm-util/libnm-util.ver | 126 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 270 insertions(+), 0 deletions(-) create mode 100644 libnm-glib/libnm_glib.ver create mode 100644 libnm-glib/libnm_glib_vpn.ver create mode 100644 libnm-util/libnm-util.ver diff --git a/libnm-glib/libnm_glib.ver b/libnm-glib/libnm_glib.ver new file mode 100644 index 0000000..0cd1682 --- /dev/null +++ b/libnm-glib/libnm_glib.ver @@ -0,0 +1,120 @@ +{ +global: + libnm_glib_get_network_state; + libnm_glib_init; + libnm_glib_register_callback; + libnm_glib_shutdown; + libnm_glib_unregister_callback; + nm_access_point_get_flags; + nm_access_point_get_frequency; + nm_access_point_get_hw_address; + nm_access_point_get_max_bitrate; + nm_access_point_get_mode; + nm_access_point_get_rsn_flags; + nm_access_point_get_ssid; + nm_access_point_get_strength; + nm_access_point_get_type; + nm_access_point_get_wpa_flags; + nm_access_point_new; + nm_active_connection_get_connection; + nm_active_connection_get_default; + nm_active_connection_get_devices; + nm_active_connection_get_scope; + nm_active_connection_get_service_name; + nm_active_connection_get_specific_object; + nm_active_connection_get_state; + nm_active_connection_get_type; + nm_active_connection_new; + nm_cdma_device_get_type; + nm_cdma_device_new; + nm_client_activate_connection; + nm_client_deactivate_connection; + nm_client_get_active_connections; + nm_client_get_device_by_path; + nm_client_get_devices; + nm_client_get_manager_running; + nm_client_get_state; + nm_client_get_type; + nm_client_new; + nm_client_sleep; + nm_client_wireless_get_enabled; + nm_client_wireless_hardware_get_enabled; + nm_client_wireless_set_enabled; + nm_dbus_connection_get_type; + nm_dbus_connection_new; + nm_dbus_settings_get_connection_by_path; + nm_dbus_settings_get_type; + nm_dbus_settings_new; + nm_dbus_settings_system_add_connection; + nm_dbus_settings_system_get_type; + nm_dbus_settings_system_get_unmanaged_devices; + nm_dbus_settings_system_new; + nm_device_ethernet_get_carrier; + nm_device_ethernet_get_hw_address; + nm_device_ethernet_get_speed; + nm_device_ethernet_get_type; + nm_device_ethernet_new; + nm_device_get_capabilities; + nm_device_get_dhcp4_config; + nm_device_get_driver; + nm_device_get_iface; + nm_device_get_ip4_config; + nm_device_get_managed; + nm_device_get_product; + nm_device_get_state; + nm_device_get_type; + nm_device_get_udi; + nm_device_get_vendor; + nm_device_new; + nm_device_wifi_get_access_point_by_path; + nm_device_wifi_get_access_points; + nm_device_wifi_get_active_access_point; + nm_device_wifi_get_bitrate; + nm_device_wifi_get_capabilities; + nm_device_wifi_get_hw_address; + nm_device_wifi_get_mode; + nm_device_wifi_get_type; + nm_device_wifi_new; + nm_dhcp4_config_get_one_option; + nm_dhcp4_config_get_options; + nm_dhcp4_config_get_type; + nm_dhcp4_config_new; + nm_exported_connection_delete; + nm_exported_connection_get_connection; + nm_exported_connection_get_id; + nm_exported_connection_get_type; + nm_exported_connection_new; + nm_exported_connection_register_object; + nm_exported_connection_signal_removed; + nm_exported_connection_signal_updated; + nm_exported_connection_update; + nm_gsm_device_get_type; + nm_gsm_device_new; + nm_ip4_config_get_addresses; + nm_ip4_config_get_domains; + nm_ip4_config_get_hostname; + nm_ip4_config_get_nameservers; + nm_ip4_config_get_routes; + nm_ip4_config_get_type; + nm_ip4_config_new; + nm_object_array_get_type; + nm_object_get_connection; + nm_object_get_path; + nm_object_get_type; + nm_serial_device_get_bytes_received; + nm_serial_device_get_bytes_sent; + nm_serial_device_get_type; + nm_settings_error_quark; + nm_settings_get_type; + nm_settings_list_connections; + nm_settings_signal_new_connection; + nm_ssid_get_type; + nm_string_array_get_type; + nm_uint_array_get_type; + nm_vpn_connection_get_banner; + nm_vpn_connection_get_type; + nm_vpn_connection_get_vpn_state; + nm_vpn_connection_new; +local: + *; +}; diff --git a/libnm-glib/libnm_glib_vpn.ver b/libnm-glib/libnm_glib_vpn.ver new file mode 100644 index 0000000..99a7ffb --- /dev/null +++ b/libnm-glib/libnm_glib_vpn.ver @@ -0,0 +1,24 @@ +{ +global: + nm_vpn_plugin_disconnect; + nm_vpn_plugin_error_get_type; + nm_vpn_plugin_error_quark; + nm_vpn_plugin_failure; + nm_vpn_plugin_get_connection; + nm_vpn_plugin_get_state; + nm_vpn_plugin_get_type; + nm_vpn_plugin_set_ip4_config; + nm_vpn_plugin_set_login_banner; + nm_vpn_plugin_set_state; + nm_vpn_plugin_ui_interface_export; + nm_vpn_plugin_ui_interface_get_capabilities; + nm_vpn_plugin_ui_interface_get_suggested_name; + nm_vpn_plugin_ui_interface_get_type; + nm_vpn_plugin_ui_interface_import; + nm_vpn_plugin_ui_interface_ui_factory; + nm_vpn_plugin_ui_widget_interface_get_type; + nm_vpn_plugin_ui_widget_interface_get_widget; + nm_vpn_plugin_ui_widget_interface_update_connection; +local: + *; +}; diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver new file mode 100644 index 0000000..718ab9e --- /dev/null +++ b/libnm-util/libnm-util.ver @@ -0,0 +1,126 @@ +{ +global: + nm_connection_add_setting; + nm_connection_clear_secrets; + nm_connection_compare; + nm_connection_create_setting; + nm_connection_dump; + nm_connection_duplicate; + nm_connection_error_get_type; + nm_connection_error_quark; + nm_connection_for_each_setting_value; + nm_connection_get_path; + nm_connection_get_scope; + nm_connection_get_setting; + nm_connection_get_setting_by_name; + nm_connection_get_type; + nm_connection_lookup_setting_type; + nm_connection_lookup_setting_type_by_quark; + nm_connection_need_secrets; + nm_connection_new; + nm_connection_new_from_hash; + nm_connection_remove_setting; + nm_connection_replace_settings; + nm_connection_set_path; + nm_connection_set_scope; + nm_connection_to_hash; + nm_connection_update_secrets; + nm_connection_verify; + nm_setting_802_1x_error_get_type; + nm_setting_802_1x_error_quark; + nm_setting_802_1x_get_type; + nm_setting_802_1x_new; + nm_setting_802_1x_set_ca_cert; + nm_setting_802_1x_set_client_cert; + nm_setting_802_1x_set_phase2_ca_cert; + nm_setting_802_1x_set_phase2_client_cert; + nm_setting_802_1x_set_phase2_private_key; + nm_setting_802_1x_set_private_key; + nm_setting_cdma_error_get_type; + nm_setting_cdma_error_quark; + nm_setting_cdma_get_type; + nm_setting_cdma_new; + nm_setting_clear_secrets; + nm_setting_compare; + nm_setting_connection_error_get_type; + nm_setting_connection_error_quark; + nm_setting_connection_get_type; + nm_setting_connection_new; + nm_setting_duplicate; + nm_setting_enumerate_values; + nm_setting_from_hash; + nm_setting_get_name; + nm_setting_get_type; + nm_setting_gsm_error_get_type; + nm_setting_gsm_error_quark; + nm_setting_gsm_get_type; + nm_setting_gsm_new; + nm_setting_ip4_config_error_get_type; + nm_setting_ip4_config_error_quark; + nm_setting_ip4_config_get_type; + nm_setting_ip4_config_new; + nm_setting_ip6_config_error_get_type; + nm_setting_ip6_config_error_quark; + nm_setting_ip6_config_get_type; + nm_setting_ip6_config_new; + nm_setting_need_secrets; + nm_setting_ppp_error_get_type; + nm_setting_ppp_error_quark; + nm_setting_ppp_get_type; + nm_setting_ppp_new; + nm_setting_pppoe_error_get_type; + nm_setting_pppoe_error_quark; + nm_setting_pppoe_get_type; + nm_setting_pppoe_new; + nm_setting_register; + nm_setting_serial_error_get_type; + nm_setting_serial_error_quark; + nm_setting_serial_get_type; + nm_setting_serial_new; + nm_setting_to_hash; + nm_setting_to_string; + nm_setting_unregister; + nm_setting_update_secrets; + nm_setting_verify; + nm_setting_vpn_error_get_type; + nm_setting_vpn_error_quark; + nm_setting_vpn_get_type; + nm_setting_vpn_new; + nm_setting_wired_error_get_type; + nm_setting_wired_error_quark; + nm_setting_wired_get_type; + nm_setting_wired_new; + nm_setting_wireless_ap_security_compatible; + nm_setting_wireless_error_get_type; + nm_setting_wireless_error_quark; + nm_setting_wireless_get_type; + nm_setting_wireless_new; + nm_setting_wireless_security_error_get_type; + nm_setting_wireless_security_error_quark; + nm_setting_wireless_security_get_type; + nm_setting_wireless_security_new; + nm_utils_escape_ssid; + nm_utils_garray_to_string; + nm_utils_gvalue_hash_dup; + nm_utils_ip4_addresses_from_gvalue; + nm_utils_ip4_addresses_to_gvalue; + nm_utils_ip4_netmask_to_prefix; + nm_utils_ip4_prefix_to_netmask; + nm_utils_ip4_routes_from_gvalue; + nm_utils_ip4_routes_to_gvalue; + nm_utils_ip6_addresses_from_gvalue; + nm_utils_ip6_addresses_to_gvalue; + nm_utils_ip6_dns_from_gvalue; + nm_utils_ip6_dns_to_gvalue; + nm_utils_is_empty_ssid; + nm_utils_register_value_transformations; + nm_utils_same_ssid; + nm_utils_security_valid; + nm_utils_slist_free; + nm_utils_ssid_to_utf8; + nm_utils_string_in_list; + nm_utils_string_list_contains; + nm_utils_string_slist_validate; +local: + *; +}; -- 1.5.6.3
From 2f737cb3dd195951bd509b7b63b83c814ebff7f4 Mon Sep 17 00:00:00 2001 From: Michael Biebl <biebl debian org> Date: Wed, 13 Aug 2008 03:46:06 +0200 Subject: [PATCH] Remove test-crypto binary The test-crypto binary no longer builds, as libnm-util doesn't export the crypto functions anymore (they are not part of the public API). --- libnm-util/Makefile.am | 6 -- libnm-util/test-crypto.c | 173 ---------------------------------------------- 2 files changed, 0 insertions(+), 179 deletions(-) delete mode 100644 libnm-util/test-crypto.c diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am index a7b577c..9a18cd6 100644 --- a/libnm-util/Makefile.am +++ b/libnm-util/Makefile.am @@ -67,12 +67,6 @@ endif libnm_util_includedir=$(includedir)/NetworkManager -noinst_PROGRAMS = test-crypto - -test_crypto_SOURCES = test-crypto.c -test_crypto_CPPFLAGS = $(GLIB_CFLAGS) -D_GNU_SOURCE -test_crypto_LDADD = $(GLIB_LIBS) libnm-util.la - pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libnm-util.pc diff --git a/libnm-util/test-crypto.c b/libnm-util/test-crypto.c deleted file mode 100644 index 1063b18..0000000 --- a/libnm-util/test-crypto.c +++ /dev/null @@ -1,173 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ - -/* - * Dan Williams <dcbw redhat com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA. - * - * (C) Copyright 2007 - 2008 Red Hat, Inc. - */ - -#include <glib.h> -#include <unistd.h> -#include <stdlib.h> -#include <glib/gi18n.h> -#include <stdio.h> -#include <string.h> - -#include "crypto.h" - -static const char *pem_rsa_key_begin = "-----BEGIN RSA PRIVATE KEY-----"; -static const char *pem_rsa_key_end = "-----END RSA PRIVATE KEY-----"; - -static const char *pem_dsa_key_begin = "-----BEGIN DSA PRIVATE KEY-----"; -static const char *pem_dsa_key_end = "-----END DSA PRIVATE KEY-----"; - -static void -dump_key_to_pem (const char *key, gsize key_len, int key_type) -{ - char *b64 = NULL; - GString *str = NULL; - const char *start_tag; - const char *end_tag; - char *p; - - switch (key_type) { - case NM_CRYPTO_KEY_TYPE_RSA: - start_tag = pem_rsa_key_begin; - end_tag = pem_rsa_key_end; - break; - case NM_CRYPTO_KEY_TYPE_DSA: - start_tag = pem_dsa_key_begin; - end_tag = pem_dsa_key_end; - break; - default: - g_warning ("Unknown key type %d", key_type); - return; - } - - b64 = g_base64_encode ((const unsigned char *) key, key_len); - if (!b64) { - g_warning ("Couldn't base64 encode the key."); - goto out; - } - - str = g_string_new (NULL); - if (!str) { - g_warning ("Couldn't allocate buffer to write out key."); - goto out; - } - - g_string_append (str, start_tag); - g_string_append_c (str, '\n'); - - for (p = b64; p < (b64 + strlen (b64)); p += 64) { - g_string_append_len (str, p, strnlen (p, 64)); - g_string_append_c (str, '\n'); - } - - g_string_append (str, end_tag); - g_string_append_c (str, '\n'); - - g_message ("Decrypted private key:\n\n%s", str->str); - -out: - g_free (b64); - if (str) - g_string_free (str, TRUE); -} - -static void -usage (const char *prgname) -{ - fprintf (stderr, "Usage: %s cert <file>\n" - " %s key <file> <password>\n", - prgname, prgname); -} - -#define MODE_CERT 1 -#define MODE_KEY 2 - -int main (int argc, char **argv) -{ - guint32 key_type = 0; - int mode = 0; - const char *file; - GError *error = NULL; - - if (argc < 2) { - usage (argv[0]); - return 1; - } - - if (!strcmp (argv[1], "key")) { - if (argc < 4) { - usage (argv[0]); - return 1; - } - mode = MODE_KEY; - } else if (!strcmp (argv[1], "cert")) { - if (argc < 3) { - usage (argv[0]); - return 1; - } - mode = MODE_CERT; - } else { - usage (argv[0]); - return 1; - } - - if (!crypto_init (&error)) { - g_warning ("Couldn't initialize crypto library: %d %s.", - error->code, error->message); - return 1; - } - - file = argv[2]; - - if (mode == MODE_CERT) { - GByteArray *array; - - array = crypto_load_and_verify_certificate (file, &error); - if (!array) { - g_warning ("Couldn't read certificate file '%s': %d %s", - file, error->code, error->message); - goto out; - } - g_byte_array_free (array, TRUE); - } else if (mode == MODE_KEY) { - const char *password = argv[3]; - GByteArray *array; - - array = crypto_get_private_key (file, password, &key_type, &error); - if (!array) { - g_warning ("Couldn't read key file '%s': %d %s", - file, error->code, error->message); - goto out; - } - - dump_key_to_pem ((const char *) array->data, array->len, key_type); - g_byte_array_free (array, TRUE); - } else { - g_assert_not_reached (); - } - -out: - crypto_deinit (); - - return 0; -} - -- 1.5.6.3
dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER dbus_glib_marshal_nm_settings_BOOLEAN__POINTER_POINTER dbus_glib_nm_exported_connection_object_info dbus_glib_nm_settings_object_info libnm_glib_get_network_state libnm_glib_init libnm_glib_register_callback libnm_glib_shutdown libnm_glib_unregister_callback nm_access_point_get_flags nm_access_point_get_frequency nm_access_point_get_hw_address nm_access_point_get_max_bitrate nm_access_point_get_mode nm_access_point_get_rsn_flags nm_access_point_get_ssid nm_access_point_get_strength nm_access_point_get_type nm_access_point_get_wpa_flags nm_access_point_new nm_active_connection_get_connection nm_active_connection_get_default nm_active_connection_get_devices nm_active_connection_get_scope nm_active_connection_get_service_name nm_active_connection_get_specific_object nm_active_connection_get_state nm_active_connection_get_type nm_active_connection_new nm_cdma_device_get_type nm_cdma_device_new nm_client_activate_connection nm_client_deactivate_connection nm_client_get_active_connections nm_client_get_device_by_path nm_client_get_devices nm_client_get_manager_running nm_client_get_state nm_client_get_type nm_client_new nm_client_sleep nm_client_wireless_get_enabled nm_client_wireless_hardware_get_enabled nm_client_wireless_set_enabled nm_dbus_connection_get_type nm_dbus_connection_new nm_dbus_get_int_property nm_dbus_get_object_path_property nm_dbus_get_property nm_dbus_get_string_property nm_dbus_get_uint_property nm_dbus_introspect nm_dbus_set_property nm_dbus_settings_get_connection_by_path nm_dbus_settings_get_type nm_dbus_settings_new nm_dbus_settings_system_add_connection nm_dbus_settings_system_get_type nm_dbus_settings_system_get_unmanaged_devices nm_dbus_settings_system_new nm_device_ethernet_get_carrier nm_device_ethernet_get_hw_address nm_device_ethernet_get_speed nm_device_ethernet_get_type nm_device_ethernet_new nm_device_get_capabilities nm_device_get_dhcp4_config nm_device_get_driver nm_device_get_iface nm_device_get_ip4_config nm_device_get_managed nm_device_get_product nm_device_get_state nm_device_get_type nm_device_get_udi nm_device_get_vendor nm_device_new nm_device_wifi_get_access_point_by_path nm_device_wifi_get_access_points nm_device_wifi_get_active_access_point nm_device_wifi_get_bitrate nm_device_wifi_get_capabilities nm_device_wifi_get_hw_address nm_device_wifi_get_mode nm_device_wifi_get_type nm_device_wifi_new nm_device_wifi_set_wireless_enabled nm_dhcp4_config_get_one_option nm_dhcp4_config_get_options nm_dhcp4_config_get_type nm_dhcp4_config_new nm_exported_connection_delete nm_exported_connection_get_connection nm_exported_connection_get_id nm_exported_connection_get_type nm_exported_connection_new nm_exported_connection_register_object nm_exported_connection_signal_removed nm_exported_connection_signal_updated nm_exported_connection_update nm_gsm_device_get_type nm_gsm_device_new nm_ip4_config_get_addresses nm_ip4_config_get_domains nm_ip4_config_get_hostname nm_ip4_config_get_nameservers nm_ip4_config_get_routes nm_ip4_config_get_type nm_ip4_config_new nm_marshal_VOID__OBJECT_OBJECT_ENUM nm_marshal_VOID__OBJECT_POINTER nm_marshal_VOID__OBJECT_POINTER_UINT nm_marshal_VOID__OBJECT_STRING nm_marshal_VOID__OBJECT_STRING_UINT nm_marshal_VOID__OBJECT_UINT nm_marshal_VOID__OBJECT_UINT_UINT nm_marshal_VOID__POINTER_STRING nm_marshal_VOID__STRING_INT nm_marshal_VOID__STRING_OBJECT nm_marshal_VOID__STRING_STRING nm_marshal_VOID__STRING_STRING_POINTER nm_marshal_VOID__STRING_STRING_STRING nm_marshal_VOID__STRING_UCHAR nm_marshal_VOID__STRING_UINT nm_marshal_VOID__UINT_UINT nm_marshal_VOID__UINT_UINT_UINT nm_object_array_demarshal nm_object_array_get_type nm_object_cache_add nm_object_cache_get nm_object_cache_remove_by_object nm_object_cache_remove_by_path nm_object_demarshal_generic nm_object_get_boolean_property nm_object_get_byte_array_property nm_object_get_byte_property nm_object_get_connection nm_object_get_double_property nm_object_get_int_property nm_object_get_object_path_property nm_object_get_path nm_object_get_property nm_object_get_string_property nm_object_get_type nm_object_get_uint_property nm_object_handle_properties_changed nm_object_queue_notify nm_object_set_property nm_serial_device_get_bytes_received nm_serial_device_get_bytes_sent nm_serial_device_get_type nm_settings_error_quark nm_settings_get_type nm_settings_list_connections nm_settings_signal_new_connection nm_ssid_demarshal nm_ssid_get_type nm_string_array_demarshal nm_string_array_get_type nm_uint_array_demarshal nm_uint_array_get_type nm_vpn_connection_get_banner nm_vpn_connection_get_type nm_vpn_connection_get_vpn_state nm_vpn_connection_new
--- libnm-glib0.symbols.save 2008-08-13 04:29:17.000000000 +0200 +++ libnm-glib0.symbols 2008-08-13 04:15:42.000000000 +0200 @@ -1,10 +1,4 @@ - dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER - dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER - dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER - dbus_glib_marshal_nm_settings_BOOLEAN__POINTER_POINTER - dbus_glib_nm_exported_connection_object_info - dbus_glib_nm_settings_object_info libnm_glib_get_network_state libnm_glib_init libnm_glib_register_callback @@ -47,13 +41,6 @@ nm_client_wireless_set_enabled nm_dbus_connection_get_type nm_dbus_connection_new - nm_dbus_get_int_property - nm_dbus_get_object_path_property - nm_dbus_get_property - nm_dbus_get_string_property - nm_dbus_get_uint_property - nm_dbus_introspect - nm_dbus_set_property nm_dbus_settings_get_connection_by_path nm_dbus_settings_get_type nm_dbus_settings_new @@ -87,7 +74,6 @@ nm_device_wifi_get_mode nm_device_wifi_get_type nm_device_wifi_new - nm_device_wifi_set_wireless_enabled nm_dhcp4_config_get_one_option nm_dhcp4_config_get_options nm_dhcp4_config_get_type @@ -110,45 +96,10 @@ nm_ip4_config_get_routes nm_ip4_config_get_type nm_ip4_config_new - nm_marshal_VOID__OBJECT_OBJECT_ENUM - nm_marshal_VOID__OBJECT_POINTER - nm_marshal_VOID__OBJECT_POINTER_UINT - nm_marshal_VOID__OBJECT_STRING - nm_marshal_VOID__OBJECT_STRING_UINT - nm_marshal_VOID__OBJECT_UINT - nm_marshal_VOID__OBJECT_UINT_UINT - nm_marshal_VOID__POINTER_STRING - nm_marshal_VOID__STRING_INT - nm_marshal_VOID__STRING_OBJECT - nm_marshal_VOID__STRING_STRING - nm_marshal_VOID__STRING_STRING_POINTER - nm_marshal_VOID__STRING_STRING_STRING - nm_marshal_VOID__STRING_UCHAR - nm_marshal_VOID__STRING_UINT - nm_marshal_VOID__UINT_UINT - nm_marshal_VOID__UINT_UINT_UINT - nm_object_array_demarshal nm_object_array_get_type - nm_object_cache_add - nm_object_cache_get - nm_object_cache_remove_by_object - nm_object_cache_remove_by_path - nm_object_demarshal_generic - nm_object_get_boolean_property - nm_object_get_byte_array_property - nm_object_get_byte_property nm_object_get_connection - nm_object_get_double_property - nm_object_get_int_property - nm_object_get_object_path_property nm_object_get_path - nm_object_get_property - nm_object_get_string_property nm_object_get_type - nm_object_get_uint_property - nm_object_handle_properties_changed - nm_object_queue_notify - nm_object_set_property nm_serial_device_get_bytes_received nm_serial_device_get_bytes_sent nm_serial_device_get_type @@ -156,11 +107,8 @@ nm_settings_get_type nm_settings_list_connections nm_settings_signal_new_connection - nm_ssid_demarshal nm_ssid_get_type - nm_string_array_demarshal nm_string_array_get_type - nm_uint_array_demarshal nm_uint_array_get_type nm_vpn_connection_get_banner nm_vpn_connection_get_type
dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__BOXED_POINTER dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__BOXED_POINTER_POINTER dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__POINTER dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__STRING_POINTER dbus_glib_nm_vpn_plugin_object_info nm_vpn_plugin_disconnect nm_vpn_plugin_error_get_type nm_vpn_plugin_error_quark nm_vpn_plugin_failure nm_vpn_plugin_get_connection nm_vpn_plugin_get_state nm_vpn_plugin_get_type nm_vpn_plugin_set_ip4_config nm_vpn_plugin_set_login_banner nm_vpn_plugin_set_state nm_vpn_plugin_ui_interface_export nm_vpn_plugin_ui_interface_get_capabilities nm_vpn_plugin_ui_interface_get_suggested_name nm_vpn_plugin_ui_interface_get_type nm_vpn_plugin_ui_interface_import nm_vpn_plugin_ui_interface_ui_factory nm_vpn_plugin_ui_widget_interface_get_type nm_vpn_plugin_ui_widget_interface_get_widget nm_vpn_plugin_ui_widget_interface_update_connection
--- libnm-glib-vpn0.symbols.save 2008-08-13 04:29:17.000000000 +0200 +++ libnm-glib-vpn0.symbols 2008-08-13 04:17:49.000000000 +0200 @@ -1,9 +1,4 @@ - dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__BOXED_POINTER - dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__BOXED_POINTER_POINTER - dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__POINTER - dbus_glib_marshal_nm_vpn_plugin_BOOLEAN__STRING_POINTER - dbus_glib_nm_vpn_plugin_object_info nm_vpn_plugin_disconnect nm_vpn_plugin_error_get_type nm_vpn_plugin_error_quark
crypto_decrypt crypto_deinit crypto_get_private_key crypto_init crypto_load_and_verify_certificate crypto_md5_hash crypto_verify_cert nm_connection_add_setting nm_connection_clear_secrets nm_connection_compare nm_connection_create_setting nm_connection_dump nm_connection_duplicate nm_connection_error_get_type nm_connection_error_quark nm_connection_for_each_setting_value nm_connection_get_path nm_connection_get_scope nm_connection_get_setting nm_connection_get_setting_by_name nm_connection_get_type nm_connection_lookup_setting_type nm_connection_lookup_setting_type_by_quark nm_connection_need_secrets nm_connection_new nm_connection_new_from_hash nm_connection_remove_setting nm_connection_replace_settings nm_connection_set_path nm_connection_set_scope nm_connection_to_hash nm_connection_update_secrets nm_connection_verify nm_crypto_error_quark nm_param_spec_specialized nm_param_spec_specialized_get_type nm_setting_802_1x_error_get_type nm_setting_802_1x_error_quark nm_setting_802_1x_get_type nm_setting_802_1x_new nm_setting_802_1x_set_ca_cert nm_setting_802_1x_set_client_cert nm_setting_802_1x_set_phase2_ca_cert nm_setting_802_1x_set_phase2_client_cert nm_setting_802_1x_set_phase2_private_key nm_setting_802_1x_set_private_key nm_setting_cdma_error_get_type nm_setting_cdma_error_quark nm_setting_cdma_get_type nm_setting_cdma_new nm_setting_clear_secrets nm_setting_compare nm_setting_connection_error_get_type nm_setting_connection_error_quark nm_setting_connection_get_type nm_setting_connection_new nm_setting_duplicate nm_setting_enumerate_values nm_setting_from_hash nm_setting_get_name nm_setting_get_type nm_setting_gsm_error_get_type nm_setting_gsm_error_quark nm_setting_gsm_get_type nm_setting_gsm_new nm_setting_ip4_config_error_get_type nm_setting_ip4_config_error_quark nm_setting_ip4_config_get_type nm_setting_ip4_config_new nm_setting_ip6_config_error_get_type nm_setting_ip6_config_error_quark nm_setting_ip6_config_get_type nm_setting_ip6_config_new nm_setting_need_secrets nm_setting_ppp_error_get_type nm_setting_ppp_error_quark nm_setting_ppp_get_type nm_setting_ppp_new nm_setting_pppoe_error_get_type nm_setting_pppoe_error_quark nm_setting_pppoe_get_type nm_setting_pppoe_new nm_setting_register nm_setting_serial_error_get_type nm_setting_serial_error_quark nm_setting_serial_get_type nm_setting_serial_new nm_setting_to_hash nm_setting_to_string nm_setting_unregister nm_setting_update_secrets nm_setting_verify nm_setting_vpn_error_get_type nm_setting_vpn_error_quark nm_setting_vpn_get_type nm_setting_vpn_new nm_setting_wired_error_get_type nm_setting_wired_error_quark nm_setting_wired_get_type nm_setting_wired_new nm_setting_wireless_ap_security_compatible nm_setting_wireless_error_get_type nm_setting_wireless_error_quark nm_setting_wireless_get_type nm_setting_wireless_new nm_setting_wireless_security_error_get_type nm_setting_wireless_security_error_quark nm_setting_wireless_security_get_type nm_setting_wireless_security_new nm_utils_escape_ssid nm_utils_garray_to_string nm_utils_gvalue_hash_dup nm_utils_ip4_addresses_from_gvalue nm_utils_ip4_addresses_to_gvalue nm_utils_ip4_netmask_to_prefix nm_utils_ip4_prefix_to_netmask nm_utils_ip4_routes_from_gvalue nm_utils_ip4_routes_to_gvalue nm_utils_ip6_addresses_from_gvalue nm_utils_ip6_addresses_to_gvalue nm_utils_ip6_dns_from_gvalue nm_utils_ip6_dns_to_gvalue nm_utils_is_empty_ssid nm_utils_register_value_transformations nm_utils_same_ssid nm_utils_security_valid nm_utils_slist_free nm_utils_ssid_to_utf8 nm_utils_string_in_list nm_utils_string_list_contains nm_utils_string_slist_validate
--- libnm-util0.symbols.save 2008-08-13 04:29:17.000000000 +0200 +++ libnm-util0.symbols 2008-08-13 04:26:29.000000000 +0200 @@ -1,11 +1,4 @@ - crypto_decrypt - crypto_deinit - crypto_get_private_key - crypto_init - crypto_load_and_verify_certificate - crypto_md5_hash - crypto_verify_cert nm_connection_add_setting nm_connection_clear_secrets nm_connection_compare @@ -32,9 +25,6 @@ nm_connection_to_hash nm_connection_update_secrets nm_connection_verify - nm_crypto_error_quark - nm_param_spec_specialized - nm_param_spec_specialized_get_type nm_setting_802_1x_error_get_type nm_setting_802_1x_error_quark nm_setting_802_1x_get_type
Attachment:
signature.asc
Description: OpenPGP digital signature