api,bearer: new 'profile-id' setting

We define a new 'profile-id' setting in the bearer properties that
users will use to specify which connection profile of the ones
available in the device should be connected.

When the 'profile-id' is given, the associated bearer object will be
bound to the 'profile-id', and the user is able to provide additional
settings to apply on top (e.g. if the profile storage doesn't allow
some of the settings we support, like 'apn-type', or if the setting is
completely unrelated to profiles, like 'multiplex').

After introducing the 'profile-id' as a valid setting in the bearer
properties, we also reimplement the properties object internals to
make use a 3GPP profile for the subset of common settings between both
objects.
This commit is contained in:
Aleksander Morgado
2021-04-29 10:13:22 +00:00
parent e2789b18a1
commit 793370f2f8
10 changed files with 257 additions and 206 deletions
+11 -3
View File
@@ -162,12 +162,19 @@ print_bearer_info (MMBearer *bearer)
const gchar *password = NULL;
const gchar *rm_protocol = NULL;
gchar *allowed_auth_str = NULL;
gchar *properties_profile_id_str = NULL;
if (properties) {
gint properties_profile_id;
properties_profile_id = mm_bearer_properties_get_profile_id (properties);
if (properties_profile_id != MM_3GPP_PROFILE_ID_UNKNOWN)
properties_profile_id_str = g_strdup_printf ("%d", properties_profile_id);
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);
apn_type_str = mm_bearer_apn_type_build_string_from_mask (mm_bearer_properties_get_apn_type (properties));
ip_family_str = mm_bearer_ip_family_build_string_from_mask (mm_bearer_properties_get_ip_type (properties));
allowed_auth_str = mm_bearer_allowed_auth_build_string_from_mask (mm_bearer_properties_get_allowed_auth (properties));
user = mm_bearer_properties_get_user (properties);
password = mm_bearer_properties_get_password (properties);
if (mm_bearer_get_bearer_type (bearer) != MM_BEARER_TYPE_DEFAULT_ATTACH) {
@@ -176,6 +183,7 @@ print_bearer_info (MMBearer *bearer)
}
}
mmcli_output_string_take (MMC_F_BEARER_PROPERTIES_PROFILE_ID, properties_profile_id_str);
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);
+1
View File
@@ -218,6 +218,7 @@ static FieldInfo field_infos[] = {
[MMC_F_BEARER_PROPERTIES_ALLOWED_AUTH] = { "bearer.properties.allowed-auth", "allowed-auth", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_USER] = { "bearer.properties.user", "user", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_PASSWORD] = { "bearer.properties.password", "password", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_PROFILE_ID] = { "bearer.properties.profile-id", "profile id", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_NUMBER] = { "bearer.properties.number", "number", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_RM_PROTOCOL] = { "bearer.properties.rm-protocol", "rm protocol", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_IPV4_CONFIG_METHOD] = { "bearer.ipv4-config.method", "method", MMC_S_BEARER_IPV4_CONFIG, },
+1
View File
@@ -235,6 +235,7 @@ typedef enum {
MMC_F_BEARER_PROPERTIES_ALLOWED_AUTH,
MMC_F_BEARER_PROPERTIES_USER,
MMC_F_BEARER_PROPERTIES_PASSWORD,
MMC_F_BEARER_PROPERTIES_PROFILE_ID,
MMC_F_BEARER_PROPERTIES_NUMBER,
MMC_F_BEARER_PROPERTIES_RM_PROTOCOL,
MMC_F_BEARER_IPV4_CONFIG_METHOD,