diff options
-rw-r--r-- | cli/mmcli-bearer.c | 3 | ||||
-rw-r--r-- | cli/mmcli-output.c | 1 | ||||
-rw-r--r-- | cli/mmcli-output.h | 1 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-sections.txt | 1 | ||||
-rw-r--r-- | docs/reference/libmm-glib/libmm-glib-sections.txt | 8 | ||||
-rw-r--r-- | include/ModemManager-enums.h | 51 | ||||
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.Bearer.xml | 7 | ||||
-rw-r--r-- | libmm-glib/mm-bearer-properties.c | 84 | ||||
-rw-r--r-- | libmm-glib/mm-bearer-properties.h | 4 | ||||
-rw-r--r-- | libmm-glib/mm-common-helpers.c | 10 | ||||
-rw-r--r-- | libmm-glib/mm-common-helpers.h | 3 | ||||
-rw-r--r-- | libmm-glib/mm-simple-connect-properties.c | 38 | ||||
-rw-r--r-- | libmm-glib/mm-simple-connect-properties.h | 3 | ||||
-rw-r--r-- | src/mm-iface-modem-simple.c | 9 |
14 files changed, 222 insertions, 1 deletions
diff --git a/cli/mmcli-bearer.c b/cli/mmcli-bearer.c index eab31c05..913b6780 100644 --- a/cli/mmcli-bearer.c +++ b/cli/mmcli-bearer.c @@ -155,6 +155,7 @@ print_bearer_info (MMBearer *bearer) /* Properties */ { const gchar *apn = NULL; + gchar *apn_type_str = NULL; const gchar *roaming = NULL; gchar *ip_family_str = NULL; const gchar *user = NULL; @@ -164,6 +165,7 @@ print_bearer_info (MMBearer *bearer) if (properties) { apn = mm_bearer_properties_get_apn (properties); + apn_type_str = (properties ? mm_bearer_apn_type_build_string_from_mask (mm_bearer_properties_get_apn_type (properties)) : NULL); ip_family_str = (properties ? mm_bearer_ip_family_build_string_from_mask (mm_bearer_properties_get_ip_type (properties)) : NULL); allowed_auth_str = (properties ? mm_bearer_allowed_auth_build_string_from_mask (mm_bearer_properties_get_allowed_auth (properties)) : NULL); user = mm_bearer_properties_get_user (properties); @@ -175,6 +177,7 @@ print_bearer_info (MMBearer *bearer) } mmcli_output_string (MMC_F_BEARER_PROPERTIES_APN, apn); + mmcli_output_string_take (MMC_F_BEARER_PROPERTIES_APN_TYPE, apn_type_str); mmcli_output_string (MMC_F_BEARER_PROPERTIES_ROAMING, roaming); mmcli_output_string_take (MMC_F_BEARER_PROPERTIES_IP_TYPE, ip_family_str); mmcli_output_string (MMC_F_BEARER_PROPERTIES_USER, user); diff --git a/cli/mmcli-output.c b/cli/mmcli-output.c index 6040d5d5..69448562 100644 --- a/cli/mmcli-output.c +++ b/cli/mmcli-output.c @@ -212,6 +212,7 @@ static FieldInfo field_infos[] = { [MMC_F_BEARER_STATUS_INTERFACE] = { "bearer.status.interface", "interface", MMC_S_BEARER_STATUS, }, [MMC_F_BEARER_STATUS_IP_TIMEOUT] = { "bearer.status.ip-timeout", "ip timeout", MMC_S_BEARER_STATUS, }, [MMC_F_BEARER_PROPERTIES_APN] = { "bearer.properties.apn", "apn", MMC_S_BEARER_PROPERTIES, }, + [MMC_F_BEARER_PROPERTIES_APN_TYPE] = { "bearer.properties.apn-type", "apn type", MMC_S_BEARER_PROPERTIES, }, [MMC_F_BEARER_PROPERTIES_ROAMING] = { "bearer.properties.roaming", "roaming", MMC_S_BEARER_PROPERTIES, }, [MMC_F_BEARER_PROPERTIES_IP_TYPE] = { "bearer.properties.ip-type", "ip type", MMC_S_BEARER_PROPERTIES, }, [MMC_F_BEARER_PROPERTIES_ALLOWED_AUTH] = { "bearer.properties.allowed-auth", "allowed-auth", MMC_S_BEARER_PROPERTIES, }, diff --git a/cli/mmcli-output.h b/cli/mmcli-output.h index 283f2d43..faf8abbe 100644 --- a/cli/mmcli-output.h +++ b/cli/mmcli-output.h @@ -229,6 +229,7 @@ typedef enum { MMC_F_BEARER_STATUS_IP_TIMEOUT, /* Bearer properties section */ MMC_F_BEARER_PROPERTIES_APN, + MMC_F_BEARER_PROPERTIES_APN_TYPE, MMC_F_BEARER_PROPERTIES_ROAMING, MMC_F_BEARER_PROPERTIES_IP_TYPE, MMC_F_BEARER_PROPERTIES_ALLOWED_AUTH, diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt index e0dc29f3..6b1eabd9 100644 --- a/docs/reference/api/ModemManager-sections.txt +++ b/docs/reference/api/ModemManager-sections.txt @@ -15,6 +15,7 @@ MMBearerIpFamily MMBearerIpMethod MMBearerAllowedAuth MMBearerMultiplexSupport +MMBearerApnType MMCallDirection MMCallState MMCallStateReason diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt index cbf8e80e..327f33e5 100644 --- a/docs/reference/libmm-glib/libmm-glib-sections.txt +++ b/docs/reference/libmm-glib/libmm-glib-sections.txt @@ -861,6 +861,8 @@ mm_simple_connect_properties_get_operator_id mm_simple_connect_properties_set_operator_id mm_simple_connect_properties_get_apn mm_simple_connect_properties_set_apn +mm_simple_connect_properties_get_apn_type +mm_simple_connect_properties_set_apn_type mm_simple_connect_properties_get_allowed_auth mm_simple_connect_properties_set_allowed_auth mm_simple_connect_properties_get_user @@ -1183,6 +1185,8 @@ mm_bearer_properties_new <SUBSECTION GettersSetters> mm_bearer_properties_get_apn mm_bearer_properties_set_apn +mm_bearer_properties_get_apn_type +mm_bearer_properties_set_apn_type mm_bearer_properties_get_allowed_auth mm_bearer_properties_set_allowed_auth mm_bearer_properties_get_user @@ -1536,6 +1540,7 @@ mm_bearer_ip_method_get_string mm_bearer_ip_family_get_string mm_bearer_allowed_auth_build_string_from_mask mm_bearer_multiplex_support_get_string +mm_bearer_apn_type_build_string_from_mask mm_modem_capability_build_string_from_mask mm_modem_state_get_string mm_modem_state_failed_reason_get_string @@ -1599,6 +1604,7 @@ mm_bearer_ip_family_build_string_from_mask mm_bearer_ip_method_build_string_from_mask mm_bearer_allowed_auth_get_string mm_bearer_multiplex_support_build_string_from_mask +mm_bearer_apn_type_get_string mm_modem_cdma_registration_state_build_string_from_mask mm_modem_cdma_activation_state_build_string_from_mask mm_modem_cdma_rm_protocol_build_string_from_mask @@ -1624,6 +1630,7 @@ MM_TYPE_BEARER_IP_FAMILY MM_TYPE_BEARER_IP_METHOD MM_TYPE_BEARER_ALLOWED_AUTH MM_TYPE_BEARER_MULTIPLEX_SUPPORT +MM_TYPE_BEARER_APN_TYPE MM_TYPE_FIRMWARE_IMAGE_TYPE MM_TYPE_MODEM_3GPP_FACILITY MM_TYPE_MODEM_3GPP_NETWORK_AVAILABILITY @@ -1667,6 +1674,7 @@ mm_bearer_ip_family_get_type mm_bearer_ip_method_get_type mm_bearer_allowed_auth_get_type mm_bearer_multiplex_support_get_type +mm_bearer_apn_type_get_type mm_firmware_image_type_get_type mm_modem_3gpp_facility_get_type mm_modem_3gpp_network_availability_get_type diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h index 0c9f2cb9..06c2cf5e 100644 --- a/include/ModemManager-enums.h +++ b/include/ModemManager-enums.h @@ -1544,4 +1544,55 @@ typedef enum { /*< underscore_name=mm_bearer_multiplex_support >*/ MM_BEARER_MULTIPLEX_SUPPORT_REQUIRED = 3, } MMBearerMultiplexSupport; +/** + * MMBearerApnType: + * @MM_BEARER_APN_TYPE_NONE: Unknown or unsupported. + * @MM_BEARER_APN_TYPE_INITIAL: APN used for the initial attach procedure. + * @MM_BEARER_APN_TYPE_DEFAULT: Default connection APN providing access to the Internet. + * @MM_BEARER_APN_TYPE_IMS: APN providing access to IMS services. + * @MM_BEARER_APN_TYPE_MMS: APN providing access to MMS services. + * @MM_BEARER_APN_TYPE_MANAGEMENT: APN providing access to over-the-air device management procedures. + * @MM_BEARER_APN_TYPE_VOICE: APN providing access to voice-over-IP services. + * @MM_BEARER_APN_TYPE_EMERGENCY: APN providing access to emergency services. + * @MM_BEARER_APN_TYPE_PRIVATE: APN providing access to private networks. + * + * Purpose of the APN used in a given Bearer. + * + * This information may be stored in the device configuration (e.g. if carrier + * specific configurations have been enabled for the SIM in use), or provided + * explicitly by the user. + * + * If the mask of types includes %MM_BEARER_APN_TYPE_DEFAULT, it is expected + * that the connection manager will include a default route through the specific + * bearer connection to the public Internet. + * + * For any other mask type, it is expected that the connection manager will + * not setup a default route and will therefore require additional custom + * routing rules to provide access to the different services. E.g. a bearer + * connected with %MM_BEARER_APN_TYPE_MMS will probably require an explicit + * additional route in the host to access the MMSC server at the address + * specified by the operator. If this address relies on a domain name instead + * of a fixed IP address, the name resolution should be performed using the + * DNS servers specified in the corresponding bearer connection settings. + * + * If not explicitly specified during a connection attempt, the connection + * manager should be free to treat it with its own logic. E.g. a good default + * could be to treat the first connection as %MM_BEARER_APN_TYPE_DEFAULT (with + * a default route) and any other additional connection as + * %MM_BEARER_APN_TYPE_PRIVATE (without a default route). + * + * Since: 1.18 + */ +typedef enum { /*< underscore_name=mm_bearer_apn_type >*/ + MM_BEARER_APN_TYPE_NONE = 0, + MM_BEARER_APN_TYPE_INITIAL = 1 << 0, + MM_BEARER_APN_TYPE_DEFAULT = 1 << 1, + MM_BEARER_APN_TYPE_IMS = 1 << 2, + MM_BEARER_APN_TYPE_MMS = 1 << 3, + MM_BEARER_APN_TYPE_MANAGEMENT = 1 << 4, + MM_BEARER_APN_TYPE_VOICE = 1 << 5, + MM_BEARER_APN_TYPE_EMERGENCY = 1 << 6, + MM_BEARER_APN_TYPE_PRIVATE = 1 << 7, +} MMBearerApnType; + #endif /* _MODEMMANAGER_ENUMS_H_ */ diff --git a/introspection/org.freedesktop.ModemManager1.Bearer.xml b/introspection/org.freedesktop.ModemManager1.Bearer.xml index 4d1b1aca..a88a361c 100644 --- a/introspection/org.freedesktop.ModemManager1.Bearer.xml +++ b/introspection/org.freedesktop.ModemManager1.Bearer.xml @@ -388,6 +388,13 @@ value (signature <literal>"u"</literal>). </listitem> </varlistentry> + <varlistentry><term><literal>"apn-type"</literal></term> + <listitem> + The purposes of the specified APN, given as a + <link linkend="MMBearerApnType">MMBearerApnType</link> + value (signature <literal>"u"</literal>). + </listitem> + </varlistentry> <varlistentry><term><literal>"allowed-auth"</literal></term> <listitem> The authentication method to use, given as a diff --git a/libmm-glib/mm-bearer-properties.c b/libmm-glib/mm-bearer-properties.c index 37c65a00..40489624 100644 --- a/libmm-glib/mm-bearer-properties.c +++ b/libmm-glib/mm-bearer-properties.c @@ -38,6 +38,7 @@ G_DEFINE_TYPE (MMBearerProperties, mm_bearer_properties, G_TYPE_OBJECT); #define PROPERTY_USER "user" #define PROPERTY_PASSWORD "password" #define PROPERTY_IP_TYPE "ip-type" +#define PROPERTY_APN_TYPE "apn-type" #define PROPERTY_ALLOW_ROAMING "allow-roaming" #define PROPERTY_RM_PROTOCOL "rm-protocol" #define PROPERTY_MULTIPLEX "multiplex" @@ -50,6 +51,8 @@ struct _MMBearerPropertiesPrivate { gchar *apn; /* IP type */ MMBearerIpFamily ip_type; + /* APN type */ + MMBearerApnType apn_type; /* Allowed auth */ MMBearerAllowedAuth allowed_auth; /* User */ @@ -267,6 +270,44 @@ mm_bearer_properties_get_ip_type (MMBearerProperties *self) /*****************************************************************************/ /** + * mm_bearer_properties_set_apn_type: + * @self: a #MMBearerProperties. + * @apn_type: a mask of #MMBearerApnType values. + * + * Sets the APN types to use. + * + * Since: 1.18 + */ +void +mm_bearer_properties_set_apn_type (MMBearerProperties *self, + MMBearerApnType apn_type) +{ + g_return_if_fail (MM_IS_BEARER_PROPERTIES (self)); + + self->priv->apn_type = apn_type; +} + +/** + * mm_bearer_properties_get_apn_type: + * @self: a #MMBearerProperties. + * + * Gets the APN types to use. + * + * Returns: a mask of #MMBearerApnType values. + * + * Since: 1.18 + */ +MMBearerApnType +mm_bearer_properties_get_apn_type (MMBearerProperties *self) +{ + g_return_val_if_fail (MM_IS_BEARER_PROPERTIES (self), MM_BEARER_APN_TYPE_NONE); + + return self->priv->apn_type; +} + +/*****************************************************************************/ + +/** * mm_bearer_properties_set_allow_roaming: * @self: a #MMBearerProperties. * @allow_roaming: boolean value. @@ -476,6 +517,12 @@ mm_bearer_properties_get_dictionary (MMBearerProperties *self) PROPERTY_IP_TYPE, g_variant_new_uint32 (self->priv->ip_type)); + if (self->priv->apn_type != MM_BEARER_APN_TYPE_NONE) + g_variant_builder_add (&builder, + "{sv}", + PROPERTY_APN_TYPE, + g_variant_new_uint32 (self->priv->apn_type)); + if (self->priv->allow_roaming_set) g_variant_builder_add (&builder, "{sv}", @@ -536,6 +583,16 @@ mm_bearer_properties_consume_string (MMBearerProperties *self, return FALSE; } mm_bearer_properties_set_ip_type (self, ip_type); + } else if (g_str_equal (key, PROPERTY_APN_TYPE)) { + GError *inner_error = NULL; + MMBearerApnType apn_type; + + apn_type = mm_common_get_apn_type_from_string (value, &inner_error); + if (inner_error) { + g_propagate_error (error, inner_error); + return FALSE; + } + mm_bearer_properties_set_apn_type (self, apn_type); } else if (g_str_equal (key, PROPERTY_ALLOW_ROAMING)) { GError *inner_error = NULL; gboolean allow_roaming; @@ -655,6 +712,10 @@ mm_bearer_properties_consume_variant (MMBearerProperties *properties, mm_bearer_properties_set_ip_type ( properties, g_variant_get_uint32 (value)); + else if (g_str_equal (key, PROPERTY_APN_TYPE)) + mm_bearer_properties_set_apn_type ( + properties, + g_variant_get_uint32 (value)); else if (g_str_equal (key, PROPERTY_ALLOW_ROAMING)) mm_bearer_properties_set_allow_roaming ( properties, @@ -763,6 +824,23 @@ cmp_ip_type (MMBearerIpFamily a, } static gboolean +cmp_apn_type (MMBearerApnType a, + MMBearerApnType b, + MMBearerPropertiesCmpFlags flags) +{ + /* Strict match */ + if (a == b) + return TRUE; + /* Additional loose match NONE == DEFAULT */ + if (flags & MM_BEARER_PROPERTIES_CMP_FLAGS_LOOSE) { + if ((a == MM_BEARER_APN_TYPE_NONE && b == MM_BEARER_APN_TYPE_DEFAULT) || + (b == MM_BEARER_APN_TYPE_NONE && a == MM_BEARER_APN_TYPE_DEFAULT)) + return TRUE; + } + return FALSE; +} + +static gboolean cmp_allowed_auth (MMBearerAllowedAuth a, MMBearerAllowedAuth b, MMBearerPropertiesCmpFlags flags) @@ -813,8 +891,11 @@ mm_bearer_properties_cmp (MMBearerProperties *a, if (!cmp_allowed_auth (a->priv->allowed_auth, b->priv->allowed_auth, flags)) return FALSE; if (!cmp_str (a->priv->user, b->priv->user, flags)) + if (!(flags & MM_BEARER_PROPERTIES_CMP_FLAGS_NO_APN_TYPE) && + !cmp_apn_type (a->priv->apn_type, b->priv->apn_type, flags)) return FALSE; - if (!(flags & MM_BEARER_PROPERTIES_CMP_FLAGS_NO_PASSWORD) && !cmp_str (a->priv->password, b->priv->password, flags)) + if (!(flags & MM_BEARER_PROPERTIES_CMP_FLAGS_NO_PASSWORD) && + !cmp_str (a->priv->password, b->priv->password, flags)) return FALSE; if (!(flags & MM_BEARER_PROPERTIES_CMP_FLAGS_NO_ALLOW_ROAMING)) { if (a->priv->allow_roaming != b->priv->allow_roaming) @@ -861,6 +942,7 @@ mm_bearer_properties_init (MMBearerProperties *self) self->priv->rm_protocol = MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN; self->priv->allowed_auth = MM_BEARER_ALLOWED_AUTH_UNKNOWN; self->priv->ip_type = MM_BEARER_IP_FAMILY_NONE; + self->priv->apn_type = MM_BEARER_APN_TYPE_NONE; self->priv->multiplex = MM_BEARER_MULTIPLEX_SUPPORT_UNKNOWN; } diff --git a/libmm-glib/mm-bearer-properties.h b/libmm-glib/mm-bearer-properties.h index 062d01c5..f0307db3 100644 --- a/libmm-glib/mm-bearer-properties.h +++ b/libmm-glib/mm-bearer-properties.h @@ -68,6 +68,8 @@ void mm_bearer_properties_set_password (MMBearerProperties *self, const gchar *password); void mm_bearer_properties_set_ip_type (MMBearerProperties *self, MMBearerIpFamily ip_type); +void mm_bearer_properties_set_apn_type (MMBearerProperties *self, + MMBearerApnType apn_type); void mm_bearer_properties_set_allow_roaming (MMBearerProperties *self, gboolean allow_roaming); void mm_bearer_properties_set_rm_protocol (MMBearerProperties *self, @@ -80,6 +82,7 @@ MMBearerAllowedAuth mm_bearer_properties_get_allowed_auth (MMBearerProper const gchar *mm_bearer_properties_get_user (MMBearerProperties *self); const gchar *mm_bearer_properties_get_password (MMBearerProperties *self); MMBearerIpFamily mm_bearer_properties_get_ip_type (MMBearerProperties *self); +MMBearerApnType mm_bearer_properties_get_apn_type (MMBearerProperties *self); gboolean mm_bearer_properties_get_allow_roaming (MMBearerProperties *self); MMModemCdmaRmProtocol mm_bearer_properties_get_rm_protocol (MMBearerProperties *self); MMBearerMultiplexSupport mm_bearer_properties_get_multiplex (MMBearerProperties *self); @@ -122,6 +125,7 @@ typedef enum { MM_BEARER_PROPERTIES_CMP_FLAGS_NO_PASSWORD = 1 << 1, MM_BEARER_PROPERTIES_CMP_FLAGS_NO_ALLOW_ROAMING = 1 << 2, MM_BEARER_PROPERTIES_CMP_FLAGS_NO_RM_PROTOCOL = 1 << 3, + MM_BEARER_PROPERTIES_CMP_FLAGS_NO_APN_TYPE = 1 << 4, } MMBearerPropertiesCmpFlags; gboolean mm_bearer_properties_cmp (MMBearerProperties *a, diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c index a505421c..8bfaa567 100644 --- a/libmm-glib/mm-common-helpers.c +++ b/libmm-glib/mm-common-helpers.c @@ -867,6 +867,16 @@ mm_common_get_multiplex_support_from_string (const gchar *str, error); } +MMBearerApnType +mm_common_get_apn_type_from_string (const gchar *str, + GError **error) +{ + return _flags_from_string (MM_TYPE_BEARER_APN_TYPE, + str, + MM_BEARER_APN_TYPE_NONE, + error); +} + GArray * mm_common_oma_pending_network_initiated_sessions_variant_to_garray (GVariant *variant) { diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h index b8a75dfb..86843b67 100644 --- a/libmm-glib/mm-common-helpers.h +++ b/libmm-glib/mm-common-helpers.h @@ -85,6 +85,9 @@ MMModemAccessTechnology mm_common_get_access_technology_from_string (const gchar MMBearerMultiplexSupport mm_common_get_multiplex_support_from_string (const gchar *str, GError **error); +MMBearerApnType mm_common_get_apn_type_from_string (const gchar *str, + GError **error); + GArray *mm_common_ports_variant_to_garray (GVariant *variant); MMModemPortInfo *mm_common_ports_variant_to_array (GVariant *variant, guint *n_ports); diff --git a/libmm-glib/mm-simple-connect-properties.c b/libmm-glib/mm-simple-connect-properties.c index 93006fc4..d1a83592 100644 --- a/libmm-glib/mm-simple-connect-properties.c +++ b/libmm-glib/mm-simple-connect-properties.c @@ -327,6 +327,44 @@ mm_simple_connect_properties_get_ip_type (MMSimpleConnectProperties *self) /*****************************************************************************/ /** + * mm_simple_connect_properties_set_apn_type: + * @self: a #MMSimpleConnectProperties. + * @apn_type: a mask of #MMBearerApnType values. + * + * Sets the APN types to use. + * + * Since: 1.18 + */ +void +mm_simple_connect_properties_set_apn_type (MMSimpleConnectProperties *self, + MMBearerApnType apn_type) +{ + g_return_if_fail (MM_IS_SIMPLE_CONNECT_PROPERTIES (self)); + + mm_bearer_properties_set_apn_type (self->priv->bearer_properties, apn_type); +} + +/** + * mm_simple_connect_properties_get_apn_type: + * @self: a #MMSimpleConnectProperties. + * + * Gets the APN types to use. + * + * Returns: a mask of #MMBearerApnType values. + * + * Since: 1.18 + */ +MMBearerApnType +mm_simple_connect_properties_get_apn_type (MMSimpleConnectProperties *self) +{ + g_return_val_if_fail (MM_IS_SIMPLE_CONNECT_PROPERTIES (self), MM_BEARER_APN_TYPE_NONE); + + return mm_bearer_properties_get_apn_type (self->priv->bearer_properties); +} + +/*****************************************************************************/ + +/** * mm_simple_connect_properties_set_allow_roaming: * @self: a #MMSimpleConnectProperties. * @allow_roaming: boolean value. diff --git a/libmm-glib/mm-simple-connect-properties.h b/libmm-glib/mm-simple-connect-properties.h index 207ebaae..77ab93ba 100644 --- a/libmm-glib/mm-simple-connect-properties.h +++ b/libmm-glib/mm-simple-connect-properties.h @@ -74,6 +74,8 @@ void mm_simple_connect_properties_set_password (MMSimpleConnectProperties * const gchar *password); void mm_simple_connect_properties_set_ip_type (MMSimpleConnectProperties *self, MMBearerIpFamily ip_type); +void mm_simple_connect_properties_set_apn_type (MMSimpleConnectProperties *self, + MMBearerApnType apn_type); void mm_simple_connect_properties_set_allow_roaming (MMSimpleConnectProperties *self, gboolean allow_roaming); void mm_simple_connect_properties_set_rm_protocol (MMSimpleConnectProperties *self, @@ -88,6 +90,7 @@ MMBearerAllowedAuth mm_simple_connect_properties_get_allowed_auth (MMSimp const gchar *mm_simple_connect_properties_get_user (MMSimpleConnectProperties *self); const gchar *mm_simple_connect_properties_get_password (MMSimpleConnectProperties *self); MMBearerIpFamily mm_simple_connect_properties_get_ip_type (MMSimpleConnectProperties *self); +MMBearerApnType mm_simple_connect_properties_get_apn_type (MMSimpleConnectProperties *self); gboolean mm_simple_connect_properties_get_allow_roaming (MMSimpleConnectProperties *self); MMModemCdmaRmProtocol mm_simple_connect_properties_get_rm_protocol (MMSimpleConnectProperties *self); MMBearerMultiplexSupport mm_simple_connect_properties_get_multiplex (MMSimpleConnectProperties *self); diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c index 00b8d894..002671ba 100644 --- a/src/mm-iface-modem-simple.c +++ b/src/mm-iface-modem-simple.c @@ -691,6 +691,7 @@ connect_auth_ready (MMBaseModem *self, { MMBearerMultiplexSupport multiplex; MMBearerAllowedAuth allowed_auth; + MMBearerApnType apn_type; gchar *str; MMBearerIpFamily ip_family; @@ -701,6 +702,14 @@ connect_auth_ready (MMBaseModem *self, mm_obj_dbg (self, " allowed roaming: %s", mm_simple_connect_properties_get_allow_roaming (ctx->properties) ? "yes" : "no"); mm_obj_dbg (self, " APN: %s", VALIDATE_UNSPECIFIED (mm_simple_connect_properties_get_apn (ctx->properties))); + apn_type = mm_simple_connect_properties_get_apn_type (ctx->properties); + if (apn_type != MM_BEARER_APN_TYPE_NONE) { + str = mm_bearer_apn_type_build_string_from_mask (apn_type); + mm_obj_dbg (self, " APN type: %s", str); + g_free (str); + } else + mm_obj_dbg (self, " APN type: %s", VALIDATE_UNSPECIFIED (NULL)); + ip_family = mm_simple_connect_properties_get_ip_type (ctx->properties); if (ip_family != MM_BEARER_IP_FAMILY_NONE) { str = mm_bearer_ip_family_build_string_from_mask (ip_family); |