Commit Graph

31688 Commits

Author SHA1 Message Date
Beniamino Galvani
861934a510 device: add nm_device_bring_up_full()
In the next commit nm_device_bring_up() will be extended with a new
argument. Most callers just want to bring up the device synchronously
and don't care about the "no_firmware" argument. Introduce a
nm_device_bring_up_full() for callers that need special behavior.
2022-11-16 10:22:44 +01:00
Beniamino Galvani
c19f03a463 vpn: merge branch 'bg/vpn-honor-ip-method'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1456
2022-11-16 10:18:54 +01:00
Beniamino Galvani
c4a7d6a06f vpn: honor the ipvX.method connection property
Currently VPNs always apply the configuration sent by the server for
both address families. So, even if users set e.g. ipv6.method=disabled,
they might end up with IPv6 configured.

Change that and apply the automatic configuration only when the method
is "auto".

This is a change in behavior and as such it might be disruptive for
users that had a method different from "auto" and expected to have the
interface configured. However, that scenario seems unlikely and can be
easily fixed by setting the right method.
2022-11-16 10:17:49 +01:00
Beniamino Galvani
b84faaefc9 vpn: remove unused variable 2022-11-16 10:17:49 +01:00
gaoxingwang
48b0cf0e86 po: fix typo 'NetworkManaer' -> 'NetworkManager'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1461
2022-11-16 08:22:51 +01:00
Fernando Fernandez Mancera
82009e21d2 core: set routing rule protocol properly
When creating NMPlatformRoutingRule from NMIPRouteRule object, the
protocol is being set to RTPROT_UNSPEC. According to linux kernel
documentation FRA_PROTOCOL indicates the originator of the rule.

In this case the route rule is coming from a connection and therefore
the originator of the rule is the user. The correct value is
RTPROT_STATIC which means the rule is installed by the administrator.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1457

Fixes: 3f9347745b ('core: add handling of IP routing rules to NMDevice')
2022-11-14 18:28:25 +01:00
Lubomir Rintel
5d851a3c9d merge: branch 'lr/gtk-doc'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1458
2022-11-14 16:18:33 +01:00
Thomas Haller
02f7fb2cdd dbus: merge branch 'th/dbus-utils-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1454
2022-11-14 08:09:51 +01:00
Thomas Haller
8942789bb6 glib-aux: use cleanup attribute in dbus_signal_meta_marshal()
and prefer alloca() allocation, for small sizes.
2022-11-14 08:06:34 +01:00
Thomas Haller
093ea4a10a glib-aux: drop unused _nm_dbus_connection_call_finish()
This wasn't used. It also doesn't make much sense, because
g_dbus_connection_call() accepts a reply type argument. So if you want
to check the reply type, you can do so when making the call.

That differs from g_dbus_proxy_call(), where this might make some sense
and is actually used.

While at it, also drop _nm_dbus_typecheck_response() from the header
file. It seems not general purpose enough and is not necessarily a great
pattern. Because,

- for g_dbus_connection_call() you either specify the reply_type when making
  the call, or you do some more elaborate handling of the result -- not merely
  _nm_dbus_typecheck_response().

- for g_dbus_proxy_call(), you can use _nm_dbus_proxy_call_finish() to
  get it, or again, you want some non-trivial type checking.
2022-11-14 08:05:58 +01:00
Thomas Haller
6c9018a29e glib-aux: rename _nm_dbus_signal_connect{,_data}() to _nm_dbus_proxy_*()
These are helpers for GDBusProxy. I think we should avoid GDBusProxy where possible,
and these functions too. Give the function a more specific name to show that this
is only for the proxy.
2022-11-14 08:05:47 +01:00
Thomas Haller
cf6d38177f glib-aux: drop duplicate _nm_dbus_error_has_name() for nm_dbus_error_is() 2022-11-14 08:04:16 +01:00
Thomas Haller
a7fea45adf libnm: move "nm-dbus-utils.c" from libnm-core to libnm-glib-aux
These are just general purpose D-Bus utils, based on glib and GDBus.
They fit perfectly to libnm-glib-aux. Move the code.

Also, there is already the file "src/core/nm-dbus-utils.c", having two
files with the same name on our source tree is just confusing.
2022-11-14 08:04:06 +01:00
Lubomir Rintel
03813a530a tools/check-docs: more checks for missing includes
We get this wrong *very* often.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
4c6b00d696 docs/libnm: include a couple more files generated from headers
These are part of the public API. Not including them makes links from
API index dead (and sad).
2022-11-13 23:36:37 +01:00
Lubomir Rintel
422c9a4428 libnm/conn-utils: include a documentation string
This makes the index entry look nice.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
07d06c196e libnm: include device-vrf.h in NetworkManager.h
Fixes: commit 667568d1b2 ('core,libnm: add VRF support')
2022-11-13 23:36:37 +01:00
Lubomir Rintel
d4053a83af libnm: move nm-errors.h include away from nm-connection.h
Most users included this by accident, by including nm-connection.h. That
is not too great, becuase stuff it contains is by no means specific to
NMConnection.

Anyways, it's not like it would matter too that. I mainly care about it
being included in NetworkManager.h, so that there's one less special
case in a test that makes sure useful stuff from NetworkManager.h ends up
in gtk-doc (a separate commit).
2022-11-13 23:36:37 +01:00
Lubomir Rintel
b913ccec9c libnm: fix a handful of misformatted gtk-doc blocks
libnm-core-impl/nm-setting-bond.c:1276: warning: Symbol name not found at the start of the comment block.
  libnm-core-impl/nm-setting-vpn.c:1135: warning: Symbol name not found at the start of the comment block.
  libnm-core-impl/nm-setting-vpn.c:1158: warning: Symbol name not found at the start of the comment block.
  libnm-core-impl/nm-setting-wired.c:1560: warning: Symbol name not found at the start of the comment block.
  libnm-client-impl/nm-dhcp-config.c:149: warning: Symbol name not found at the start of the comment block.
  libnm-client-impl/nm-secret-agent-old.c:967: warning: Symbol name not found at the start of the comment block.
  libnm-client-impl/nm-secret-agent-old.c:1010: warning: Symbol name not found at the start of the comment block.
  libnm-client-impl/nm-secret-agent-old.c:1037: warning: Symbol name not found at the start of the comment block.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
c37fbd32ad libnm/bond: fix malformed property doc
libnm-core-impl/nm-setting-bond.c:602: warning: Parameter description
       for nm_setting_bond_validate_option::value (allow-none) is not used
       from source code comment block.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
938c961353 libnm/utils: add some missing deprecation guards
Makes gtk-doc grumpy (but it likes getting grumpy too often for us to
actually pay attention, it seems):

  libnm-core-impl/nm-utils.c:4342: warning: nm_utils_is_uuid is deprecated
      in the inline comments, but no deprecation guards were found around
      the declaration. (See the --deprecated-guards option for gtkdoc-scan.)
  libnm-client-impl/nm-device-ovs-bridge.c:36: warning:
      nm_device_ovs_bridge_get_slaves is deprecated in the inline comments,
      ...
  libnm-client-impl/nm-device-ovs-port.c:36: warning:
      nm_device_ovs_port_get_slaves is deprecated in the inline comments,
      ...
  libnm-client-impl/nm-device-team.c:77: warning:
      nm_device_team_get_slaves is deprecated in the inline comments,
      ...
2022-11-13 23:36:37 +01:00
Lubomir Rintel
612c00529b libnm,docs: ignore NM_DEPRECATED_IN_..._GUARDS
gtk-doc gets confused by these, ignore them:

  common.py:ParseFunctionDeclaration:541:WARNING:Cannot parse args for
      function in "nm_device_get_hw_address) const char
      *nm_device_dummy_get_hw_address(NMDeviceDummy *device
  common.py:ParseFunctionDeclaration:541:WARNING:Cannot parse args for
      function in "nm_device_get_ports) const GPtrArray
      *nm_device_ovs_port_get_slaves(NMDeviceOvsPort *device

For some reason it's still confused if NM_AVAILABLE_* comes first.
I refuse to look into that, just reorder them.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
1330292d05 docs/libnm: fix gtkdoc-scan ignore lists
These went out of date and now all sorts of useless junk is included in
the libnm documentation

They contain everything outside *-public/ (perhaps they could be generated,
but I'm not doing that) and nm-core-types.h (because that one confuses
gtk-doc in an outrageous manner).
2022-11-13 23:36:37 +01:00
Lubomir Rintel
59ac34976b dns-manager,client: rename struct NMDnsEntry
We got a typedef of the same name, and that causes gtk-doc to generate
invalid docbook and complain aloud:

  ../xml/nm-client.xml:4118: element refsect2: validity error : ID NMDnsEntry already defined
  <refsect2 id="NMDnsEntry" role="typedef" condition="since:1.6">
  Warning: multiple "IDs" for constraint linkend: NMDnsEntry.
2022-11-13 23:36:37 +01:00
Lubomir Rintel
f87bcac297 setting-ethtool: fix malformed doc comments
html/NMSettingEthtool.html:142: warning: no link for: "Returns" -> (<code class="literal">Returns</code>).
2022-11-13 23:36:37 +01:00
Lubomir Rintel
f78af299c5 setting-8021x: fix "PKCS#11" string in gtk-doc
gtk-doc (and perhaps other tools) treat pound sign in comments
specially:

  html/NMSetting8021x.html:1501: warning: no link for: "11" -> (<span class="type">11</span>).
2022-11-13 23:35:56 +01:00
Lubomir Rintel
8dc4b4701b merge: branch 'lr/object-removal'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1276
2022-11-13 15:25:52 +01:00
Lubomir Rintel
aaa9a9cd25 libnm/client: don't reset properties when interface goes away
In case the D-Bus interfaces start dropping off (typically all off them go
one by one when the object is being deleted), don't reset all the properties.

In particular, keep most properties around, only tear down "o" and "ao",
so that the object dependencies get torn down, but we still get enough
properties around to identify what the dead object was its heyday.

One example of where this is not good is when the device-removed signal
is emmitted, the device no longer has the ifname:

  $ nmcli monitor
  <quit NetworkManager>
  (null): device removed
  (null): device removed
  ...
2022-11-13 15:25:19 +01:00
Lubomir Rintel
8b3cb0dabf libnm/client/test: test cleanup on service shutdown
Currently we assert that properties are reset on client teardown. That
is not the right thing to do and we're not going to do that in future.

However, what is important to test is that the properties are reset when
the daemon goes away. Test that.
2022-11-13 15:25:16 +01:00
Lubomir Rintel
d3490a92db libnm/client/test: always run the cleanup test
The part where a device was created and its cleanup on client
description was only run randomly.

This is silly and gave me hard time. No reason not to be always running
it.
2022-11-13 15:25:11 +01:00
Lubomir Rintel
253bb3579f tests/client: test nmcli monitor
Some basic tests for nmcli monitor. Note that they now assert against
behavior that I find incorrect. Will be fixed separately.
2022-11-13 15:25:01 +01:00
Lubomir Rintel
fe2eddd67c nmcli/monitor: always print running status on monitor startup
Previously we'd note if NM is stopped, but not if it's running.
I suppose it's nice for the user to know that the monitor started
running, but, it's also important for the monitor to be testable (so
that we know that we are ready to start adding mock objects, etc.)

This also gets rids of some duplication at expense of a little less
nuanced message.
2022-11-13 15:24:19 +01:00
Lubomir Rintel
777f31436c merge: branch 'lr/unbreak-gir'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1451
2022-11-11 16:08:17 +01:00
Thomas Haller
9ecb72ae4b libnm/trivial: fix style
Fixes: 412a5d2d08 ('libnm: show ethtool options in "gen-metadata-nm-settings-libnm-core.xml"')
2022-11-10 14:41:38 +01:00
Thomas Haller
954ca6b411 ifcfg-rh: merge branch 'th/ethtool-ifcfg-fixes'
https://bugzilla.redhat.com/show_bug.cgi?id=2134569

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1452
2022-11-10 13:48:25 +01:00
Thomas Haller
c593834842 core: filter out invalid Wake-On-Lan flags
NMSettingWired does not reject invalid flags. Filter them out in wake_on_lan_enable().
In practice, it makes no difference, the unknown flags were ignored anyway.
2022-11-10 13:46:35 +01:00
Thomas Haller
4303d33727 ifcfg-rh: fix persisting all-default NMSettingEthtool with autoneg/wol flags
Fixes: 26ed9e6714 ('ifcfg-rh: fix persisting all-default NMSettingEthtool settings')
2022-11-10 13:46:34 +01:00
Thomas Haller
21661c6f71 ifcfg-rh: fix persisting ethtool options
If there were any pause options and any non-pause options,
the created setting was invalid.

I don't think it's reasonably possible to parse the broken settings.
So there is no workaround trying to read the existing broken settings
from disk. Luckily, the broken setting was just silently ignored by
the parser, so you simply could not persist certain settings.

https://bugzilla.redhat.com/show_bug.cgi?id=2134569

Fixes: 652ddca04c ('ethtool: Introducing PAUSE support')
2022-11-10 13:45:43 +01:00
Thomas Haller
3755e6b175 ifcfg-rh/tests: add test checking persisting ethtool settings to ifcfg-rh
There are still various failures. That will be fixed next.
2022-11-10 13:44:58 +01:00
Thomas Haller
8e4296a487 libnm: merge branch 'th/libnm-metadata-xml-ethtool'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1453
2022-11-10 13:33:42 +01:00
Thomas Haller
412a5d2d08 libnm: show ethtool options in "gen-metadata-nm-settings-libnm-core.xml" 2022-11-10 13:00:50 +01:00
Thomas Haller
171f2c4ce3 libnm: skip "name" property for "gen-metadata-nm-settings-libnm-core.xml" 2022-11-10 09:36:53 +01:00
Thomas Haller
a0370e0efa ethtool: add and use nm_ethtool_id_get_variant_type() helper 2022-11-10 09:36:53 +01:00
Thomas Haller
7f22835328 wwan/ofono: merge branch 'peat-psuwit:for-upstream/mr773-plus'
https://bugs.launchpad.net/bugs/1565717
https://bugs.launchpad.net/bugs/1579098
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/771
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/773

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1392
2022-11-10 07:56:28 +01:00
Ratchanan Srirattanamet
e34e38e744 wwan/ofono: cleanup comments and warnings in existing code 2022-11-10 07:54:24 +01:00
Ratchanan Srirattanamet
61e99ed715 wwan/ofono: fix memory leak in handle_settings()
[thaller@redhat.com: modified original patch.]

Fixes: 58287cbcc0 ('core: rework IP configuration in NetworkManager using layer 3 configuration')
2022-11-10 07:54:10 +01:00
Ratchanan Srirattanamet
f0ef4a440f wwan/device-modem: re-check device availability after enable
It's possible that the modem is enabled outside of NM. If not
re-check, device could stay disabled throughout until something else
about the modem changes again.
2022-11-10 07:44:59 +01:00
Ratchanan Srirattanamet
2f3a0eaa0b wwan/modem: return early if set_mm_enable is not implemented
We don't want to e.g. pre-empt the state change signal, because it's not
gonna happen.
2022-11-10 07:44:59 +01:00
Ratchanan Srirattanamet
580453d376 wwan/device-modem: disabled but not enable-able modem is unavailable
If a modem is disabled, and it has no method to enable it, then by no
mean it's "available" to NM.
2022-11-10 07:44:58 +01:00
Ratchanan Srirattanamet
f914df4f79 wwan/ofono: avoid bogus IP failure when not connecting
If modem is not at least "registered", a connection is not happening, which
means IP settings change is probably not interesting. Avoid trying to
parse it, so that we don't trigger connection failure when there isn't
one.
2022-11-10 07:44:58 +01:00