Commit graph

31870 commits

Author SHA1 Message Date
Fernando Fernandez Mancera 28c27f3070 libnm: adjust symbol versioning for backporting replace-local-rule
NM 1.44 is not released yet and 1.42.2 will happen before 1.44.0, so we
can introduce the new API with version libnm_1_42_2 in both releases
without having duplicate symbols on 1.44.
2023-02-21 18:20:44 +01:00
Thomas Haller a08214f60d
wwan: workaround missing mm_modem_3gpp_set_initial_eps_bearer_settings() API
This was introduced only in MM 1.10. This breaks build on Centos7.

Fixes: c52999ee90 ('wwan: Set initial EPS bearer settings')
2023-02-21 18:04:23 +01:00
Fernando Fernandez Mancera 6595954f94 merge: branch 'ff/route_rule_0'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1542
2023-02-21 15:37:29 +01:00
Fernando Fernandez Mancera d2ca44ffc6 all: add new "ipv[46].replace-local-rule" setting
This setting allows the user to remove the local route rule that is
autogenerated for both IPv4 and IPv6. By default, NetworkManager won't
touch the local route rule.
2023-02-21 15:36:38 +01:00
Fernando Fernandez Mancera 79611e4fcc platform: introduce function to globally track local route rule
The new function tracks local route rule in the GlobalTracker properly.
It also allow the developer to specify the untrack user tag.
2023-02-21 15:36:38 +01:00
Fabrice Fontaine 3a3ac89b53
meson.build: fix build failure with -Dmodem_manager=false
Fix the following build failure with -Dmodem_manager=false raised since
commit 03ba04d478 ('build: meson: add option to set the
mobile-broadband-provider-info database').

  ../output-1/build/network-manager-1.40.10/meson.build:1060:0: ERROR: Unknown variable "mobile_broadband_provider_info_database".

http://autobuild.buildroot.org/results/896879c8e8ce022556ee834216ced2f962ff279c

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Fixes: 03ba04d478 ('build: meson: add option to set the mobile-broadband-provider-info database')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1544
2023-02-21 14:56:15 +01:00
Beniamino Galvani 34417ac3e6 merge: branch 'bg/hostname-skip-ipv6-tentative'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1536
2023-02-21 13:50:14 +01:00
Beniamino Galvani 4138be6a5a device: skip DNS resolution for tentative IPv6 addresses
A tentative IPv6 address can still fail DAD, so don't use it to
resolve the hostname via DNS. Furthermore, tentative addresses can't
be used to contact the nameserver and so the resolution will fail if
there is no other valid IPv6 address. Wait that the address becomes
non-tentative.
2023-02-21 13:46:55 +01:00
Beniamino Galvani ac5325e96b nm-daemon-helper: log to stderr any error from getaddrinfo()
Print errors from getaddrinfo() to stderr so that they will be logged
by NM.
2023-02-21 13:46:55 +01:00
Beniamino Galvani d65702803c core: print stderr from nm-daemon-helper
Currently the only way to return an error code from the daemon helper
is via the process exit code, but that is not enough to fully describe
an error from getaddrinfo(); in fact, the function returns a EAI_*
error code and when the value is EAI_SYSTEM, the error code is
returned in errno.

At the moment, any messages printed to stderr by the helper goes to NM
stderr; instead, we want to capture it and pass it through the logging
mechanism of NM, so that it can be filtered according to level and
domain.
2023-02-21 13:46:54 +01:00
Beniamino Galvani 7037aa66c6 device: improve logging for hostname-from-dns events
Improve logging:
 - log only when something changes
 - print the new resolver state, instead of the old one
 - rename state "in-progress" to "started"
 - log when the resolver state is reset due to DNS changes
2023-02-21 13:46:54 +01:00
Beniamino Galvani 961824d43b core: change buffer allocation size for the daemon helper
Use slightly more efficient sizes.
2023-02-21 13:46:54 +01:00
Thomas Haller afbbfebfdb
dhcp: merge branch 'th/dhcp-iaid'
https://bugzilla.redhat.com/show_bug.cgi?id=2169869

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1534
2023-02-21 09:29:44 +01:00
Thomas Haller f36fabc0fa
libnm/docs: improve documentation for ipv[46].dhcp-iaid setting 2023-02-21 09:20:51 +01:00
Thomas Haller 2fe4313b92
dhcp: log used DHCP IAID as hexstr
This is also the format that we will use to expose it in the lease
information. It's the format that dhclient uses.
2023-02-21 09:20:51 +01:00
Thomas Haller 07f1789725
dhcp: add the DHCPv6 IAID to the lease information
We already get the IAID from the dhclient environment. This is actually
rather useful, because dhclient plugin does not support setting the
value (that is, what we request in "config.v6.iaid" is not actually
used). Already previously, was the IAID for dhclient present in the
lease information. Now also normalize/verify it.

Expose the used IAID also with the internal (systemd) plugin. There we
explicitly set the IAID and know it.
2023-02-21 09:20:51 +01:00
Thomas Haller 5a05ba398b
dhcp: add "static_key" argument to nm_dhcp_option_add_option() etc.
Our lease is tracked in a plain string dictionary. For dhclient plugin
and similar, the keys are received via the environment, they are thus
unlimited. For the internal plugins they are known at compile time and
static strings. We thus sometimes need to clone the string, and
sometimes not.

Unfortunately, we cannot ask the GHashTable whether it has a free
function for the key, so we need to explicitly tell it. Add a parameter
for that.
2023-02-21 09:13:09 +01:00
Thomas Haller e5dc489197
libnm: accept ipv[46].dhcp-iaid as hexstr
dhclient exports the currently used IAID in the environment as
hex string. We expose this environment in our API, so this is also
the format that NetworkManager uses.

Accept setting the ipv[46].dhcp-iaid as hex string, so that the same
format is accepted on the profile.

While at it, also accept a hex number (0x) because it is also
convenient, and this change already introduces the precedent that the
IAID string is not unique/normalized.
2023-02-21 09:13:08 +01:00
Thomas Haller 4c18adbc74
base: add nm_dhcp_iaid_{from,to}_hexstr() helpers 2023-02-21 09:13:08 +01:00
Thomas Haller 69106d0aef
core: reuse _nm_utils_iaid_verify() for parsing
There should be one function for parsing the string. Use it everywhere.

Also, because we will accept specifying the IAID as hex string so the
same parsing code should be used everywhere.
2023-02-21 09:12:59 +01:00
Beniamino Galvani d403ac3d40 device: update address in nm_device_update_from_platform_link()
When a software device is deactivated, normally we schedule a idle
task to unrealize the device (delete_on_deactivate). However, if a new
activation is enqueued on the same device (and that implies that the
new profile is compatible with the device), then the idle task is not
scheduled and the device will normally transition to the different
states (disconnected, prepare, config, etc.).

For ovs-interfaces, we remove the db entry on disconnect and that
makes the link go away; however, we don't clear the hw_addr* fields of
the device struct.

When the new link appears, we try to set the new cloned MAC but the
stale hw_addr field indicates that it's already set. Avoid this
problem by updating the address as soon as the link appears.

https://bugzilla.redhat.com/show_bug.cgi?id=2168477
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1532
2023-02-20 17:35:35 +01:00
Thomas Haller a1cdec7894
gsm: merge branch 'svenschwermer:initial-eps-bearer'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1331
2023-02-20 15:25:42 +01:00
Sven Schwermer c52999ee90
wwan: Set initial EPS bearer settings
Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2023-02-20 12:59:41 +01:00
Sven Schwermer db3b112846
libnm: Add initial EPS parameters to gsm settings
The configure flag and APN for the initial EPS bearer are used when
bringing up cellular modem connections. These settings are only relevant
for LTE modems.

Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2023-02-20 12:59:39 +01:00
Thomas Haller 49d6e1fe4b
libnm: extract helper function to verify APN in "nm-setting-gsm.c" 2023-02-20 12:49:30 +01:00
Beniamino Galvani a839395e30 dispatcher: fix constructing the IPv4 nameserver variable
Use the value of the address instead of its pointer.

Fixes: c68e148b02 ('core: extend NML3ConfigData:nameserver to track DNS as string')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1217
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1539
2023-02-20 09:36:30 +01:00
Wen Liang 33d6f4f3a2 dbus: merge branch 'wl/deprecate_dbus_master_prop'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1205
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1514
2023-02-16 11:04:33 -05:00
Wen Liang af677542b5 dbus: deprecate the NMActiveConnection Master property
To embrace the inclusive language, deprecate the NMActiveConnection
Master property and in favor of the NMActiveConnection Controller
property.
2023-02-16 11:04:14 -05:00
Wen Liang b4e96ec067 nm-client: expose the method nml_dbus_property_o_notify() 2023-02-16 11:04:14 -05:00
Wen Liang 09e86a5e7c add _NM_DEPRECATED_INCLUSIVE_LANGUAGE_1_44 2023-02-16 11:04:14 -05:00
Ratchanan Srirattanamet 08a38ed619
wwan/ofono: fix a couple of logic errors in update_connection_list()
- Only consider preferred context of "internet" type. There can be
  multiple preferred contexts of multiple types, and we care about
  "internet" type only.
- Don't check for "internet+mms" type. It turns out that "internet+mms"
  isn't a thing in oFono, and is used to represent "internet" context
  with MMSC in the lomiri-system-setting's UI only.

Fixes: 9fc72bf75d ('wwan/ofono: create connections based on available contexts')
Bug-UBports: https://gitlab.com/ubports/development/core/packaging/network-manager/-/issues/3
2023-02-16 16:42:39 +01:00
Thomas Haller c2bbc0e0c8
glib-aux: choose favorable reallocation sequence in nm_utils_fd_read()
Ensuring to have 1000 bytes available is not a good start.
Because, if we start with an empty buffer (allocated fewer
than 1000 bytes), on first call we will reserve 1000 bytes.
If we then just read one byte, on the next read we would again
try to reserve 1000 bytes, and already require a reallocation.

In this case it is better to reserve 488+1 or 1000+1 bytes.
2023-02-16 10:45:52 +01:00
Thomas Haller 69d7249244
examples: support older libnm without NM.SettingOvsOtherConfig in "ovs-external-ids.py"
This example script is used by our NM-ci. Make it work also with libnm
versions that don't yet support NM.SettingOvsOtherConfig.
2023-02-16 10:17:48 +01:00
Thomas Haller 004464cfbd
contrib: update "configure-for-system.sh" and start build
"configure-for-system.sh" is supposed to be in sync with
NetworkManager.spec. Update for the recent changes.

Also add a make/ninja call at the end. Almost always we want to build
after the configure.
2023-02-14 09:15:39 +01:00
Thomas Haller 786ebecee9
contrib/rpm: minor cleanup of "NetworkManager.spec"
Reorder ppp arguments so that they make more sense and are consistent
with the autotools code.
2023-02-14 09:03:31 +01:00
Julia Dronova 3444af517f
po: update Russian (ru) translation
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1213
2023-02-13 20:51:37 +01:00
Beniamino Galvani 27ad228df1 device: preserve assume state if updating port fails
If we fail to update the port connection, don't forget the assume
state but try again later. This helps when assuming a team connection
and its ports: the ports may fail to generate a connection because
teamd was not started yet; in that case we need to try again.

https://bugzilla.redhat.com/show_bug.cgi?id=2092215
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1523
2023-02-13 15:46:02 +01:00
Thomas Haller 5973e83160
systemd: merge branch systemd into main
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1529
2023-02-13 15:33:02 +01:00
Heiko Thiery 03ba04d478
build: meson: add option to set the mobile-broadband-provider-info database
When building network-manager in cross-compile environment meson is not able
to detect the right location of the mobile-broadband-provider-info
database by using the pkg-config module.

By adding the option 'mobile_broadband_provider_info_database' to set the
correct path to the datafile this can be solved.

Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1519
2023-02-13 11:02:50 +01:00
Thomas Haller 004ffb91cf
examples: rework "python/gi/show-wifi-networks.py" example
- only printing the scan list is not gonna cut it. It's usually stale,
  and we need to request a new scan.

- don't hard-code the GEnum and GFlags values that we understand. We
  have libnm, which provides us some meta information about the data.
  Use it.

- Some code cleanup.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1531
2023-02-13 10:32:45 +01:00
Thomas Haller a798b4f3f6
contrib/release: fix version in import-docs hint message 2023-02-13 10:24:08 +01:00
Thomas Haller d3548279c1
std-aux: suppress verbose assert message with _nm_assert_fail()
We also do that with g_return*() macros. These strings increase the
binary size for little use. Drop them, unless we build with
more asserts enabled.

This affects nm_assert() messages.
2023-02-13 09:33:10 +01:00
Thomas Haller a29eb970c8
Revert "std-aux: drop assertion and function name from assert() in release mode"
glibc defines __assert_fail as:

  extern void __assert_fail (const char *__assertion, const char *__file,
                             unsigned int __line, const char *__function)
       __THROW __attribute__ ((__noreturn__));

but musl as:

  _Noreturn void __assert_fail (const char *, const char *, int, const char *);

(note the difference in the type for the line argument).

This cannot be made to work, unless we would detect the used type at configure
time, which seems too much effort.

Drop this again.

This reverts commit 1ce29e120b.

Fixes: 1ce29e120b ('std-aux: drop assertion and function name from assert() in release mode')
2023-02-13 08:46:40 +01:00
Thomas Haller 861fc6854c
libnm/tests: adjust test for glib change in 2.75.0 for assertion warning
See-also: 0ffe86a1f7
2023-02-11 18:25:27 +01:00
Thomas Haller f0e3ca09c9
libnm/docs: fix gtk-doc generation for settings
Marking "nm-core-types.h" as to be ignored by gtk-doc, causes many files
to have the wrong names:

    /docs/libnm/html/{NMConnection.html => libnm-NMConnection.html}
    /docs/libnm/html/{NMSetting.html => libnm-NMSetting.html}
    /docs/libnm/html/{NMSetting6Lowpan.html => libnm-NMSetting6Lowpan.html}
    /docs/libnm/html/{NMSetting8021x.html => libnm-NMSetting8021x.html}
    /docs/libnm/html/{NMSettingAdsl.html => libnm-NMSettingAdsl.html}
    /docs/libnm/html/{NMSettingBluetooth.html => libnm-NMSettingBluetooth.html}
    /docs/libnm/html/{NMSettingBond.html => libnm-NMSettingBond.html}
    /docs/libnm/html/{NMSettingBondPort.html => libnm-NMSettingBondPort.html}
    /docs/libnm/html/{NMSettingBridge.html => libnm-NMSettingBridge.html}
    /docs/libnm/html/{NMSettingBridgePort.html => libnm-NMSettingBridgePort.html}
    /docs/libnm/html/{NMSettingCdma.html => libnm-NMSettingCdma.html}
    /docs/libnm/html/{NMSettingConnection.html => libnm-NMSettingConnection.html}
    /docs/libnm/html/{NMSettingDcb.html => libnm-NMSettingDcb.html}
    /docs/libnm/html/{NMSettingDummy.html => libnm-NMSettingDummy.html}
    /docs/libnm/html/{NMSettingEthtool.html => libnm-NMSettingEthtool.html}
    /docs/libnm/html/{NMSettingGeneric.html => libnm-NMSettingGeneric.html}
    /docs/libnm/html/{NMSettingGsm.html => libnm-NMSettingGsm.html}
    /docs/libnm/html/{NMSettingHostname.html => libnm-NMSettingHostname.html}
    /docs/libnm/html/{NMSettingIP4Config.html => libnm-NMSettingIP4Config.html}
    /docs/libnm/html/{NMSettingIP6Config.html => libnm-NMSettingIP6Config.html}
    /docs/libnm/html/{NMSettingIPConfig.html => libnm-NMSettingIPConfig.html}
    /docs/libnm/html/{NMSettingIPTunnel.html => libnm-NMSettingIPTunnel.html}
    /docs/libnm/html/{NMSettingInfiniband.html => libnm-NMSettingInfiniband.html}
    /docs/libnm/html/{NMSettingMacsec.html => libnm-NMSettingMacsec.html}
    /docs/libnm/html/{NMSettingMacvlan.html => libnm-NMSettingMacvlan.html}
    /docs/libnm/html/{NMSettingMatch.html => libnm-NMSettingMatch.html}
    /docs/libnm/html/{NMSettingOlpcMesh.html => libnm-NMSettingOlpcMesh.html}
    /docs/libnm/html/{NMSettingOvsBridge.html => libnm-NMSettingOvsBridge.html}
    /docs/libnm/html/{NMSettingOvsDpdk.html => libnm-NMSettingOvsDpdk.html}
    /docs/libnm/html/{NMSettingOvsExternalIDs.html => libnm-NMSettingOvsExternalIDs.html}
    /docs/libnm/html/{NMSettingOvsInterface.html => libnm-NMSettingOvsInterface.html}
    /docs/libnm/html/{NMSettingOvsPatch.html => libnm-NMSettingOvsPatch.html}
    /docs/libnm/html/{NMSettingOvsPort.html => libnm-NMSettingOvsPort.html}
    /docs/libnm/html/{NMSettingPpp.html => libnm-NMSettingPpp.html}
    /docs/libnm/html/{NMSettingPppoe.html => libnm-NMSettingPppoe.html}
    /docs/libnm/html/{NMSettingProxy.html => libnm-NMSettingProxy.html}
    /docs/libnm/html/{NMSettingSerial.html => libnm-NMSettingSerial.html}
    /docs/libnm/html/{NMSettingSriov.html => libnm-NMSettingSriov.html}
    /docs/libnm/html/{NMSettingTCConfig.html => libnm-NMSettingTCConfig.html}
    /docs/libnm/html/{NMSettingTeam.html => libnm-NMSettingTeam.html}
    /docs/libnm/html/{NMSettingTeamPort.html => libnm-NMSettingTeamPort.html}
    /docs/libnm/html/{NMSettingTun.html => libnm-NMSettingTun.html}
    /docs/libnm/html/{NMSettingUser.html => libnm-NMSettingUser.html}
    /docs/libnm/html/{NMSettingVeth.html => libnm-NMSettingVeth.html}
    /docs/libnm/html/{NMSettingVlan.html => libnm-NMSettingVlan.html}
    /docs/libnm/html/{NMSettingVpn.html => libnm-NMSettingVpn.html}
    /docs/libnm/html/{NMSettingVrf.html => libnm-NMSettingVrf.html}
    /docs/libnm/html/{NMSettingVxlan.html => libnm-NMSettingVxlan.html}
    /docs/libnm/html/{NMSettingWifiP2P.html => libnm-NMSettingWifiP2P.html}
    /docs/libnm/html/{NMSettingWimax.html => libnm-NMSettingWimax.html}
    /docs/libnm/html/{NMSettingWireGuard.html => libnm-NMSettingWireGuard.html}
    /docs/libnm/html/{NMSettingWired.html => libnm-NMSettingWired.html}
    /docs/libnm/html/{NMSettingWireless.html => libnm-NMSettingWireless.html}
    /docs/libnm/html/{NMSettingWirelessSecurity.html => libnm-NMSettingWirelessSecurity.html}
    /docs/libnm/html/{NMSettingWpan.html => libnm-NMSettingWpan.html}
    /docs/libnm/html/{NMSimpleConnection.html => libnm-NMSimpleConnection.html}

Revert that part of the change. Even if this regresses other problems.

Fixes: 1330292d05 ('docs/libnm: fix gtkdoc-scan ignore lists')
2023-02-10 16:59:20 +01:00
Thomas Haller 06dc84a563
contrib/rpm: fix "--enable-ppp" flag to build without ppp
[thaller@redhat.com: I introduced this bug when taking the original patch].

Fixes: 820f6f3a4a ('contrib/rpm: sync obsoletes_{initscripts_updown,ifcfg_rh} version')
2023-02-10 10:09:27 +01:00
Thomas Haller 820f6f3a4a
contrib/rpm: sync obsoletes_{initscripts_updown,ifcfg_rh} version
Initially, when we obsoleted {initscripts_updown,ifcfg_rh}, the package
versions that we build from this upstream spec file differed from what
we put into Fedora/RHEL.

By now, this is long gone, and for upstream package builds we don't care
to accurately track the version, when using upstream/copr builds. Just
sync the version to what they are in Fedora/RHEL.
2023-02-10 10:05:03 +01:00
Stewart Smith 2598ec3a1f
contrib/rpm: fix building without ppp
We need to explicitly say we don't want PPP as the default is
that we do want to build with PPP.

https://src.fedoraproject.org/rpms/NetworkManager/pull-request/13
2023-02-10 09:53:15 +01:00
Yaakov Selkowitz 42cd422f18
contrib/rpm: fix flatpak build
https://src.fedoraproject.org/rpms/NetworkManager/pull-request/13
2023-02-10 09:51:01 +01:00
Thomas Haller 72c0ae2efa
release: bump version to 1.43.2 (development) 2023-02-10 09:38:34 +01:00