network: Assign "static" MAC addresses to QMI interfaces

This is really badly hacky, but I do not know a better way to solve this
with our existing "setup" program which would be a nightmare to extend.

So we are using the device number to generate a static MAC address which
can then be used as usual. I doubt many people will have more than one
device.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Michael Tremer
2022-12-01 17:23:16 +00:00
committed by Peter Müller
parent 8d09028b69
commit 580c249a5b
2 changed files with 32 additions and 1 deletions

View File

@@ -179,7 +179,7 @@ qmi_find_device() {
local path
for path in /dev/cdc-*; do
if [ -c "${path}" ]; then
_intf="$(qmicli --device="${path}" --device-open-proxy --get-wwan-iface)"
_intf="$(qmi_find_interface "${path}")"
# Check if the interface matches
if [ "${intf}" = "${_intf}" ]; then
@@ -193,6 +193,12 @@ qmi_find_device() {
return 1
}
qmi_find_interface() {
local device="${1}"
qmicli --device="${device}" --device-open-proxy --get-wwan-iface
}
qmi_enable_rawip_mode() {
local intf="${1}"
@@ -259,3 +265,19 @@ qmi_reset() {
qmicli --device="${device}" --device-open-proxy \
--wds-reset
}
# Assigns a "static" MAC address
qmi_assign_address() {
local intf="${1}"
# Find the device
local device="$(qmi_find_device "${intf}")"
local address
# Generate a "random" MAC address using the device number
printf -v address "02:ff:ff:ff:ff:%02x" "${device:12}"
# Change the MAC address
ip link set "${intf}" address "${address}"
}