summary refs log tree commit diff
path: root/src/settings/plugins/README
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2016-01-20 16:26:51 +0100
committerMichael Biebl <biebl@debian.org>2016-01-20 16:26:51 +0100
commit494f296a3baab08522617b24b1f126d8f9a17502 (patch)
treec8ef32fb0dd1c4ff35a0b38e787abb58692de0cd /src/settings/plugins/README
parent54f6333410ffd570e62717d9e77c5c987175e397 (diff)
Imported Upstream version 1.1.90 upstream/1.1.90
Diffstat (limited to 'src/settings/plugins/README')
-rw-r--r--src/settings/plugins/README33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/settings/plugins/README b/src/settings/plugins/README
new file mode 100644
index 00000000..307d0bb1
--- /dev/null
+++ b/src/settings/plugins/README
@@ -0,0 +1,33 @@
+Plugins generally have three components:
+
+1) plugin object: manages the individual "connections", which are
+  just objects wrapped around on-disk config data.  The plugin handles requests
+  to add new connections via the NM D-Bus API, and also watches config
+  directories for changes to configuration data.  Plugins implement the
+  NMSettingsPlugin interface.  See plugin.c.
+
+2) "connections": subclasses of NMSettingsConnection.  They handle updates to
+  configuration data, deletion, etc.  See NMKeyfileConnection.
+
+3) reader/writer code: typically a separate static library that gets linked
+  into the main plugin shared object, so they can be unit tested separately
+  from the plugin.  This code should read config data from disk and create
+  an NMConnection from it, and be capable of taking an NMConnection and writing
+  out appropriate configuration data to disk.
+
+NM will first call the "factory" function that every module must provide, which
+is nm_settings_plugin_factory().  That function creates and returns a singleton
+instance of the plugin's main object, which implements NMSettingsPlugin.
+That interface is implemented via the object definition in G_DEFINE_TYPE_EXTENDED
+in plugin.c, which registers the interface setup function
+settings_plugin_interface_init(), which when called actually sets up the vtables
+for the functions defined by NMSettingsPluginInterface.  Thus there are two
+entry points into the plugin:  nm_settings_plugin_factory() and
+the NMSettingsPluginInterface methods.
+
+The plugin also emits various signals (defined by NMSettingsPluginInterface)
+which NetworkManager listens for.  These include notifications of new
+connections if they were created via changes to the on-disk files.  The
+"connection" objects can also emit signals (defined by the NMSettingsConnection
+and NMConnection superclasses) when the connections' backing storage gets
+changed or deleted.