summary refs log tree commit diff
path: root/libnm-util/nm-setting-cdma.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-util/nm-setting-cdma.c')
-rw-r--r--libnm-util/nm-setting-cdma.c45
1 files changed, 42 insertions, 3 deletions
diff --git a/libnm-util/nm-setting-cdma.c b/libnm-util/nm-setting-cdma.c
index cff8dff4..cb5b27e8 100644
--- a/libnm-util/nm-setting-cdma.c
+++ b/libnm-util/nm-setting-cdma.c
@@ -18,12 +18,13 @@
  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  * Boston, MA 02110-1301 USA.
  *
- * (C) Copyright 2007 - 2008 Red Hat, Inc.
+ * (C) Copyright 2007 - 2011 Red Hat, Inc.
  */
 
 #include <string.h>
 #include "nm-setting-cdma.h"
 #include "nm-utils.h"
+#include "nm-setting-private.h"
 
 /**
  * SECTION:nm-setting-cdma
@@ -86,6 +87,7 @@ typedef struct {
 	char *number; /* For dialing, duh */
 	char *username;
 	char *password;
+	NMSettingSecretFlags password_flags;
 } NMSettingCdmaPrivate;
 
 enum {
@@ -93,6 +95,7 @@ enum {
 	PROP_NUMBER,
 	PROP_USERNAME,
 	PROP_PASSWORD,
+	PROP_PASSWORD_FLAGS,
 
 	LAST_PROP
 };
@@ -152,6 +155,20 @@ nm_setting_cdma_get_password (NMSettingCdma *setting)
 	return NM_SETTING_CDMA_GET_PRIVATE (setting)->password;
 }
 
+/**
+ * nm_setting_cdma_get_password_flags:
+ * @setting: the #NMSettingCdma
+ *
+ * Returns: the #NMSettingSecretFlags pertaining to the #NMSettingCdma:password
+ **/
+NMSettingSecretFlags
+nm_setting_cdma_get_password_flags (NMSettingCdma *setting)
+{
+	g_return_val_if_fail (NM_IS_SETTING_CDMA (setting), NM_SETTING_SECRET_FLAG_NONE);
+
+	return NM_SETTING_CDMA_GET_PRIVATE (setting)->password_flags;
+}
+
 static gboolean
 verify (NMSetting *setting, GSList *all_settings, GError **error)
 {
@@ -200,8 +217,10 @@ need_secrets (NMSetting *setting)
 		return NULL;
 
 	if (priv->username) {
-		secrets = g_ptr_array_sized_new (1);
-		g_ptr_array_add (secrets, NM_SETTING_CDMA_PASSWORD);
+		if (!(priv->password_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) {
+			secrets = g_ptr_array_sized_new (1);
+			g_ptr_array_add (secrets, NM_SETTING_CDMA_PASSWORD);
+		}
 	}
 
 	return secrets;
@@ -244,6 +263,9 @@ set_property (GObject *object, guint prop_id,
 		g_free (priv->password);
 		priv->password = g_value_dup_string (value);
 		break;
+	case PROP_PASSWORD_FLAGS:
+		priv->password_flags = g_value_get_uint (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -266,6 +288,9 @@ get_property (GObject *object, guint prop_id,
 	case PROP_PASSWORD:
 		g_value_set_string (value, nm_setting_cdma_get_password (setting));
 		break;
+	case PROP_PASSWORD_FLAGS:
+		g_value_set_uint (value, nm_setting_cdma_get_password_flags (setting));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -340,4 +365,18 @@ nm_setting_cdma_class_init (NMSettingCdmaClass *setting_class)
 						  "a password or accept any password.",
 						  NULL,
 						  G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_SECRET));
+
+	/**
+	 * NMSettingCdma:password-flags:
+	 *
+	 * Flags indicating how to handle #NMSettingCdma:password:.
+	 **/
+	g_object_class_install_property (object_class, PROP_PASSWORD_FLAGS,
+		 g_param_spec_uint (NM_SETTING_CDMA_PASSWORD_FLAGS,
+		                    "Password Flags",
+		                    "Flags indicating how to handle the CDMA password.",
+		                    NM_SETTING_SECRET_FLAG_NONE,
+		                    NM_SETTING_SECRET_FLAGS_ALL,
+		                    NM_SETTING_SECRET_FLAG_NONE,
+		                    G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
 }