## NMVPNPlugin NMVPNPlugin |

## Synopsis

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

## Description

## Details

### 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;

### enum NMVPNPluginError

    typedef enum {
    	NM_VPN_PLUGIN_ERROR_GENERAL,              /*< nick=General >*/
    	NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS, /*< nick=StartingInProgress >*/
    	NM_VPN_PLUGIN_ERROR_ALREADY_STARTED,      /*< nick=AlreadyStarted >*/
    	NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS, /*< nick=StoppingInProgress >*/
    	NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED,      /*< nick=AlreadyStopped >*/
    	NM_VPN_PLUGIN_ERROR_WRONG_STATE,          /*< nick=WrongState >*/
    	NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,        /*< nick=BadArguments >*/
    	NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED,        /*< nick=LaunchFailed >*/
    	NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID,   /*< nick=ConnectionInvalid >*/
    } NMVPNPluginError;

### 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"

### nm_vpn_plugin_disconnect ()

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

### nm_vpn_plugin_error_quark ()

    GQuark              nm_vpn_plugin_error_quark           (void);

### nm_vpn_plugin_failure ()

    void                nm_vpn_plugin_failure               (NMVPNPlugin *plugin,
                                                             NMVPNPluginFailure reason);

### 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_ip4_config ()

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

### nm_vpn_plugin_set_login_banner ()

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

### nm_vpn_plugin_set_state ()

    void                nm_vpn_plugin_set_state             (NMVPNPlugin *plugin,
                                                             NMVPNServiceState state);