static void dispose (GObject *object) { NMVPNPlugin *plugin = NM_VPN_PLUGIN (object); NMVPNPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); NMVPNServiceState state; GError *err = NULL; if (priv->fail_stop_id) { g_source_remove (priv->fail_stop_id); priv->fail_stop_id = 0; } state = nm_vpn_plugin_get_state (plugin); if (state == NM_VPN_SERVICE_STATE_STARTED || state == NM_VPN_SERVICE_STATE_STARTING) nm_vpn_plugin_disconnect (plugin, &err); if (err) { g_warning ("Error disconnecting VPN connection: %s", err->message); g_error_free (err); } G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object); }
static gboolean connect_timer_expired (gpointer data) { NMVPNPlugin *plugin = NM_VPN_PLUGIN (data); GError *err = NULL; g_message ("Connect timer expired, disconnecting."); nm_vpn_plugin_disconnect (plugin, &err); if (err) { g_warning ("Disconnect failed: %s", err->message); g_error_free (err); } return FALSE; }
static void service_ppp_state_cb (NML2tpPppService *service, guint32 ppp_state, NML2tpPlugin *plugin) { NMVPNServiceState plugin_state = nm_vpn_plugin_get_state (NM_VPN_PLUGIN (plugin)); switch (ppp_state) { case NM_PPP_STATUS_DEAD: case NM_PPP_STATUS_DISCONNECT: if (plugin_state == NM_VPN_SERVICE_STATE_STARTED) nm_vpn_plugin_disconnect (NM_VPN_PLUGIN (plugin), NULL); else if (plugin_state == NM_VPN_SERVICE_STATE_STARTING) nm_vpn_plugin_failure (NM_VPN_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); break; default: break; } }
static gboolean impl_vpn_plugin_disconnect (NMVPNPlugin *plugin, GError **err) { return nm_vpn_plugin_disconnect (plugin, err); }