## NMVPNPlugin NMVPNPlugin |

## Synopsis

    #define             NM_VPN_PLUGIN_DBUS_SERVICE_NAME
    #define             NM_VPN_PLUGIN_STATE
    enum                NMVPNPluginError;
    #define             NM_VPN_PLUGIN_ERROR
    #define             NM_TYPE_VPN_PLUGIN_ERROR
                        NMVPNPlugin;
                        NMVPNPluginClass;
    GQuark              nm_vpn_plugin_error_quark           (void);
    GType               nm_vpn_plugin_error_get_type        (void);
    DBusGConnection *   nm_vpn_plugin_get_connection        (NMVPNPlugin *plugin);
    NMVPNServiceState   nm_vpn_plugin_get_state             (NMVPNPlugin *plugin);
    void                nm_vpn_plugin_set_state             (NMVPNPlugin *plugin,
                                                             NMVPNServiceState state);
    void                nm_vpn_plugin_set_login_banner      (NMVPNPlugin *plugin,
                                                             const char *banner);
    void                nm_vpn_plugin_failure               (NMVPNPlugin *plugin,
                                                             NMVPNPluginFailure reason);
    void                nm_vpn_plugin_set_ip4_config        (NMVPNPlugin *plugin,
                                                             GHashTable *ip4_config);
    gboolean            nm_vpn_plugin_disconnect            (NMVPNPlugin *plugin,
                                                             GError **err);

## Description

## Details

### NM_VPN_PLUGIN_DBUS_SERVICE_NAME

    #define NM_VPN_PLUGIN_DBUS_SERVICE_NAME "service-name"

### NM_VPN_PLUGIN_STATE

    #define NM_VPN_PLUGIN_STATE             "state"

### enum NMVPNPluginError

    typedef enum {
    	NM_VPN_PLUGIN_ERROR_GENERAL,
    	NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS,
    	NM_VPN_PLUGIN_ERROR_ALREADY_STARTED,
    	NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
    	NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED,
    	NM_VPN_PLUGIN_ERROR_WRONG_STATE,
    	NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,
    	NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED,
    	NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID,
    } NMVPNPluginError;

### NM_VPN_PLUGIN_ERROR

    #define NM_VPN_PLUGIN_ERROR      (nm_vpn_plugin_error_quark ())

### NM_TYPE_VPN_PLUGIN_ERROR

    #define NM_TYPE_VPN_PLUGIN_ERROR (nm_vpn_plugin_error_get_type ())

### NMVPNPlugin

    typedef struct {
    	GObject parent;
    } NMVPNPlugin;

### NMVPNPluginClass

    typedef struct {
    	GObjectClass parent;

    	/* virtual methods */
    	gboolean (*connect)    (NMVPNPlugin   *plugin,
    					    NMConnection  *connection,
    					    GError       **err);

    	gboolean (*need_secrets) (NMVPNPlugin *plugin,
    	                              NMConnection *connection,
    	                              char **setting_name,
    	                              GError **error);

    	gboolean (*disconnect) (NMVPNPlugin   *plugin,
    					    GError       **err);

    	/* Signals */
    	void (*state_changed)  (NMVPNPlugin *plugin,
    					    NMVPNServiceState state);

    	void (*ip4_config)     (NMVPNPlugin *plugin,
    					    GHashTable  *ip4_config);

    	void (*login_banner)   (NMVPNPlugin *plugin,
    					    const char *banner);

    	void (*failure)        (NMVPNPlugin *plugin,
    					    NMVPNPluginFailure reason);

    	void (*quit)           (NMVPNPlugin *plugin);

    	/* Padding for future expansion */
    	void (*_reserved1) (void);
    	void (*_reserved2) (void);
    	void (*_reserved3) (void);
    	void (*_reserved4) (void);
    	void (*_reserved5) (void);
    	void (*_reserved6) (void);
    } NMVPNPluginClass;

### nm_vpn_plugin_error_quark ()

    GQuark              nm_vpn_plugin_error_quark           (void);

### nm_vpn_plugin_error_get_type ()

    GType               nm_vpn_plugin_error_get_type        (void);

### nm_vpn_plugin_get_connection ()

    DBusGConnection *   nm_vpn_plugin_get_connection        (NMVPNPlugin *plugin);

### nm_vpn_plugin_get_state ()

    NMVPNServiceState   nm_vpn_plugin_get_state             (NMVPNPlugin *plugin);

### nm_vpn_plugin_set_state ()

    void                nm_vpn_plugin_set_state             (NMVPNPlugin *plugin,
                                                             NMVPNServiceState state);

### nm_vpn_plugin_set_login_banner ()

    void                nm_vpn_plugin_set_login_banner      (NMVPNPlugin *plugin,
                                                             const char *banner);

### nm_vpn_plugin_failure ()

    void                nm_vpn_plugin_failure               (NMVPNPlugin *plugin,
                                                             NMVPNPluginFailure reason);

### nm_vpn_plugin_set_ip4_config ()

    void                nm_vpn_plugin_set_ip4_config        (NMVPNPlugin *plugin,
                                                             GHashTable *ip4_config);

### nm_vpn_plugin_disconnect ()

    gboolean            nm_vpn_plugin_disconnect            (NMVPNPlugin *plugin,
                                                             GError **err);