aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/mmcli-bearer.c31
-rw-r--r--cli/mmcli-modem.c150
2 files changed, 39 insertions, 142 deletions
diff --git a/cli/mmcli-bearer.c b/cli/mmcli-bearer.c
index 9330ea2c..4015de39 100644
--- a/cli/mmcli-bearer.c
+++ b/cli/mmcli-bearer.c
@@ -139,7 +139,7 @@ print_bearer_info (MMBearer *bearer)
{
const MMBearerIpConfig *ipv4_config;
const MMBearerIpConfig *ipv6_config;
- const MMBearerProperties *properties;
+ MMBearerProperties *properties;
ipv4_config = mm_bearer_get_ipv4_config (bearer);
ipv6_config = mm_bearer_get_ipv6_config (bearer);
@@ -162,19 +162,22 @@ print_bearer_info (MMBearer *bearer)
mm_bearer_get_suspended (bearer) ? "yes" : "no",
VALIDATE_UNKNOWN (mm_bearer_get_interface (bearer)));
- g_print (" -------------------------\n"
- " Properties | apn: '%s'\n"
- " | roaming: '%s'\n"
- " | IP type: '%s'\n"
- " | user: '%s'\n"
- " | password: '%s'\n"
- " | number: '%s'\n",
- VALIDATE_NONE (mm_bearer_properties_get_apn (properties)),
- mm_bearer_properties_get_allow_roaming (properties) ? "allowed" : "forbidden",
- VALIDATE_NONE (mm_bearer_properties_get_ip_type (properties)),
- VALIDATE_NONE (mm_bearer_properties_get_user (properties)),
- VALIDATE_NONE (mm_bearer_properties_get_password (properties)),
- VALIDATE_NONE (mm_bearer_properties_get_number (properties)));
+ if (properties) {
+ g_print (" -------------------------\n"
+ " Properties | apn: '%s'\n"
+ " | roaming: '%s'\n"
+ " | IP type: '%s'\n"
+ " | user: '%s'\n"
+ " | password: '%s'\n"
+ " | number: '%s'\n",
+ VALIDATE_NONE (mm_bearer_properties_get_apn (properties)),
+ mm_bearer_properties_get_allow_roaming (properties) ? "allowed" : "forbidden",
+ VALIDATE_NONE (mm_bearer_properties_get_ip_type (properties)),
+ VALIDATE_NONE (mm_bearer_properties_get_user (properties)),
+ VALIDATE_NONE (mm_bearer_properties_get_password (properties)),
+ VALIDATE_NONE (mm_bearer_properties_get_number (properties)));
+ g_object_unref (properties);
+ }
/* IPv4 */
g_print (" -------------------------\n"
diff --git a/cli/mmcli-modem.c b/cli/mmcli-modem.c
index ce1b8191..9b05a807 100644
--- a/cli/mmcli-modem.c
+++ b/cli/mmcli-modem.c
@@ -528,77 +528,6 @@ create_bearer_ready (MMModem *modem,
}
static void
-create_bearer_parse_known_input (const gchar *input,
- gchar **apn,
- gchar **ip_type,
- gboolean *allow_roaming,
- gchar **user,
- gchar **password,
- gchar **number)
-{
- gchar **words;
- gchar *key;
- gchar *value;
- guint i;
-
- /* Expecting input as:
- * key1=string,key2=true,key3=false...
- * */
-
- words = g_strsplit_set (input, ",= ", -1);
- if (!words)
- return;
-
- i = 0;
- key = words[i];
- while (key) {
- value = words[++i];
- if (!value) {
- g_printerr ("error: invalid properties string, no value for key '%s'\n", key);
- exit (EXIT_FAILURE);
- }
-
- if (g_str_equal (key, MM_BEARER_PROPERTY_APN)) {
- g_debug ("APN: %s", value);
- *apn = value;
- } else if (g_str_equal (key, MM_BEARER_PROPERTY_IP_TYPE)) {
- g_debug ("IP type: %s", value);
- *ip_type = value;
- } else if (g_str_equal (key, MM_BEARER_PROPERTY_ALLOW_ROAMING)) {
- if (!g_ascii_strcasecmp (value, "true") ||
- g_str_equal (value, "1")) {
- g_debug ("Roaming: allowed");
- *allow_roaming = TRUE;
- } else if (!g_ascii_strcasecmp (value, "false") ||
- g_str_equal (value, "0")) {
- g_debug ("Roaming: forbidden");
- *allow_roaming = FALSE;
- } else
- g_printerr ("error: invalid value '%s' for boolean property '%s'",
- value, key);
- g_free (value);
- } else if (g_str_equal (key, MM_BEARER_PROPERTY_USER)) {
- g_debug ("User: %s", value);
- *user = value;
- } else if (g_str_equal (key, MM_BEARER_PROPERTY_PASSWORD)) {
- g_debug ("Password: %s", value);
- *password = value;
- } else if (g_str_equal (key, MM_BEARER_PROPERTY_NUMBER)) {
- g_debug ("Number: %s", value);
- *number = value;
- } else {
- g_printerr ("error: invalid key '%s' in properties string", key);
- g_free (value);
- }
-
- g_free (key);
- key = words[++i];
- }
-
- g_free (words);
-}
-
-static void
delete_bearer_process_reply (gboolean result,
const GError *error)
{
@@ -726,39 +655,22 @@ get_modem_ready (GObject *source,
/* Request to create a new bearer? */
if (create_bearer_str) {
- gchar *apn = NULL;
- gchar *ip_type = NULL;
- gchar *user = NULL;
- gchar *password = NULL;
- gchar *number = NULL;
- gboolean allow_roaming = TRUE;
-
- create_bearer_parse_known_input (create_bearer_str,
- &apn,
- &ip_type,
- &allow_roaming,
- &user,
- &password,
- &number);
+ GError *error = NULL;
+ MMBearerProperties *properties;
+
+ properties = mm_bearer_properties_new_from_string (create_bearer_str, &error);
+ if (!properties) {
+ g_printerr ("Error parsing properties string: '%s'", error->message);
+ exit (EXIT_FAILURE);
+ }
g_debug ("Asynchronously creating new bearer in modem...");
mm_modem_create_bearer (ctx->modem,
+ properties,
ctx->cancellable,
(GAsyncReadyCallback)create_bearer_ready,
- NULL,
- MM_BEARER_PROPERTY_APN, apn,
- MM_BEARER_PROPERTY_IP_TYPE, ip_type,
- MM_BEARER_PROPERTY_USER, user,
- MM_BEARER_PROPERTY_PASSWORD, password,
- MM_BEARER_PROPERTY_NUMBER, number,
- MM_BEARER_PROPERTY_ALLOW_ROAMING, allow_roaming,
NULL);
-
- g_free (apn);
- g_free (ip_type);
- g_free (user);
- g_free (password);
- g_free (number);
+ g_object_unref (properties);
return;
}
@@ -870,40 +782,22 @@ mmcli_modem_run_synchronous (GDBusConnection *connection)
/* Request to create a new bearer? */
if (create_bearer_str) {
- gchar *apn = NULL;
- gchar *ip_type = NULL;
- gchar *user = NULL;
- gchar *password = NULL;
- gchar *number = NULL;
- gboolean allow_roaming = TRUE;
MMBearer *bearer;
+ GError *error = NULL;
+ MMBearerProperties *properties;
- create_bearer_parse_known_input (create_bearer_str,
- &apn,
- &ip_type,
- &allow_roaming,
- &user,
- &password,
- &number);
+ properties = mm_bearer_properties_new_from_string (create_bearer_str, &error);
+ if (!properties) {
+ g_printerr ("Error parsing properties string: '%s'", error->message);
+ exit (EXIT_FAILURE);
+ }
g_debug ("Synchronously creating new bearer in modem...");
- bearer = mm_modem_create_bearer_sync (
- ctx->modem,
- NULL,
- &error,
- MM_BEARER_PROPERTY_APN, apn,
- MM_BEARER_PROPERTY_IP_TYPE, ip_type,
- MM_BEARER_PROPERTY_USER, user,
- MM_BEARER_PROPERTY_PASSWORD, password,
- MM_BEARER_PROPERTY_NUMBER, number,
- MM_BEARER_PROPERTY_ALLOW_ROAMING, allow_roaming,
- NULL);
-
- g_free (apn);
- g_free (ip_type);
- g_free (user);
- g_free (password);
- g_free (number);
+ bearer = mm_modem_create_bearer_sync (ctx->modem,
+ properties,
+ NULL,
+ &error);
+ g_object_unref (properties);
create_bearer_process_reply (bearer, error);
return;