aboutsummaryrefslogtreecommitdiff
path: root/net/modemmanager
diff options
context:
space:
mode:
Diffstat (limited to 'net/modemmanager')
-rw-r--r--net/modemmanager/Makefile2
-rwxr-xr-xnet/modemmanager/files/modemmanager.proto46
2 files changed, 42 insertions, 6 deletions
diff --git a/net/modemmanager/Makefile b/net/modemmanager/Makefile
index f38e3abf8..5092ccd5c 100644
--- a/net/modemmanager/Makefile
+++ b/net/modemmanager/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager
PKG_VERSION:=1.12.10
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=ModemManager-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.freedesktop.org/software/ModemManager
diff --git a/net/modemmanager/files/modemmanager.proto b/net/modemmanager/files/modemmanager.proto
index 536073dce..870542417 100755
--- a/net/modemmanager/files/modemmanager.proto
+++ b/net/modemmanager/files/modemmanager.proto
@@ -116,6 +116,35 @@ modemmanager_connected_method_ppp_ipv4() {
local ttyname="$2"
local username="$3"
local password="$4"
+ local allowedauth="$5"
+
+ # all auth types are allowed unless a user given list is given
+ local authopts
+ local pap=1
+ local chap=1
+ local mschap=1
+ local mschapv2=1
+ local eap=1
+
+ [ -n "$allowedauth" ] && {
+ pap=0 chap=0 mschap=0 mschapv2=0 eap=0
+ for auth in $allowedauth; do
+ case $auth in
+ "pap") pap=1 ;;
+ "chap") chap=1 ;;
+ "mschap") mschap=1 ;;
+ "mschapv2") mschapv2=1 ;;
+ "eap") eap=1 ;;
+ *) ;;
+ esac
+ done
+ }
+
+ [ $pap -eq 1 ] || append authopts "refuse-pap"
+ [ $chap -eq 1 ] || append authopts "refuse-chap"
+ [ $mschap -eq 1 ] || append authopts "refuse-mschap"
+ [ $mschapv2 -eq 1 ] || append authopts "refuse-mschap-v2"
+ [ $eap -eq 1 ] || append authopts "refuse-eap"
proto_run_command "${interface}" /usr/sbin/pppd \
"${ttyname}" \
@@ -126,6 +155,7 @@ modemmanager_connected_method_ppp_ipv4() {
nopcomp \
novj \
noauth \
+ $authopts \
${username:+ user $username} \
${password:+ password $password} \
lcp-echo-failure 5 \
@@ -308,6 +338,7 @@ proto_modemmanager_init_config() {
no_device=1
proto_config_add_string device
proto_config_add_string apn
+ proto_config_add_string 'allowedauth:list(string)'
proto_config_add_string username
proto_config_add_string password
proto_config_add_string pincode
@@ -320,14 +351,14 @@ proto_modemmanager_setup() {
local interface="$1"
local modempath modemstatus bearercount bearerpath connectargs bearerstatus beareriface
- local bearermethod_ipv4 bearermethod_ipv6
+ local bearermethod_ipv4 bearermethod_ipv6 auth cliauth
local operatorname operatorid registration accesstech signalquality
- local device apn username password pincode iptype metric
+ local device apn allowedauth username password pincode iptype metric
local address prefix gateway mtu dns1 dns2
- json_get_vars device apn username password pincode iptype metric
+ json_get_vars device apn allowedauth username password pincode iptype metric
# validate sysfs path given in config
[ -n "${device}" ] || {
@@ -356,9 +387,14 @@ proto_modemmanager_setup() {
# always cleanup before attempting a new connection, just in case
modemmanager_cleanup_connection "${modemstatus}"
+ # if allowedauth list given, build option string
+ for auth in $allowedauth; do
+ cliauth="${cliauth}${cliauth:+|}$auth"
+ done
+
# setup connect args; APN mandatory (even if it may be empty)
echo "starting connection with apn '${apn}'..."
- connectargs="apn=${apn}${iptype:+,ip-type=${iptype}}${username:+,user=${username}}${password:+,password=${password}}${pincode:+,pin=${pincode}}"
+ connectargs="apn=${apn}${iptype:+,ip-type=${iptype}}${cliauth:+,allowed-auth=${cliauth}}${username:+,user=${username}}${password:+,password=${password}}${pincode:+,pin=${pincode}}"
mmcli --modem="${device}" --timeout 120 --simple-connect="${connectargs}" || {
proto_notify_error "${interface}" CONNECT_FAILED
proto_block_restart "${interface}"
@@ -412,7 +448,7 @@ proto_modemmanager_setup() {
modemmanager_connected_method_static_ipv4 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}"
;;
"ppp")
- modemmanager_connected_method_ppp_ipv4 "${interface}" "${beareriface}" "${username}" "${password}"
+ modemmanager_connected_method_ppp_ipv4 "${interface}" "${beareriface}" "${username}" "${password}" "${allowedauth}"
;;
*)
proto_notify_error "${interface}" UNKNOWN_METHOD