## NMVpnEditorPlugin NMVpnEditorPlugin |

## Functions

NMVpnEditorPlugin * | (*NMVpnEditorPluginFactory) ()
NMVpnEditorPlugin * | nm_vpn_editor_plugin_factory ()
NMVpnEditor * | nm_vpn_editor_plugin_get_editor ()
NMVpnEditorPluginCapability | nm_vpn_editor_plugin_get_capabilities ()
NMConnection * | nm_vpn_editor_plugin_import ()
gboolean | nm_vpn_editor_plugin_export ()
char * | nm_vpn_editor_plugin_get_suggested_filename ()
NMVpnEditorPlugin * | nm_vpn_editor_plugin_load_from_file ()

## Properties

gchar * | description | Read
gchar * | name | Read
gchar * | service | Read

## Signals

void | changed | Run First

## Types and Values

enum | NMVpnEditorPluginCapability
#define | NM_VPN_EDITOR_PLUGIN_NAME
#define | NM_VPN_EDITOR_PLUGIN_DESCRIPTION
#define | NM_VPN_EDITOR_PLUGIN_SERVICE
| NMVpnEditorPluginInterface
| NMVpnEditor

## Object Hierarchy

        GFlags
        ╰── NMVpnEditorPluginCapability
        GInterface
        ├── NMVpnEditor
        ╰── NMVpnEditorPlugin

## Prerequisites

NMVpnEditor requires GObject.

## Description

## Functions

### NMVpnEditorPluginFactory ()

    NMVpnEditorPlugin *
    (*NMVpnEditorPluginFactory) (GError **error);

### nm_vpn_editor_plugin_factory ()

    NMVpnEditorPlugin *
    nm_vpn_editor_plugin_factory (GError **error);

### nm_vpn_editor_plugin_get_editor ()

    NMVpnEditor *
    nm_vpn_editor_plugin_get_editor (NMVpnEditorPlugin *plugin,
                                     NMConnection *connection,
                                     GError **error);

#### Parameters

plugin | the NMVpnEditorPlugin |
connection | the NMConnection to be edited |
error | on return, an error or `NULL` |

#### Returns

a new NMVpnEditor or `NULL` on error.

[transfer full]

### nm_vpn_editor_plugin_get_capabilities ()

    NMVpnEditorPluginCapability
    nm_vpn_editor_plugin_get_capabilities (NMVpnEditorPlugin *plugin);

### nm_vpn_editor_plugin_import ()

    NMConnection *
    nm_vpn_editor_plugin_import (NMVpnEditorPlugin *plugin,
                                 const char *path,
                                 GError **error);

#### Parameters

plugin | the NMVpnEditorPlugin |
path | full path to the file to attempt to read into a new NMConnection |
error | on return, an error or `NULL` |

#### Returns

a new NMConnection imported from `path` , or `NULL` on error or if the file at `path` was not recognized by this plugin.

[transfer full]

### nm_vpn_editor_plugin_export ()

    gboolean
    nm_vpn_editor_plugin_export (NMVpnEditorPlugin *plugin,
                                 const char *path,
                                 NMConnection *connection,
                                 GError **error);

### nm_vpn_editor_plugin_get_suggested_filename ()

    char *
    nm_vpn_editor_plugin_get_suggested_filename
                                   (NMVpnEditorPlugin *plugin,
                                    NMConnection *connection);

### nm_vpn_editor_plugin_load_from_file ()

    NMVpnEditorPlugin *
    nm_vpn_editor_plugin_load_from_file (const char *plugin_filename,
                                         const char *check_service,
                                         int check_owner,
                                         NMUtilsCheckFilePredicate check_file,
                                         gpointer user_data,
                                         GError **error);

Load the shared libary `plugin_filename` and create a new NMVpnEditorPlugin instace via the NMVpnEditorPluginFactory function.

#### Parameters

plugin_filename | The path to the share library to load. Apply some common heuristics to find the library, such as appending "so" file ending. If the path is not an absolute path or no matching module can be found, lookup inside a directory defined at compile time. Due to this, `check_file` might be called for two different paths. |
check_service | if not-null, check that the loaded plugin advertises the given service. |
check_owner | if non-negative, check whether the file is owned by UID `check_owner` or by root. In this case also check that the file is not writable by anybody else. |
check_file | optional callback to validate the file prior to loading the shared library. | [scope call]
user_data | user data for `check_file` |
error | on failure the error reason. |

#### Returns

a new plugin instance or `NULL` on error.

[transfer full]

Since: 1.2

## Types and Values

### enum NMVpnEditorPluginCapability

Flags that indicate certain capabilities of the plugin to editor programs.

#### Members

NM_VPN_EDITOR_PLUGIN_CAPABILITY_NONE | unknown or no capability |
NM_VPN_EDITOR_PLUGIN_CAPABILITY_IMPORT | the plugin can import new connections |
NM_VPN_EDITOR_PLUGIN_CAPABILITY_EXPORT | the plugin can export connections |
NM_VPN_EDITOR_PLUGIN_CAPABILITY_IPV6 | the plugin supports IPv6 addressing |

### NM_VPN_EDITOR_PLUGIN_NAME

    #define NM_VPN_EDITOR_PLUGIN_NAME "name"

### NM_VPN_EDITOR_PLUGIN_DESCRIPTION

    #define NM_VPN_EDITOR_PLUGIN_DESCRIPTION "description"

### NM_VPN_EDITOR_PLUGIN_SERVICE

    #define NM_VPN_EDITOR_PLUGIN_SERVICE "service"

### NMVpnEditorPluginInterface

    typedef struct {
    	GTypeInterface g_iface;

    	NMVpnEditor * (*get_editor) (NMVpnEditorPlugin *plugin,
    	                             NMConnection *connection,
    	                             GError **error);

    	NMVpnEditorPluginCapability (*get_capabilities) (NMVpnEditorPlugin *plugin);

    	NMConnection * (*import_from_file) (NMVpnEditorPlugin *plugin,
    	                                    const char *path,
    	                                    GError **error);

    	gboolean (*export_to_file) (NMVpnEditorPlugin *plugin,
    	                            const char *path,
    	                            NMConnection *connection,
    	                            GError **error);

    	char * (*get_suggested_filename) (NMVpnEditorPlugin *plugin, NMConnection *connection);
    } NMVpnEditorPluginInterface;

Interface for VPN editor plugins.

#### Members

GTypeInterface `g_iface`; | the parent interface |
`get_editor` () | returns an NMVpnEditor, pre-filled with values from `connection` if non-`NULL`. |
`get_capabilities` () | returns a bitmask of capabilities. |
`import_from_file` () | Try to import a connection from the specified path. On success, return a partial NMConnection object. On error, return `NULL` and set `error` with additional information. Note that `error` can be `NULL`, in which case no additional error information should be provided. |
`export_to_file` () | Export the given connection to the specified path. Return `TRUE` on success. On error, return `FALSE` and set `error` with additional error information. Note that `error` can be `NULL`, in which case no additional error information should be provided. |
`get_suggested_filename` () | For a given connection, return a suggested file name. Returned value will be `NULL` or a suggested file name to be freed by the caller. |

### NMVpnEditor

    typedef struct _NMVpnEditor NMVpnEditor;

## Property Details

### The `“description”` property

      “description”              gchar *

Longer description of the VPN plugin.

Flags: Read

Default value: NULL

### The `“name”` property

      “name”                     gchar *

Short display name of the VPN plugin.

Flags: Read

Default value: NULL

### The `“service”` property

      “service”                  gchar *

D-Bus service name of the plugin's VPN service.

Flags: Read

Default value: NULL

## Signal Details

### The `“changed”` signal

    void
    user_function (NMVpnEditor *nmvpneditor,
                   gpointer     user_data)

Flags: Run First