CEPage * ce_page_ppp_new (NMConnection *connection, GtkWindow *parent_window, NMClient *client, const char **out_secrets_setting_name, GError **error) { CEPagePpp *self; CEPagePppPrivate *priv; NMSettingConnection *s_con; self = CE_PAGE_PPP (ce_page_new (CE_TYPE_PAGE_PPP, connection, parent_window, client, UIDIR "/ce-page-ppp.ui", "PppPage", _("PPP Settings"))); if (!self) { g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("Could not load PPP user interface.")); return NULL; } ppp_private_init (self); priv = CE_PAGE_PPP_GET_PRIVATE (self); priv->setting = nm_connection_get_setting_ppp (connection); if (!priv->setting) { priv->setting = NM_SETTING_PPP (nm_setting_ppp_new ()); g_object_set (G_OBJECT (priv->setting), NM_SETTING_PPP_LCP_ECHO_FAILURE, 5, NM_SETTING_PPP_LCP_ECHO_INTERVAL, 30, NULL); nm_connection_add_setting (connection, NM_SETTING (priv->setting)); } priv->window_group = gtk_window_group_new (); s_con = nm_connection_get_setting_connection (connection); g_assert (s_con); priv->connection_id = g_strdup (nm_setting_connection_get_id (s_con)); g_signal_connect (self, "initialized", G_CALLBACK (finish_setup), NULL); *out_secrets_setting_name = NM_SETTING_PPP_SETTING_NAME; return CE_PAGE (self); }
static gboolean transform_lcp_echo_properties_to_checkbox (GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data) { NMSettingPpp *s_ppp = NM_SETTING_PPP (g_binding_get_source (binding)); if ( nm_setting_ppp_get_lcp_echo_interval (s_ppp) != 0 && nm_setting_ppp_get_lcp_echo_failure (s_ppp) != 0) g_value_set_boolean (to_value, TRUE); else g_value_set_boolean (to_value, FALSE); return TRUE; }
static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMSettingPpp *setting = NM_SETTING_PPP (object); switch (prop_id) { case PROP_NOAUTH: g_value_set_boolean (value, nm_setting_ppp_get_noauth (setting)); break; case PROP_REFUSE_EAP: g_value_set_boolean (value, nm_setting_ppp_get_refuse_eap (setting)); break; case PROP_REFUSE_PAP: g_value_set_boolean (value, nm_setting_ppp_get_refuse_pap (setting)); break; case PROP_REFUSE_CHAP: g_value_set_boolean (value, nm_setting_ppp_get_refuse_chap (setting)); break; case PROP_REFUSE_MSCHAP: g_value_set_boolean (value, nm_setting_ppp_get_refuse_mschap (setting)); break; case PROP_REFUSE_MSCHAPV2: g_value_set_boolean (value, nm_setting_ppp_get_refuse_mschapv2 (setting)); break; case PROP_NOBSDCOMP: g_value_set_boolean (value, nm_setting_ppp_get_nobsdcomp (setting)); break; case PROP_NODEFLATE: g_value_set_boolean (value, nm_setting_ppp_get_nodeflate (setting)); break; case PROP_NO_VJ_COMP: g_value_set_boolean (value, nm_setting_ppp_get_no_vj_comp (setting)); break; case PROP_REQUIRE_MPPE: g_value_set_boolean (value, nm_setting_ppp_get_require_mppe (setting)); break; case PROP_REQUIRE_MPPE_128: g_value_set_boolean (value, nm_setting_ppp_get_require_mppe_128 (setting)); break; case PROP_MPPE_STATEFUL: g_value_set_boolean (value, nm_setting_ppp_get_mppe_stateful (setting)); break; case PROP_CRTSCTS: g_value_set_boolean (value, nm_setting_ppp_get_crtscts (setting)); break; case PROP_BAUD: g_value_set_uint (value, nm_setting_ppp_get_baud (setting)); break; case PROP_MRU: g_value_set_uint (value, nm_setting_ppp_get_mru (setting)); break; case PROP_MTU: g_value_set_uint (value, nm_setting_ppp_get_mtu (setting)); break; case PROP_LCP_ECHO_FAILURE: g_value_set_uint (value, nm_setting_ppp_get_lcp_echo_failure (setting)); break; case PROP_LCP_ECHO_INTERVAL: g_value_set_uint (value, nm_setting_ppp_get_lcp_echo_interval (setting)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
gboolean nm_ppp_manager_start (NMPPPManager *manager, NMActRequest *req, const char *ppp_name, guint32 timeout_secs, GError **err) { NMPPPManagerPrivate *priv; NMConnection *connection; NMSettingPpp *s_ppp; gboolean s_ppp_created = FALSE; NMSettingPppoe *pppoe_setting; NMSettingAdsl *adsl_setting; NMCmdLine *ppp_cmd; char *cmd_str; struct stat st; g_return_val_if_fail (NM_IS_PPP_MANAGER (manager), FALSE); g_return_val_if_fail (NM_IS_ACT_REQUEST (req), FALSE); priv = NM_PPP_MANAGER_GET_PRIVATE (manager); #if !WITH_PPP /* PPP support disabled */ g_set_error_literal (err, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED, "PPP support is not enabled."); return FALSE; #endif priv->pid = 0; /* Make sure /dev/ppp exists (bgo #533064) */ if (stat ("/dev/ppp", &st) || !S_ISCHR (st.st_mode)) nm_utils_modprobe (NULL, FALSE, "ppp_generic", NULL); connection = nm_act_request_get_applied_connection (req); g_assert (connection); s_ppp = nm_connection_get_setting_ppp (connection); if (!s_ppp) { /* If the PPP settings are all default we may not have a PPP setting yet, * so just make a default one here. */ s_ppp = NM_SETTING_PPP (nm_setting_ppp_new ()); s_ppp_created = TRUE; } pppoe_setting = nm_connection_get_setting_pppoe (connection); if (pppoe_setting) pppoe_fill_defaults (s_ppp); adsl_setting = (NMSettingAdsl *) nm_connection_get_setting (connection, NM_TYPE_SETTING_ADSL); ppp_cmd = create_pppd_cmd_line (manager, s_ppp, pppoe_setting, adsl_setting, ppp_name, err); if (!ppp_cmd) goto out; g_ptr_array_add (ppp_cmd->array, NULL); _LOGI ("starting PPP connection"); cmd_str = nm_cmd_line_to_str (ppp_cmd); _LOGD ("command line: %s", cmd_str); g_free (cmd_str); priv->pid = 0; if (!g_spawn_async (NULL, (char **) ppp_cmd->array->pdata, NULL, G_SPAWN_DO_NOT_REAP_CHILD, nm_utils_setpgid, NULL, &priv->pid, err)) { goto out; } _LOGI ("pppd started with pid %d", priv->pid); priv->ppp_watch_id = g_child_watch_add (priv->pid, (GChildWatchFunc) ppp_watch_cb, manager); priv->ppp_timeout_handler = g_timeout_add_seconds (timeout_secs, pppd_timed_out, manager); priv->act_req = g_object_ref (req); out: if (s_ppp_created) g_object_unref (s_ppp); if (ppp_cmd) nm_cmd_line_destroy (ppp_cmd); return priv->pid > 0; }