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. Signed-off-by: Andrew Bird <a...@spheresystems.co.uk> --- 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; } -- 1.7.6.5 _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org http://mail.gnome.org/mailman/listinfo/networkmanager-list