diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-11-14 18:00:38 +0100 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-12-07 16:20:53 +0000 |
commit | 48ba504f4e7e59cde380954fba84a790d34eaef4 (patch) | |
tree | b8ce05110de32c9b73ddb8f7ab0fb1c5107dcdee /src/mm-modem-helpers-mbim.c | |
parent | d6e2c69129900f50dd8c0ed6cb9a7a17c141a85e (diff) |
helpers-mbim: new method to convert IP type settings to/from MM
Diffstat (limited to 'src/mm-modem-helpers-mbim.c')
-rw-r--r-- | src/mm-modem-helpers-mbim.c | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c index fd5948bb..2e196c10 100644 --- a/src/mm-modem-helpers-mbim.c +++ b/src/mm-modem-helpers-mbim.c @@ -357,7 +357,7 @@ mm_bearer_allowed_auth_to_mbim_auth_protocol (MMBearerAllowedAuth bearer_auth, g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED, - "No match for the requested authentication methods (%s)", + "Unsupported authentication methods (%s)", str); g_free (str); return MBIM_AUTH_PROTOCOL_NONE; @@ -365,6 +365,60 @@ mm_bearer_allowed_auth_to_mbim_auth_protocol (MMBearerAllowedAuth bearer_auth, /*****************************************************************************/ +MMBearerIpFamily +mm_bearer_ip_family_from_mbim_context_ip_type (MbimContextIpType ip_type) +{ + switch (ip_type) { + case MBIM_CONTEXT_IP_TYPE_IPV4: + return MM_BEARER_IP_FAMILY_IPV4; + case MBIM_CONTEXT_IP_TYPE_IPV6: + return MM_BEARER_IP_FAMILY_IPV6; + case MBIM_CONTEXT_IP_TYPE_IPV4V6: + return MM_BEARER_IP_FAMILY_IPV4V6; + case MBIM_CONTEXT_IP_TYPE_IPV4_AND_IPV6: + return MM_BEARER_IP_FAMILY_IPV4 | MM_BEARER_IP_FAMILY_IPV6; + default: + return MM_BEARER_IP_FAMILY_NONE; + } +} + +MbimContextIpType +mm_bearer_ip_family_to_mbim_context_ip_type (MMBearerIpFamily ip_family, + GError **error) +{ + gchar *str; + + /* NOTE: the input is a BITMASK, so we try to find a "best match" */ + + switch ((guint)ip_family) { + case MM_BEARER_IP_FAMILY_IPV4: + return MBIM_CONTEXT_IP_TYPE_IPV4; + case MM_BEARER_IP_FAMILY_IPV6: + return MBIM_CONTEXT_IP_TYPE_IPV6; + case MM_BEARER_IP_FAMILY_IPV4V6: + return MBIM_CONTEXT_IP_TYPE_IPV4V6; + case (MM_BEARER_IP_FAMILY_IPV4 | MM_BEARER_IP_FAMILY_IPV6): + return MBIM_CONTEXT_IP_TYPE_IPV4_AND_IPV6; + case MM_BEARER_IP_FAMILY_NONE: + case MM_BEARER_IP_FAMILY_ANY: + /* A valid default IP family should have been specified */ + g_assert_not_reached (); + default: + break; + } + + str = mm_bearer_ip_family_build_string_from_mask (ip_family); + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_UNSUPPORTED, + "Unsupported IP type configuration: '%s'", + str); + g_free (str); + return MBIM_CONTEXT_IP_TYPE_DEFAULT; +} + +/*****************************************************************************/ + MMSmsState mm_sms_state_from_mbim_message_status (MbimSmsStatus status) { |