NMSettingVPN

## NMSettingVPN NMSettingVPN — Describes connection properties for Virtual Private Networks |

## Synopsis

    #include <nm-setting-vpn.h>

                        NMSettingVPN;
                        NMSettingVPNClass;
    enum                NMSettingVpnError;
    void                (*NMVPNIterFunc)                    (const char *key,
                                                             const char *value,
                                                             gpointer user_data);
    #define             NM_SETTING_VPN_DATA
    #define             NM_SETTING_VPN_ERROR
    #define             NM_SETTING_VPN_SECRETS
    #define             NM_SETTING_VPN_SERVICE_TYPE
    #define             NM_SETTING_VPN_SETTING_NAME
    #define             NM_SETTING_VPN_USER_NAME
    void                nm_setting_vpn_add_data_item        (NMSettingVPN *setting,
                                                             const char *key,
                                                             const char *item);
    void                nm_setting_vpn_add_secret           (NMSettingVPN *setting,
                                                             const char *key,
                                                             const char *secret);
    GQuark              nm_setting_vpn_error_quark          (void);
    void                nm_setting_vpn_foreach_data_item    (NMSettingVPN *setting,
                                                             NMVPNIterFunc func,
                                                             gpointer user_data);
    void                nm_setting_vpn_foreach_secret       (NMSettingVPN *setting,
                                                             NMVPNIterFunc func,
                                                             gpointer user_data);
    const char *        nm_setting_vpn_get_data_item        (NMSettingVPN *setting,
                                                             const char *key);
    guint32             nm_setting_vpn_get_num_data_items   (NMSettingVPN *setting);
    guint32             nm_setting_vpn_get_num_secrets      (NMSettingVPN *setting);
    const char *        nm_setting_vpn_get_secret           (NMSettingVPN *setting,
                                                             const char *key);
    const char *        nm_setting_vpn_get_service_type     (NMSettingVPN *setting);
    const char *        nm_setting_vpn_get_user_name        (NMSettingVPN *setting);
    NMSetting *         nm_setting_vpn_new                  (void);
    void                nm_setting_vpn_remove_data_item     (NMSettingVPN *setting,
                                                             const char *key);
    void                nm_setting_vpn_remove_secret        (NMSettingVPN *setting,
                                                             const char *key);

## Object Hierarchy

      GObject
       +----NMSetting
             +----NMSettingVPN

      GEnum
       +----NMSettingVpnError

## Properties

      "data"                     GHashTable_gchararray+gchararray_*  : Read / Write
      "secrets"                  GHashTable_gchararray+gchararray_*  : Read / Write
      "service-type"             gchar*                : Read / Write
      "user-name"                gchar*                : Read / Write

## Description

The NMSettingVPN object is a NMSetting subclass that describes properties necessary for connection to Virtual Private Networks. NetworkManager uses a plugin architecture to allow easier use of new VPN types, and this setting abstracts the configuration for those plugins. Since the configuration options are only known to the VPN plugins themselves, the VPN configuration options are stored as key/value pairs of strings rather than GObject properties.

## Details

### NMSettingVPN

    typedef struct _NMSettingVPN NMSettingVPN;

### NMSettingVPNClass

    typedef struct {
    	NMSettingClass parent;

    	/* Padding for future expansion */
    	void (*_reserved1) (void);
    	void (*_reserved2) (void);
    	void (*_reserved3) (void);
    	void (*_reserved4) (void);
    } NMSettingVPNClass;

### enum NMSettingVpnError

    typedef enum {
    	NM_SETTING_VPN_ERROR_UNKNOWN = 0,      /*< nick=UnknownError >*/
    	NM_SETTING_VPN_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/
    	NM_SETTING_VPN_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/
    } NMSettingVpnError;

`NM_SETTING_VPN_ERROR_UNKNOWN` | unknown or unclassified error
`NM_SETTING_VPN_ERROR_INVALID_PROPERTY` | the property was invalid
`NM_SETTING_VPN_ERROR_MISSING_PROPERTY` | the property was missing and is required

### NMVPNIterFunc ()

    void                (*NMVPNIterFunc)                    (const char *key,
                                                             const char *value,
                                                             gpointer user_data);

`key` : | the name of the data or secret item
`value` : | the value of the data or secret item
`user_data` : | User data passed to `nm_setting_vpn_foreach_data_item()` or `nm_setting_vpn_foreach_secret()`

### NM_SETTING_VPN_DATA

    #define NM_SETTING_VPN_DATA         "data"

### NM_SETTING_VPN_ERROR

    #define NM_SETTING_VPN_ERROR nm_setting_vpn_error_quark ()

### NM_SETTING_VPN_SECRETS

    #define NM_SETTING_VPN_SECRETS      "secrets"

### NM_SETTING_VPN_SERVICE_TYPE

    #define NM_SETTING_VPN_SERVICE_TYPE "service-type"

### NM_SETTING_VPN_SETTING_NAME

    #define NM_SETTING_VPN_SETTING_NAME "vpn"

### NM_SETTING_VPN_USER_NAME

    #define NM_SETTING_VPN_USER_NAME    "user-name"

### nm_setting_vpn_add_data_item ()

    void                nm_setting_vpn_add_data_item        (NMSettingVPN *setting,
                                                             const char *key,
                                                             const char *item);

Establishes a relationship between `key` and `item` internally in the setting which may be retrieved later. Should not be used to store passwords or other secrets, which is what `nm_setting_vpn_add_secret()` is for.

`setting` : | the NMSettingVPN
`key` : | a name that uniquely identifies the given value `item`
`item` : | the value to be referenced by `key`

### nm_setting_vpn_add_secret ()

    void                nm_setting_vpn_add_secret           (NMSettingVPN *setting,
                                                             const char *key,
                                                             const char *secret);

Establishes a relationship between `key` and `secret` internally in the setting which may be retrieved later.

`setting` : | the NMSettingVPN
`key` : | a name that uniquely identifies the given secret `secret`
`secret` : | the secret to be referenced by `key`

### nm_setting_vpn_error_quark ()

    GQuark              nm_setting_vpn_error_quark          (void);

Registers an error quark for NMSettingVPN if necessary.

Returns : | the error quark used for NMSettingVPN errors.

### nm_setting_vpn_foreach_data_item ()

    void                nm_setting_vpn_foreach_data_item    (NMSettingVPN *setting,
                                                             NMVPNIterFunc func,
                                                             gpointer user_data);

Iterates all data items stored in this setting. It is safe to add, remove, and modify data items inside `func`, though any additions or removals made during iteration will not be part of the iteration.

`setting` : | a NMSettingVPN
`func` : | an user provided function. [scope call]
`user_data` : | data to be passed to `func`

### nm_setting_vpn_foreach_secret ()

    void                nm_setting_vpn_foreach_secret       (NMSettingVPN *setting,
                                                             NMVPNIterFunc func,
                                                             gpointer user_data);

Iterates all secrets stored in this setting. It is safe to add, remove, and modify secrets inside `func`, though any additions or removals made during iteration will not be part of the iteration.

`setting` : | a NMSettingVPN
`func` : | an user provided function. [scope call]
`user_data` : | data to be passed to `func`

### nm_setting_vpn_get_data_item ()

    const char *        nm_setting_vpn_get_data_item        (NMSettingVPN *setting,
                                                             const char *key);

Retrieves the data item of a key/value relationship previously established by `nm_setting_vpn_add_data_item()`.

`setting` : | the NMSettingVPN
`key` : | the name of the data item to retrieve
Returns : | the data item, if any

### nm_setting_vpn_get_num_data_items ()

    guint32             nm_setting_vpn_get_num_data_items   (NMSettingVPN *setting);

Gets number of key/value pairs of VPN configuration data.

`setting` : | the NMSettingVPN
Returns : | the number of VPN plugin specific configuration data items

### nm_setting_vpn_get_num_secrets ()

    guint32             nm_setting_vpn_get_num_secrets      (NMSettingVPN *setting);

Gets number of VPN plugin specific secrets in the setting.

`setting` : | the NMSettingVPN
Returns : | the number of VPN plugin specific secrets

### nm_setting_vpn_get_secret ()

    const char *        nm_setting_vpn_get_secret           (NMSettingVPN *setting,
                                                             const char *key);

Retrieves the secret of a key/value relationship previously established by `nm_setting_vpn_add_secret()`.

`setting` : | the NMSettingVPN
`key` : | the name of the secret to retrieve
Returns : | the secret, if any

### nm_setting_vpn_get_service_type ()

    const char *        nm_setting_vpn_get_service_type     (NMSettingVPN *setting);

Returns the service name of the VPN, which identifies the specific VPN plugin that should be used to connect to this VPN.

`setting` : | the NMSettingVPN
Returns : | the VPN plugin's service name

### nm_setting_vpn_get_user_name ()

    const char *        nm_setting_vpn_get_user_name        (NMSettingVPN *setting);

`setting` : | the NMSettingVPN
Returns : | the "user-name" property of the setting

### nm_setting_vpn_new ()

    NMSetting *         nm_setting_vpn_new                  (void);

Creates a new NMSettingVPN object with default values.

Returns : | the new empty NMSettingVPN object. [transfer full]

### nm_setting_vpn_remove_data_item ()

    void                nm_setting_vpn_remove_data_item     (NMSettingVPN *setting,
                                                             const char *key);

Deletes a key/value relationship previously established by `nm_setting_vpn_add_data_item()`.

`setting` : | the NMSettingVPN
`key` : | the name of the data item to remove

### nm_setting_vpn_remove_secret ()

    void                nm_setting_vpn_remove_secret        (NMSettingVPN *setting,
                                                             const char *key);

Deletes a key/value relationship previously established by `nm_setting_vpn_add_secret()`.

`setting` : | the NMSettingVPN
`key` : | the name of the secret to remove

## Property Details

### The `"data"` property

      "data"                     GHashTable_gchararray+gchararray_*  : Read / Write

Dictionary of key/value pairs of VPN plugin specific data. Both keys and values must be strings.

### The `"secrets"` property

      "secrets"                  GHashTable_gchararray+gchararray_*  : Read / Write

Dictionary of key/value pairs of VPN plugin specific secrets like passwords or private keys. Both keys and values must be strings.

### The `"service-type"` property

      "service-type"             gchar*                : Read / Write

D-Bus service name of the VPN plugin that this setting uses to connect to its network. i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin.

Default value: NULL

### The `"user-name"` property

      "user-name"                gchar*                : Read / Write

If the VPN connection requires a user name for authentication, that name should be provided here. If the connection is available to more than one user, and the VPN requires each user to supply a different name, then leave this property empty. If this property is empty, NetworkManager will automatically supply the username of the user which requested the VPN connection.

Default value: NULL