summaryrefslogtreecommitdiff
path: root/libnm/nm-dbus-helpers.c
Commit message (Collapse)AuthorAgeFilesLines
* all: make use of new header file "nm-default.h"Thomas Haller2015-08-051-1/+1
|
* all: rename nm-glib-compat.h to nm-glib.h, use everywhereDan Winship2015-07-241-2/+1
| | | | | | | | | | | | | | | | Rather than randomly including one or more of <glib.h>, <glib-object.h>, and <gio/gio.h> everywhere (and forgetting to include "nm-glib-compat.h" most of the time), rename nm-glib-compat.h to nm-glib.h, include <gio/gio.h> from there, and then change all .c files in NM to include "nm-glib.h" rather than including the glib headers directly. (Public headers files still have to include the real glib headers, since nm-glib.h isn't installed...) Also, remove glib includes from header files that are already including a base object header file (which must itself already include the glib headers).
* libnm,dbus-helpers: include glib-compat for g_test_initialized()Lubomir Rintel2015-05-261-0/+2
|
* tests: don't try to connect to the private socketlr/tap-testsLubomir Rintel2015-05-261-2/+3
| | | | | Even if we're running the tests as root we still want to use the mock service instead of whatever version of daemon runs on the test host.
* libnm: fix memleak in _nm_dbus_bind_properties()Thomas Haller2015-02-091-0/+1
|
* all: consistently include config.hDan Winship2014-11-131-1/+2
| | | | | | | | | | | config.h should be included from every .c file, and it should be included before any other include. Fix that. (As a side effect of how I did this, this also changes us to consistently use "config.h" rather than <config.h>. To the extent that it matters [which is not much], quotes are more correct anyway, since we're talking about a file in our own build tree, not a system include.)
* libnm: drop _nm_dbus_register_error_domain()Dan Winship2014-10-221-21/+0
| | | | All D-Bus error domains are registered from libnm-core now.
* libnm: share private DBUS connectionThomas Haller2014-10-031-7/+91
| | | | | | | | | | | | | | | | | | Cache the private DBUS connection and reuse it. Otherwise we end up creating several private connnections, as an NMObject instance creates a new connection (unless it is passed in as NMObject:dbus-connection property). We already pass the existing "parent" DBUS connection when creating the proxy objects. However, when creating two independent objects (e.g. nm_client_new() and nm_remote_settings_new()), their private DBUS connections were not shared. Implement this sharing inside nm-dbus-helpers.c https://bugzilla.gnome.org/show_bug.cgi?id=737725 Signed-off-by: Thomas Haller <thaller@redhat.com>
* libnm: simplify private D-Bus connection trackingDan Winship2014-09-191-13/+2
| | | | | | dcbw points out that g_dbus_connection_get_unique_name() can be used to distinguish private from bus connections without us needing to keep track ourselves.
* libnm: fix private bus async codepathsDan Winship2014-09-191-0/+5
| | | | | | _nm_dbus_new_connection_async() wasn't marking the connection as private when it was private, causing _nm_dbus_new_proxy_for_connection*() to pass the wrong args. Fix that.
* libnm: avoid init_async NULL dereference on cancellable=0x0Lubomir Rintel2014-09-191-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (gdb) run c add type bond Starting program: /usr/bin/nmcli c add type bond Got object file from memory but can't read symbols: File truncated. [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x7ffff39b2700 (LWP 13042)] [New Thread 0x7fffec4bc700 (LWP 13043)] (process:13038): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed Program received signal SIGTRAP, Trace/breakpoint trap. g_logv (log_domain=0x7ffff5cda224 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffd290) at gmessages.c:1046 1046 g_private_set (&g_log_depth, GUINT_TO_POINTER (depth)); (gdb) bt #0 0x00007ffff59b6c70 in g_logv (log_domain=0x7ffff5cda224 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffd290) at gmessages.c:1046 #1 0x00007ffff59b6eaf in g_log (log_domain=log_domain@entry=0x7ffff5cda224 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff5a25a9d "%s: assertion '%s' failed") at gmessages.c:1079 #2 0x00007ffff59b6ee9 in g_return_if_fail_warning (log_domain=log_domain@entry=0x7ffff5cda224 "GLib-GObject", pretty_function=pretty_function@entry=0x7ffff5cdd6b3 <__FUNCTION__.13314> "g_object_ref", expression=expression@entry=0x7ffff5cdc388 "G_IS_OBJECT (object)") at gmessages.c:1088 #3 0x00007ffff5cb39aa in g_object_ref (_object=_object@entry=0x0) at gobject.c:3041 #4 0x00007ffff7ad5418 in _nm_dbus_new_connection_async (cancellable=0x0, callback=<optimized out>, user_data=<optimized out>) at nm-dbus-helpers.c:131 #5 0x00007ffff7ae58f1 in handle_property_changed (synchronously=0, pi=0x5555558a9610, value=0x7fffe40138a0, property_name=<optimized out>, self=0x555555831980 [NMRemoteSettings]) at nm-object.c:1115 #6 0x00007ffff7ae58f1 in handle_property_changed (self=self@entry=0x555555831980 [NMRemoteSettings], dbus_name=<optimized out>, value=<optimized out>, synchronously=synchronously@entry=0) at nm-object.c:1186 #7 0x00007ffff7ae59cb in process_properties_changed (self=0x555555831980 [NMRemoteSettings], properties=<optimized out>, synchronously=0) at nm-object.c:1218 #8 0x00007ffff7ae5a7a in property_proxy_signal (proxy=<optimized out>, sender_name=<optimized out>, signal_name=<optimized out>, parameters=<optimized out>, user_data=0x555555831980) at nm-object.c:1234 #9 0x00007ffff4d34d60 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #10 0x00007ffff4d347d1 in ffi_call (cif=cif@entry=0x7fffffffd7e0, fn=<optimized out>, rvalue=0x7fffffffd740, avalue=avalue@entry=0x7fffffffd6c0) at ../src/x86/ffi64.c:525 #15 0x00007ffff5cca2ef in <emit signal ??? on instance 0x555555881c10 [NMDBusSettingsProxy]> (instance=instance@entry=0x555555881c10, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3365 #11 0x00007ffff5caf6f4 in g_cclosure_marshal_generic (closure=0x5555558aa400, return_gvalue=0x0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=0x0) at gclosure.c:1448 #12 0x00007ffff5caeed5 in g_closure_invoke (closure=0x5555558aa400, return_value=return_value@entry=0x0, n_param_values=4, param_values=param_values@entry=0x7fffffffda10, invocation_hint=invocation_hint@entry=0x7fffffffd9b0) at gclosure.c:768 #13 0x00007ffff5cc1202 in signal_emit_unlocked_R (node=node@entry=0x555555819270, detail=detail@entry=0, instance=instance@entry=0x555555881c10, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffda10) at gsignal.c:3553 #14 0x00007ffff5cca0c1 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdbd0) at gsignal.c:3309 #16 0x00007ffff63d8bcc in on_signal_received (connection=<optimized out>, sender_name=0x0, object_path=<optimized out>, interface_name=<optimized out>, signal_name=0x7fffe40195b0 "PropertiesChanged", parameters=0x7fffe4031000, user_data=0x5555558a3f30) at gdbusproxy.c:917 #17 0x00007ffff63c83b4 in emit_signal_instance_in_idle_cb (data=0x7fffe403a6d0) at gdbusconnection.c:3753 #18 0x00007ffff59afb6b in g_main_context_dispatch (context=0x5555557eb530) at gmain.c:3064 #19 0x00007ffff59afb6b in g_main_context_dispatch (context=context@entry=0x5555557eb530) at gmain.c:3663 #20 0x00007ffff59aff08 in g_main_context_iterate (context=0x5555557eb530, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3734 #21 0x00007ffff59b0232 in g_main_loop_run (loop=0x5555557e3440) at gmain.c:3928 #22 0x000055555556fd57 in main (argc=<optimized out>, argv=<optimized out>) at nmcli.c:587 (gdb) https://bugzilla.gnome.org/show_bug.cgi?id=736962
* libnm: port to GDBusDan Winship2014-09-181-73/+245
| | | | | | | | | Port libnm-core/libnm to GDBus. The NetworkManager daemon continues to use dbus-glib; the previously-added connection hash/variant conversion methods are now moved to NetworkManagerUtils (along with a few other utilities that are now only needed by the daemon code).
* libnm: rename nm-dbus-helpers-private.h to nm-dbus-helpers.hDan Winship2014-09-181-1/+1
| | | | The .h file should have the same name as the .c file.
* libnm: split nm-dbus-helpers utils into sync/async versionsDan Winship2014-09-181-2/+75
| | | | | | | | | | dbus-glib's functions to get a DBusGConnection or a DBusGProxy return right away, but gdbus's corresponding functions do some initial setup and communication as part of initialization, and so either block or run async. So split _nm_dbus_new_connection() and _nm_dbus_new_proxy_for_connection() into sync and async versions now, and update NMObject to use the correct one depending on whether it is working synchronously or asynchronously.
* libnm: drop NMObject:dbus-connectionDan Winship2014-09-091-4/+9
| | | | | | The only plausible use case for the NMObject:dbus-connection property is for using the session bus in test programs. So just drop it and use an environment variable to decide which bus to use instead.
* libnm: assert that dbus_connection_allocate_data_slot() doesn't failDan Winship2014-09-091-9/+5
| | | | | | | dbus_connection_allocate_data_slot() can only fail on ENOMEM, in which case the immediately-following call to g_set_error() would also get ENOMEM and abort. So just simplify and assert that the libdbus call didn't fail.
* libnm: rename NetworkManager.h and NetworkManagerVPN.hDan Winship2014-08-011-1/+1
| | | | | | | "NetworkManager.h"'s name (and non-standard capitalization) suggest that it's some sort of high-level super-important header, but it's really just low-level D-Bus stuff. Rename it to "nm-dbus-interface.h" and likewise "NetworkManagerVPN.h" to "nm-vpn-dbus-interface.h"
* libnm: add libnm/libnm-core (part 1)Dan Winship2014-08-011-0/+99
This commit begins creating the new "libnm", which will replace libnm-util and libnm-glib. The main reason for the libnm-util/libnm-glib split is that the daemon needs to link to libnm-util (to get NMSettings, NMConnection, etc), but can't link to libnm-glib (because it uses many of the same type names as the NetworkManager daemon. eg, NMDevice). So the daemon links to only libnm-util, but basically all clients link to both. With libnm, there will be only a single client-visible library, and NetworkManager will internally link against a private "libnm-core" containing the parts that used to be in libnm-util. (The "libnm-core" parts still need to be in their own directory so that the daemon can see those header files without also seeing the ones in libnm/ that conflict with its own headers.) [This commit just copies the source code from libnm-util/ to libnm-core/, and libnm-glib/ to libnm/: mkdir -p libnm-core/tests/ mkdir -p libnm/tests/ cp libnm-util/*.[ch] libnm-util/nm-version.h.in libnm-core/ rm -f libnm-core/nm-version.h libnm-core/nm-setting-template.[ch] libnm-core/nm-utils-enum-types.[ch] cp libnm-util/tests/*.[ch] libnm-core/tests/ cp libnm-glib/*.[ch] libnm/ rm -f libnm/libnm_glib.[ch] libnm/libnm-glib-test.c libnm/nm-glib-enum-types.[ch] cp libnm-glib/tests/*.[ch] libnm/tests/ ]