[PATCH v2] mbimcli: add "ip-type" property to --connect

Dan Williams dcbw at redhat.com
Tue Jan 23 19:09:00 UTC 2018


On Tue, 2018-01-23 at 19:05 +0100, Aleksander Morgado wrote:
> On Tue, Jan 23, 2018 at 6:30 PM, Dan Williams <dcbw at redhat.com>
> wrote:
> > ---
> > * v2: update help text (and thus manpages)
> > 
> >  src/mbimcli/mbimcli-basic-connect.c | 64
> > ++++++++++++++++++++++++++++---------
> >  1 file changed, 49 insertions(+), 15 deletions(-)
> > 
> 
> LGTM

Thanks, pushed to git master and 1-16.

Dan

> > diff --git a/src/mbimcli/mbimcli-basic-connect.c
> > b/src/mbimcli/mbimcli-basic-connect.c
> > index b27e179..3b0d5ef 100644
> > --- a/src/mbimcli/mbimcli-basic-connect.c
> > +++ b/src/mbimcli/mbimcli-basic-connect.c
> > @@ -181,7 +181,7 @@ static GOptionEntry entries[] = {
> >        "[SessionID]"
> >      },
> >      { "connect", 0, 0, G_OPTION_ARG_STRING,
> > &set_connect_activate_str,
> > -      "Connect (allowed keys: session-id, apn, auth
> > (PAP|CHAP|MSCHAPV2), username, password)",
> > +      "Connect (allowed keys: session-id, apn, ip-type
> > (ipv4|ipv6|ipv4v6), auth (PAP|CHAP|MSCHAPV2), username, password)",
> >        "[\"key=value,...\"]"
> >      },
> >      { "query-ip-configuration", 0, G_OPTION_FLAG_OPTIONAL_ARG,
> > G_OPTION_ARG_CALLBACK, G_CALLBACK
> > (query_ip_configuration_arg_parse),
> > @@ -1054,6 +1054,24 @@ mbim_auth_protocol_from_string (const
> > gchar      *str,
> >      return FALSE;
> >  }
> > 
> > +static gboolean
> > +mbim_context_ip_type_from_string (const gchar       *str,
> > +                                  MbimContextIpType *ip_type)
> > +{
> > +    if (g_ascii_strcasecmp (str, "ipv4") == 0) {
> > +        *ip_type = MBIM_CONTEXT_IP_TYPE_IPV4;
> > +        return TRUE;
> > +    } else if (g_ascii_strcasecmp (str, "ipv6") == 0) {
> > +        *ip_type = MBIM_CONTEXT_IP_TYPE_IPV6;
> > +        return TRUE;
> > +    } else if (g_ascii_strcasecmp (str, "ipv4v6") == 0) {
> > +        *ip_type = MBIM_CONTEXT_IP_TYPE_IPV4V6;
> > +        return TRUE;
> > +    }
> > +
> > +    return FALSE;
> > +}
> > +
> >  static gboolean
> >  connect_session_id_parse (const gchar  *str,
> >                            gboolean      allow_empty,
> > @@ -1094,11 +1112,12 @@ connect_session_id_parse (const
> > gchar  *str,
> >  }
> > 
> >  typedef struct {
> > -    guint32           session_id;
> > -    gchar            *apn;
> > -    MbimAuthProtocol  auth_protocol;
> > -    gchar            *username;
> > -    gchar            *password;
> > +    guint32            session_id;
> > +    gchar             *apn;
> > +    MbimAuthProtocol   auth_protocol;
> > +    gchar             *username;
> > +    gchar             *password;
> > +    MbimContextIpType  ip_type;
> >  } ConnectActivateProperties;
> > 
> >  static gboolean connect_activate_properties_handle (const
> > gchar  *key,
> > @@ -1136,6 +1155,15 @@ static gboolean
> > connect_activate_properties_handle (const gchar  *key,
> >          props->username = g_strdup (value);
> >      } else if (g_ascii_strcasecmp (key, "password") == 0 &&
> > !props->password) {
> >          props->password = g_strdup (value);
> > +    } else if (g_ascii_strcasecmp (key, "ip-type") == 0) {
> > +        if (!mbim_context_ip_type_from_string (value, &props-
> > >ip_type)) {
> > +            g_set_error (error,
> > +                         MBIM_CORE_ERROR,
> > +                         MBIM_CORE_ERROR_FAILED,
> > +                         "unknown ip type '%s'",
> > +                         value);
> > +            return FALSE;
> > +        }
> >      } else {
> >              g_set_error (error,
> >                           MBIM_CORE_ERROR,
> > @@ -1149,19 +1177,21 @@ static gboolean
> > connect_activate_properties_handle (const gchar  *key,
> >  }
> > 
> >  static gboolean
> > -set_connect_activate_parse (const gchar       *str,
> > -                            guint32           *session_id,
> > -                            gchar            **apn,
> > -                            MbimAuthProtocol  *auth_protocol,
> > -                            gchar            **username,
> > -                            gchar            **password)
> > +set_connect_activate_parse (const gchar        *str,
> > +                            guint32            *session_id,
> > +                            gchar             **apn,
> > +                            MbimAuthProtocol   *auth_protocol,
> > +                            gchar             **username,
> > +                            gchar             **password,
> > +                            MbimContextIpType  *ip_type)
> >  {
> >      ConnectActivateProperties props = {
> >          .session_id    = 0,
> >          .apn           = NULL,
> >          .auth_protocol = MBIM_AUTH_PROTOCOL_NONE,
> >          .username      = NULL,
> > -        .password      = NULL
> > +        .password      = NULL,
> > +        .ip_type       = MBIM_CONTEXT_IP_TYPE_DEFAULT
> >      };
> >      gchar **split = NULL;
> > 
> > @@ -1170,6 +1200,7 @@ set_connect_activate_parse (const
> > gchar       *str,
> >      g_assert (auth_protocol != NULL);
> >      g_assert (username != NULL);
> >      g_assert (password != NULL);
> > +    g_assert (ip_type != NULL);
> > 
> >      if (strchr (str, '=')) {
> >          GError *error = NULL;
> > @@ -1231,6 +1262,7 @@ set_connect_activate_parse (const
> > gchar       *str,
> >      *auth_protocol = props.auth_protocol;
> >      *username = props.username;
> >      *password = props.password;
> > +    *ip_type = props.ip_type;
> > 
> >      if (split)
> >          g_strfreev (split);
> > @@ -2139,13 +2171,15 @@ mbimcli_basic_connect_run
> > (MbimDevice   *device,
> >          MbimAuthProtocol auth_protocol;
> >          gchar *username = NULL;
> >          gchar *password = NULL;
> > +        MbimContextIpType ip_type = MBIM_CONTEXT_IP_TYPE_DEFAULT;
> > 
> >          if (!set_connect_activate_parse (set_connect_activate_str,
> >                                           &session_id,
> >                                           &apn,
> >                                           &auth_protocol,
> >                                           &username,
> > -                                         &password)) {
> > +                                         &password,
> > +                                         &ip_type)) {
> >              shutdown (FALSE);
> >              return;
> >          }
> > @@ -2157,7 +2191,7 @@ mbimcli_basic_connect_run
> > (MbimDevice   *device,
> >                                                  password,
> >                                                  MBIM_COMPRESSION_N
> > ONE,
> >                                                  auth_protocol,
> > -                                                MBIM_CONTEXT_IP_TY
> > PE_DEFAULT,
> > +                                                ip_type,
> >                                                  mbim_uuid_from_con
> > text_type (MBIM_CONTEXT_TYPE_INTERNET),
> >                                                  &error);
> >          g_free (apn);
> > --
> > 2.14.3
> > _______________________________________________
> > libmbim-devel mailing list
> > libmbim-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/libmbim-devel
> 
> 
> 


More information about the libmbim-devel mailing list