diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-02-25 20:41:28 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-03-10 10:59:22 +0100 |
commit | 73db7f205c3326492648f6ebedb8d07b959a6e55 (patch) | |
tree | fb3def8277962d7124d4bb2a070b0a8160459cae | |
parent | 05b9ab7c25bf252e43037ed0ea002b0aed6f051b (diff) |
api,bearer: new 'Multiplexed' property
This property will be TRUE if the bearer has the data session
connected through a multiplexed interface.
If the bearer is disconnected, or connected without multiplexing, the
property will report FALSE.
-rw-r--r-- | cli/mmcli-bearer.c | 9 | ||||
-rw-r--r-- | cli/mmcli-output.c | 1 | ||||
-rw-r--r-- | cli/mmcli-output.h | 1 | ||||
-rw-r--r-- | docs/reference/libmm-glib/libmm-glib-sections.txt | 3 | ||||
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.Bearer.xml | 8 | ||||
-rw-r--r-- | libmm-glib/mm-bearer.c | 22 | ||||
-rw-r--r-- | libmm-glib/mm-bearer.h | 2 | ||||
-rw-r--r-- | src/mm-base-bearer.c | 30 | ||||
-rw-r--r-- | src/mm-base-bearer.h | 5 |
9 files changed, 72 insertions, 9 deletions
diff --git a/cli/mmcli-bearer.c b/cli/mmcli-bearer.c index d589e6ed..eab31c05 100644 --- a/cli/mmcli-bearer.c +++ b/cli/mmcli-bearer.c @@ -146,10 +146,11 @@ print_bearer_info (MMBearer *bearer) mmcli_output_string (MMC_F_BEARER_GENERAL_DBUS_PATH, mm_bearer_get_path (bearer)); mmcli_output_string (MMC_F_BEARER_GENERAL_TYPE, mm_bearer_type_get_string (mm_bearer_get_bearer_type (bearer))); - mmcli_output_string (MMC_F_BEARER_STATUS_CONNECTED, mm_bearer_get_connected (bearer) ? "yes" : "no"); - mmcli_output_string (MMC_F_BEARER_STATUS_SUSPENDED, mm_bearer_get_suspended (bearer) ? "yes" : "no"); - mmcli_output_string (MMC_F_BEARER_STATUS_INTERFACE, mm_bearer_get_interface (bearer)); - mmcli_output_string_take (MMC_F_BEARER_STATUS_IP_TIMEOUT, g_strdup_printf ("%u", mm_bearer_get_ip_timeout (bearer))); + mmcli_output_string (MMC_F_BEARER_STATUS_CONNECTED, mm_bearer_get_connected (bearer) ? "yes" : "no"); + mmcli_output_string (MMC_F_BEARER_STATUS_SUSPENDED, mm_bearer_get_suspended (bearer) ? "yes" : "no"); + mmcli_output_string (MMC_F_BEARER_STATUS_MULTIPLEXED, mm_bearer_get_multiplexed (bearer) ? "yes" : "no"); + mmcli_output_string (MMC_F_BEARER_STATUS_INTERFACE, mm_bearer_get_interface (bearer)); + mmcli_output_string_take (MMC_F_BEARER_STATUS_IP_TIMEOUT, g_strdup_printf ("%u", mm_bearer_get_ip_timeout (bearer))); /* Properties */ { diff --git a/cli/mmcli-output.c b/cli/mmcli-output.c index 3ef7fd12..6040d5d5 100644 --- a/cli/mmcli-output.c +++ b/cli/mmcli-output.c @@ -208,6 +208,7 @@ static FieldInfo field_infos[] = { [MMC_F_BEARER_GENERAL_TYPE] = { "bearer.type", "type", MMC_S_BEARER_GENERAL, }, [MMC_F_BEARER_STATUS_CONNECTED] = { "bearer.status.connected", "connected", MMC_S_BEARER_STATUS, }, [MMC_F_BEARER_STATUS_SUSPENDED] = { "bearer.status.suspended", "suspended", MMC_S_BEARER_STATUS, }, + [MMC_F_BEARER_STATUS_MULTIPLEXED] = { "bearer.status.multiplexed", "multiplexed", MMC_S_BEARER_STATUS, }, [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, }, diff --git a/cli/mmcli-output.h b/cli/mmcli-output.h index dea575b0..283f2d43 100644 --- a/cli/mmcli-output.h +++ b/cli/mmcli-output.h @@ -224,6 +224,7 @@ typedef enum { /* Bearer status section */ MMC_F_BEARER_STATUS_CONNECTED, MMC_F_BEARER_STATUS_SUSPENDED, + MMC_F_BEARER_STATUS_MULTIPLEXED, MMC_F_BEARER_STATUS_INTERFACE, MMC_F_BEARER_STATUS_IP_TIMEOUT, /* Bearer properties section */ diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt index c9d9b0fd..e33408b8 100644 --- a/docs/reference/libmm-glib/libmm-glib-sections.txt +++ b/docs/reference/libmm-glib/libmm-glib-sections.txt @@ -1073,6 +1073,7 @@ mm_bearer_get_interface mm_bearer_dup_interface mm_bearer_get_connected mm_bearer_get_suspended +mm_bearer_get_multiplexed mm_bearer_get_ip_timeout mm_bearer_get_bearer_type mm_bearer_peek_ipv4_config @@ -1751,6 +1752,7 @@ mm_gdbus_bearer_get_properties mm_gdbus_bearer_dup_properties mm_gdbus_bearer_get_connected mm_gdbus_bearer_get_suspended +mm_gdbus_bearer_get_multiplexed mm_gdbus_bearer_get_bearer_type mm_gdbus_bearer_get_stats mm_gdbus_bearer_dup_stats @@ -1772,6 +1774,7 @@ mm_gdbus_bearer_set_properties mm_gdbus_bearer_set_suspended mm_gdbus_bearer_set_bearer_type mm_gdbus_bearer_set_stats +mm_gdbus_bearer_set_multiplexed mm_gdbus_bearer_override_properties mm_gdbus_bearer_complete_connect mm_gdbus_bearer_complete_disconnect diff --git a/introspection/org.freedesktop.ModemManager1.Bearer.xml b/introspection/org.freedesktop.ModemManager1.Bearer.xml index fb008797..94332215 100644 --- a/introspection/org.freedesktop.ModemManager1.Bearer.xml +++ b/introspection/org.freedesktop.ModemManager1.Bearer.xml @@ -103,6 +103,14 @@ <property name="Suspended" type="b" access="read" /> <!-- + Multiplexed: + + This property will be %TRUE if the bearer is connected through a + multiplexed network link. + --> + <property name="Multiplexed" type="b" access="read" /> + + <!-- Ip4Config: If the bearer was configured for IPv4 addressing, upon activation this diff --git a/libmm-glib/mm-bearer.c b/libmm-glib/mm-bearer.c index d5812e22..31668281 100644 --- a/libmm-glib/mm-bearer.c +++ b/libmm-glib/mm-bearer.c @@ -203,6 +203,28 @@ mm_bearer_get_suspended (MMBearer *self) /*****************************************************************************/ /** + * mm_bearer_get_multiplexed: + * @self: A #MMBearer. + * + * Checks whether or not the #MMBearer is connected through a multiplexed + * network likn. + * + * Returns: %TRUE if packet data service is connected via a multiplexed network + * link in the #MMBearer, #FALSE otherwise. + * + * Since: 1.18 + */ +gboolean +mm_bearer_get_multiplexed (MMBearer *self) +{ + g_return_val_if_fail (MM_IS_BEARER (self), FALSE); + + return mm_gdbus_bearer_get_multiplexed (MM_GDBUS_BEARER (self)); +} + +/*****************************************************************************/ + +/** * mm_bearer_get_ip_timeout: * @self: A #MMBearer. * diff --git a/libmm-glib/mm-bearer.h b/libmm-glib/mm-bearer.h index 65bb5292..c96888df 100644 --- a/libmm-glib/mm-bearer.h +++ b/libmm-glib/mm-bearer.h @@ -78,6 +78,8 @@ gboolean mm_bearer_get_connected (MMBearer *self); gboolean mm_bearer_get_suspended (MMBearer *self); +gboolean mm_bearer_get_multiplexed (MMBearer *self); + guint mm_bearer_get_ip_timeout (MMBearer *self); MMBearerType mm_bearer_get_bearer_type (MMBearer *self); diff --git a/src/mm-base-bearer.c b/src/mm-base-bearer.c index 163f0bd7..8bba9bc6 100644 --- a/src/mm-base-bearer.c +++ b/src/mm-base-bearer.c @@ -410,6 +410,7 @@ bearer_stats_start (MMBaseBearer *self) static void bearer_reset_interface_status (MMBaseBearer *self) { + mm_gdbus_bearer_set_multiplexed (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_connected (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_suspended (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_interface (MM_GDBUS_BEARER (self), NULL); @@ -465,11 +466,13 @@ bearer_update_status (MMBaseBearer *self, } static void -bearer_update_status_connected (MMBaseBearer *self, - const gchar *interface, +bearer_update_status_connected (MMBaseBearer *self, + const gchar *interface, + gboolean multiplexed, MMBearerIpConfig *ipv4_config, MMBearerIpConfig *ipv6_config) { + mm_gdbus_bearer_set_multiplexed (MM_GDBUS_BEARER (self), multiplexed); mm_gdbus_bearer_set_connected (MM_GDBUS_BEARER (self), TRUE); mm_gdbus_bearer_set_suspended (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_interface (MM_GDBUS_BEARER (self), interface); @@ -830,6 +833,7 @@ connect_ready (MMBaseBearer *self, bearer_update_status_connected ( self, mm_port_get_device (mm_bearer_connect_result_peek_data (result)), + mm_bearer_connect_result_get_multiplexed (result), mm_bearer_connect_result_peek_ipv4_config (result), mm_bearer_connect_result_peek_ipv6_config (result)); mm_bearer_connect_result_unref (result); @@ -1535,6 +1539,7 @@ mm_base_bearer_init (MMBaseBearer *self) /* Set defaults */ mm_gdbus_bearer_set_interface (MM_GDBUS_BEARER (self), NULL); + mm_gdbus_bearer_set_multiplexed (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_connected (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_suspended (MM_GDBUS_BEARER (self), FALSE); mm_gdbus_bearer_set_properties (MM_GDBUS_BEARER (self), NULL); @@ -1656,10 +1661,11 @@ mm_base_bearer_class_init (MMBaseBearerClass *klass) /* Helpers to implement connect() */ struct _MMBearerConnectResult { - volatile gint ref_count; - MMPort *data; + volatile gint ref_count; + MMPort *data; MMBearerIpConfig *ipv4_config; MMBearerIpConfig *ipv6_config; + gboolean multiplexed; }; MMBearerConnectResult * @@ -1701,8 +1707,21 @@ mm_bearer_connect_result_peek_ipv6_config (MMBearerConnectResult *result) return result->ipv6_config; } +void +mm_bearer_connect_result_set_multiplexed (MMBearerConnectResult *result, + gboolean multiplexed) +{ + result->multiplexed = multiplexed; +} + +gboolean +mm_bearer_connect_result_get_multiplexed (MMBearerConnectResult *result) +{ + return result->multiplexed; +} + MMBearerConnectResult * -mm_bearer_connect_result_new (MMPort *data, +mm_bearer_connect_result_new (MMPort *data, MMBearerIpConfig *ipv4_config, MMBearerIpConfig *ipv6_config) { @@ -1718,5 +1737,6 @@ mm_bearer_connect_result_new (MMPort *data, result->ipv4_config = g_object_ref (ipv4_config); if (ipv6_config) result->ipv6_config = g_object_ref (ipv6_config); + result->multiplexed = FALSE; /* default */ return result; } diff --git a/src/mm-base-bearer.h b/src/mm-base-bearer.h index 1c1f96ea..73a65067 100644 --- a/src/mm-base-bearer.h +++ b/src/mm-base-bearer.h @@ -41,6 +41,11 @@ MMPort *mm_bearer_connect_result_peek_data (MMBearerConnec MMBearerIpConfig *mm_bearer_connect_result_peek_ipv4_config (MMBearerConnectResult *result); MMBearerIpConfig *mm_bearer_connect_result_peek_ipv6_config (MMBearerConnectResult *result); +/* by default, if none specified, multiplexed=FALSE */ +void mm_bearer_connect_result_set_multiplexed (MMBearerConnectResult *result, + gboolean multiplexed); +gboolean mm_bearer_connect_result_get_multiplexed (MMBearerConnectResult *result); + /*****************************************************************************/ /* Default timeout values to be used in the steps of a connection or |