summary refs log tree commit diff
path: root/src/ppp-manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/ppp-manager')
-rw-r--r--src/ppp-manager/Makefile.in57
-rw-r--r--src/ppp-manager/nm-ppp-manager.c226
-rw-r--r--src/ppp-manager/nm-ppp-manager.h8
-rw-r--r--src/ppp-manager/nm-pppd-plugin.c4
4 files changed, 168 insertions, 127 deletions
diff --git a/src/ppp-manager/Makefile.in b/src/ppp-manager/Makefile.in
index f8f55d2c..13c60b41 100644
--- a/src/ppp-manager/Makefile.in
+++ b/src/ppp-manager/Makefile.in
@@ -38,11 +38,16 @@ subdir = src/ppp-manager
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
-	$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \
+	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -96,7 +101,7 @@ nm_pppd_plugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	-o $@
 @WITH_PPP_TRUE@am_nm_pppd_plugin_la_rpath = -rpath $(pppd_plugindir)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -128,7 +133,6 @@ ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -137,13 +141,15 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DATADIRNAME = @DATADIRNAME@
 DBUS_CFLAGS = @DBUS_CFLAGS@
@@ -155,6 +161,7 @@ DHCLIENT_PATH = @DHCLIENT_PATH@
 DHCLIENT_VERSION = @DHCLIENT_VERSION@
 DHCPCD_PATH = @DHCPCD_PATH@
 DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -163,6 +170,7 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
@@ -171,8 +179,8 @@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GMODULE_CFLAGS = @GMODULE_CFLAGS@
 GMODULE_LIBS = @GMODULE_LIBS@
-GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
 GNUTLS_LIBS = @GNUTLS_LIBS@
 GREP = @GREP@
@@ -187,13 +195,23 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
 INTLLIBS = @INTLLIBS@
 INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
 IPTABLES_PATH = @IPTABLES_PATH@
+IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@
+IWMX_SDK_LIBS = @IWMX_SDK_LIBS@
 KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
@@ -201,6 +219,8 @@ LIBDL = @LIBDL@
 LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
 LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
 LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
 LIBM = @LIBM@
 LIBNL_CFLAGS = @LIBNL_CFLAGS@
 LIBNL_LIBS = @LIBNL_LIBS@
@@ -209,13 +229,15 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
-MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NM = @NM@
 NMEDIT = @NMEDIT@
@@ -241,13 +263,12 @@ PKGCONFIG_PATH = @PKGCONFIG_PATH@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
 POLKIT_CFLAGS = @POLKIT_CFLAGS@
 POLKIT_LIBS = @POLKIT_LIBS@
 POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
+QT_CFLAGS = @QT_CFLAGS@
+QT_LIBS = @QT_LIBS@
 RANLIB = @RANLIB@
 RESOLVCONF_PATH = @RESOLVCONF_PATH@
 SED = @SED@
@@ -261,11 +282,15 @@ UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
index 1258b8f6..767b9315 100644
--- a/src/ppp-manager/nm-ppp-manager.c
+++ b/src/ppp-manager/nm-ppp-manager.c
@@ -82,6 +82,7 @@ typedef struct {
 
 	NMActRequest *act_req;
 	DBusGMethodInvocation *pending_secrets_context;
+	guint32 secrets_id;
 
 	guint32 ppp_watch_id;
 	guint32 ppp_timeout_handler;
@@ -203,8 +204,7 @@ set_property (GObject *object, guint prop_id,
 
 	switch (prop_id) {
 	case PROP_PARENT_IFACE:
-		if (priv->parent_iface)
-			g_free (priv->parent_iface);
+		g_free (priv->parent_iface);
 		priv->parent_iface = g_value_dup_string (value);
 		break;
 	default:
@@ -350,19 +350,29 @@ remove_timeout_handler (NMPPPManager *manager)
 }
 
 static void
-impl_ppp_manager_need_secrets (NMPPPManager *manager,
-                               DBusGMethodInvocation *context)
+cancel_get_secrets (NMPPPManager *self)
+{
+	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self);
+
+	if (priv->secrets_id) {
+		nm_act_request_cancel_secrets (priv->act_req, priv->secrets_id);
+		priv->secrets_id = 0;
+	}
+}
+
+static gboolean
+extract_details_from_connection (NMConnection *connection,
+                                 const char **username,
+                                 const char **password,
+                                 GError **error)
 {
-	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager);
-	NMConnection *connection;
 	NMSettingConnection *s_con;
+	NMSetting *setting;
 	const char *connection_type;
-	const char *setting_name;
-	guint32 tries;
-	GPtrArray *hints = NULL;
-	const char *hint1 = NULL, *hint2 = NULL;
 
-	connection = nm_act_request_get_connection (priv->act_req);
+	g_return_val_if_fail (connection != NULL, FALSE);
+	g_return_val_if_fail (username != NULL, FALSE);
+	g_return_val_if_fail (password != NULL, FALSE);
 
 	s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
 	g_assert (s_con);
@@ -370,67 +380,117 @@ impl_ppp_manager_need_secrets (NMPPPManager *manager,
 	connection_type = nm_setting_connection_get_connection_type (s_con);
 	g_assert (connection_type);
 
+	setting = nm_connection_get_setting_by_name (connection, connection_type);
+	if (!setting) {
+		g_set_error_literal (error, NM_PPP_MANAGER_ERROR, NM_PPP_MANAGER_ERROR_UNKOWN,
+		                     "Missing type-specific setting; no secrets could be found.");
+		return FALSE;
+	}
+
+	/* FIXME: push this down to the settings and keep PPP manager generic */
+	if (NM_IS_SETTING_PPPOE (setting)) {
+		*username = nm_setting_pppoe_get_username (NM_SETTING_PPPOE (setting));
+		*password = nm_setting_pppoe_get_password (NM_SETTING_PPPOE (setting));
+	} else if (NM_IS_SETTING_GSM (setting)) {
+		*username = nm_setting_gsm_get_username (NM_SETTING_GSM (setting));
+		*password = nm_setting_gsm_get_password (NM_SETTING_GSM (setting));
+	} else if (NM_IS_SETTING_CDMA (setting)) {
+		*username = nm_setting_cdma_get_username (NM_SETTING_CDMA (setting));
+		*password = nm_setting_cdma_get_password (NM_SETTING_CDMA (setting));
+	}
+
+	return TRUE;
+}
+
+static void
+ppp_secrets_cb (NMActRequest *req,
+                guint32 call_id,
+                NMConnection *connection,
+                GError *error,
+                gpointer user_data)
+{
+	NMPPPManager *self = NM_PPP_MANAGER (user_data);
+	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self);
+	const char *username = NULL;
+	const char *password = NULL;
+	GError *local = NULL;
+
+	g_return_if_fail (priv->pending_secrets_context != NULL);
+	g_return_if_fail (req == priv->act_req);
+	g_return_if_fail (call_id == priv->secrets_id);
+
+	if (error) {
+		nm_log_warn (LOGD_PPP, "%s", error->message);
+		dbus_g_method_return_error (priv->pending_secrets_context, error);
+		goto out;
+	}
+
+	if (!extract_details_from_connection (connection, &username, &password, &local)) {
+		nm_log_warn (LOGD_PPP, "%s", local->message);
+		dbus_g_method_return_error (priv->pending_secrets_context, local);
+		g_clear_error (&local);
+		goto out;
+	}
+
+	/* This is sort of a hack but...
+	 * pppd plugin only ever needs username and password. Passing the full
+	 * connection there would mean some bloat: the plugin would need to link
+	 * against libnm-util just to parse this. So instead, let's just send what
+	 * it needs.
+	 */
+	dbus_g_method_return (priv->pending_secrets_context, username, password);
+
+out:
+	priv->pending_secrets_context = NULL;
+	priv->secrets_id = 0;
+}
+
+static void
+impl_ppp_manager_need_secrets (NMPPPManager *manager,
+                               DBusGMethodInvocation *context)
+{
+	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager);
+	NMConnection *connection;
+	const char *setting_name;
+	const char *username = NULL;
+	const char *password = NULL;
+	guint32 tries;
+	GPtrArray *hints = NULL;
+	GError *error = NULL;
+	NMSettingsGetSecretsFlags flags = NM_SETTINGS_GET_SECRETS_FLAG_ALLOW_INTERACTION;
+
+	connection = nm_act_request_get_connection (priv->act_req);
+
 	nm_connection_clear_secrets (connection);
 	setting_name = nm_connection_need_secrets (connection, &hints);
 	if (!setting_name) {
-		NMSetting *setting;
-
-		setting = nm_connection_get_setting_by_name (connection, connection_type);
-		if (setting) {
-			const char *username = NULL;
-			const char *password = NULL;
-
-			/* FIXME: push this down to the settings and keep PPP manager generic */
-			if (NM_IS_SETTING_PPPOE (setting)) {
-				username = nm_setting_pppoe_get_username (NM_SETTING_PPPOE (setting));
-				password = nm_setting_pppoe_get_password (NM_SETTING_PPPOE (setting));
-			} else if (NM_IS_SETTING_GSM (setting)) {
-				username = nm_setting_gsm_get_username (NM_SETTING_GSM (setting));
-				password = nm_setting_gsm_get_password (NM_SETTING_GSM (setting));
-			} else if (NM_IS_SETTING_CDMA (setting)) {
-				username = nm_setting_cdma_get_username (NM_SETTING_CDMA (setting));
-				password = nm_setting_cdma_get_password (NM_SETTING_CDMA (setting));
-			}
-
-			/* If secrets are not required, send the existing username and password
-			 * back to the PPP plugin immediately.
-			 */
+		/* Use existing secrets from the connection */
+		if (extract_details_from_connection (connection, &username, &password, &error)) {
+			/* Send existing secrets to the PPP plugin */
 			priv->pending_secrets_context = context;
-			nm_ppp_manager_update_secrets (manager,
-			                               priv->parent_iface,
-			                               username ? username : "",
-			                               password ? password : "",
-			                               NULL);
+			ppp_secrets_cb (priv->act_req, priv->secrets_id, connection, NULL, manager);
 		} else {
-			GError *err = NULL;
-
-			g_set_error (&err, NM_PPP_MANAGER_ERROR, NM_PPP_MANAGER_ERROR_UNKOWN,
-			             "Missing type-specific setting; no secrets could be found.");
-			nm_log_warn (LOGD_PPP, "%s", err->message);
-			dbus_g_method_return_error (context, err);
+			nm_log_warn (LOGD_PPP, "%s", error->message);
+			dbus_g_method_return_error (priv->pending_secrets_context, error);
+			g_clear_error (&error);
 		}
 		return;
 	}
 
-	/* Extract hints */
-	if (hints) {
-		if (hints->len > 0)
-			hint1 = g_ptr_array_index (hints, 0);
-		if (hints->len > 1)
-			hint2 = g_ptr_array_index (hints, 1);
-	}
-
-	tries = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (connection), PPP_MANAGER_SECRET_TRIES));
-	/* Only ask for completely new secrets after retrying them once; some PPP
-	 * servers (T-Mobile USA) appear to ask a few times when they actually don't
-	 * even care what you pass back.
+	/* Only ask for completely new secrets after retrying them once; some devices
+	 * appear to ask a few times when they actually don't even care what you
+	 * pass back.
 	 */
-	nm_act_request_get_secrets (priv->act_req,
-	                            setting_name,
-	                            tries > 1 ? TRUE : FALSE,
-	                            SECRETS_CALLER_PPP,
-	                            hint1,
-	                            hint2);
+	tries = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (connection), PPP_MANAGER_SECRET_TRIES));
+	if (tries > 1)
+		flags |= NM_SETTINGS_GET_SECRETS_FLAG_REQUEST_NEW;
+
+	priv->secrets_id = nm_act_request_get_secrets (priv->act_req,
+	                                               setting_name,
+	                                               flags,
+	                                               hints ? g_ptr_array_index (hints, 0) : NULL,
+	                                               ppp_secrets_cb,
+	                                               manager);
 	g_object_set_data (G_OBJECT (connection), PPP_MANAGER_SECRET_TRIES, GUINT_TO_POINTER (++tries));
 	priv->pending_secrets_context = context;
 
@@ -982,46 +1042,6 @@ nm_ppp_manager_start (NMPPPManager *manager,
 	return priv->pid > 0;
 }
 
-void
-nm_ppp_manager_update_secrets (NMPPPManager *manager,
-                               const char *device,
-                               const char *username,
-                               const char *password,
-                               const char *error_message)
-{
-	NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager);
-
-	g_return_if_fail (NM_IS_PPP_MANAGER (manager));
-	g_return_if_fail (device != NULL);
-	g_return_if_fail (priv->pending_secrets_context != NULL);
-
-	if (error_message) {
-		g_return_if_fail (username == NULL);
-		g_return_if_fail (password == NULL);
-	} else {
-		g_return_if_fail (username != NULL);
-		g_return_if_fail (password != NULL);
-	}
-
-	if (error_message) {
-		GError *err = NULL;
-
-		g_set_error (&err, NM_PPP_MANAGER_ERROR, NM_PPP_MANAGER_ERROR_UNKOWN, "%s", error_message);
-		nm_log_warn (LOGD_PPP, "%s", error_message);
-		dbus_g_method_return_error (priv->pending_secrets_context, err);
-		g_error_free (err);
-	} else {
-		/* This is sort of a hack but...
-		   pppd plugin only ever needs username and password.
-		   Passing the full connection there would mean some bloat:
-		   the plugin would need to link against libnm-util just to parse this.
-		   So instead, let's just send what it needs */
-
-		dbus_g_method_return (priv->pending_secrets_context, username, password);
-	}
-	priv->pending_secrets_context = NULL;
-}
-
 static gboolean
 ensure_killed (gpointer data)
 {
@@ -1047,6 +1067,8 @@ _ppp_cleanup (NMPPPManager *manager)
 
 	priv = NM_PPP_MANAGER_GET_PRIVATE (manager);
 
+	cancel_get_secrets (manager);
+
 	if (priv->monitor_id) {
 		g_source_remove (priv->monitor_id);
 		priv->monitor_id = 0;
diff --git a/src/ppp-manager/nm-ppp-manager.h b/src/ppp-manager/nm-ppp-manager.h
index 51684157..c38602fc 100644
--- a/src/ppp-manager/nm-ppp-manager.h
+++ b/src/ppp-manager/nm-ppp-manager.h
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2008 Novell, Inc.
- * Copyright (C) 2008 Red Hat, Inc.
+ * Copyright (C) 2008 - 2010 Red Hat, Inc.
  */
 
 #ifndef NM_PPP_MANAGER_H
@@ -63,12 +63,6 @@ gboolean nm_ppp_manager_start (NMPPPManager *manager,
                                guint32 timeout_secs,
                                GError **err);
 
-void     nm_ppp_manager_update_secrets (NMPPPManager *manager,
-                                        const char *device,
-                                        const char *username,
-                                        const char *password,
-                                        const char *error_message);
-
 
 #define NM_PPP_MANAGER_ERROR nm_ppp_manager_error_quark()
 #define NM_TYPE_PPP_MANAGER_ERROR (nm_ppp_manager_error_get_type ()) 
diff --git a/src/ppp-manager/nm-pppd-plugin.c b/src/ppp-manager/nm-pppd-plugin.c
index c64bb87f..e2e5c709 100644
--- a/src/ppp-manager/nm-pppd-plugin.c
+++ b/src/ppp-manager/nm-pppd-plugin.c
@@ -240,13 +240,13 @@ nm_ip_up (void *data, int arg)
 }
 
 static int
-get_chap_check()
+get_chap_check (void)
 {
 	return 1;
 }
 
 static int
-get_pap_check()
+get_pap_check (void)
 {
 	return 1;
 }