Re: How to get the D-bus path of the settings of a connection ?

2014-04-23 Thread Dan Williams
On Tue, 2014-04-15 at 11:44 +0200, Manuel Yguel wrote:
 Thanks a lot Dan, your explanations were very clear.
 Thank to you I got a running example doing creation, connection, 
 disconnection and deletion of the settings. I attached the code I wrote. 
 It is not completely mature yet since it mixes c++ and C. But I intend 
 to put some orthodoxy in it later.
 I have an other question, I have seen that the connection called Test 
 of my is still visible in the list of scanned networks displayed by the 
 network-manager-applet. I thought first that it was because the list was 
 not updated but it seems not to be the case. Worse: I am able to click 
 on it and it looks like it tries to activate it, however I think it does 
 not work.
 Is this a problem related to the applet or did I miss to remove 
 something when managing the adhoc connection ?

Is the stale connection still visible in nmcli dev wifi list output?
Is it also still visible in the iwlist wlan0 scan output?

Dan

 
 Manuel
 
 
 On 04/10/2014 05:52 PM, Dan Williams wrote:
  On Thu, 2014-04-10 at 14:44 +0200, Manuel Yguel wrote:
  I have successfully created and deleted adhoc networks from the glib API
  thanks to Dan help. However my test program suffers from one problem:
  the network connection configurations get stored in the network manager
  memory and pollute the user interface. Thus I try to call
  org.freedesktop.NetworkManager.Settings.Connection.Delete for a certain
  NMConnection object without any success so far.
  I can see in the D-bus (with qdbusviewer) the configuration for a single
  network connection and I am able to call the Delete method on it
  (because I can see it appears when the setting configuration is recorded).
  However I do not know how to get the number (x) in the path that appears at
  org/freedesktop/NetworkManager/Settings/x
  in order to create a proxy for that Settings.Connection object and
  call the Delete method on it later.
  First I would like to know if there is a way to get the path of the
  object storing the org.freedesktop.NetworkManager.Settings.Connection
  from the glib API ?
  When you add the connection to NetworkManager originally, NM will return
  to you the object path that you can use to work with the Connection
  object later.  With the libnm-glib API, when you call:
 
  gboolean nm_remote_settings_add_connection (NMRemoteSettings *settings,
   NMConnection *connection,
   
  NMRemoteSettingsAddConnectionFunc callback,
   gpointer user_data);
 
  callback is called when the add is completed, and your callback has
  the prototype of:
 
  typedef void (*NMRemoteSettingsAddConnectionFunc) (NMRemoteSettings 
  *settings,
  NMRemoteConnection 
  *connection,
  GError *error,
  gpointer user_data);
 
  The NMRemoteConnection object (a subclass of NMConnection) represents
  the actual connection known by NM.  You can throw away the NMConnection
  that you handed to nm_remote_settings_add_connection(), it is unchanged
  by the call.  The NMRemoteConnection is the live object, which you can
  keep around and use later with functions like:
 
  void nm_remote_connection_delete (NMRemoteConnection *connection,
 NMRemoteConnectionResultFunc callback,
 gpointer user_data);
 
  I was first thinking that it may be a NMSettingConnection object. I was
  able to access it but I was only able to get the uuid or the human name
  of the connection.
  I also tried the nm_connection_get_path on the NMConnection object but I
  get a NULL string.
  I am quite stuck now and any help would be much appreciated.
  I think the issue is that you might still be using the NMConnection that
  you built up to send to NM with the add_connection() call.  That object
  isn't consumed by add_connection(), but serves as a template and can be
  disposed after calling add_connection().  The NMRemoteConnection is what
  you want to use.
 
  I've committed some more documentation to libnm-glib's NMRemoteSettings
  object which describes this and hopefully helps you out.
 
  http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=2200687b0f92d553dc79e54b672069b2b704203d
 
  There are also some examples here, the ones you're interested in have
  libnm-glib in the name:
 
  http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/C/glib
 
  Let us know if you have further questions!
 
  Dan
 
 
 ___
 networkmanager-list mailing list
 networkmanager-list@gnome.org
 https://mail.gnome.org/mailman/listinfo/networkmanager-list


___
networkmanager-list mailing list

Re: How to get the D-bus path of the settings of a connection ?

2014-04-15 Thread Manuel Yguel

Thanks a lot Dan, your explanations were very clear.
Thank to you I got a running example doing creation, connection, 
disconnection and deletion of the settings. I attached the code I wrote. 
It is not completely mature yet since it mixes c++ and C. But I intend 
to put some orthodoxy in it later.
I have an other question, I have seen that the connection called Test 
of my is still visible in the list of scanned networks displayed by the 
network-manager-applet. I thought first that it was because the list was 
not updated but it seems not to be the case. Worse: I am able to click 
on it and it looks like it tries to activate it, however I think it does 
not work.
Is this a problem related to the applet or did I miss to remove 
something when managing the adhoc connection ?



Manuel


On 04/10/2014 05:52 PM, Dan Williams wrote:

On Thu, 2014-04-10 at 14:44 +0200, Manuel Yguel wrote:

I have successfully created and deleted adhoc networks from the glib API
thanks to Dan help. However my test program suffers from one problem:
the network connection configurations get stored in the network manager
memory and pollute the user interface. Thus I try to call
org.freedesktop.NetworkManager.Settings.Connection.Delete for a certain
NMConnection object without any success so far.
I can see in the D-bus (with qdbusviewer) the configuration for a single
network connection and I am able to call the Delete method on it
(because I can see it appears when the setting configuration is recorded).
However I do not know how to get the number (x) in the path that appears at
org/freedesktop/NetworkManager/Settings/x
in order to create a proxy for that Settings.Connection object and
call the Delete method on it later.
First I would like to know if there is a way to get the path of the
object storing the org.freedesktop.NetworkManager.Settings.Connection
from the glib API ?

When you add the connection to NetworkManager originally, NM will return
to you the object path that you can use to work with the Connection
object later.  With the libnm-glib API, when you call:

gboolean nm_remote_settings_add_connection (NMRemoteSettings *settings,
 NMConnection *connection,
 NMRemoteSettingsAddConnectionFunc 
callback,
 gpointer user_data);

callback is called when the add is completed, and your callback has
the prototype of:

typedef void (*NMRemoteSettingsAddConnectionFunc) (NMRemoteSettings *settings,
NMRemoteConnection 
*connection,
GError *error,
gpointer user_data);

The NMRemoteConnection object (a subclass of NMConnection) represents
the actual connection known by NM.  You can throw away the NMConnection
that you handed to nm_remote_settings_add_connection(), it is unchanged
by the call.  The NMRemoteConnection is the live object, which you can
keep around and use later with functions like:

void nm_remote_connection_delete (NMRemoteConnection *connection,
   NMRemoteConnectionResultFunc callback,
   gpointer user_data);


I was first thinking that it may be a NMSettingConnection object. I was
able to access it but I was only able to get the uuid or the human name
of the connection.
I also tried the nm_connection_get_path on the NMConnection object but I
get a NULL string.
I am quite stuck now and any help would be much appreciated.

I think the issue is that you might still be using the NMConnection that
you built up to send to NM with the add_connection() call.  That object
isn't consumed by add_connection(), but serves as a template and can be
disposed after calling add_connection().  The NMRemoteConnection is what
you want to use.

I've committed some more documentation to libnm-glib's NMRemoteSettings
object which describes this and hopefully helps you out.

http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=2200687b0f92d553dc79e54b672069b2b704203d

There are also some examples here, the ones you're interested in have
libnm-glib in the name:

http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/C/glib

Let us know if you have further questions!

Dan



#This CMakeLists.txt was automatically generated.
#You can add things but not change existing things.
#For instance don't change the variable names !
#One exception: you can change the name of the the target library.

cmake_minimum_required(VERSION 2.4)

if(COMMAND cmake_policy)
if( POLICY CMP0003 )
   cmake_policy(SET CMP0003 NEW)
endif( POLICY CMP0003 )
if( POLICY CMP0015 )
cmake_policy(SET CMP0015 NEW)
  endif( POLICY CMP0015 )
endif(COMMAND cmake_policy)

project( manage_adhoc_remote_connection_nm_glib )

if( NOT CMAKE_VERBOSE_MAKEFILE )
set( 

Re: How to get the D-bus path of the settings of a connection ?

2014-04-10 Thread Dan Williams
On Thu, 2014-04-10 at 14:44 +0200, Manuel Yguel wrote:
 I have successfully created and deleted adhoc networks from the glib API 
 thanks to Dan help. However my test program suffers from one problem: 
 the network connection configurations get stored in the network manager 
 memory and pollute the user interface. Thus I try to call 
 org.freedesktop.NetworkManager.Settings.Connection.Delete for a certain 
 NMConnection object without any success so far.
 I can see in the D-bus (with qdbusviewer) the configuration for a single 
 network connection and I am able to call the Delete method on it 
 (because I can see it appears when the setting configuration is recorded).
 However I do not know how to get the number (x) in the path that appears at
 org/freedesktop/NetworkManager/Settings/x
 in order to create a proxy for that Settings.Connection object and 
 call the Delete method on it later.
 First I would like to know if there is a way to get the path of the 
 object storing the org.freedesktop.NetworkManager.Settings.Connection 
 from the glib API ?

When you add the connection to NetworkManager originally, NM will return
to you the object path that you can use to work with the Connection
object later.  With the libnm-glib API, when you call:

gboolean nm_remote_settings_add_connection (NMRemoteSettings *settings,
NMConnection *connection,
NMRemoteSettingsAddConnectionFunc 
callback,
gpointer user_data);

callback is called when the add is completed, and your callback has
the prototype of:

typedef void (*NMRemoteSettingsAddConnectionFunc) (NMRemoteSettings *settings,
   NMRemoteConnection 
*connection,
   GError *error,
   gpointer user_data);

The NMRemoteConnection object (a subclass of NMConnection) represents
the actual connection known by NM.  You can throw away the NMConnection
that you handed to nm_remote_settings_add_connection(), it is unchanged
by the call.  The NMRemoteConnection is the live object, which you can
keep around and use later with functions like:

void nm_remote_connection_delete (NMRemoteConnection *connection,
  NMRemoteConnectionResultFunc callback,
  gpointer user_data);

 I was first thinking that it may be a NMSettingConnection object. I was 
 able to access it but I was only able to get the uuid or the human name 
 of the connection.
 I also tried the nm_connection_get_path on the NMConnection object but I 
 get a NULL string.
 I am quite stuck now and any help would be much appreciated.

I think the issue is that you might still be using the NMConnection that
you built up to send to NM with the add_connection() call.  That object
isn't consumed by add_connection(), but serves as a template and can be
disposed after calling add_connection().  The NMRemoteConnection is what
you want to use.

I've committed some more documentation to libnm-glib's NMRemoteSettings
object which describes this and hopefully helps you out.

http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=2200687b0f92d553dc79e54b672069b2b704203d

There are also some examples here, the ones you're interested in have
libnm-glib in the name:

http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/C/glib

Let us know if you have further questions!

Dan

___
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list