@ -353,12 +353,9 @@ proto_modemmanager_setup() {
# always cleanup before attempting a new connection , just in case
modemmanager_cleanup_connection "${modemstatus}"
# ip type IPv4 is assumed if none explicitly given
[ - z "${iptype}" ] & & iptype = "ipv4"
# setup connect args ; APN mandatory ( even if it may be empty )
echo "starting connection with apn '${apn}'..."
connectargs = "apn=${apn},ip-type=${iptype}${username:+,user=${username}}${password:+,password=${password}}${pincode:+,pin=${pincode}}"
connectargs = "apn=${apn}${iptype:+,ip-type=${iptype}}${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}"
@ -392,17 +389,12 @@ proto_modemmanager_setup() {
# load network interface and method information
beareriface = $ ( modemmanager_get_field "${bearerstatus}" "bearer.status.interface" )
[ "$iptype" = "ipv4" ] | | [ "$iptype" = "ipv4v6" ] & & {
bearermethod_ipv4 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method" )
echo "IPv4 connection setup required in interface ${interface}: ${bearermethod_ipv4}"
}
[ "$iptype" = "ipv6" ] | | [ "$iptype" = "ipv4v6" ] & & {
bearermethod_ipv6 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method" )
echo "IPv6 connection setup required in interface ${interface}: ${bearermethod_ipv6}"
}
bearermethod_ipv4 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method" )
bearermethod_ipv6 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method" )
# setup IPv4
[ - n "${bearermethod_ipv4}" ] & & {
echo "IPv4 connection setup required in interface ${interface}: ${bearermethod_ipv4}"
case "${bearermethod_ipv4}" in
"dhcp" )
modemmanager_connected_method_dhcp_ipv4 "${interface}" "${beareriface}" "${metric}"
@ -429,6 +421,7 @@ proto_modemmanager_setup() {
# setup IPv6
# note : if using ipv4v6 , both IPv4 and IPv6 settings will have the same MTU and metric values reported
[ - n "${bearermethod_ipv6}" ] & & {
echo "IPv6 connection setup required in interface ${interface}: ${bearermethod_ipv6}"
case "${bearermethod_ipv6}" in
"dhcp" )
modemmanager_connected_method_dhcp_ipv6 "${interface}" "${beareriface}" "${metric}"
@ -475,19 +468,14 @@ proto_modemmanager_teardown() {
return
}
# ip type IPv4 is assumed if none explicitly given
[ - z "${iptype}" ] & & iptype = "ipv4"
# load bearer connection methods
bearerstatus = $ ( mmcli - - bearer "${bearerpath}" - - output - keyvalue )
[ "$iptype" = "ipv4" ] | | [ "$iptype" = "ipv4v6" ] & & {
bearermethod_ipv4 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method" )
bearermethod_ipv4 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.method" )
[ - n "${bearermethod_ipv4}" ] & &
echo "IPv4 connection teardown required in interface ${interface}: ${bearermethod_ipv4}"
}
[ "$iptype" = "ipv6" ] | | [ "$iptype" = "ipv4v6" ] & & {
bearermethod_ipv6 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method" )
bearermethod_ipv6 = $ ( modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.method" )
[ - n "${bearermethod_ipv6}" ] & &
echo "IPv6 connection teardown required in interface ${interface}: ${bearermethod_ipv6}"
}
# disconnection handling only requires special treatment in IPv4 / PPP
[ "${bearermethod_ipv4}" = "ppp" ] & & modemmanager_disconnected_method_ppp_ipv4 "${interface}"