1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

fix、 libqmi libmbim modemmanager

This commit is contained in:
suyuan168 2022-04-11 11:36:50 +08:00
parent b1c8efa18d
commit e17325d0c5
11 changed files with 135 additions and 328 deletions

View file

@ -8,29 +8,28 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=libmbim PKG_NAME:=libmbim
PKG_SOURCE_VERSION:=1.26.2 PKG_VERSION:=1.26.2
PKG_RELEASE:=$(AUTORELEASE) PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git PKG_SOURCE_URL:=https://www.freedesktop.org/software/libmbim
PKG_MIRROR_HASH:=47eb6511818271be66336fb67ec97de7925119b09ddbd0ffd06b3f76893a461e PKG_HASH:=10c77bf5b5eb8c92ba80e9b519923ad9b898362bc8e1928e2bc9a17eeba649af
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com> PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/meson.mk
TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants CONFIGURE_ARGS += \
TARGET_LDFLAGS += -Wl,--gc-sections --disable-static \
--disable-gtk-doc \
MESON_ARGS += \ --disable-gtk-doc-html \
-Dintrospection=false \ --disable-gtk-doc-pdf \
-Dman=false \ --disable-silent-rules \
-Dbash_completion=false \ --enable-more-warnings=yes
-Db_lto=true
define Package/libmbim define Package/libmbim
SECTION:=libs SECTION:=libs
@ -57,6 +56,10 @@ define Package/mbim-utils
LICENSE_FILES:=COPYING LICENSE_FILES:=COPYING
endef endef
CONFIGURE_ARGS += \
--without-udev \
--without-udev-base-dir
define Build/InstallDev define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(INSTALL_DIR) $(1)/usr/include
$(CP) \ $(CP) \
@ -75,15 +78,11 @@ define Build/InstallDev
endef endef
define Package/libmbim/install define Package/libmbim/install
$(INSTALL_DIR) \ $(INSTALL_DIR) $(1)/usr/lib
$(1)/usr/lib \
$(1)/usr/libexec
$(CP) \ $(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libmbim*.so.* \ $(PKG_INSTALL_DIR)/usr/lib/libmbim*.so.* \
$(1)/usr/lib/ $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/mbim-proxy $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/mbim-proxy $(1)/usr/libexec/
endef endef
define Package/mbim-utils/install define Package/mbim-utils/install

View file

@ -13,19 +13,4 @@ config LIBQMI_WITH_QRTR_GLIB
help help
Compile libqmi with QRTR support Compile libqmi with QRTR support
choice
prompt "Select QMI message collection to build"
default LIBQMI_COLLECTION_BASIC
config LIBQMI_COLLECTION_MINIMAL
depends on !MODEMMANAGER_WITH_QMI
bool "minimal"
config LIBQMI_COLLECTION_BASIC
bool "basic (default)"
config LIBQMI_COLLECTION_FULL
bool "full"
endchoice
endmenu endmenu

View file

@ -8,23 +8,20 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=libqmi PKG_NAME:=libqmi
PKG_SOURCE_VERSION:=1.30.4 PKG_VERSION:=1.30.4
PKG_RELEASE:=$(AUTORELEASE) PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libqmi.git PKG_SOURCE_URL:=https://www.freedesktop.org/software/libqmi
PKG_MIRROR_HASH:=537eae29c36aba9757afd86e48b91c37c3fe3232037ad11fdd426297f6040a6b PKG_HASH:=00d7da30a4f8d1185f37cba289cfaf1dfcd04a58f2f76d6acfdf5b85312d6ed6
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com> PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/meson.mk
TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants
TARGET_LDFLAGS += -Wl,--gc-sections
define Package/libqmi/config define Package/libqmi/config
source "$(SOURCE)/Config.in" source "$(SOURCE)/Config.in"
@ -62,16 +59,28 @@ define Package/libqmi-utils/description
Utils to talk to QMI enabled modems Utils to talk to QMI enabled modems
endef endef
MESON_ARGS += \ CONFIGURE_ARGS += \
-Dudev=false \ --disable-static \
-Dintrospection=false \ --disable-gtk-doc \
-Dman=false \ --disable-gtk-doc-html \
-Dbash_completion=false \ --disable-gtk-doc-pdf \
-Db_lto=true \ --disable-silent-rules \
-Dmbim_qmux=$(if $(CONFIG_LIBQMI_WITH_MBIM_QMUX),true,false) \ --enable-firmware-update \
-Dqrtr=$(if $(CONFIG_LIBQMI_WITH_QRTR_GLIB),true,false) \ --enable-more-warnings=yes \
-Dcollection=$(if $(CONFIG_LIBQMI_COLLECTION_MINIMAL),minimal\ --without-udev \
,$(if $(CONFIG_LIBQMI_COLLECTION_BASIC),basic,full)) --without-udev-base-dir
ifeq ($(CONFIG_LIBQMI_WITH_MBIM_QMUX),y)
CONFIGURE_ARGS += --enable-mbim-qmux
else
CONFIGURE_ARGS += --disable-mbim-qmux
endif
ifeq ($(CONFIG_LIBQMI_WITH_QRTR_GLIB),y)
CONFIGURE_ARGS += --enable-qrtr
else
CONFIGURE_ARGS += --disable-qrtr
endif
define Build/InstallDev define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(INSTALL_DIR) $(1)/usr/include
@ -91,15 +100,12 @@ define Build/InstallDev
endef endef
define Package/libqmi/install define Package/libqmi/install
$(INSTALL_DIR) \ $(INSTALL_DIR) $(1)/usr/lib
$(1)/usr/lib \
$(1)/usr/libexec
$(CP) \ $(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libqmi*.so.* \ $(PKG_INSTALL_DIR)/usr/lib/libqmi*.so.* \
$(1)/usr/lib/ $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/qmi-proxy $(1)/usr/libexec/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/qmi-proxy $(1)/usr/lib/
endef endef
define Package/qmi-utils/install define Package/qmi-utils/install

View file

@ -13,18 +13,9 @@ config MODEMMANAGER_WITH_QMI
help help
Compile ModemManager with QMI support Compile ModemManager with QMI support
config MODEMMANAGER_WITH_QRTR
bool "Include QRTR support"
default y
depends on MODEMMANAGER_WITH_QMI
select LIBQMI_WITH_QRTR_GLIB
help
Compile ModemManager with QRTR support
config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS
bool "Allow AT commands via DBus" bool "Allow AT commands via DBus"
default n default n
help help
Compile ModemManager allowing AT commands without debug flag Compile ModemManager allowing AT commands without debug flag
endmenu endmenu

View file

@ -8,26 +8,23 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager PKG_NAME:=modemmanager
PKG_SOURCE_VERSION:=1.18.6 PKG_VERSION:=1.18.6
PKG_RELEASE:=$(AUTORELEASE) PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE:=ModemManager-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git PKG_SOURCE_URL:=https://www.freedesktop.org/software/ModemManager
PKG_MIRROR_HASH:=72f1a865153745d05c482ed3a77f2045d24387f1f9a37177fe7bc35ab7663765 PKG_HASH:=d4f804b31cf504239c5f1d4973c62095c00cba1ee9abb503718dac6d146a470a
PKG_BUILD_DIR:=$(BUILD_DIR)/ModemManager-$(PKG_VERSION)
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com> PKG_MAINTAINER:=Nicholas Smith <nicholas.smith@telcoantennas.com.au>
PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_BUILD_DEPENDS:=glib2/host libxslt/host PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/meson.mk
TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants
TARGET_LDFLAGS += -Wl,--gc-sections
define Package/modemmanager/config define Package/modemmanager/config
source "$(SOURCE)/Config.in" source "$(SOURCE)/Config.in"
@ -44,8 +41,7 @@ define Package/modemmanager
+dbus \ +dbus \
+ppp \ +ppp \
+MODEMMANAGER_WITH_MBIM:libmbim \ +MODEMMANAGER_WITH_MBIM:libmbim \
+MODEMMANAGER_WITH_QMI:libqmi \ +MODEMMANAGER_WITH_QMI:libqmi
+MODEMMANAGER_WITH_QRTR:libqrtr-glib
endef endef
define Package/modemmanager/description define Package/modemmanager/description
@ -54,21 +50,35 @@ define Package/modemmanager/description
Select Utilities/usb-modeswitch if needed. Select Utilities/usb-modeswitch if needed.
endef endef
MESON_ARGS += \ CONFIGURE_ARGS += \
-Dudev=false \ --without-polkit \
-Dudevdir=/lib/udev \ --without-udev \
-Dsystemdsystemunitdir=no \ --without-systemdsystemunitdir \
-Dsystemd_suspend_resume=false \ --disable-rpath \
-Dsystemd_journal=false \ --disable-gtk-doc
-Dpolkit=no \
-Dintrospection=false \ ifeq ($(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),y)
-Dman=false \ CONFIGURE_ARGS += --with-at-command-via-dbus
-Dbash_completion=false \ endif
-Db_lto=true \
-Dmbim=$(if $(CONFIG_MODEMMANAGER_WITH_MBIM),true,false) \ ifdef CONFIG_MODEMMANAGER_WITH_MBIM
-Dqmi=$(if $(CONFIG_MODEMMANAGER_WITH_QMI),true,false) \ CONFIGURE_ARGS += --with-mbim
-Dqrtr=$(if $(CONFIG_MODEMMANAGER_WITH_QRTR),true,false) \ else
-Dat_command_via_dbus=$(if $(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),true,false) CONFIGURE_ARGS += --without-mbim
endif
ifdef CONFIG_MODEMMANAGER_WITH_QMI
CONFIGURE_ARGS += --with-qmi
else
CONFIGURE_ARGS += --without-qmi
endif
define Build/Prepare
$(call Build/Prepare/Default)
( cd "$(PKG_BUILD_DIR)"; \
printf "all:\ninstall:\n" >po/Makefile.in.in; \
)
endef
define Build/InstallDev define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/ModemManager $(INSTALL_DIR) $(1)/usr/include/ModemManager

View file

@ -20,8 +20,7 @@ MODEMMANAGER_EVENTS_CACHE="${MODEMMANAGER_RUNDIR}/events.cache"
# Common logging # Common logging
mm_log() { mm_log() {
local level="$1"; shift [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && logger -t "ModemManager" "hotplug: $*"
logger -p "daemon.${level}" -t "ModemManager[$$]" "hotplug: $*"
} }
################################################################################ ################################################################################
@ -40,7 +39,7 @@ mm_find_physdev_sysfs_path() {
# avoid infinite loops iterating # avoid infinite loops iterating
[ -z "${tmp_path}" ] || [ "${tmp_path}" = "/" ] && return [ -z "${tmp_path}" ] || [ "${tmp_path}" = "/" ] && return
# For USB devices, the physical device will be that with a idVendor # for USB devices, the physical device will be that with a idVendor
# and idProduct pair of files # and idProduct pair of files
[ -f "${tmp_path}"/idVendor ] && [ -f "${tmp_path}"/idProduct ] && { [ -f "${tmp_path}"/idVendor ] && [ -f "${tmp_path}"/idProduct ] && {
tmp_path=$(readlink -f "$tmp_path") tmp_path=$(readlink -f "$tmp_path")
@ -170,7 +169,7 @@ mm_wait_for_modem() {
while [ $n -ge 0 ]; do while [ $n -ge 0 ]; do
[ -d "${sysfspath}" ] || { [ -d "${sysfspath}" ] || {
mm_log "error" "ignoring modem detection request: no device at ${sysfspath}" mm_log "error: ignoring modem detection request: no device at ${sysfspath}"
proto_set_available "${cfg}" 0 proto_set_available "${cfg}" 0
return 1 return 1
} }
@ -178,10 +177,10 @@ mm_wait_for_modem() {
# Check if the modem exists at the given sysfs path # Check if the modem exists at the given sysfs path
if ! mmcli -m "${sysfspath}" > /dev/null 2>&1 if ! mmcli -m "${sysfspath}" > /dev/null 2>&1
then then
mm_log "error" "modem not detected at sysfs path" mm_log "error: modem not detected at sysfs path"
else else
mm_log "info" "modem exported successfully at ${sysfspath}" mm_log "modem exported successfully at ${sysfspath}"
mm_log "info" "setting interface '${cfg}' as available" mm_log "setting interface '${cfg}' as available"
proto_set_available "${cfg}" 1 proto_set_available "${cfg}" 1
return 0 return 0
fi fi
@ -190,7 +189,7 @@ mm_wait_for_modem() {
n=$((n-step)) n=$((n-step))
done done
mm_log "error" "timed out waiting for the modem to get exported at ${sysfspath}" mm_log "error: timed out waiting for the modem to get exported at ${sysfspath}"
proto_set_available "${cfg}" 0 proto_set_available "${cfg}" 0
return 2 return 2
} }
@ -202,7 +201,7 @@ mm_report_modem_wait() {
parent_sysfspath=$(mm_find_physdev_sysfs_path "$sysfspath") parent_sysfspath=$(mm_find_physdev_sysfs_path "$sysfspath")
[ -n "${parent_sysfspath}" ] || { [ -n "${parent_sysfspath}" ] || {
mm_log "error" "parent device sysfspath not found" mm_log "error: parent device sysfspath not found"
return return
} }
@ -213,23 +212,23 @@ mm_report_modem_wait() {
cfg=$(mm_get_modem_config "${parent_sysfspath}") cfg=$(mm_get_modem_config "${parent_sysfspath}")
if [ -n "${cfg}" ]; then if [ -n "${cfg}" ]; then
mm_log "info" "interface '${cfg}' is set to configure device '${parent_sysfspath}'" mm_log "interface '${cfg}' is set to configure device '${parent_sysfspath}'"
mm_log "info" "now waiting for modem at sysfs path ${parent_sysfspath}" mm_log "now waiting for modem at sysfs path ${parent_sysfspath}"
mm_set_modem_wait_status "${parent_sysfspath}" "processed" mm_set_modem_wait_status "${parent_sysfspath}" "processed"
# Launch subshell for the explicit wait # Launch subshell for the explicit wait
( mm_wait_for_modem "${cfg}" "${parent_sysfspath}" ) > /dev/null 2>&1 & ( mm_wait_for_modem "${cfg}" "${parent_sysfspath}" ) > /dev/null 2>&1 &
else else
mm_log "info" "no need to wait for modem at sysfs path ${parent_sysfspath}" mm_log "no need to wait for modem at sysfs path ${parent_sysfspath}"
mm_set_modem_wait_status "${parent_sysfspath}" "ignored" mm_set_modem_wait_status "${parent_sysfspath}" "ignored"
fi fi
;; ;;
"processed") "processed")
mm_log "info" "already waiting for modem at sysfs path ${parent_sysfspath}" mm_log "already waiting for modem at sysfs path ${parent_sysfspath}"
;; ;;
"ignored") "ignored")
;; ;;
*) *)
mm_log "error" "unknown status read for device at sysfs path ${parent_sysfspath}" mm_log "error: unknown status read for device at sysfs path ${parent_sysfspath}"
;; ;;
esac esac
} }
@ -259,7 +258,7 @@ mm_cleanup_interface_by_sysfspath() {
cfg=$(mm_get_modem_config "$dev") cfg=$(mm_get_modem_config "$dev")
[ -n "${cfg}" ] || return [ -n "${cfg}" ] || return
mm_log "info" "setting interface '$cfg' as unavailable" mm_log "setting interface '$cfg' as unavailable"
proto_set_available "${cfg}" 0 proto_set_available "${cfg}" 0
} }
@ -287,7 +286,7 @@ mm_report_event() {
esac esac
# Report the event # Report the event
mm_log "debug" "event reported: action=${action}, name=${name}, subsystem=${subsystem}" mm_log "event reported: action=${action}, name=${name}, subsystem=${subsystem}"
mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 & mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 &
# Wait for added modem if a sysfspath is given # Wait for added modem if a sysfspath is given
@ -303,7 +302,7 @@ mm_report_event_from_cache_line() {
subsystem=$(echo "${event_line}" | awk -F ',' '{ print $3 }') subsystem=$(echo "${event_line}" | awk -F ',' '{ print $3 }')
sysfspath=$(echo "${event_line}" | awk -F ',' '{ print $4 }') sysfspath=$(echo "${event_line}" | awk -F ',' '{ print $4 }')
mm_log "debug" "cached event found: action=${action}, name=${name}, subsystem=${subsystem}, sysfspath=${sysfspath}" mm_log "cached event found: action=${action}, name=${name}, subsystem=${subsystem}, sysfspath=${sysfspath}"
mm_report_event "${action}" "${name}" "${subsystem}" "${sysfspath}" mm_report_event "${action}" "${name}" "${subsystem}" "${sysfspath}"
} }
@ -318,11 +317,11 @@ mm_report_events_from_cache() {
# Wait for ModemManager to be available in the bus # Wait for ModemManager to be available in the bus
while [ $n -ge 0 ]; do while [ $n -ge 0 ]; do
sleep $step sleep $step
mm_log "info" "checking if ModemManager is available..." mm_log "checking if ModemManager is available..."
if ! mmcli -L >/dev/null 2>&1 if ! mmcli -L >/dev/null 2>&1
then then
mm_log "info" "ModemManager not yet available" mm_log "ModemManager not yet available"
else else
mmrunning=1 mmrunning=1
break break
@ -331,7 +330,7 @@ mm_report_events_from_cache() {
done done
[ ${mmrunning} -eq 1 ] || { [ ${mmrunning} -eq 1 ] || {
mm_log "error" "couldn't report initial kernel events: ModemManager not running" mm_log "error: couldn't report initial kernel events: ModemManager not running"
return return
} }

4
modemmanager/files/modemmanager.init Executable file → Normal file
View file

@ -4,8 +4,6 @@
USE_PROCD=1 USE_PROCD=1
START=70 START=70
LOG_LEVEL="INFO"
stop_service() { stop_service() {
# Load common utils # Load common utils
. /usr/share/ModemManager/modemmanager.common . /usr/share/ModemManager/modemmanager.common
@ -30,8 +28,6 @@ start_service() {
. /usr/share/ModemManager/modemmanager.common . /usr/share/ModemManager/modemmanager.common
procd_open_instance procd_open_instance
procd_set_param command /usr/sbin/ModemManager-wrapper procd_set_param command /usr/sbin/ModemManager-wrapper
procd_append_param command --log-level="$LOG_LEVEL"
[ "$LOG_LEVEL" = "DEBUG" ] && procd_append_param command --debug
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
procd_set_param pidfile "${MODEMMANAGER_PID_FILE}" procd_set_param pidfile "${MODEMMANAGER_PID_FILE}"
procd_close_instance procd_close_instance

View file

@ -197,6 +197,7 @@ modemmanager_connected_method_dhcp_ipv4() {
local interface="$1" local interface="$1"
local wwan="$2" local wwan="$2"
local metric="$3" local metric="$3"
local defaultroute="$4"
proto_init_update "${wwan}" 1 proto_init_update "${wwan}" 1
proto_set_keep 1 proto_set_keep 1
@ -222,6 +223,7 @@ modemmanager_connected_method_static_ipv4() {
local dns1="$7" local dns1="$7"
local dns2="$8" local dns2="$8"
local metric="$9" local metric="$9"
local defaultroute="$10"
local mask="" local mask=""
@ -242,8 +244,9 @@ modemmanager_connected_method_static_ipv4() {
proto_set_keep 1 proto_set_keep 1
echo "adding IPv4 address ${address}, netmask ${mask}" echo "adding IPv4 address ${address}, netmask ${mask}"
proto_add_ipv4_address "${address}" "${mask}" proto_add_ipv4_address "${address}" "${mask}"
[ -n "${gateway}" ] && { [ -n "${gateway}" ] && [ "${defaultroute}" != 0 ] && {
echo "adding default IPv4 route via ${gateway}" echo "adding default IPv4 route via ${gateway}"
logger -t "modemmanager.proto" "adding default IPv4 route via ${gateway} ${address}"
proto_add_ipv4_route "0.0.0.0" "0" "${gateway}" "${address}" proto_add_ipv4_route "0.0.0.0" "0" "${gateway}" "${address}"
} }
[ -n "${dns1}" ] && { [ -n "${dns1}" ] && {
@ -262,6 +265,7 @@ modemmanager_connected_method_dhcp_ipv6() {
local interface="$1" local interface="$1"
local wwan="$2" local wwan="$2"
local metric="$3" local metric="$3"
local defaultroute="$4"
proto_init_update "${wwan}" 1 proto_init_update "${wwan}" 1
proto_set_keep 1 proto_set_keep 1
@ -288,6 +292,7 @@ modemmanager_connected_method_static_ipv6() {
local dns1="$7" local dns1="$7"
local dns2="$8" local dns2="$8"
local metric="$9" local metric="$9"
local defaultroute="$10"
[ -n "${address}" ] || { [ -n "${address}" ] || {
proto_notify_error "${interface}" ADDRESS_MISSING proto_notify_error "${interface}" ADDRESS_MISSING
@ -306,7 +311,7 @@ modemmanager_connected_method_static_ipv6() {
echo "adding IPv6 address ${address}, prefix ${prefix}" echo "adding IPv6 address ${address}, prefix ${prefix}"
proto_add_ipv6_address "${address}" "128" proto_add_ipv6_address "${address}" "128"
proto_add_ipv6_prefix "${address}/${prefix}" proto_add_ipv6_prefix "${address}/${prefix}"
[ -n "${gateway}" ] && { [ -n "${gateway}" ] && [ "$defaultroute" != 0 ] && {
echo "adding default IPv6 route via ${gateway}" echo "adding default IPv6 route via ${gateway}"
proto_add_ipv6_route "${gateway}" "128" proto_add_ipv6_route "${gateway}" "128"
proto_add_ipv6_route "::0" "0" "${gateway}" "" "" "${address}/${prefix}" proto_add_ipv6_route "::0" "0" "${gateway}" "" "" "${address}/${prefix}"
@ -357,9 +362,9 @@ proto_modemmanager_setup() {
local device apn allowedauth username password pincode iptype metric signalrate local device apn allowedauth username password pincode iptype metric signalrate
local address prefix gateway mtu dns1 dns2 local address prefix gateway mtu dns1 dns2 defaultroute
json_get_vars device apn allowedauth username password pincode iptype metric signalrate json_get_vars device apn allowedauth username password pincode iptype metric signalrate defaultroute
# validate sysfs path given in config # validate sysfs path given in config
[ -n "${device}" ] || { [ -n "${device}" ] || {
@ -447,7 +452,7 @@ proto_modemmanager_setup() {
echo "IPv4 connection setup required in interface ${interface}: ${bearermethod_ipv4}" echo "IPv4 connection setup required in interface ${interface}: ${bearermethod_ipv4}"
case "${bearermethod_ipv4}" in case "${bearermethod_ipv4}" in
"dhcp") "dhcp")
modemmanager_connected_method_dhcp_ipv4 "${interface}" "${beareriface}" "${metric}" modemmanager_connected_method_dhcp_ipv4 "${interface}" "${beareriface}" "${metric}" "${defaultroute}"
;; ;;
"static") "static")
address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.address") address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.address")
@ -456,7 +461,7 @@ proto_modemmanager_setup() {
mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.mtu") mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.mtu")
dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[1\]") dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[1\]")
dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[2\]") dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv4-config.dns.value\[2\]")
modemmanager_connected_method_static_ipv4 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}" modemmanager_connected_method_static_ipv4 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}" "${defaultroute}"
;; ;;
"ppp") "ppp")
modemmanager_connected_method_ppp_ipv4 "${interface}" "${beareriface}" "${username}" "${password}" "${allowedauth}" modemmanager_connected_method_ppp_ipv4 "${interface}" "${beareriface}" "${username}" "${password}" "${allowedauth}"
@ -474,7 +479,7 @@ proto_modemmanager_setup() {
echo "IPv6 connection setup required in interface ${interface}: ${bearermethod_ipv6}" echo "IPv6 connection setup required in interface ${interface}: ${bearermethod_ipv6}"
case "${bearermethod_ipv6}" in case "${bearermethod_ipv6}" in
"dhcp") "dhcp")
modemmanager_connected_method_dhcp_ipv6 "${interface}" "${beareriface}" "${metric}" modemmanager_connected_method_dhcp_ipv6 "${interface}" "${beareriface}" "${metric}" "${defaultroute}"
;; ;;
"static") "static")
address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.address") address=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.address")
@ -483,7 +488,7 @@ proto_modemmanager_setup() {
mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.mtu") mtu=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.mtu")
dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[1\]") dns1=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[1\]")
dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[2\]") dns2=$(modemmanager_get_field "${bearerstatus}" "bearer.ipv6-config.dns.value\[2\]")
modemmanager_connected_method_static_ipv6 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}" modemmanager_connected_method_static_ipv6 "${interface}" "${beareriface}" "${address}" "${prefix}" "${gateway}" "${mtu}" "${dns1}" "${dns2}" "${metric}" "${defaultroute}"
;; ;;
"ppp") "ppp")
proto_notify_error "${interface}" "unsupported method" proto_notify_error "${interface}" "unsupported method"

0
modemmanager/files/usr/sbin/ModemManager-wrapper Normal file → Executable file
View file

View file

@ -1,88 +0,0 @@
--- a/plugins/broadmobi/mm-plugin-broadmobi.c
+++ b/plugins/broadmobi/mm-plugin-broadmobi.c
@@ -19,7 +19,6 @@
#define _LIBMM_INSIDE_MM
#include <libmm-glib.h>
-#include "mm-port-enums-types.h"
#include "mm-log-object.h"
#include "mm-plugin-broadmobi.h"
#include "mm-broadband-modem.h"
--- a/plugins/dlink/mm-plugin-dlink.c
+++ b/plugins/dlink/mm-plugin-dlink.c
@@ -19,7 +19,6 @@
#define _LIBMM_INSIDE_MM
#include <libmm-glib.h>
-#include "mm-port-enums-types.h"
#include "mm-log-object.h"
#include "mm-plugin-dlink.h"
#include "mm-broadband-modem.h"
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -461,7 +461,7 @@ if plugins_options['huawei']
plugins += {'plugin-huawei': {
'plugin': true,
'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c'), 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
- 'module': {'sources': sources + enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'module': {'sources': sources + enums_sources + port_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
'test': {'sources': files('huawei/tests/test-modem-helpers-huawei.c') + enums_sources, 'include_directories': huawei_inc, 'dependencies': libhelpers_dep},
}}
--- a/plugins/telit/mm-plugin-telit.c
+++ b/plugins/telit/mm-plugin-telit.c
@@ -21,7 +21,6 @@
#define _LIBMM_INSIDE_MM
#include <libmm-glib.h>
-#include "mm-port-enums-types.h"
#include "mm-log-object.h"
#include "mm-modem-helpers.h"
#include "mm-plugin-telit.h"
--- a/plugins/tplink/mm-plugin-tplink.c
+++ b/plugins/tplink/mm-plugin-tplink.c
@@ -19,7 +19,6 @@
#define _LIBMM_INSIDE_MM
#include <libmm-glib.h>
-#include "mm-port-enums-types.h"
#include "mm-log-object.h"
#include "mm-plugin-tplink.h"
#include "mm-broadband-modem.h"
--- a/src/meson.build
+++ b/src/meson.build
@@ -147,15 +147,15 @@ endif
enums_types = 'mm-port-enums-types'
-enums_sources = []
-enums_sources += gnome.mkenums(
+port_enums_sources = []
+port_enums_sources += gnome.mkenums(
enums_types + '.c',
sources: headers,
c_template: build_aux_dir / enums_types + '.c.template',
fhead: '#include "mm-port-enums-types.h"',
)
-enums_sources += gnome.mkenums(
+port_enums_sources += gnome.mkenums(
enums_types + '.h',
sources: headers,
h_template: build_aux_dir / enums_types + '.h.template',
@@ -165,13 +165,13 @@ enums_sources += gnome.mkenums(
libport = static_library(
'port',
- sources: sources + enums_sources,
+ sources: sources + port_enums_sources,
include_directories: top_inc,
dependencies: deps + private_deps,
)
libport_dep = declare_dependency(
- sources: enums_sources[1],
+ sources: port_enums_sources[1],
include_directories: '.',
dependencies: deps,
link_with: libport,

View file

@ -1,96 +0,0 @@
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -88,7 +88,7 @@ if plugins_shared['icera']
plugins += {'shared-icera': {
'plugin': false,
'helper': {'sources': files('icera/mm-modem-helpers-icera.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('icera/tests/test-modem-helpers-icera.c'), 'include_directories': plugins_incs + [icera_inc], 'dependencies': libhelpers_dep},
}}
endif
@@ -185,7 +185,7 @@ if plugins_shared['telit']
plugins += {'shared-telit': {
'plugin': false,
'helper': {'sources': files('telit/mm-modem-helpers-telit.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
- 'module': {'sources': sources, 'include_directories': plugins_incs + [telit_inc], 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [telit_inc], 'c_args': common_c_args},
'test': {'sources': files('telit/tests/test-mm-modem-helpers-telit.c'), 'include_directories': telit_inc, 'dependencies': libmm_test_common_dep},
}}
endif
@@ -285,7 +285,7 @@ if plugins_options['cinterion']
plugins += {'plugin-cinterion': {
'plugin': true,
'helper': {'sources': files('cinterion/mm-modem-helpers-cinterion.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('cinterion/tests/test-modem-helpers-cinterion.c'), 'include_directories': plugins_incs + [include_directories('cinterion')], 'dependencies': libport_dep},
}}
@@ -460,8 +460,8 @@ if plugins_options['huawei']
plugins += {'plugin-huawei': {
'plugin': true,
- 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c'), 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
- 'module': {'sources': sources + enums_sources + port_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c') + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'module': {'sources': sources + enums_sources + port_enums_sources + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
'test': {'sources': files('huawei/tests/test-modem-helpers-huawei.c') + enums_sources, 'include_directories': huawei_inc, 'dependencies': libhelpers_dep},
}}
@@ -534,7 +534,7 @@ if plugins_options['mbm']
plugins += {'plugin-ericsson-mbm': {
'plugin': true,
'helper': {'sources': files('mbm/mm-modem-helpers-mbm.c'), 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
'test': {'sources': files('mbm/tests/test-modem-helpers-mbm.c'), 'include_directories': plugins_incs + [include_directories('mbm')], 'dependencies': libhelpers_dep},
}}
@@ -644,7 +644,7 @@ if plugins_options['option-hso']
plugins += {'plugin-option-hso': {
'plugin': true,
- 'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option-hso"'},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option-hso"'},
}}
endif
@@ -852,7 +852,7 @@ if plugins_options['ublox']
plugins += {'plugin-ublox': {
'plugin': true,
'helper': {'sources': files('ublox/mm-modem-helpers-ublox.c'), 'include_directories': plugins_incs, 'c_args': common_c_args},
- 'module': {'sources': sources, 'include_directories': plugins_incs + [ublox_inc], 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [ublox_inc], 'c_args': common_c_args},
'test': {'sources': files('ublox/tests/test-modem-helpers-ublox.c'), 'include_directories': ublox_inc, 'dependencies': libmm_test_common_dep},
}}
--- a/src/meson.build
+++ b/src/meson.build
@@ -225,14 +225,15 @@ sources = files(
enums_types = 'mm-daemon-enums-types'
-sources += gnome.mkenums(
+daemon_enums_sources = []
+daemon_enums_sources += gnome.mkenums(
enums_types + '.c',
sources: headers,
c_template: build_aux_dir / enums_types + '.c.template',
fhead: '#include "mm-daemon-enums-types.h"',
)
-sources += gnome.mkenums(
+daemon_enums_sources += gnome.mkenums(
enums_types + '.h',
sources: headers,
h_template: build_aux_dir / enums_types + '.h.template',
@@ -296,7 +297,7 @@ endif
executable(
'ModemManager',
- sources: sources,
+ sources: sources + daemon_enums_sources,
include_directories: top_inc,
dependencies: deps,
c_args: c_args,