summaryrefslogtreecommitdiff
path: root/src/mm-base-bearer.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-02-25 20:41:28 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-03-10 10:59:22 +0100
commit73db7f205c3326492648f6ebedb8d07b959a6e55 (patch)
treefb3def8277962d7124d4bb2a070b0a8160459cae /src/mm-base-bearer.c
parent05b9ab7c25bf252e43037ed0ea002b0aed6f051b (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.
Diffstat (limited to 'src/mm-base-bearer.c')
-rw-r--r--src/mm-base-bearer.c30
1 files changed, 25 insertions, 5 deletions
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;
}