diff --git a/docs/api/Makefile.am b/docs/api/Makefile.am index baf21123c..158eb38f6 100644 --- a/docs/api/Makefile.am +++ b/docs/api/Makefile.am @@ -63,6 +63,7 @@ MKTMPL_OPTIONS= content_files = \ version.xml \ settings-spec.xml \ + migrating-to-09.xml \ $(NULL) include $(top_srcdir)/gtk-doc.make diff --git a/docs/api/migrating-to-09.xml b/docs/api/migrating-to-09.xml new file mode 100644 index 000000000..725685298 --- /dev/null +++ b/docs/api/migrating-to-09.xml @@ -0,0 +1,157 @@ + + +]> +
+ Migrating from NetworkManager 0.8 to NetworkManager 0.9 + + + NetworkManager 0.9 is a new major version of NetworkManager that breaks + both API and ABI compared to previous versions. These changes are + intended to make communication with NetworkManager much simpler, especially + for network control and configuration programs. Thankfully, most changes + are not difficult to implement, and the advantages of the simpler + architecture of NetworkManager 0.9 greatly outweight the effort of + updating client programs. + + +
+ Architecture and D-Bus API Changes in 0.9 + + + This section details the architectural and D-Bus API changes in + NetworkManager 0.9. + + +
+ Elimination of the User Settings Service + + Previously there were two "settings services", or D-Bus services that + provided and saved network configuration information. NetworkManager + owned the "system" settings service, and one user-level applet owned the + "user" settings service. Now, the "user" settings service has been + eliminated, so clients only have to track one D-Bus service to read and + update network configuration. The functionality of the old user settings + service has been replaced with a "permissions" key on each connection + object to preserve the ability to restrict which users can use the + connection, and with a "secret agent" D-Bus API for user-session-level + secure storage of network secrets and passwords. + + + Elimination of the user settings service provides the following advantages + for clients of NetworkManager: + + Simpler discovery of network configuration and change tracking + Simpler storage of user-level network secrets by control applets + Correct operation of fast-user switching and multi-seat configurations + More granular network connection permissions for system administrators + Connections are now system-wide by default (unless restricted by the user or system administrator) + Easier deployment of user-specific connections (ie, VPNs) + + + + Action: if you develop a network control + applet that talks to NetworkManager and used to provide a user settings + service, you can eliminate that code and rely on NetworkManager for all + storage of network configuration. Your applet should now implement the + Secret Agent D-Bus API (see below) to store user-specific secrets, and + add legacy user-specific configuration to NetworkManager when run. More + information about both these changes follows. + +
+ +
+ Settings Service Name Change + + With the elimination of the user settings service, the old + org.freedesktop.NetworkManagerUserSettings and + org.freedesktop.NetworkManagerSystemSettings D-Bus + service names are no longer used. Instead NetworkManager provides the + settings service using its own D-Bus service name, + org.freedesktop.NetworkManager. The object path of + the settings service remains unchanged. + + + Action: change the service name that + your application uses to request system network settings to + org.freedesktop.NetworkManager. + +
+ +
+ Permissions Methods Consolidation + + Previously there were two D-Bus method calls to retrieve the list of + operations that a user client could perform, and two signals notifying + callers that they should recheck permissions. Those two calls were: + + + org.freedesktop.NetworkManagerSettings.System.GetPermissions + which returned a bitfield of operations the caller was allowed to + perform related to modify system network settings and the machine + hostname + + + org.freedesktop.NetworkManager.GetPermissions which + returned a dictionary mapping permission names to result strings like + "yes", "auth", or "no", relating to network control permissions like + the ability to enable or disable WiFi. + + + These two calls have been consolidated into an enhanced + org.freedesktop.NetworkManager.GetPermissions call that + uses the same arguments, but includes all permissions, including those which + the settings service used to handle. + + + With this change, the bitfield items from + org.freedesktop.NetworkManagerSettings.System.GetPermissions + are now string-based permissions. The mapping is as follows: + + + + Old bitfield valueNew permission name + + + + 0x1 (connection-modify) + + org.freedesktop.NetworkManager.settings.modify.system + or org.freedesktop.NetworkManager.settings.modify.system + depending on the permissions of the connection. + + + + 0x2 (wifi-share-protected) + + org.freedesktop.NetworkManager.wifi.share.protected + + + + 0x4 (wifi-share-open) + + org.freedesktop.NetworkManager.wifi.share.open + + + + 0x8 (hostname-modify) + + org.freedesktop.NetworkManager.settings.modify.hostname + + + + +
+
+ + Action: modify handling of existing + code that checks permissions to recognize the new permissions names for + old system settings permissions, and remove code that used to call + org.freedesktop.NetworkManagerSettings.System.GetPermissions. + +
+ +
+ +
diff --git a/docs/api/network-manager-docs.xml b/docs/api/network-manager-docs.xml index 7e121cc6d..4381bb56f 100644 --- a/docs/api/network-manager-docs.xml +++ b/docs/api/network-manager-docs.xml @@ -111,6 +111,15 @@ + + Migrating from Previous Versions of NetworkManager + + This part describes changes you need to make in programs that + use older versions of NetworkManager. + + + + Index