Commit Graph
100 Commits
Author SHA1 Message Date
Aleksander Morgado 554faa855c api,modem: new 'GetCellInfo()' method
This new method allows querying the modem for information about the
current serving cell(s) as well as any other neighboring cell that may
be found.

The information for the cells is given in an array of dictionaries,
where each element of the dictionary is a new dictionary itself.

Each cell type has a different set of properties that may be given in
the dictionary, and some of those properties in each type are also
applicable under certain conditions (e.g. only applicable to the cell
if it's a 'serving' cell instead of 'neighboring').

The API documentation explains in detail what is expected in each
case.
2022-01-18 09:00:10 +00:00
Aleksander Morgado 322a601b29 broadband-modem-qmi: if UNSUPPORTED, ignore power update operation
We were returning success on this operation upon an UNSUPPORTED error,
and we should keep on doing the same after all the indication support
changes.
2022-01-14 10:36:39 +01:00
Aleksander Morgado 60f61e9740 broadband-modem-qmi: setup operation context for power up/down/off
We must keep a valid QmiClient reference for as long as the operation
runs, so that we can use it in all the request send operations we do,
and also so that we can remove the indication id upon completing the
operation.

The timeout id and indication id, which are also part of a single
power operation are also included in the operation context, because
they don't have any other meaning out of it.

The operation context is stored as task data.
2022-01-14 10:36:39 +01:00
Aleksander Morgado 1291754e60 broadband-modem-qmi: rework log and error messages 2022-01-14 10:36:39 +01:00
Aleksander Morgado 3216e7a21a broadband-modem-qmi: don't pass full reference to signal handlers
As in the case of the timeouts, we should not pass a full reference as
data to the signal handler as we don't know how many times we'll
receive the signal or if we'll ever receive it.

We already make sure that the signal handler is disconnected when the
operation ends, so we can be sure the self pointer is valid while the
signal handler is connected.
2022-01-14 10:36:39 +01:00
Aleksander Morgado 504d6f51a3 broadband-modem-qmi: reorder code and minor coding style fixes 2022-01-14 10:36:39 +01:00
Aleksander Morgado c3fcb66acf broadband-modem-qmi: don't pass full reference in timeouts
The timeout may not be called if we remove it earlier (e.g. if the
indication is received) and therefore we must not pass a full new
reference, otherwise it may get leaked.

There is no problem with the validity of the self pointer in timeout
callbacks because we're removing the timeout as part of the operation
teardown logic.
2022-01-11 11:33:38 +01:00
Aleksander Morgado fa1e581f13 broadband-modem-qmi: remove paranoid assert
We just created the GTask and we just updated the stored pointer,
checking for it being non-NULL at this point is a bit paranoid
2022-01-11 11:32:36 +01:00
Aleksander Morgado 447243f667 broadband-modem-qmi: avoid capitalizing all words in error message 2022-01-11 11:32:02 +01:00
Aleksander Morgado fb0dfb8751 iface-modem-3gpp: fix variant ref handling in scan output 2022-01-07 21:35:43 +01:00
Aleksander Morgado 4515b00020 libmm-glib,modem-3gpp: fix leak when processing scan results 2022-01-07 21:35:43 +01:00
Aleksander Morgado d30ad946d0 build: ignore test-kernel-device-helpers 2022-01-07 12:38:52 +01:00
Aleksander Morgado 1c1ba66d5e docs,libmm-glib: add missing references to reload stats supported related methods 2022-01-06 20:51:59 +01:00
Aleksander Morgado cf210e3916 docs,libmm-glib: add missing reference to index field related methods 2022-01-06 20:51:59 +01:00
Aleksander Morgado 6449828535 docs,libmm-glib: fix references to new SIM property methods and types 2022-01-06 20:51:59 +01:00
Aleksander Morgado 0eaf42572b docs,libmm-glib: add missing reference for MMNr5gRegistrationSettings 2022-01-06 20:51:59 +01:00
Aleksander Morgado bae2f3b204 api,modem: fix alignment in SetPrimarySimSlot() 2022-01-06 20:31:29 +01:00
Aleksander Morgado 791fb38417 cli: fix 3GPP location mcc/mnc field names 2021-12-26 11:04:05 +01:00
Aleksander Morgado 3fac73a113 iface-modem-simple: explicit short wait after enabling
When we have just enabled, we want to give it some time before
starting the registration process, so that any pending registration
update that may have been scheduled during the enabling phase is
applied. We don't want to trigger a new automatic registration if
e.g. we're already registered.
2021-12-26 11:02:45 +01:00
Aleksander Morgado 1ffd693f54 iface-modem-simple: fix connection attempt start place
The 'ENABLE + 1' step is 'WAIT_FOR_ENABLED' really, and that should be
only used when the current state is not a final one. If we're already
enabled, or registered, or connected, then jump to 'REGISTER' right
away.
2021-12-26 11:02:45 +01:00
Aleksander Morgado 1199fa934d broadband-modem-mbim: schedule reg info updates as soon as enabled
During the enabling phase, the modem may receive a lot of asynchronous
updates reporting registration info changes, but we were fully
ignoring them because the modem was not yet enabled. The problem with
this is that as soon as we reach the enabled state, we may not receive
additional info, so we would be left in 'enabled' state until new
asynchronous updates are received or until we start a connection
attempt.

We can solve this by triggering an explicit update with the
registration information that we have cached as soon as we're enabled.
2021-12-26 11:02:45 +01:00
Aleksander Morgado 73eda8cdc8 broadband-modem-mbim: don't miss operator id/name on packet service updates 2021-12-26 11:01:50 +01:00
Aleksander Morgado 59c79b07ae iface-modem: minor coding style changes 2021-12-26 11:01:50 +01:00
Aleksander Morgado f2f2dfec13 broadband-modem-mbim: reload ATDS location on reg state changes
Only if transitioning into a "registered" state ("home", "roaming",
"partner") or if "denied"; otherwise, assume LAC/TAC/CID are all
unknown.

This change makes the logic also reload the location info on
registration updates reported asynchronously via notifications.
2021-12-26 11:01:50 +01:00
Aleksander Morgado f9487cf3d1 core: new '--test-mbimex-profile-management' option
The profile management APIs implemented by Microsoft in the MBIM
extensions provide certain features that are not available via other
means (e.g. ip type, access type preference, roaming allowance...).

Unfortunately, these APIs require the current list of profiles
installed in the modem to be a bit special; e.g. with one profile max
for each context/APN type. If this does not happen, the operations
will fail, or they will update contexts that should not be updated.

So, we disable for now the MBIM extension profile management support;
the logic is there, but not used by default.
2021-12-26 10:12:33 +01:00
Aleksander Morgado 2bfa6863c4 mmcli: new '--3gpp-profile-manager-status' operation
In order to show the properties of the profile management interface, e.g.:

  $ sudo mmcli -m a --3gpp-profile-manager-status
    -----------------------------------
    3GPP profile manager | index field: apn-type
2021-12-26 10:12:32 +01:00
Aleksander Morgado 80c4f49940 cli,modem-3gpp-profile-manager: delete should allow other index fields
Instead of expecting a specific profile id, allow the command to
support different index field types.
2021-12-26 10:12:31 +01:00
Aleksander Morgado 853aa29be8 iface-modem-3gpp-profile-manager: support 'apn-type' as index field
The modem may report the 'apn-type' field is the one to be used as
index; if that's the case, allow setting and deleting profiles based
on the given 'apn-type' field.

This change also makes the internal profile management operations use
one index field or another, based on what the protocol implements.
2021-12-26 10:12:11 +01:00
Aleksander Morgado 0d0ad722d9 iface-modem-3gpp-profile-manager: initialize the 'IndexField' property 2021-12-26 10:12:05 +01:00
Aleksander Morgado f97957046b libmm-glib,profile-manager: new getters for the 'IndexField' property 2021-12-24 14:06:13 +01:00
Aleksander Morgado 049ebb7084 api,profile-manager: new 'IndexField' property
For most protocols, the operations to manage profiles require a unique
'profile-id' as index. This applies to AT, QMI and generic MBIM.

But for MBIM using the Microsoft Extensions for profile management,
this is no longer true; the device expects the 'apn-type' to be the
index.

This new property lets the user know which is the expected index field
in the Delete() and Set() operations.
2021-12-24 14:06:13 +01:00
Aleksander Morgado b90d64192a broadband-modem-mbim: support profile properties from MbimProvisionedContextElementV2
Microsoft defined a new extended version of the "provisioned contexts"
operation from the generic MBIM basic connect service. This extended
version adds several new settings that can be stored in the profile
(e.g. IP type, media type, roaming allowance...).

But this new version has a huge drawback; we cannot specify single
profiles via their unique id while we perform update/delete operations
in the modem. Instead, Microsoft explains that we should use the
context type to identify the target context; but this will ONLY work
if we have one context defined for each type. As soon as we have
multiple contexts of the same type, this operation may fail or
otherwise update multiple contexts at once.
2021-12-24 14:06:11 +01:00
Aleksander Morgado 6ba245cedc broadband-modem-mbim: new profile settings not available in MBIM protocol
At least not yet.
2021-12-24 14:05:35 +01:00
Aleksander Morgado 1b37ccc27a broadband-modem-qmi: new profile settings not available in QMI protocol
At least not yet.
2021-12-24 14:05:35 +01:00
Aleksander Morgado ebe9a33411 broadband-modem: new profile settings not available in generic AT protocol 2021-12-24 14:05:35 +01:00
Aleksander Morgado 87eaac8f9d iface-modem-3gpp: don't compare new properties when matching initial EPS bearer 2021-12-24 14:05:35 +01:00
Aleksander Morgado e7c55f5f70 cli: indent all profile property names to the same column 2021-12-24 14:05:35 +01:00
Aleksander Morgado a896f88bf9 cli: don't use dashes in 3GPP profile human output 2021-12-24 14:05:35 +01:00
Aleksander Morgado 3c0d94ac03 cli: new 'profile-source' setting in 3GPP profile 2021-12-24 14:05:35 +01:00
Aleksander Morgado fb0b00db16 cli: new 'roaming-allowance' in 3GPP profile and bearer properties 2021-12-24 14:05:35 +01:00
Aleksander Morgado 99ca2f5a1c cli: new 'profile enabled' setting in 3GPP profile 2021-12-24 14:05:35 +01:00
Aleksander Morgado 41887b3fb7 cli: new 'access-type-preference' in 3GPP profile and bearer properties 2021-12-24 14:05:32 +01:00
Aleksander Morgado 50fc0101f5 libmm-glib: new 'profile-source' in 3GPP profile
Not applicable to bearer properties, as this is exclusively a proflie
management setting, unrelated to connection attempts.
2021-12-24 14:03:15 +01:00
Aleksander Morgado f6a91b2250 libmm-glib: new 'roaming-allowance' in 3GPP profile and bearer properties 2021-12-24 14:03:15 +01:00
Aleksander Morgado 24e634229d libmm-glib: new 'profile-enabled' in 3GPP profile
Not applicable to bearer properties, as this is exclusively a proflie
management setting, unrelated to connection attempts.
2021-12-24 14:03:15 +01:00
Aleksander Morgado e61fd7ca58 libmm-glib: new 'access-type-preference' in 3GPP profile and bearer properties 2021-12-24 14:03:13 +01:00
Aleksander Morgado fc6bc84d22 api,bearer: new 'profile-source' setting
Sometimes it's useful to know how a given stored profile was created,
so devices can store and report this kind of information.
2021-12-24 14:02:30 +01:00
Aleksander Morgado 73a29c3e33 api,bearer: new 'roaming-allowance' setting
The 'allow-roaming' setting should be considered deprecated for 3GPP
devices that support the new 'roaming-allowance' setting, which is
much more detailed (as it allows to differentiate between partner and
non-partner networks) and may also be stored as part of a profile.
2021-12-24 14:02:30 +01:00
Aleksander Morgado 52538defe1 api,bearer: specify how 'allow-roaming' works
This is never part of profile settings, it's a volatile configuration
applicable to the connection attempt ongoing with the given bearer
settings.
2021-12-24 14:02:30 +01:00
Aleksander Morgado 1010c3be4e api,bearer: new 'profile-enabled' setting
This setting is stored as part of the profile in the device, and
allows the user to specify that a given profile must not be used in
any way by the modem (if set to 'FALSE').
2021-12-24 14:02:30 +01:00
Aleksander Morgado 339b51652a api,bearer: new 'access-type-preference' setting
In 5G capable devices, which can support multiple types of access
types (either 3GPP or non-3GPP), the UE may request to use a 3GPP
access type exclusively, prefer a 3GPP access type, or just report no
preference.

When supported, this field may also be part of the settings that can
be stored as part of a profile.
2021-12-24 14:02:28 +01:00
Aleksander Morgado 93709f8dc2 broadband-modem-mbim: implement 5GNR registration settings update 2021-12-24 12:41:27 +00:00
Aleksander Morgado 296cce0bbb broadband-modem-mbim: implement 5GNR registration settings loading 2021-12-24 12:41:27 +00:00
Aleksander Morgado 61675e1555 iface-modem-3gpp: implement support for updating 5GNR registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado 396f9c533a iface-modem-3gpp: minor coding style change 2021-12-24 12:41:27 +00:00
Aleksander Morgado 60fe68f609 iface-modem-3gpp: implement loading 5GNR registration settings during init 2021-12-24 12:41:27 +00:00
Aleksander Morgado a6dd7ac60f cli,modem: add 5GNR registration settings in modem info output 2021-12-24 12:41:27 +00:00
Aleksander Morgado dcf9bb4ee8 cli,modem-3gpp: new '--3gpp-set-nr5g-registration-settings' action 2021-12-24 12:41:27 +00:00
Aleksander Morgado 5395a85443 libmm-glib,modem-3gpp: add support to get/set 5GNR registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado 22657021fb libmm-glib: new helper to handle the 5GNR registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado 724342deac api,modem3gpp: add DRX cycle in 5G registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado 029ea68ce4 base-bearer: make sure 'ReloadStatsSupported' is set before transitioning to 'Connected'
By the time we report the bearer as 'Connected', the DBus client
should also be able to know right away the value of
'ReloadStatsSupported', instead of needing to wait for it to be
updated asynchronously.

This logic adds one additional step in the generic connection
sequence for this purpose, which is run after the modem is connected
but before we report the state change via DBus.
2021-12-13 09:35:28 +00:00
Aleksander Morgado 07c4e95ac9 api,enums: minor alignment fix in comments 2021-12-11 22:12:13 +01:00
Aleksander Morgado b094fe4427 port-probe: duplicate amount of AT probing attempts
We originally did only 3 attempts every 3s, so the maximum probing
time for a given TTY port looking for AT capabilities was 9 seconds.
We now duplicate the amount of times, so up to 18s of port probing,
which is quite a lot more than before, but unfortunately it's needed
because most new modems take a lot of time to boot up internally.

The way to avoid this long probing time is to make sure port type
hints for the possible AT ports are set correctly.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/379
2021-12-11 20:22:57 +00:00
Aleksander Morgado 2c34ebe80c port-mbim: support MBIMEx v3.0
The ModemManager codebase has been ported to support Basic Connect v3
messages as defined in MBIMEx v3.0, so at this point we can now switch
to use it by default whenever possible.
2021-12-11 13:13:37 +01:00
Aleksander Morgado 2cf8b7858e broadband-modem-mbim,bearer-mbim: support packet service from MBIMEx v3.0
Whenever MBIMEx v3.0 is enabled, the logic should create requests and
parse responses using the updated format.

Based on an initial implementation by Som_SP <somashekhar.puttagangaiah@intel.com>
2021-12-11 13:13:33 +01:00
Aleksander Morgado 3382e421cc broadband-modem-mbim,bearer-mbim: support connect from MBIMEx v3.0
Whenever MBIMEx v3.0 is enabled, the logic should create requests and
parse responses using the updated format.

Based on an initial implementation by Som_SP <somashekhar.puttagangaiah@intel.com>
2021-12-11 13:12:55 +01:00
Aleksander Morgado 9940bd9dbe broadband-modem-mbim: treat 'no eSIM profile' as initialized
When an eSIM doesn't have any profile set, we should treat it as fully
ready to be used; i.e. so that a new SIM object can be created and
initialized.

In this state, the "eSIM status" property will say "No profiles".
2021-12-11 12:53:37 +01:00
Aleksander Morgado 36402df05b sim-mbim: load 'SimType', 'Removability' and 'EsimStatus' properties
We can use the MBIMEx v3.0 support to load the SIM type, SIM
removability details and eSIM status.
2021-12-11 12:53:37 +01:00
Aleksander Morgado c76da3bed9 broadband-modem-mbim,sim-mbim: support subscriber ready status from MBIMEx 3.0
Whenever MBIMEx v3.0 is enabled, the logic should parse the response
and indication messages using the updated format.
2021-12-11 12:53:37 +01:00
Aleksander Morgado 83ebc2b4a8 base-sim: new 'SimType', 'Removability' and 'EsimStatus' properties
We implement the methods to load the properties during SIM object
initialization.
2021-12-11 12:53:37 +01:00
Aleksander Morgado 8cfddef2be base-sim: reorder init ready() methods
The ready() methods for each step in the initialization sequence must
be ordered from bottom to top, so that we can read the logic in that
same order.
2021-12-11 12:53:37 +01:00
Aleksander Morgado 8aef73ab53 base-sim: reorder load_preferred_networks()
Add it along with the other initialization property loaders.
2021-12-11 12:53:37 +01:00
Aleksander Morgado f8719e6308 cli,sim: new 'SimType', 'Removability' and 'EsimStatus' properties 2021-12-11 12:53:37 +01:00
Aleksander Morgado 0eda648bb9 libmm-glib,sim: new 'SimType', 'Removability' and 'EsimStatus' properties 2021-12-11 12:53:37 +01:00
Aleksander Morgado b07ce3cb87 libmm-glib,sim: reoder get_preferred_networks()
Add it along with the other getters.
2021-12-11 12:53:37 +01:00
Aleksander Morgado 3f8ea6e8a1 sim-mbim: common method for Subscriber Ready Status
Instead of running the Susbcriber Ready Status separately for IMSI and
ICCID, we run it only once and store the results in a new private
struct.

It only saves one request/response right now, but it will save more
once introduced other SIM parameters loaded with the same method.
2021-12-11 12:53:37 +01:00
Aleksander Morgado 559df16deb filter: allow 'option' string in the TTY driver filter list
Fixes
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/475
2021-12-08 14:30:59 +01:00
Aleksander Morgado e9f254ba3f udev: avoid [0-9]* as shell globbing patterns
The udev rules expect matches based on shell globbing pattern, not
based on regex. This means that "[0-9]*" doesn't mean "zero or more
digits", it actually means "one digit and zero or more other
characters".

So, avoid the regex like match, even if it worked for us, because it
didn't mean what we thought it meant, plus, it breaks our custom udev
rules processing logic, in which we convert the input patterns into
real regex expressions.

See https://bbs.archlinux.org/viewtopic.php?pid=1415916#p1415916

While at it, also make sure that the wildcard matching is done
exclusively for prefix and suffix matches, never in the middle of
a string, or our custom rules parser would not match correctly.
2021-12-01 22:12:06 +01:00
Aleksander Morgado 558a681fc8 sms-part-cdma: remove trailing whitespaces 2021-11-26 09:38:18 +01:00
Aleksander Morgado d2b620c5fa libmm-glib,modem: fix warning when loading SIM slots
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/465
2021-11-22 13:04:52 +00:00
Aleksander Morgado afb213ac05 bearer-mbim: fix error handling in connection status reload
We should not set the GError as autoptr(), as we're returning it as
part of the GTask.
2021-11-21 15:18:27 +01:00
Aleksander Morgado 647a438b43 bearer-mbim: plug leak when checking if already disconnected fails
If the modem reports any error during the connection status check,
we're creating a GError but never disposing it. We don't need that
GError for anything, so just discard it.
2021-11-21 14:51:24 +01:00
Aleksander Morgado e7a6bb7504 data,fcc-unlock: add example unlock scripts
Added scripts for Foxconn SDX55, Quectel EM120, and several old Sierra
Wireless manufactured devices:
 * Installed but not used by default, the user needs to setup manual
   links from ${pkgdatadir}/fcc-unlock.available.d, to
   ${pkgsysconfdir}/fcc-unlock.d in order to enable them.
 * Installed with rights only for the owner, so that the dispatcher in
   ModemManager can validate them.
 * They rely on $PATH to find the qmicli/mbimcli tools.

In addition to these scripts, per-vid:pid links are created in the
same ${pkgdatadir}/fcc-unlock.available.d directory, specifying which
are the specific devices that require the FCC unlock operation.

This patch also creates the ${pkgsysconfdir}/fcc-unlock.d and
${pkglibdir}/fcc-unlock.d directories where ModemManager looks for the
enabled tools.

Note that the meson setup doesn't support creating/deleting links
officially yet, so we use a workaround using meson.add_install_script
that is not perfect (i.e. doesn't handle the symlink removal during
uninstall). See https://github.com/mesonbuild/meson/issues/1602
2021-11-18 11:20:41 +01:00
Aleksander Morgado 81302efa66 iface-modem: use external dispatcher to attempt FCC unlock
We remove the built-in FCC unlock procedures from the ModemManager, we
will no longer run them automatically, and instead rely on external
scripts/programs to do that.

Packages providing the external FCC unlock tools can install them in
${pkglibdir}/fcc-unlock.d.

Users manually enabling external FCC unlock tools can install them in
${pkgsysconfdir}/fcc-unlock.d.

The user-enabled path takes precedence over the package-enabled one.
2021-11-17 11:30:01 +01:00
Aleksander Morgado 21c775703c libmm-glib: fix license in sources
The libmm-glib library is LGPLv2+, not GPLv2+.
2021-11-16 17:54:26 +01:00
Aleksander Morgado 59ad8409a6 kerneldevice,generic: simplify DEVPATH matching logic
Use autoptr to avoid the embedded goto.
2021-11-09 10:50:26 +01:00
Aleksander Morgado 03fce4775e kerneldevice,generic: input pattern to string match is not regex
The input pattern given to the string_match() method is not a regex
pattern and we cannot use it as that, because all the special
characters (e.g. '.') would not be treated correctly.

Also, the prefix matching with the wildcard at the end of the string
needs to be converted to a proper regex wildcard, i.e. '.*'.

This logic also adds support for suffix matching, with a wildcard at
the beginning of the string, e.g. as the ones used for the wwan kernel
device name matching rules (i.e. '*MBIM').

Unit tests are added to cover all cases, most of these tests were
failing without the fixes implemented here.
2021-11-09 10:50:26 +01:00
Aleksander Morgado 73b44ea51b kerneldevice,generic: move string match method to helpers
So that we can propertly unit-test it.
2021-11-09 10:50:26 +01:00
Aleksander Morgado 7a7bc2e444 RELEASING: update default branch name to 'main' 2021-11-04 23:33:20 +01:00
Aleksander Morgado 8680afffe0 ci: switch to trigger pipelines on the 'main' branch 2021-11-04 23:33:02 +01:00
Aleksander Morgado 15db736024 po: switch 'master' to 'main' in Project-Id-Version 2021-11-04 23:32:18 +01:00
Aleksander Morgado 93bff5a061 broadband-bearer: minor fix in code comment 2021-11-04 22:53:27 +01:00
Aleksander Morgado 0012c63bf4 core: replace 'greylist' with 'allowlist'
There's a single replacement, and it made sense to have 'allowlist' there.
2021-11-04 22:51:42 +01:00
Aleksander Morgado a37ce05a02 core: replace 'slave' with 'secondary' 2021-11-04 22:50:23 +01:00
Aleksander Morgado e8ebd3af7e core: replace 'master' with 'main' 2021-11-04 22:50:00 +01:00
Aleksander Morgado 9f679d4cac core: replace 'dummy' with 'placeholder' 2021-11-04 22:44:20 +01:00
Aleksander Morgado 3444b02932 core: replace 'whitelist' with 'allowlist' and 'blacklist' with 'blocklist'
We keep the 'WHITELIST-ONLY' filter type name still as an option in
--filter-policy=[POLICY], but deprecated and with the better
'ALLOWLIST-ONLY' replacement suggested from now on.
2021-11-04 22:40:28 +01:00
Aleksander Morgado eae2e28577 api,bearer: specify that 'profile-name' is part of profile management
The setting does not make much sense in an explicit connection attempt.
2021-11-04 21:21:57 +01:00
Aleksander Morgado 797cc6828a api,bearer: minor indentation fixes 2021-11-04 21:21:57 +01:00