diff options
Diffstat (limited to 'libnm-util/nm-setting-gsm.c')
-rw-r--r-- | libnm-util/nm-setting-gsm.c | 182 |
1 files changed, 136 insertions, 46 deletions
diff --git a/libnm-util/nm-setting-gsm.c b/libnm-util/nm-setting-gsm.c index bec4f408d2..9ad0a76b0e 100644 --- a/libnm-util/nm-setting-gsm.c +++ b/libnm-util/nm-setting-gsm.c @@ -67,6 +67,22 @@ nm_setting_gsm_error_get_type (void) G_DEFINE_TYPE (NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING) +#define NM_SETTING_GSM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_GSM, NMSettingGsmPrivate)) + +typedef struct { + char *number; /* For dialing, duh */ + char *username; + char *password; + + char *apn; /* NULL for dynamic */ + char *network_id; /* for manual registration or NULL for automatic */ + int network_type; /* One of the NM_GSM_NETWORK_* */ + int band; + + char *pin; + char *puk; +} NMSettingGsmPrivate; + enum { PROP_0, PROP_NUMBER, @@ -97,10 +113,82 @@ find_setting_by_name (gconstpointer a, gconstpointer b) return strcmp (nm_setting_get_name (setting), str); } +const char * +nm_setting_gsm_get_number (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->number; +} + +const char * +nm_setting_gsm_get_username (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->username; +} + +const char * +nm_setting_gsm_get_password (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->password; +} + +const char * +nm_setting_gsm_get_apn (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->apn; +} + +const char * +nm_setting_gsm_get_network_id (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->network_id; +} + +int +nm_setting_gsm_get_network_type (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), -1); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->network_type; +} + +int +nm_setting_gsm_get_band (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), -1); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->band; +} + +const char * +nm_setting_gsm_get_pin (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->pin; +} + +const char * +nm_setting_gsm_get_puk (NMSettingGsm *setting) +{ + g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + + return NM_SETTING_GSM_GET_PRIVATE (setting)->puk; +} + static gboolean verify (NMSetting *setting, GSList *all_settings, GError **error) { - NMSettingGsm *self = NM_SETTING_GSM (setting); + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (setting); /* Serial connections require a PPP setting */ if (all_settings && @@ -112,13 +200,13 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (!self->number) { + if (!priv->number) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_MISSING_PROPERTY, NM_SETTING_GSM_NUMBER); return FALSE; - } else if (!strlen (self->number)) { + } else if (!strlen (priv->number)) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -126,7 +214,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (self->apn && (strlen (self->apn) < 1 || strchr (self->apn, '"'))) { + if (priv->apn && (strlen (priv->apn) < 1 || strchr (priv->apn, '"'))) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -134,7 +222,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (self->username && !strlen (self->username)) { + if (priv->username && !strlen (priv->username)) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -142,7 +230,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (self->password && !strlen (self->password)) { + if (priv->password && !strlen (priv->password)) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -150,8 +238,8 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (self->network_id) { - guint32 nid_len = strlen (self->network_id); + if (priv->network_id) { + guint32 nid_len = strlen (priv->network_id); guint32 i; /* Accept both 5 and 6 digit MCC/MNC codes */ @@ -164,7 +252,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) } for (i = 0; i < nid_len; i++) { - if (!isdigit (self->network_id[i])) { + if (!isdigit (priv->network_id[i])) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, @@ -180,13 +268,13 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) static GPtrArray * need_secrets (NMSetting *setting) { - NMSettingGsm *self = NM_SETTING_GSM (setting); + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (setting); GPtrArray *secrets = NULL; - if (self->password) + if (priv->password) return NULL; - if (self->username) { + if (priv->username) { secrets = g_ptr_array_sized_new (1); g_ptr_array_add (secrets, NM_SETTING_GSM_PASSWORD); } @@ -203,15 +291,15 @@ nm_setting_gsm_init (NMSettingGsm *setting) static void finalize (GObject *object) { - NMSettingGsm *self = NM_SETTING_GSM (object); + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (object); - g_free (self->number); - g_free (self->username); - g_free (self->password); - g_free (self->apn); - g_free (self->network_id); - g_free (self->pin); - g_free (self->puk); + g_free (priv->number); + g_free (priv->username); + g_free (priv->password); + g_free (priv->apn); + g_free (priv->network_id); + g_free (priv->pin); + g_free (priv->puk); G_OBJECT_CLASS (nm_setting_gsm_parent_class)->finalize (object); } @@ -220,42 +308,42 @@ static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - NMSettingGsm *setting = NM_SETTING_GSM (object); + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (object); switch (prop_id) { case PROP_NUMBER: - g_free (setting->number); - setting->number = g_value_dup_string (value); + g_free (priv->number); + priv->number = g_value_dup_string (value); break; case PROP_USERNAME: - g_free (setting->username); - setting->username = g_value_dup_string (value); + g_free (priv->username); + priv->username = g_value_dup_string (value); break; case PROP_PASSWORD: - g_free (setting->password); - setting->password = g_value_dup_string (value); + g_free (priv->password); + priv->password = g_value_dup_string (value); break; case PROP_APN: - g_free (setting->apn); - setting->apn = g_value_dup_string (value); + g_free (priv->apn); + priv->apn = g_value_dup_string (value); break; case PROP_NETWORK_ID: - g_free (setting->network_id); - setting->network_id = g_value_dup_string (value); + g_free (priv->network_id); + priv->network_id = g_value_dup_string (value); break; case PROP_NETWORK_TYPE: - setting->network_type = g_value_get_int (value); + priv->network_type = g_value_get_int (value); break; case PROP_BAND: - setting->band = g_value_get_int (value); + priv->band = g_value_get_int (value); break; case PROP_PIN: - g_free (setting->pin); - setting->pin = g_value_dup_string (value); + g_free (priv->pin); + priv->pin = g_value_dup_string (value); break; case PROP_PUK: - g_free (setting->puk); - setting->puk = g_value_dup_string (value); + g_free (priv->puk); + priv->puk = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -271,31 +359,31 @@ get_property (GObject *object, guint prop_id, switch (prop_id) { case PROP_NUMBER: - g_value_set_string (value, setting->number); + g_value_set_string (value, nm_setting_gsm_get_number (setting)); break; case PROP_USERNAME: - g_value_set_string (value, setting->username); + g_value_set_string (value, nm_setting_gsm_get_username (setting)); break; case PROP_PASSWORD: - g_value_set_string (value, setting->password); + g_value_set_string (value, nm_setting_gsm_get_password (setting)); break; case PROP_APN: - g_value_set_string (value, setting->apn); + g_value_set_string (value, nm_setting_gsm_get_apn (setting)); break; case PROP_NETWORK_ID: - g_value_set_string (value, setting->network_id); + g_value_set_string (value, nm_setting_gsm_get_network_id (setting)); break; case PROP_NETWORK_TYPE: - g_value_set_int (value, setting->network_type); + g_value_set_int (value, nm_setting_gsm_get_network_type (setting)); break; case PROP_BAND: - g_value_set_int (value, setting->band); + g_value_set_int (value, nm_setting_gsm_get_band (setting)); break; case PROP_PIN: - g_value_set_string (value, setting->pin); + g_value_set_string (value, nm_setting_gsm_get_pin (setting)); break; case PROP_PUK: - g_value_set_string (value, setting->puk); + g_value_set_string (value, nm_setting_gsm_get_puk (setting)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -309,6 +397,8 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class) GObjectClass *object_class = G_OBJECT_CLASS (setting_class); NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class); + g_type_class_add_private (setting_class, sizeof (NMSettingGsmPrivate)); + /* virtual methods */ object_class->set_property = set_property; object_class->get_property = get_property; |