plugins/provisioning and mbpi: support for auth NONE
PATCH 4/6 plugins/provisioning and mbpi: support for auth NONE
support of 'none' in file-provisioning and in mbpi. The default authentication method is set to 'none'.
--- plugins/file-provision.c | 6 +++++- plugins/mbpi.c | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-)
plugins/file-provision.c +5 -1
@@ -97,14 +97,18 @@ static int config_file_provision_get_settings(const char *mcc, value =g_key_file_get_string (key_file, setting_group,"internet.AuthenticationMethod" ,NULL ); +/* select default authentication method */ + (*settings)[0 ].auth_method =OFONO_GPRS_AUTH_METHOD_NONE ; +if (value !=NULL ) { +if (g_strcmp0 (value,"chap" ) ==0 ) (*settings)[0 ].auth_method =OFONO_GPRS_AUTH_METHOD_CHAP ;else if (g_strcmp0 (value,"pap" ) ==0 ) (*settings)[0 ].auth_method =OFONO_GPRS_AUTH_METHOD_PAP ; -else +else if (g_strcmp0 (value,"none" ) !=0 )DBG ("Unknown auth method: %s" , value);g_free (value);
plugins/mbpi.c +4 -1
@@ -148,11 +148,14 @@ static void authentication_start(GMarkupParseContext *context,return ; } +/* select default authentication method */ + *auth_method =OFONO_GPRS_AUTH_METHOD_NONE ; +if (strcmp (text,"chap" ) ==0 ) *auth_method =OFONO_GPRS_AUTH_METHOD_CHAP ;else if (strcmp (text,"pap" ) ==0 ) *auth_method =OFONO_GPRS_AUTH_METHOD_PAP ; -else +else if (strcmp (text,"none" ) !=0 ) mbpi_g_set_error(context, error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, "Unknown authentication method: %s",
Signature · 1 line
2.17.1
PATCH 6/6 drivers: support for auth NONE
Added the explicit support for auth NONE.
It needs to be added in all drivers/*/gprs-context.c atoms.
This method is already supported by all atoms that support authentication (ie, all but Sierra' swmodem driver).
The behavior is left unchanged in case of inconsistent parameters:
if username is empty, then fallback to auth NONE.
--- drivers/atmodem/gprs-context.c | 18 ++++++++++++++---- drivers/ifxmodem/gprs-context.c | 10 ++++++++-- drivers/isimodem/gprs-context.c | 14 +++++++++----- drivers/mbimmodem/gprs-context.c | 16 +++++++++++++--- drivers/mbmmodem/gprs-context.c | 11 ++++++----- drivers/qmimodem/gprs-context.c | 13 +++++++++---- drivers/rilmodem/gprs-context.c | 13 +++++++++---- drivers/stemodem/gprs-context.c | 9 +++++---- drivers/telitmodem/gprs-context-ncm.c | 10 ++++++++-- drivers/ubloxmodem/gprs-context.c | 7 ++++--- 10 files changed, 85 insertions(+), 36 deletions(-)
drivers/atmodem/gprs-context.c +14 -4
@@ -158,7 +158,10 @@ static gboolean setup_ppp(struct ofono_gprs_context *gc)g_at_ppp_set_debug (gcd->ppp, ppp_debug,"PPP" );g_at_ppp_set_auth_method (gcd->ppp, gcd->auth_method); -g_at_ppp_set_credentials (gcd->ppp, gcd->username, gcd->password); + +if (gcd->auth_method !=G_AT_PPP_AUTH_METHOD_NONE ) +g_at_ppp_set_credentials (gcd->ppp, gcd->username, + gcd->password);/* set connect and disconnect callbacks */ g_at_ppp_set_connect_function (gcd->ppp, ppp_connect, gc);
@@ -247,7 +250,7 @@ static void at_gprs_activate_primary(struct ofono_gprs_context *gc,memcpy (gcd->username, ctx->username,sizeof (ctx->username));memcpy (gcd->password, ctx->password,sizeof (ctx->password)); -/* We only support CHAP and PAP */ +/* We support CHAP, PAP and NONE */ switch (ctx->auth_method) {case OFONO_GPRS_AUTH_METHOD_CHAP : gcd->auth_method =G_AT_PPP_AUTH_METHOD_CHAP ;
@@ -255,8 +258,11 @@ static void at_gprs_activate_primary(struct ofono_gprs_context *gc,case OFONO_GPRS_AUTH_METHOD_PAP : gcd->auth_method =G_AT_PPP_AUTH_METHOD_PAP ;break ; -default : - goto error; +case OFONO_GPRS_AUTH_METHOD_NONE : + gcd->auth_method =G_AT_PPP_AUTH_METHOD_NONE ; + gcd->username[0 ] =0 ; + gcd->password[0 ] =0 ; +break ; } gcd->state =STATE_ENABLING ;
@@ -304,6 +310,10 @@ static void at_gprs_activate_primary(struct ofono_gprs_context *gc,snprintf (buf + len,sizeof (buf) - len -3 ,",\"PAP:%s\"" , ctx->apn);break ; +case OFONO_GPRS_AUTH_METHOD_NONE : +snprintf (buf + len,sizeof (buf) - len -3 , +",\"%s\"" , ctx->apn); +break ; }break ;default :
drivers/ifxmodem/gprs-context.c +8 -2
@@ -466,8 +466,14 @@ static void ifx_gprs_activate_primary(struct ofono_gprs_context *gc, gcd->active_context = ctx->cid; gcd->cb = cb; gcd->cb_data = data; -memcpy (gcd->username, ctx->username,sizeof (ctx->username)); -memcpy (gcd->password, ctx->password,sizeof (ctx->password)); + +if (ctx->auth_method ==OFONO_GPRS_AUTH_METHOD_NONE ) { +memset (gcd->username,0 ,sizeof (gcd->username)); +memset (gcd->password,0 ,sizeof (gcd->password)); + }else { +memcpy (gcd->username, ctx->username,sizeof (ctx->username)); +memcpy (gcd->password, ctx->password,sizeof (ctx->password)); + } gcd->state =STATE_ENABLING ; gcd->proto = ctx->proto;
drivers/isimodem/gprs-context.c +9 -5
@@ -538,11 +538,15 @@ static void isi_gprs_activate_primary(struct ofono_gprs_context *gc,strncpy (cd->apn, ctx->apn,GPDS_MAX_APN_STRING_LENGTH ); cd->apn[GPDS_MAX_APN_STRING_LENGTH ] ='\0' ; -strncpy (cd->username, ctx->username,GPDS_MAX_USERNAME_LENGTH ); - cd->username[GPDS_MAX_USERNAME_LENGTH ] ='\0' ; - -strncpy (cd->password, ctx->password,GPDS_MAX_PASSWORD_LENGTH ); - cd->username[GPDS_MAX_PASSWORD_LENGTH ] ='\0' ; +if (ctx->auth_method ==OFONO_GPRS_AUTH_METHOD_NONE ) { +memset (cd->username,0 ,sizeof (cd->username)); +memset (cd->password,0 ,sizeof (cd->password)); + }else { +strncpy (cd->username, ctx->username,GPDS_MAX_USERNAME_LENGTH ); + cd->username[GPDS_MAX_USERNAME_LENGTH ] ='\0' ; +strncpy (cd->password, ctx->password,GPDS_MAX_PASSWORD_LENGTH ); + cd->username[GPDS_MAX_PASSWORD_LENGTH ] ='\0' ; + } cd->pep =g_isi_pep_create (cd->idx,NULL ,NULL );if (cd->pep ==NULL )
drivers/mbimmodem/gprs-context.c +13 -3
@@ -75,9 +75,11 @@ static uint32_t auth_method_to_auth_protocol(enum ofono_gprs_auth_method method)return 2 ;/* MBIMAuthProtocolChap */ case OFONO_GPRS_AUTH_METHOD_PAP :return 1 ;/* MBIMAuthProtocolPap */ +case OFONO_GPRS_AUTH_METHOD_NONE : +return 0 ;/* MBIMAUthProtocolNone */ } -return 0 ; +return 0 ;/* MBIMAUthProtocolNone */ }static void mbim_deactivate_cb (struct mbim_message *message,void *user)
@@ -345,6 +347,8 @@ static void mbim_gprs_activate_primary(struct ofono_gprs_context *gc, {struct gprs_context_data *gcd =ofono_gprs_context_get_data (gc);struct mbim_message *message; +const char username =NULL ; +const char password =NULL ;DBG ("cid %u" , ctx->cid);
@@ -354,6 +358,12 @@ static void mbim_gprs_activate_primary(struct ofono_gprs_context *gc, gcd->active_context = ctx->cid; gcd->proto = ctx->proto; +if (ctx->auth_method !=OFONO_GPRS_AUTH_METHOD_NONE && ctx->username[0 ]) + username = ctx->username; + +if (ctx->auth_method !=OFONO_GPRS_AUTH_METHOD_NONE && ctx->password[0 ]) + password = ctx->password; + message =mbim_message_new (mbim_uuid_basic_connect,MBIM_CID_CONNECT ,MBIM_COMMAND_TYPE_SET );
@@ -361,8 +371,8 @@ static void mbim_gprs_activate_primary(struct ofono_gprs_context *gc, ctx->cid,1 ,/* MBIMActivationCommandActivate */ ctx->apn, - ctx->username[0 ] ? ctx->username :NULL , - ctx->password[0 ] ? ctx->password :NULL , + username, + password,0 ,/*MBIMCompressionNone */ auth_method_to_auth_protocol (ctx->auth_method), proto_to_context_ip_type(ctx->proto),
drivers/mbmmodem/gprs-context.c +6 -5
@@ -394,11 +394,12 @@ static void mbm_gprs_activate_primary(struct ofono_gprs_context *gc,* Set username and password, this should be done after CGDCONT * or an error can occur. We don't bother with error checking * here -* */ -snprintf (buf,sizeof (buf),"AT*EIAAUW=%d,1,\"%s\",\"%s\"" , - ctx->cid, ctx->username, ctx->password); - -g_at_chat_send (gcd->chat, buf, none_prefix,NULL ,NULL ,NULL ); +*/ +if (ctx->auth_method !=OFONO_GPRS_AUTH_METHOD_NONE ) { +snprintf (buf,sizeof (buf),"AT*EIAAUW=%d,1,\"%s\",\"%s\"" , + ctx->cid, ctx->username, ctx->password); +g_at_chat_send (gcd->chat, buf, none_prefix,NULL ,NULL ,NULL ); + }return ;
drivers/qmimodem/gprs-context.c +9 -4
@@ -238,7 +238,12 @@ static void qmi_activate_primary(struct ofono_gprs_context *gc,struct cb_data *cbd =cb_data_new (cb, user_data);struct qmi_param *param;uint8_t ip_family; -uint8_t auth; +/* +* set default authentication to CHAP, even if unneeded, +* otherwise the compiler complains that: +* ‘auth’ may be used uninitialized in this function +*/ +uint8_t auth =QMI_WDS_AUTHENTICATION_CHAP ;DBG ("cid %u" , ctx->cid);
@@ -273,7 +278,7 @@ static void qmi_activate_primary(struct ofono_gprs_context *gc,case OFONO_GPRS_AUTH_METHOD_PAP : auth =QMI_WDS_AUTHENTICATION_PAP ;break ; -default : +case OFONO_GPRS_AUTH_METHOD_NONE : auth =QMI_WDS_AUTHENTICATION_NONE ;break ; }
@@ -281,11 +286,11 @@ static void qmi_activate_primary(struct ofono_gprs_context *gc,qmi_param_append_uint8 (param,QMI_WDS_PARAM_AUTHENTICATION_PREFERENCE , auth); -if (ctx->username[0 ] !='\0' ) +if (auth !=QMI_WDS_AUTHENTICATION_NONE && ctx->username[0 ] !='\0' )qmi_param_append (param,QMI_WDS_PARAM_USERNAME ,strlen (ctx->username), ctx->username); -if (ctx->password[0 ] !='\0' ) +if (auth !=QMI_WDS_AUTHENTICATION_NONE && ctx->password[0 ] !='\0' )qmi_param_append (param,QMI_WDS_PARAM_PASSWORD ,strlen (ctx->password), ctx->password);
drivers/rilmodem/gprs-context.c +9 -4
@@ -598,9 +598,12 @@ static void ril_gprs_context_activate_primary(struct ofono_gprs_context *gc,* We do the same as in $AOSP/frameworks/opt/telephony/src/java/com/ * android/internal/telephony/dataconnection/DataConnection.java, * onConnect(), and use authentication or not depending on whether -* the user field is empty or not. +* the user field is empty or not, +* on top of the verification for the authentication method. */ -if (ctx->username[0 ] !='\0' ) + +if (ctx->auth_method !=OFONO_GPRS_AUTH_METHOD_NONE && + ctx->username[0 ] !='\0' ) auth_type =RIL_AUTH_BOTH ;else auth_type =RIL_AUTH_NONE ;
@@ -615,8 +618,10 @@ static void ril_gprs_context_activate_primary(struct ofono_gprs_context *gc,parcel_w_string (&rilp, buf);g_ril_append_print_buf (gcd->ril,"(%d,%s,%s,%s,%s,%d,%s,%u)" , - tech, profile, ctx->apn, ctx->username, - ctx->password, auth_type, + tech, profile, ctx->apn, + auth_type ==RIL_AUTH_NONE ?"" : ctx->username, + auth_type ==RIL_AUTH_NONE ?"" : ctx->password, + auth_type,ril_util_gprs_proto_to_ril_string (ctx->proto), ctx->cid); }else
drivers/stemodem/gprs-context.c +5 -4
@@ -307,10 +307,11 @@ static void ste_gprs_activate_primary(struct ofono_gprs_context *gc,* or an error can occur. We don't bother with error checking * here */ -snprintf (buf,sizeof (buf),"AT*EIAAUW=%d,1,\"%s\",\"%s\"" , - ctx->cid, ctx->username, ctx->password); - -g_at_chat_send (gcd->chat, buf, none_prefix,NULL ,NULL ,NULL ); +if (ctx->auth_method !=OFONO_GPRS_AUTH_METHOD_NONE ) { +snprintf (buf,sizeof (buf),"AT*EIAAUW=%d,1,\"%s\",\"%s\"" , + ctx->cid, ctx->username, ctx->password); +g_at_chat_send (gcd->chat, buf, none_prefix,NULL ,NULL ,NULL ); + }return ;
drivers/telitmodem/gprs-context-ncm.c +8 -2
@@ -277,7 +277,8 @@ static void setup_cb(gboolean ok, GAtResult *result, gpointer user_data)return ; } -if (gcd->username[0 ] && gcd->password[0 ]) +if (gcd->auth_method !=AUTH_METHOD_NONE && + gcd->username[0 ] && gcd->password[0 ])sprintf (buf,"AT#PDPAUTH=%u,%u,\"%s\",\"%s\"" , gcd->active_context, gcd->auth_method, gcd->username, gcd->password);
@@ -320,7 +321,7 @@ static void telitncm_gprs_activate_primary(struct ofono_gprs_context *gc, gcd->state =STATE_ENABLING ; gcd->proto = ctx->proto; -/* We only support CHAP and PAP */ +/* We support CHAP, PAP and NONE */ switch (ctx->auth_method) {case OFONO_GPRS_AUTH_METHOD_CHAP : gcd->auth_method =AUTH_METHOD_CHAP ;
@@ -328,6 +329,11 @@ static void telitncm_gprs_activate_primary(struct ofono_gprs_context *gc,case OFONO_GPRS_AUTH_METHOD_PAP : gcd->auth_method =AUTH_METHOD_PAP ;break ; +case OFONO_GPRS_AUTH_METHOD_NONE : + gcd->auth_method =AUTH_METHOD_NONE ; + gcd->username[0 ] =0 ; + gcd->password[0 ] =0 ; +break ;default : goto error; }
drivers/ubloxmodem/gprs-context.c +4 -3
@@ -315,9 +315,10 @@ static void ublox_send_uauthreq(struct ofono_gprs_context *gc,case OFONO_GPRS_AUTH_METHOD_CHAP : auth =2 ;break ; -default : -ofono_error ("Unsupported auth type %u" , auth_method); -return ; +case OFONO_GPRS_AUTH_METHOD_NONE : + auth =0 ; + username = password ="" ; +break ; } snprintf(buf, sizeof(buf), "AT+UAUTHREQ=%u,%u,\"%s\",\"%s\"",
Signature · 1 line
2.17.1