diff options
Diffstat (limited to 'libnm-core/nm-setting-gsm.c')
| -rw-r--r-- | libnm-core/nm-setting-gsm.c | 1228 |
1 files changed, 623 insertions, 605 deletions
diff --git a/libnm-core/nm-setting-gsm.c b/libnm-core/nm-setting-gsm.c index 19e2554a..1c31217c 100644 --- a/libnm-core/nm-setting-gsm.c +++ b/libnm-core/nm-setting-gsm.c @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: LGPL-2.1+ +/* SPDX-License-Identifier: LGPL-2.1+ */ /* * Copyright (C) 2007 - 2013 Red Hat, Inc. * Copyright (C) 2007 - 2008 Novell, Inc. @@ -23,43 +23,42 @@ /*****************************************************************************/ -NM_GOBJECT_PROPERTIES_DEFINE_BASE ( - PROP_AUTO_CONFIG, - PROP_NUMBER, - PROP_USERNAME, - PROP_PASSWORD, - PROP_PASSWORD_FLAGS, - PROP_APN, - PROP_NETWORK_ID, - PROP_PIN, - PROP_PIN_FLAGS, - PROP_HOME_ONLY, - PROP_DEVICE_ID, - PROP_SIM_ID, - PROP_SIM_OPERATOR_ID, - PROP_MTU, -); +NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_AUTO_CONFIG, + PROP_NUMBER, + PROP_USERNAME, + PROP_PASSWORD, + PROP_PASSWORD_FLAGS, + PROP_APN, + PROP_NETWORK_ID, + PROP_PIN, + PROP_PIN_FLAGS, + PROP_HOME_ONLY, + PROP_DEVICE_ID, + PROP_SIM_ID, + PROP_SIM_OPERATOR_ID, + PROP_MTU, ); typedef struct { - char *number; /* For dialing, duh */ - char *username; - char *password; - char *device_id; - char *sim_id; - char *sim_operator_id; - char *apn; /* NULL for dynamic */ - char *network_id; /* for manual registration or NULL for automatic */ - char *pin; - NMSettingSecretFlags password_flags; - NMSettingSecretFlags pin_flags; - guint32 mtu; - bool auto_config:1; - bool home_only:1; + char * number; /* For dialing, duh */ + char * username; + char * password; + char * device_id; + char * sim_id; + char * sim_operator_id; + char * apn; /* NULL for dynamic */ + char * network_id; /* for manual registration or NULL for automatic */ + char * pin; + NMSettingSecretFlags password_flags; + NMSettingSecretFlags pin_flags; + guint32 mtu; + bool auto_config : 1; + bool home_only : 1; } NMSettingGsmPrivate; -G_DEFINE_TYPE (NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING) +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)) +#define NM_SETTING_GSM_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE((o), NM_TYPE_SETTING_GSM, NMSettingGsmPrivate)) /*****************************************************************************/ @@ -72,11 +71,11 @@ G_DEFINE_TYPE (NMSettingGsm, nm_setting_gsm, NM_TYPE_SETTING) * Since: 1.22 **/ gboolean -nm_setting_gsm_get_auto_config (NMSettingGsm *setting) +nm_setting_gsm_get_auto_config(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), FALSE); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), FALSE); - return NM_SETTING_GSM_GET_PRIVATE (setting)->auto_config; + return NM_SETTING_GSM_GET_PRIVATE(setting)->auto_config; } /** @@ -88,11 +87,11 @@ nm_setting_gsm_get_auto_config (NMSettingGsm *setting) * Deprecated: 1.16: User-provided values for this setting are no longer used. **/ const char * -nm_setting_gsm_get_number (NMSettingGsm *setting) +nm_setting_gsm_get_number(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->number; + return NM_SETTING_GSM_GET_PRIVATE(setting)->number; } /** @@ -102,11 +101,11 @@ nm_setting_gsm_get_number (NMSettingGsm *setting) * Returns: the #NMSettingGsm:username property of the setting **/ const char * -nm_setting_gsm_get_username (NMSettingGsm *setting) +nm_setting_gsm_get_username(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->username; + return NM_SETTING_GSM_GET_PRIVATE(setting)->username; } /** @@ -116,11 +115,11 @@ nm_setting_gsm_get_username (NMSettingGsm *setting) * Returns: the #NMSettingGsm:password property of the setting **/ const char * -nm_setting_gsm_get_password (NMSettingGsm *setting) +nm_setting_gsm_get_password(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->password; + return NM_SETTING_GSM_GET_PRIVATE(setting)->password; } /** @@ -130,11 +129,11 @@ nm_setting_gsm_get_password (NMSettingGsm *setting) * Returns: the #NMSettingSecretFlags pertaining to the #NMSettingGsm:password **/ NMSettingSecretFlags -nm_setting_gsm_get_password_flags (NMSettingGsm *setting) +nm_setting_gsm_get_password_flags(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NM_SETTING_SECRET_FLAG_NONE); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NM_SETTING_SECRET_FLAG_NONE); - return NM_SETTING_GSM_GET_PRIVATE (setting)->password_flags; + return NM_SETTING_GSM_GET_PRIVATE(setting)->password_flags; } /** @@ -144,11 +143,11 @@ nm_setting_gsm_get_password_flags (NMSettingGsm *setting) * Returns: the #NMSettingGsm:apn property of the setting **/ const char * -nm_setting_gsm_get_apn (NMSettingGsm *setting) +nm_setting_gsm_get_apn(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->apn; + return NM_SETTING_GSM_GET_PRIVATE(setting)->apn; } /** @@ -158,11 +157,11 @@ nm_setting_gsm_get_apn (NMSettingGsm *setting) * Returns: the #NMSettingGsm:network-id property of the setting **/ const char * -nm_setting_gsm_get_network_id (NMSettingGsm *setting) +nm_setting_gsm_get_network_id(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->network_id; + return NM_SETTING_GSM_GET_PRIVATE(setting)->network_id; } /** @@ -172,11 +171,11 @@ nm_setting_gsm_get_network_id (NMSettingGsm *setting) * Returns: the #NMSettingGsm:pin property of the setting **/ const char * -nm_setting_gsm_get_pin (NMSettingGsm *setting) +nm_setting_gsm_get_pin(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->pin; + return NM_SETTING_GSM_GET_PRIVATE(setting)->pin; } /** @@ -186,11 +185,11 @@ nm_setting_gsm_get_pin (NMSettingGsm *setting) * Returns: the #NMSettingSecretFlags pertaining to the #NMSettingGsm:pin **/ NMSettingSecretFlags -nm_setting_gsm_get_pin_flags (NMSettingGsm *setting) +nm_setting_gsm_get_pin_flags(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NM_SETTING_SECRET_FLAG_NONE); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NM_SETTING_SECRET_FLAG_NONE); - return NM_SETTING_GSM_GET_PRIVATE (setting)->pin_flags; + return NM_SETTING_GSM_GET_PRIVATE(setting)->pin_flags; } /** @@ -200,11 +199,11 @@ nm_setting_gsm_get_pin_flags (NMSettingGsm *setting) * Returns: the #NMSettingGsm:home-only property of the setting **/ gboolean -nm_setting_gsm_get_home_only (NMSettingGsm *setting) +nm_setting_gsm_get_home_only(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), FALSE); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), FALSE); - return NM_SETTING_GSM_GET_PRIVATE (setting)->home_only; + return NM_SETTING_GSM_GET_PRIVATE(setting)->home_only; } /** @@ -216,11 +215,11 @@ nm_setting_gsm_get_home_only (NMSettingGsm *setting) * Since: 1.2 **/ const char * -nm_setting_gsm_get_device_id (NMSettingGsm *setting) +nm_setting_gsm_get_device_id(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->device_id; + return NM_SETTING_GSM_GET_PRIVATE(setting)->device_id; } /** @@ -232,11 +231,11 @@ nm_setting_gsm_get_device_id (NMSettingGsm *setting) * Since: 1.2 **/ const char * -nm_setting_gsm_get_sim_id (NMSettingGsm *setting) +nm_setting_gsm_get_sim_id(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->sim_id; + return NM_SETTING_GSM_GET_PRIVATE(setting)->sim_id; } /** @@ -248,11 +247,11 @@ nm_setting_gsm_get_sim_id (NMSettingGsm *setting) * Since: 1.2 **/ const char * -nm_setting_gsm_get_sim_operator_id (NMSettingGsm *setting) +nm_setting_gsm_get_sim_operator_id(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), NULL); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), NULL); - return NM_SETTING_GSM_GET_PRIVATE (setting)->sim_operator_id; + return NM_SETTING_GSM_GET_PRIVATE(setting)->sim_operator_id; } /** @@ -264,331 +263,336 @@ nm_setting_gsm_get_sim_operator_id (NMSettingGsm *setting) * Since: 1.8 **/ guint32 -nm_setting_gsm_get_mtu (NMSettingGsm *setting) +nm_setting_gsm_get_mtu(NMSettingGsm *setting) { - g_return_val_if_fail (NM_IS_SETTING_GSM (setting), 0); + g_return_val_if_fail(NM_IS_SETTING_GSM(setting), 0); - return NM_SETTING_GSM_GET_PRIVATE (setting)->mtu; + return NM_SETTING_GSM_GET_PRIVATE(setting)->mtu; } static gboolean -verify (NMSetting *setting, NMConnection *connection, GError **error) +verify(NMSetting *setting, NMConnection *connection, GError **error) { - NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (setting); - - if (priv->number && !priv->number[0]) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property is empty")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_NUMBER); - return FALSE; - } - - if (priv->apn) { - gsize apn_len = strlen (priv->apn); - gsize i; - - if (apn_len > 64) { - g_set_error (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property value '%s' is empty or too long (>64)"), - priv->apn); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_APN); - return FALSE; - } - - /* APNs roughly follow the same rules as DNS domain names. Allowed - * characters are a-z, 0-9, . and -. GSM 03.03 Section 9.1 states: - * - * The syntax of the APN shall follow the Name Syntax defined in - * RFC 2181 [14] and RFC 1035 [15]. The APN consists of one or - * more labels. Each label is coded as one octet length field - * followed by that number of octets coded as 8 bit ASCII characters. - * Following RFC 1035 [15] the labels should consist only of the - * alphabetic characters (A-Z and a-z), digits (0-9) and the - * dash (-). The case of alphabetic characters is not significant. - * - * A dot (.) is commonly used to separate parts of the APN, and - * apparently the underscore (_) is used as well. RFC 2181 indicates - * that no restrictions of any kind are placed on DNS labels, and thus - * it would appear that none are placed on APNs either, but many modems - * and networks will fail to accept APNs that include odd characters - * like space ( ) and such. - */ - for (i = 0; i < apn_len; i++) { - if ( !g_ascii_isalnum (priv->apn[i]) - && (priv->apn[i] != '.') - && (priv->apn[i] != '_') - && (priv->apn[i] != '-')) { - g_set_error (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("'%s' contains invalid char(s) (use [A-Za-z._-])"), - priv->apn); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_APN); - return FALSE; - } - } - } - - if ( priv->username - && priv->username[0] == '\0') { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property is empty")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_USERNAME); - return FALSE; - } - - if (priv->network_id) { - gsize nid_len = strlen (priv->network_id); - gsize i; - - /* Accept both 5 and 6 digit MCC/MNC codes */ - if ((nid_len < 5) || (nid_len > 6)) { - g_set_error (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("'%s' length is invalid (should be 5 or 6 digits)"), - priv->network_id); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_NETWORK_ID); - return FALSE; - } - - for (i = 0; i < nid_len; i++) { - if (!g_ascii_isdigit (priv->network_id[i])) { - g_set_error (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("'%s' is not a number"), - priv->network_id); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_NETWORK_ID); - return FALSE; - } - } - } - - if (priv->device_id && !priv->device_id[0]) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property is empty")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_DEVICE_ID); - return FALSE; - } - - if (priv->sim_id && !priv->sim_id[0]) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property is empty")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_SIM_ID); - return FALSE; - } - - if (priv->sim_operator_id) { - size_t len = strlen (priv->sim_operator_id); - const char *p = priv->sim_operator_id; - - if (len == 0 || (len != 5 && len != 6)) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property is empty or wrong size")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_SIM_OPERATOR_ID); - return FALSE; - } - - while (p && *p) { - if (!g_ascii_isdigit (*p++)) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("property must contain only digits")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_SIM_OPERATOR_ID); - return FALSE; - } - } - } - - if ( priv->auto_config - && (priv->apn || priv->username || priv->password)) { - g_set_error_literal (error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("can't be enabled when manual configuration is present")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_AUTO_CONFIG); - return NM_SETTING_VERIFY_NORMALIZABLE_ERROR; - } - - return TRUE; + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE(setting); + + if (priv->number && !priv->number[0]) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is empty")); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_NUMBER); + return FALSE; + } + + if (priv->apn) { + gsize apn_len = strlen(priv->apn); + gsize i; + + if (apn_len > 64) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property value '%s' is empty or too long (>64)"), + priv->apn); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_APN); + return FALSE; + } + + /* APNs roughly follow the same rules as DNS domain names. Allowed + * characters are a-z, 0-9, . and -. GSM 03.03 Section 9.1 states: + * + * The syntax of the APN shall follow the Name Syntax defined in + * RFC 2181 [14] and RFC 1035 [15]. The APN consists of one or + * more labels. Each label is coded as one octet length field + * followed by that number of octets coded as 8 bit ASCII characters. + * Following RFC 1035 [15] the labels should consist only of the + * alphabetic characters (A-Z and a-z), digits (0-9) and the + * dash (-). The case of alphabetic characters is not significant. + * + * A dot (.) is commonly used to separate parts of the APN, and + * apparently the underscore (_) is used as well. RFC 2181 indicates + * that no restrictions of any kind are placed on DNS labels, and thus + * it would appear that none are placed on APNs either, but many modems + * and networks will fail to accept APNs that include odd characters + * like space ( ) and such. + */ + for (i = 0; i < apn_len; i++) { + if (!g_ascii_isalnum(priv->apn[i]) && (priv->apn[i] != '.') && (priv->apn[i] != '_') + && (priv->apn[i] != '-')) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("'%s' contains invalid char(s) (use [A-Za-z._-])"), + priv->apn); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_APN); + return FALSE; + } + } + } + + if (priv->username && priv->username[0] == '\0') { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is empty")); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_USERNAME); + return FALSE; + } + + if (priv->network_id) { + gsize nid_len = strlen(priv->network_id); + gsize i; + + /* Accept both 5 and 6 digit MCC/MNC codes */ + if ((nid_len < 5) || (nid_len > 6)) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("'%s' length is invalid (should be 5 or 6 digits)"), + priv->network_id); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_GSM_SETTING_NAME, + NM_SETTING_GSM_NETWORK_ID); + return FALSE; + } + + for (i = 0; i < nid_len; i++) { + if (!g_ascii_isdigit(priv->network_id[i])) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("'%s' is not a number"), + priv->network_id); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_GSM_SETTING_NAME, + NM_SETTING_GSM_NETWORK_ID); + return FALSE; + } + } + } + + if (priv->device_id && !priv->device_id[0]) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is empty")); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_DEVICE_ID); + return FALSE; + } + + if (priv->sim_id && !priv->sim_id[0]) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is empty")); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_SIM_ID); + return FALSE; + } + + if (priv->sim_operator_id) { + size_t len = strlen(priv->sim_operator_id); + const char *p = priv->sim_operator_id; + + if (len == 0 || (len != 5 && len != 6)) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is empty or wrong size")); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_GSM_SETTING_NAME, + NM_SETTING_GSM_SIM_OPERATOR_ID); + return FALSE; + } + + while (p && *p) { + if (!g_ascii_isdigit(*p++)) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property must contain only digits")); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_GSM_SETTING_NAME, + NM_SETTING_GSM_SIM_OPERATOR_ID); + return FALSE; + } + } + } + + if (priv->auto_config && (priv->apn || priv->username || priv->password)) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("can't be enabled when manual configuration is present")); + g_prefix_error(error, "%s.%s: ", NM_SETTING_GSM_SETTING_NAME, NM_SETTING_GSM_AUTO_CONFIG); + return NM_SETTING_VERIFY_NORMALIZABLE_ERROR; + } + + return TRUE; } static gboolean -verify_secrets (NMSetting *setting, NMConnection *connection, GError **error) +verify_secrets(NMSetting *setting, NMConnection *connection, GError **error) { - return _nm_setting_verify_secret_string (NM_SETTING_GSM_GET_PRIVATE (setting)->password, - NM_SETTING_GSM_SETTING_NAME, - NM_SETTING_GSM_PASSWORD, - error); + return _nm_setting_verify_secret_string(NM_SETTING_GSM_GET_PRIVATE(setting)->password, + NM_SETTING_GSM_SETTING_NAME, + NM_SETTING_GSM_PASSWORD, + error); } static GPtrArray * -need_secrets (NMSetting *setting) +need_secrets(NMSetting *setting) { - NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (setting); - GPtrArray *secrets = NULL; + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE(setting); + GPtrArray * secrets = NULL; - if (priv->password && *priv->password) - return NULL; + if (priv->password && *priv->password) + return NULL; - if (priv->username) { - if (!(priv->password_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) { - secrets = g_ptr_array_sized_new (1); - g_ptr_array_add (secrets, NM_SETTING_GSM_PASSWORD); - } - } + if (priv->username) { + if (!(priv->password_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) { + secrets = g_ptr_array_sized_new(1); + g_ptr_array_add(secrets, NM_SETTING_GSM_PASSWORD); + } + } - return secrets; + return secrets; } /*****************************************************************************/ static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMSettingGsm *setting = NM_SETTING_GSM (object); - - switch (prop_id) { - case PROP_AUTO_CONFIG: - g_value_set_boolean (value, nm_setting_gsm_get_auto_config (setting)); - break; - case PROP_NUMBER: - g_value_set_string (value, nm_setting_gsm_get_number (setting)); - break; - case PROP_USERNAME: - g_value_set_string (value, nm_setting_gsm_get_username (setting)); - break; - case PROP_PASSWORD: - g_value_set_string (value, nm_setting_gsm_get_password (setting)); - break; - case PROP_PASSWORD_FLAGS: - g_value_set_flags (value, nm_setting_gsm_get_password_flags (setting)); - break; - case PROP_APN: - g_value_set_string (value, nm_setting_gsm_get_apn (setting)); - break; - case PROP_NETWORK_ID: - g_value_set_string (value, nm_setting_gsm_get_network_id (setting)); - break; - case PROP_PIN: - g_value_set_string (value, nm_setting_gsm_get_pin (setting)); - break; - case PROP_PIN_FLAGS: - g_value_set_flags (value, nm_setting_gsm_get_pin_flags (setting)); - break; - case PROP_HOME_ONLY: - g_value_set_boolean (value, nm_setting_gsm_get_home_only (setting)); - break; - case PROP_DEVICE_ID: - g_value_set_string (value, nm_setting_gsm_get_device_id (setting)); - break; - case PROP_SIM_ID: - g_value_set_string (value, nm_setting_gsm_get_sim_id (setting)); - break; - case PROP_SIM_OPERATOR_ID: - g_value_set_string (value, nm_setting_gsm_get_sim_operator_id (setting)); - break; - case PROP_MTU: - g_value_set_uint (value, nm_setting_gsm_get_mtu (setting)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + NMSettingGsm *setting = NM_SETTING_GSM(object); + + switch (prop_id) { + case PROP_AUTO_CONFIG: + g_value_set_boolean(value, nm_setting_gsm_get_auto_config(setting)); + break; + case PROP_NUMBER: + g_value_set_string(value, nm_setting_gsm_get_number(setting)); + break; + case PROP_USERNAME: + g_value_set_string(value, nm_setting_gsm_get_username(setting)); + break; + case PROP_PASSWORD: + g_value_set_string(value, nm_setting_gsm_get_password(setting)); + break; + case PROP_PASSWORD_FLAGS: + g_value_set_flags(value, nm_setting_gsm_get_password_flags(setting)); + break; + case PROP_APN: + g_value_set_string(value, nm_setting_gsm_get_apn(setting)); + break; + case PROP_NETWORK_ID: + g_value_set_string(value, nm_setting_gsm_get_network_id(setting)); + break; + case PROP_PIN: + g_value_set_string(value, nm_setting_gsm_get_pin(setting)); + break; + case PROP_PIN_FLAGS: + g_value_set_flags(value, nm_setting_gsm_get_pin_flags(setting)); + break; + case PROP_HOME_ONLY: + g_value_set_boolean(value, nm_setting_gsm_get_home_only(setting)); + break; + case PROP_DEVICE_ID: + g_value_set_string(value, nm_setting_gsm_get_device_id(setting)); + break; + case PROP_SIM_ID: + g_value_set_string(value, nm_setting_gsm_get_sim_id(setting)); + break; + case PROP_SIM_OPERATOR_ID: + g_value_set_string(value, nm_setting_gsm_get_sim_operator_id(setting)); + break; + case PROP_MTU: + g_value_set_uint(value, nm_setting_gsm_get_mtu(setting)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } } static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (object); - char *tmp; - - switch (prop_id) { - case PROP_AUTO_CONFIG: - priv->auto_config = g_value_get_boolean (value); - break; - case PROP_NUMBER: - g_free (priv->number); - priv->number = g_value_dup_string (value); - break; - case PROP_USERNAME: - g_free (priv->username); - priv->username = g_value_dup_string (value); - break; - case PROP_PASSWORD: - g_free (priv->password); - priv->password = g_value_dup_string (value); - break; - case PROP_PASSWORD_FLAGS: - priv->password_flags = g_value_get_flags (value); - break; - case PROP_APN: - g_free (priv->apn); - priv->apn = NULL; - tmp = g_value_dup_string (value); - if (tmp) - priv->apn = g_strstrip (tmp); - break; - case PROP_NETWORK_ID: - g_free (priv->network_id); - priv->network_id = NULL; - tmp = g_value_dup_string (value); - if (tmp) - priv->network_id = g_strstrip (tmp); - break; - case PROP_PIN: - g_free (priv->pin); - priv->pin = g_value_dup_string (value); - break; - case PROP_PIN_FLAGS: - priv->pin_flags = g_value_get_flags (value); - break; - case PROP_HOME_ONLY: - priv->home_only = g_value_get_boolean (value); - break; - case PROP_DEVICE_ID: - g_free (priv->device_id); - priv->device_id = g_value_dup_string (value); - break; - case PROP_SIM_ID: - g_free (priv->sim_id); - priv->sim_id = g_value_dup_string (value); - break; - case PROP_SIM_OPERATOR_ID: - g_free (priv->sim_operator_id); - priv->sim_operator_id = g_value_dup_string (value); - break; - case PROP_MTU: - priv->mtu = g_value_get_uint (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE(object); + char * tmp; + + switch (prop_id) { + case PROP_AUTO_CONFIG: + priv->auto_config = g_value_get_boolean(value); + break; + case PROP_NUMBER: + g_free(priv->number); + priv->number = g_value_dup_string(value); + break; + case PROP_USERNAME: + g_free(priv->username); + priv->username = g_value_dup_string(value); + break; + case PROP_PASSWORD: + g_free(priv->password); + priv->password = g_value_dup_string(value); + break; + case PROP_PASSWORD_FLAGS: + priv->password_flags = g_value_get_flags(value); + break; + case PROP_APN: + g_free(priv->apn); + priv->apn = NULL; + tmp = g_value_dup_string(value); + if (tmp) + priv->apn = g_strstrip(tmp); + break; + case PROP_NETWORK_ID: + g_free(priv->network_id); + priv->network_id = NULL; + tmp = g_value_dup_string(value); + if (tmp) + priv->network_id = g_strstrip(tmp); + break; + case PROP_PIN: + g_free(priv->pin); + priv->pin = g_value_dup_string(value); + break; + case PROP_PIN_FLAGS: + priv->pin_flags = g_value_get_flags(value); + break; + case PROP_HOME_ONLY: + priv->home_only = g_value_get_boolean(value); + break; + case PROP_DEVICE_ID: + g_free(priv->device_id); + priv->device_id = g_value_dup_string(value); + break; + case PROP_SIM_ID: + g_free(priv->sim_id); + priv->sim_id = g_value_dup_string(value); + break; + case PROP_SIM_OPERATOR_ID: + g_free(priv->sim_operator_id); + priv->sim_operator_id = g_value_dup_string(value); + break; + case PROP_MTU: + priv->mtu = g_value_get_uint(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } } /*****************************************************************************/ static void -nm_setting_gsm_init (NMSettingGsm *setting) -{ -} +nm_setting_gsm_init(NMSettingGsm *setting) +{} /** * nm_setting_gsm_new: @@ -598,253 +602,267 @@ nm_setting_gsm_init (NMSettingGsm *setting) * Returns: the new empty #NMSettingGsm object **/ NMSetting * -nm_setting_gsm_new (void) +nm_setting_gsm_new(void) { - return (NMSetting *) g_object_new (NM_TYPE_SETTING_GSM, NULL); + return (NMSetting *) g_object_new(NM_TYPE_SETTING_GSM, NULL); } static void -finalize (GObject *object) +finalize(GObject *object) { - NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE (object); - - 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->device_id); - g_free (priv->sim_id); - g_free (priv->sim_operator_id); - - G_OBJECT_CLASS (nm_setting_gsm_parent_class)->finalize (object); + NMSettingGsmPrivate *priv = NM_SETTING_GSM_GET_PRIVATE(object); + + 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->device_id); + g_free(priv->sim_id); + g_free(priv->sim_operator_id); + + G_OBJECT_CLASS(nm_setting_gsm_parent_class)->finalize(object); } static void -nm_setting_gsm_class_init (NMSettingGsmClass *klass) +nm_setting_gsm_class_init(NMSettingGsmClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - NMSettingClass *setting_class = NM_SETTING_CLASS (klass); - GArray *properties_override = _nm_sett_info_property_override_create_array (); - - g_type_class_add_private (klass, sizeof (NMSettingGsmPrivate)); - - object_class->get_property = get_property; - object_class->set_property = set_property; - object_class->finalize = finalize; - - setting_class->verify = verify; - setting_class->verify_secrets = verify_secrets; - setting_class->need_secrets = need_secrets; - - /** - * NMSettingGsm:auto-config: - * - * When %TRUE, the settings such as APN, username, or password will - * default to values that match the network the modem will register - * to in the Mobile Broadband Provider database. - * - * Since: 1.22 - **/ - obj_properties[PROP_AUTO_CONFIG] = - g_param_spec_boolean (NM_SETTING_GSM_AUTO_CONFIG, "", "", - FALSE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:number: - * - * Legacy setting that used to help establishing PPP data sessions for - * GSM-based modems. - * - * Deprecated: 1.16: User-provided values for this setting are no longer used. - **/ - obj_properties[PROP_NUMBER] = - g_param_spec_string (NM_SETTING_GSM_NUMBER, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:username: - * - * The username used to authenticate with the network, if required. Many - * providers do not require a username, or accept any username. But if a - * username is required, it is specified here. - **/ - obj_properties[PROP_USERNAME] = - g_param_spec_string (NM_SETTING_GSM_USERNAME, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:password: - * - * The password used to authenticate with the network, if required. Many - * providers do not require a password, or accept any password. But if a - * password is required, it is specified here. - **/ - obj_properties[PROP_PASSWORD] = - g_param_spec_string (NM_SETTING_GSM_PASSWORD, "", "", - NULL, - G_PARAM_READWRITE | - NM_SETTING_PARAM_SECRET | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:password-flags: - * - * Flags indicating how to handle the #NMSettingGsm:password property. - **/ - obj_properties[PROP_PASSWORD_FLAGS] = - g_param_spec_flags (NM_SETTING_GSM_PASSWORD_FLAGS, "", "", - NM_TYPE_SETTING_SECRET_FLAGS, - NM_SETTING_SECRET_FLAG_NONE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:apn: - * - * The GPRS Access Point Name specifying the APN used when establishing a - * data session with the GSM-based network. The APN often determines how - * the user will be billed for their network usage and whether the user has - * access to the Internet or just a provider-specific walled-garden, so it - * is important to use the correct APN for the user's mobile broadband plan. - * The APN may only be composed of the characters a-z, 0-9, ., and - per GSM - * 03.60 Section 14.9. - **/ - obj_properties[PROP_APN] = - g_param_spec_string (NM_SETTING_GSM_APN, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:network-id: - * - * The Network ID (GSM LAI format, ie MCC-MNC) to force specific network - * registration. If the Network ID is specified, NetworkManager will - * attempt to force the device to register only on the specified network. - * This can be used to ensure that the device does not roam when direct - * roaming control of the device is not otherwise possible. - **/ - obj_properties[PROP_NETWORK_ID] = - g_param_spec_string (NM_SETTING_GSM_NETWORK_ID, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:pin: - * - * If the SIM is locked with a PIN it must be unlocked before any other - * operations are requested. Specify the PIN here to allow operation of the - * device. - **/ - obj_properties[PROP_PIN] = - g_param_spec_string (NM_SETTING_GSM_PIN, "", "", - NULL, - G_PARAM_READWRITE | - NM_SETTING_PARAM_SECRET | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:pin-flags: - * - * Flags indicating how to handle the #NMSettingGsm:pin property. - **/ - obj_properties[PROP_PIN_FLAGS] = - g_param_spec_flags (NM_SETTING_GSM_PIN_FLAGS, "", "", - NM_TYPE_SETTING_SECRET_FLAGS, - NM_SETTING_SECRET_FLAG_NONE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:home-only: - * - * When %TRUE, only connections to the home network will be allowed. - * Connections to roaming networks will not be made. - **/ - obj_properties[PROP_HOME_ONLY] = - g_param_spec_boolean (NM_SETTING_GSM_HOME_ONLY, "", "", - FALSE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:device-id: - * - * The device unique identifier (as given by the WWAN management service) - * which this connection applies to. If given, the connection will only - * apply to the specified device. - * - * Since: 1.2 - **/ - obj_properties[PROP_DEVICE_ID] = - g_param_spec_string (NM_SETTING_GSM_DEVICE_ID, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:sim-id: - * - * The SIM card unique identifier (as given by the WWAN management service) - * which this connection applies to. If given, the connection will apply - * to any device also allowed by #NMSettingGsm:device-id which contains a - * SIM card matching the given identifier. - * - * Since: 1.2 - **/ - obj_properties[PROP_SIM_ID] = - g_param_spec_string (NM_SETTING_GSM_SIM_ID, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:sim-operator-id: - * - * A MCC/MNC string like "310260" or "21601" identifying the specific - * mobile network operator which this connection applies to. If given, - * the connection will apply to any device also allowed by - * #NMSettingGsm:device-id and #NMSettingGsm:sim-id which contains a SIM - * card provisioned by the given operator. - * - * Since: 1.2 - **/ - obj_properties[PROP_SIM_OPERATOR_ID] = - g_param_spec_string (NM_SETTING_GSM_SIM_OPERATOR_ID, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - /** - * NMSettingGsm:mtu: - * - * If non-zero, only transmit packets of the specified size or smaller, - * breaking larger packets up into multiple frames. - * - * Since: 1.8 - **/ - obj_properties[PROP_MTU] = - g_param_spec_uint (NM_SETTING_GSM_MTU, "", "", - 0, G_MAXUINT32, 0, - G_PARAM_READWRITE | - NM_SETTING_PARAM_FUZZY_IGNORE | - G_PARAM_STATIC_STRINGS); - - /* Ignore incoming deprecated properties */ - _nm_properties_override_dbus (properties_override, "allowed-bands", &nm_sett_info_propert_type_deprecated_ignore_u); - _nm_properties_override_dbus (properties_override, "network-type", &nm_sett_info_propert_type_deprecated_ignore_i); - - g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); - - _nm_setting_class_commit_full (setting_class, NM_META_SETTING_TYPE_GSM, - NULL, properties_override); + GObjectClass * object_class = G_OBJECT_CLASS(klass); + NMSettingClass *setting_class = NM_SETTING_CLASS(klass); + GArray * properties_override = _nm_sett_info_property_override_create_array(); + + g_type_class_add_private(klass, sizeof(NMSettingGsmPrivate)); + + object_class->get_property = get_property; + object_class->set_property = set_property; + object_class->finalize = finalize; + + setting_class->verify = verify; + setting_class->verify_secrets = verify_secrets; + setting_class->need_secrets = need_secrets; + + /** + * NMSettingGsm:auto-config: + * + * When %TRUE, the settings such as APN, username, or password will + * default to values that match the network the modem will register + * to in the Mobile Broadband Provider database. + * + * Since: 1.22 + **/ + obj_properties[PROP_AUTO_CONFIG] = + g_param_spec_boolean(NM_SETTING_GSM_AUTO_CONFIG, + "", + "", + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:number: + * + * Legacy setting that used to help establishing PPP data sessions for + * GSM-based modems. + * + * Deprecated: 1.16: User-provided values for this setting are no longer used. + **/ + obj_properties[PROP_NUMBER] = g_param_spec_string(NM_SETTING_GSM_NUMBER, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:username: + * + * The username used to authenticate with the network, if required. Many + * providers do not require a username, or accept any username. But if a + * username is required, it is specified here. + **/ + obj_properties[PROP_USERNAME] = g_param_spec_string(NM_SETTING_GSM_USERNAME, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:password: + * + * The password used to authenticate with the network, if required. Many + * providers do not require a password, or accept any password. But if a + * password is required, it is specified here. + **/ + obj_properties[PROP_PASSWORD] = + g_param_spec_string(NM_SETTING_GSM_PASSWORD, + "", + "", + NULL, + G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:password-flags: + * + * Flags indicating how to handle the #NMSettingGsm:password property. + **/ + obj_properties[PROP_PASSWORD_FLAGS] = + g_param_spec_flags(NM_SETTING_GSM_PASSWORD_FLAGS, + "", + "", + NM_TYPE_SETTING_SECRET_FLAGS, + NM_SETTING_SECRET_FLAG_NONE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:apn: + * + * The GPRS Access Point Name specifying the APN used when establishing a + * data session with the GSM-based network. The APN often determines how + * the user will be billed for their network usage and whether the user has + * access to the Internet or just a provider-specific walled-garden, so it + * is important to use the correct APN for the user's mobile broadband plan. + * The APN may only be composed of the characters a-z, 0-9, ., and - per GSM + * 03.60 Section 14.9. + **/ + obj_properties[PROP_APN] = g_param_spec_string(NM_SETTING_GSM_APN, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:network-id: + * + * The Network ID (GSM LAI format, ie MCC-MNC) to force specific network + * registration. If the Network ID is specified, NetworkManager will + * attempt to force the device to register only on the specified network. + * This can be used to ensure that the device does not roam when direct + * roaming control of the device is not otherwise possible. + **/ + obj_properties[PROP_NETWORK_ID] = + g_param_spec_string(NM_SETTING_GSM_NETWORK_ID, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:pin: + * + * If the SIM is locked with a PIN it must be unlocked before any other + * operations are requested. Specify the PIN here to allow operation of the + * device. + **/ + obj_properties[PROP_PIN] = + g_param_spec_string(NM_SETTING_GSM_PIN, + "", + "", + NULL, + G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:pin-flags: + * + * Flags indicating how to handle the #NMSettingGsm:pin property. + **/ + obj_properties[PROP_PIN_FLAGS] = g_param_spec_flags(NM_SETTING_GSM_PIN_FLAGS, + "", + "", + NM_TYPE_SETTING_SECRET_FLAGS, + NM_SETTING_SECRET_FLAG_NONE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:home-only: + * + * When %TRUE, only connections to the home network will be allowed. + * Connections to roaming networks will not be made. + **/ + obj_properties[PROP_HOME_ONLY] = + g_param_spec_boolean(NM_SETTING_GSM_HOME_ONLY, + "", + "", + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:device-id: + * + * The device unique identifier (as given by the WWAN management service) + * which this connection applies to. If given, the connection will only + * apply to the specified device. + * + * Since: 1.2 + **/ + obj_properties[PROP_DEVICE_ID] = + g_param_spec_string(NM_SETTING_GSM_DEVICE_ID, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:sim-id: + * + * The SIM card unique identifier (as given by the WWAN management service) + * which this connection applies to. If given, the connection will apply + * to any device also allowed by #NMSettingGsm:device-id which contains a + * SIM card matching the given identifier. + * + * Since: 1.2 + **/ + obj_properties[PROP_SIM_ID] = g_param_spec_string(NM_SETTING_GSM_SIM_ID, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:sim-operator-id: + * + * A MCC/MNC string like "310260" or "21601" identifying the specific + * mobile network operator which this connection applies to. If given, + * the connection will apply to any device also allowed by + * #NMSettingGsm:device-id and #NMSettingGsm:sim-id which contains a SIM + * card provisioned by the given operator. + * + * Since: 1.2 + **/ + obj_properties[PROP_SIM_OPERATOR_ID] = + g_param_spec_string(NM_SETTING_GSM_SIM_OPERATOR_ID, + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** + * NMSettingGsm:mtu: + * + * If non-zero, only transmit packets of the specified size or smaller, + * breaking larger packets up into multiple frames. + * + * Since: 1.8 + **/ + obj_properties[PROP_MTU] = g_param_spec_uint(NM_SETTING_GSM_MTU, + "", + "", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE + | G_PARAM_STATIC_STRINGS); + + /* Ignore incoming deprecated properties */ + _nm_properties_override_dbus(properties_override, + "allowed-bands", + &nm_sett_info_propert_type_deprecated_ignore_u); + _nm_properties_override_dbus(properties_override, + "network-type", + &nm_sett_info_propert_type_deprecated_ignore_i); + + g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); + + _nm_setting_class_commit_full(setting_class, + NM_META_SETTING_TYPE_GSM, + NULL, + properties_override); } |