Commit graph

30536 commits

Author SHA1 Message Date
Antonio Cardace
5d63508bb1
merge branch 'ac/bridge_mtu_autoadjust' into master
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/656

(cherry picked from commit c4b6962ed2)
2020-11-02 17:47:27 +01:00
Antonio Cardace
864872e9a8
bridge: force (hack)-set of the MTU when explicitly set in the profile
Kernel does a auto-mtu adjusting process whenever a port is added/removed from
the bridge, this can cause issues when NM wants to explicitly set an MTU which is
equal to the bridge default one (1500) because if later a port is added with a
different MTU the kernel will assign the bridge that port's MTU resulting in the bridge
runtime configuration differing from the bridge's NM connection profile.

What we can do is to always apply the MTU manually for the bridge (if explicitly
set by the profile), after doing so the kernel won't modify the MTU anymore,
which is what we want, problem is that kernel won't actually apply the MTU
to the netdev if it's not actually changing so we first apply it to
MTU-1 and then to the desired value.

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

Signed-off-by: Antonio Cardace <acardace@redhat.com>
(cherry picked from commit e23798a5e5)
2020-11-02 17:47:26 +01:00
Antonio Cardace
8d8017a620
bridge: set MTU at link creation time
https://bugzilla.redhat.com/show_bug.cgi?id=1778590

Signed-off-by: Antonio Cardace <acardace@redhat.com>
(cherry picked from commit 516c623618)
2020-11-02 17:47:26 +01:00
Antonio Cardace
05e8b018ec
platform: allow setting the MTU at link creation time
Add a parameter to the 'link_add()' virtual function so that
the MTU will be configured (via netlink) by the kernel when
creating the link.

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

Signed-off-by: Antonio Cardace <acardace@redhat.com>
(cherry picked from commit ba2ee46254)
2020-11-02 17:47:26 +01:00
Antonio Cardace
c4b6962ed2
merge branch 'ac/bridge_mtu_autoadjust' into master
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/656
2020-11-02 17:28:19 +01:00
Antonio Cardace
e23798a5e5
bridge: force (hack)-set of the MTU when explicitly set in the profile
Kernel does a auto-mtu adjusting process whenever a port is added/removed from
the bridge, this can cause issues when NM wants to explicitly set an MTU which is
equal to the bridge default one (1500) because if later a port is added with a
different MTU the kernel will assign the bridge that port's MTU resulting in the bridge
runtime configuration differing from the bridge's NM connection profile.

What we can do is to always apply the MTU manually for the bridge (if explicitly
set by the profile), after doing so the kernel won't modify the MTU anymore,
which is what we want, problem is that kernel won't actually apply the MTU
to the netdev if it's not actually changing so we first apply it to
MTU-1 and then to the desired value.

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

Signed-off-by: Antonio Cardace <acardace@redhat.com>
2020-11-02 17:23:22 +01:00
Antonio Cardace
516c623618
bridge: set MTU at link creation time
https://bugzilla.redhat.com/show_bug.cgi?id=1778590

Signed-off-by: Antonio Cardace <acardace@redhat.com>
2020-11-02 17:23:16 +01:00
Antonio Cardace
ba2ee46254
platform: allow setting the MTU at link creation time
Add a parameter to the 'link_add()' virtual function so that
the MTU will be configured (via netlink) by the kernel when
creating the link.

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

Signed-off-by: Antonio Cardace <acardace@redhat.com>
2020-11-02 17:23:05 +01:00
Thomas Haller
0829dbcd3d
device: merge branch 'th/device-cleanup-addr-family'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/665
2020-11-01 16:47:14 +01:00
Thomas Haller
6c9a289451
core: cleanup IPv4/IPv6 checks using NM_IS_IPv4()
- we commonly use "int addr_family" as parameters to functions.
  But then inside the function, we often need to do something for
  IPv4 or IPv6 specifically. Instead of having lots of redundant
  "if (addr_family == AF_INET)" checks, prefer to have a variable
  IS_IPv4 and/or use NM_IS_IPv4() macro.

- don't make the "IS_IPv4" variable a gboolean but an int. gboolean
  is a typedef for int, so it's in practice exactly the same. However,
  we use "IS_IPv4" as index to arrays of length 2, where at position
  "1" we have the value related to IPv4. Using a gboolean to index
  an array is a bit odd. Maybe a "int" is preferable here.
  This is more about doing consistently one or the other. There are
  no strong reasons to prefer gboolean or int.
2020-10-30 16:52:59 +01:00
Thomas Haller
6767ba1205
device: allow AF_UNSPEC for nm_device_get_connectivity_state()
Apparently it is not actually used, but the function implements
a return value for AF_UNSPEC, while also asserting that the addr_family
is AF_INET/AF_INET6. Drop the assertions.
2020-10-30 16:52:58 +01:00
Thomas Haller
f20d0d6984
device: merge activate_stage5_ip_config_result_[46]() 2020-10-30 16:52:57 +01:00
Thomas Haller
399684538b
device: abort on failure in activate_stage5_ip_config_result_6()
This is analog to what the IPv4 code does at this place. Abort.
2020-10-30 16:52:57 +01:00
Thomas Haller
15e287a351
device: merge activate_stage4_ip_config_timeout_[46]() 2020-10-30 16:52:56 +01:00
Thomas Haller
101b031807
device: merge nm_device_activate_stage3_ip[46]_start() 2020-10-30 16:52:55 +01:00
Thomas Haller
85a60f9d53
tools: fix "check-config-options.sh" for detecting multiple NM_CON_DEFAULT() on one line
If there are multiple NM_CON_DEFAULT() mentionings on the same line,
previously the script would not parse them all. Adjust, by first wrapping
the line.
2020-10-30 16:52:55 +01:00
Thomas Haller
2898daa518
shared,all: introduce and use LOGD_IPX()/LOGD_DHCPX() macros
These macros are consistent with NMP_OBJECT_TYPE_IP_ADDRESS()
and NMP_OBJECT_TYPE_IP_ROUTE(), in name and usage.

Replace the previous functions that had inconsistent and a verbose
naming.
2020-10-30 12:38:31 +01:00
Thomas Haller
2ebe34a5da
l3cfg: merge branch 'th/l3cfg-15'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/663
2020-10-30 12:00:06 +01:00
Thomas Haller
87f69f0050
device: merge nm_device_reactivate_ip_config() implementations for IPv4/IPv6 2020-10-30 11:58:46 +01:00
Thomas Haller
c8cc86368c
core/dispatcher: merge dump[46]_ip_to_props() for IPv4/IPv6 2020-10-30 11:58:46 +01:00
Thomas Haller
6c835a2908
l3cfg: during nm_l3_config_data_merge() collect the maximum of the metered flag 2020-10-30 11:58:46 +01:00
Thomas Haller
3af02e8fcf
core: use nm_g_variant_new_ay_in6addr() helper in "NetworkManagerUtils.c" 2020-10-30 11:58:46 +01:00
Thomas Haller
b2780ffa72
libnm: cleanup constructing GVariants for IP addresses 2020-10-30 11:58:45 +01:00
Thomas Haller
11fc851741
libnm: cleanup signedness and range of intergers in "nm-utils.c" 2020-10-30 11:58:45 +01:00
Thomas Haller
a7e1fa48fd
shared: add nm_g_variant_new_ay_inaddr() helper 2020-10-30 11:58:44 +01:00
Beniamino Galvani
a9c952d34c dns: sd-resolved: reset interface configuration on deactivation
If an update doesn't contain an interface but the previous update did,
the systemd-resolved DNS plugin must send a request to clear the
previous configuration. Otherwise the previous DNS configuration would
persist even after interface deactivation.

https://bugzilla.redhat.com/show_bug.cgi?id=1888229
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/662
(cherry picked from commit f70ee67058)
2020-10-29 17:26:50 +01:00
Beniamino Galvani
f70ee67058 dns: sd-resolved: reset interface configuration on deactivation
If an update doesn't contain an interface but the previous update did,
the systemd-resolved DNS plugin must send a request to clear the
previous configuration. Otherwise the previous DNS configuration would
persist even after interface deactivation.

https://bugzilla.redhat.com/show_bug.cgi?id=1888229
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/662
2020-10-29 17:23:28 +01:00
Thomas Haller
545d5a4e70
python,tests: merge branch 'fmartinsons:master' (#661)
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/661
2020-10-29 09:36:46 +01:00
Frederic Martinsons
1f5c7f7d81
Correct python black rules
Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:10 +01:00
Frederic Martinsons
c8b13dc92f
Manage deactivation of active connection
Like what was done for activating an active connection, so
some state change are simulated and a dbus test method is added

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:10 +01:00
Frederic Martinsons
51dd9ed89a
Enhance device state and active connection management
Add reason for device state change.
Add dbus test method to force failure of activation, set the
device state and the active connection state.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:10 +01:00
Frederic Martinsons
a3f596e273
Add basic modem device support
The modem device will have hardcoded capability which make it
compatible with GSM connection settings.
It will be seen with hardcoded ModemManager manager dbus object path
for the UDI property.
Add also a dbus test method to add the modem device.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:06 +01:00
Frederic Martinsons
f225148754
Initialize correctly _dbus_error_name in BusErr classes
To be consistent with dbus.DbusException classes which do the
following in __init__:

    def __init__(self, *args, **kwargs):
        name = kwargs.pop('name', None)
        if name is not None or getattr(self, '_dbus_error_name', None) is None:
            self._dbus_error_name = name
        if kwargs:
            raise TypeError('DBusException does not take keyword arguments: %s'
                            % ', '.join(kwargs.keys()))
        Exception.__init__(self, *args)

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:06 +01:00
Frederic Martinsons
7bc01ea14c
Add dbus.Int32 support for variant parsing
Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-10-29 09:35:06 +01:00
Thomas Haller
7616469df8
libnm/keyfile: merge branch 'th/keyfile-public-api'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/517
2020-10-29 09:28:27 +01:00
Thomas Haller
a9e6774670
example: add python gi example for keyfile handling 2020-10-28 14:30:49 +01:00
Thomas Haller
157d7bd5b9
keyfile: expose keyfile handling in libnm as public API 2020-10-28 14:30:49 +01:00
Thomas Haller
49fd96bf01
libnm: add "nm-keyfile.h" header
Keyfile API will become part of public libnm API. Add "nm-keyfile.h"
header for that.
2020-10-28 14:30:48 +01:00
Thomas Haller
ed82bbe986
core: use nm_clear_pointer() instead of g_clear_pointer()
Our macro is more type-safe than glib's, because it does
not C cast the arguments. It seems preferable in general.
2020-10-28 13:59:22 +01:00
Thomas Haller
817ea086ee
l3cfg: merge branch 'th/l3cfg-14'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/660
2020-10-28 12:10:40 +01:00
Thomas Haller
33041e04af
core: use nm_utils_share_rules_add_all_rules() from NMDevice 2020-10-27 17:40:20 +01:00
Thomas Haller
be7bf38a3a
core: add nm_utils_share_rules_add_all_rules() for constructing iptables rules 2020-10-27 17:40:19 +01:00
Thomas Haller
701654b930
core: refactor tracking of shared-rules to use NMUtilsShareRules
It's a bit ugly that NMActRequest also tracks the shared rules.
Why? It's just some additional state (the rules) and some additional
actions that should be done when activating/deactivating the profile.
NMActRequest also doesn't track the NMDhcpClient, so why these shared
rules?

Also, removing the rules from an object destructor is ugly. NMActRequest
is a GObject and ref-counted. We should not make assumptions when the
last reference gets releases, at least not in cases like this, where
we hand out the reference and the object is passed around through large
parts of the source code.

For now, still let NMActRequest keep track of NMUtilsShareRules.
Later this will be refactored too.
2020-10-27 17:40:19 +01:00
Thomas Haller
0c2d5fc972
core: add NMUtilsShareRules API for handling IP tables rules
Currently, shared rules are tracked by NMActRequest. Add a small
type for tracking the shared rules.
2020-10-27 17:07:57 +01:00
Thomas Haller
0438820805
device: use static array for modules in share_init()
A static const array is marked as immutable by the linker.
This is what we want, because there is no need to change this
array.

Also, the tailing %NULL entry is not necessary, we can just
iterate over the fixed number of elements.
2020-10-27 17:04:21 +01:00
Thomas Haller
379dde287c
l3cfg: let NML3Cfg return a singleton NML3IPv4LL instance
NML3Cfg is the manager instance for one interface (ifindex). For one
interface, it is not supported (nor useful) to run IPv4LL multiple
times. Hence, let NML3Cfg manage and return a single instance.
2020-10-27 17:04:20 +01:00
Thomas Haller
291b3a52b7
l3cfg: add NM_ACD_TIMEOUT_RFC5227_MSEC define 2020-10-27 17:04:20 +01:00
Thomas Haller
6dd557c324
l3cfg: add nm_l3_ipv4ll_is_timed_out() for letting IPv4LL reach a failed state
We may want to handle cases where we cannot assign a IPv4LL address
even after multiple attempts.

Add a new property nm_l3_ipv4ll_is_timed_out() to get into a failed
state. The user may choose to fail the activation or ignore it.

Also, remove some unused code and fix minor issues in NML3IPv4LL.
2020-10-27 17:04:20 +01:00
Thomas Haller
f5b89e8060
shared: add nm_mult_clamped_u() helper 2020-10-27 17:04:20 +01:00
Thomas Haller
931573dfda
shared: rename nm_add_u32_clamped() to nm_add_clamped_u32() 2020-10-27 17:04:19 +01:00