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