On Mon, 2012-03-12 at 20:01 +0000, Andrew Bird wrote:
> When using the either DHCP or STATIC IpMethods the modem manager
> or device itself negotiates the PPP session so we need to pass
> the authentication preferences through to MM.
> 
> Notes:
>       1/ Using a bitfield now that happens to match the Ericsson
> in the lower orders so that it's far more tidy.
>       2/ Devices that wish to utilise this should observe the
> following:
>       If the bitfield doesn't exist in the dict, then MM uses the
> modem default, if it does, MM tries to fulfill the request. If the
> modem can only accept one value (Qualcomm-type devices accept only
> None, PAP or CHAP with AT$QCPDPP) then MM picks the appropriate one
> from the dict if only one of PAP or CHAP was given, otherwise we
> default to PAP.

Pushed, thanks; changed the enum entries to be the actual bitfield
values themselves instead of the bit position though to be a bit
clearer.

Dan

> Signed-off-by: Andrew Bird <[email protected]>
> ---
>  src/modem-manager/nm-modem-gsm.c |   26 ++++++++++++++++++++++++++
>  1 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/src/modem-manager/nm-modem-gsm.c 
> b/src/modem-manager/nm-modem-gsm.c
> index 66b7ad9..37edd55 100644
> --- a/src/modem-manager/nm-modem-gsm.c
> +++ b/src/modem-manager/nm-modem-gsm.c
> @@ -62,6 +62,17 @@ typedef enum {
>      MM_MODEM_GSM_ALLOWED_MODE_LAST = MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY
>  } MMModemGsmAllowedMode;
>  
> +typedef enum {
> +    /* bits 0..4 order match Ericsson device bitmap */
> +    MM_MODEM_GSM_ALLOWED_AUTH_NONE     = 0,
> +    MM_MODEM_GSM_ALLOWED_AUTH_PAP      = 1,
> +    MM_MODEM_GSM_ALLOWED_AUTH_CHAP     = 2,
> +    MM_MODEM_GSM_ALLOWED_AUTH_MSCHAP   = 3,
> +    MM_MODEM_GSM_ALLOWED_AUTH_MSCHAPV2 = 4,
> +    MM_MODEM_GSM_ALLOWED_AUTH_EAP      = 5,
> +
> +    MM_MODEM_GSM_ALLOWED_AUTH_LAST = MM_MODEM_GSM_ALLOWED_AUTH_EAP
> +} MMModemGsmAllowedAuth;
>  
>  G_DEFINE_TYPE (NMModemGsm, nm_modem_gsm, NM_TYPE_MODEM)
>  
> @@ -326,6 +337,7 @@ static GHashTable *
>  create_connect_properties (NMConnection *connection)
>  {
>       NMSettingGsm *setting;
> +     NMSettingPPP *s_ppp;
>       GHashTable *properties;
>       const char *str;
>  
> @@ -384,6 +396,20 @@ create_connect_properties (NMConnection *connection)
>       if (nm_setting_gsm_get_home_only (setting))
>               value_hash_add_bool (properties, "home_only", TRUE);
>  
> +     /* For IpMethod == STATIC or DHCP */
> +     s_ppp = nm_connection_get_setting_ppp (connection);
> +     if (s_ppp) {
> +             guint32 auth = 0;
> +             auth |= (nm_setting_ppp_get_noauth (s_ppp) << 
> MM_MODEM_GSM_ALLOWED_AUTH_NONE);
> +             auth |= ((!nm_setting_ppp_get_refuse_pap (s_ppp)) << 
> MM_MODEM_GSM_ALLOWED_AUTH_PAP);
> +             auth |= ((!nm_setting_ppp_get_refuse_chap (s_ppp)) << 
> MM_MODEM_GSM_ALLOWED_AUTH_CHAP);
> +             auth |= ((!nm_setting_ppp_get_refuse_mschap (s_ppp)) << 
> MM_MODEM_GSM_ALLOWED_AUTH_MSCHAP);
> +             auth |= ((!nm_setting_ppp_get_refuse_mschapv2 (s_ppp)) << 
> MM_MODEM_GSM_ALLOWED_AUTH_MSCHAPV2);
> +             auth |= ((!nm_setting_ppp_get_refuse_eap (s_ppp)) << 
> MM_MODEM_GSM_ALLOWED_AUTH_EAP);
> +
> +             value_hash_add_uint (properties, "allowed_auth", auth);
> +     }
> +
>       return properties;
>  }
>  


_______________________________________________
networkmanager-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to