summaryrefslogtreecommitdiff
path: root/src/mbimcli
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-10-08 22:23:03 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-10-12 22:27:12 +0200
commit9506fd86267dabe0e6bdad44c5e82576ce2bfd0b (patch)
treea6d16cd3e300224e80cde9ac99508b9e4332607b /src/mbimcli
parent2bb3cc67418eb53f90b97c810b32477ac89202ea (diff)
downloadlibmbim-9506fd86267dabe0e6bdad44c5e82576ce2bfd0b.tar.gz
ms-basic-connect-v3: switch 'Basic Connect' to use MbimTlvs
The logic is updated to avoid requiring intermediate structs in the API; for the string TLVs that are included as named fields we'll use the 'tlv-string' types. We also add support for the unnamed IEs as 'tlv-list' fields at the end of the messages.
Diffstat (limited to 'src/mbimcli')
-rw-r--r--src/mbimcli/mbimcli-basic-connect.c52
1 files changed, 21 insertions, 31 deletions
diff --git a/src/mbimcli/mbimcli-basic-connect.c b/src/mbimcli/mbimcli-basic-connect.c
index 0116411..11b844d 100644
--- a/src/mbimcli/mbimcli-basic-connect.c
+++ b/src/mbimcli/mbimcli-basic-connect.c
@@ -886,8 +886,8 @@ connect_ready (MbimDevice *device,
MbimActivationState activation_state;
MbimVoiceCallState voice_call_state;
MbimContextIpType ip_type;
- MbimAccessMediaType media_type;
- MbimConnectAccessString *access_string;
+ MbimAccessMediaType media_type = MBIM_ACCESS_MEDIA_TYPE_UNKNOWN;
+ g_autofree gchar *access_string = NULL;
const MbimUuid *context_type;
guint32 nw_error;
@@ -909,6 +909,7 @@ connect_ready (MbimDevice *device,
&nw_error,
&media_type,
&access_string,
+ NULL, /* unnamed IEs ignored */
&error)) {
g_printerr ("error: couldn't parse response message: %s\n", error->message);
shutdown (FALSE);
@@ -962,7 +963,7 @@ connect_ready (MbimDevice *device,
g_print ("\tAccess media type: '%s'\n"
"\t Access string: '%s'\n",
VALIDATE_UNKNOWN (mbim_access_media_type_get_string (media_type)),
- access_string->data);
+ access_string);
}
if (GPOINTER_TO_UINT (user_data) == CONNECT) {
@@ -2236,39 +2237,27 @@ mbimcli_basic_connect_run (MbimDevice *device,
.compression = MBIM_COMPRESSION_NONE,
.context_type = MBIM_CONTEXT_TYPE_INTERNET,
.media_type = MBIM_ACCESS_MEDIA_TYPE_UNKNOWN,
- };
- MbimConnectAccessString *access_string_v3 = NULL;
- MbimConnectUserName *username_v3 = NULL;
- MbimConnectPassword *password_v3 = NULL;
+ };
if (!set_connect_activate_parse (set_connect_activate_str, &props, device)) {
shutdown (FALSE);
return;
}
- if (mbim_device_check_ms_mbimex_version (device, 3, 0)) {
- access_string_v3 = g_new0 (MbimConnectAccessString, 1);
- username_v3 = g_new0 (MbimConnectUserName, 1);
- password_v3 = g_new0 (MbimConnectPassword, 1);
- access_string_v3->type = 10;
- username_v3->type = 10;
- password_v3->type = 10;
- access_string_v3->data = props.access_string;
- username_v3->data = props.username;
- password_v3->data = props.password;
- g_debug ("acstr %s, username %s, password %s, media %s, auth %s", access_string_v3->data, username_v3->data, password_v3->data, mbim_access_media_type_get_string(props.media_type), mbim_auth_protocol_get_string(props.auth_protocol));
- request = mbim_message_ms_basic_connect_v3_connect_set_new (props.session_id,
- MBIM_ACTIVATION_COMMAND_ACTIVATE,
- props.compression,
- props.auth_protocol,
- props.ip_type,
- mbim_uuid_from_context_type (props.context_type),
- props.media_type,
- access_string_v3,
- username_v3,
- password_v3,
- &error);
- } else {
+ if (mbim_device_check_ms_mbimex_version (device, 3, 0)) {
+ request = mbim_message_ms_basic_connect_v3_connect_set_new (props.session_id,
+ MBIM_ACTIVATION_COMMAND_ACTIVATE,
+ props.compression,
+ props.auth_protocol,
+ props.ip_type,
+ mbim_uuid_from_context_type (props.context_type),
+ props.media_type,
+ props.access_string,
+ props.username,
+ props.password,
+ NULL, /* unnamed IEs */
+ &error);
+ } else {
request = mbim_message_connect_set_new (props.session_id,
MBIM_ACTIVATION_COMMAND_ACTIVATE,
props.access_string,
@@ -2279,7 +2268,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
props.ip_type,
mbim_uuid_from_context_type (props.context_type),
&error);
- }
+ }
if (!request) {
g_printerr ("error: couldn't create request: %s\n", error->message);
@@ -2331,6 +2320,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
NULL,
NULL,
NULL,
+ NULL,
&error);
} else {
request = mbim_message_connect_set_new (session_id,