System-wide connection support

Gökçen Eraslan gokcen at pardus.org.tr
Fri Nov 19 16:53:21 CET 2010


Hello,

I want to implement system-wide connection support for KNM. I'm trying to 
understand the code for some time, and writing down the questions and the bugs 
I've found. 

Here is what I understand from the code:

* plasma applet gets activatable list from org.kde.networkmanagement and uses 
Solid::Control interface to activate/deactivate connections, enable/disable 
network and catch the events about the network and interfaces. 

* KCModule, just reads/writes connections to networkmanagementrc conf file and 
details about the connections to apps/networkmanagement/connections directory 
and calls the configure dbus method of kded module to make it aware of 
changes.

* kded module reads configuration files (networkmanagementrc), and get system-
wide connection list from NM. Also monitors interfaces and AP's to update its 
activatable list.

Now, if I understand the code correctly, we need to decide the way we 
implement system-wide connection support. If we want KCModule to 
add/remove/change system-wide connections it must use 
org.freedesktop.NetworkManagerSystemSettings interface of NM (or an interface 
of NM kded module that actually uses NM's interface).

Here are the alternatives for solution of that:

1- Add a 'AddConnection' method to org.freedesktop.NetworkManagerSettings 
interface of KNM kded module, just like NM (version 0.8), and make KNM 
KCModule use AddConnecion/ListConnections and Update/Delete methods of both 
org.freedesktop.NetworkManagerUserSettings and 
org.freedesktop.NetworkManagerSystemSettings. So, KCModule does not read or 
write networkmanagementrc and connection files, just calls specific DBus 
methods of NM (for system-wide connections) and KNM kded module (for user wide 
connections). This solution make KCModule code NM dependant but I don't know 
if this is a wanted behaviour.

2- In addition to the ListActivatable method of KNM kded module, we may add a 
few methods like AddConnection(with a parameter specifiying whether the 
connection is system-wide or user-wide), ListConnections, DeleteConnection, 
UpdateConnection so on. Then, KCModulde uses org.kde.networkmanagement to do 
its job and again does not read or write to networkmanagementrc and connection 
files. In this solution KCModule code does not depend on NM, but we need to 
implement more DBus methods than the first solution.

3- We may add AddConnection/UpdateConnection methods to 
Solid::Control::NetworkManager library, but I don't know the details of 
library.


Any ideas?

-- 
Gökçen Eraslan


More information about the kde-networkmanager mailing list