NetworkManager/libnm-core
Thomas Haller 96edc84b4d
libnm,core: fix handling miimon and arp_interval as conflicting kernel options
We use sysfs API for setting bond options. Note that the miimon and
arp_interval settings conflict each other, and whenever setting one
of these sysfs values, the other one gets reset. That means,
NetworkManager needs to mediate and handle a profile which has both
these options set.

Before 1.24, the libnm API nm_setting_bond_add_option() API would mangle
the content of the bond settings, to clear the respective other fields
when setting miimon/arp_interval. That also had the effect that the
settings plugins, weren't able to read such (conflicting) settings
back from disk (but they would write them to disk). If a keyfile
specified both miimon and arp_interval keys, then it would depend on
their order in the keyfile which wins.
It is wrong that a libnm property setter mangles the option in such a way,
especially, because you still could set the NM_SETTING_BOND_OPTIONS
property directly and bypass this. So, since 1.24, you can create
profiles that have conflicting options.

Also, we can now not start to reject such settings as invalid, because that
would be an API break. Instead, just make sure that when one of the
settings is set, that the other one consistently gets deactivated.

Also, before 1.24 already, NMDeviceBond would mediate whether to either set
miimon or arp_interval settings. Despite that the keyfile reader would
mangle the settings, it would also prefer miimon over arp_interval,
if both were set.

This mechanism was broken since we switch to _bond_get_option_normalized()
for that. As a consequence, NetworkManager would try to set both the
conflicting options. Fix that.

(cherry picked from commit 4aa46328ca)
2020-07-11 15:07:46 +02:00
..
nm-keyfile all: move "shared/nm-keyfile" to "libnm-core/nm-keyfile" 2020-06-11 10:53:50 +02:00
nm-libnm-core-aux all: move "shared/nm-libnm-core-aux" to "libnm-core/nm-libnm-core-aux" 2020-06-11 10:53:50 +02:00
nm-libnm-core-intern libnm: add nm_utils_bond_option_arp_ip_targets_split() helper 2020-07-11 15:07:45 +02:00
tests platform: add support for local routes 2020-06-28 17:47:27 +02:00
meson.build all: move "shared/nm-libnm-core-aux" to "libnm-core/nm-libnm-core-aux" 2020-06-11 10:53:50 +02:00
nm-connection-private.h libnm: always return normalized-type from _nm_setting_ovs_interface_verify_interface_type() 2020-02-26 17:51:14 +01:00
nm-connection.c all: use nm_clear_pointer() instead of g_clear_pointer() 2020-03-23 11:22:38 +01:00
nm-connection.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-core-enum-types.c.template libnm-core: add ovs-dpdk setting 2019-06-14 12:10:20 +02:00
nm-core-enum-types.h.template build: use template files for enum types' sources generation 2017-12-18 11:25:06 +01:00
nm-core-internal.h platform: add support for local routes 2020-06-28 17:47:27 +02:00
nm-core-types-internal.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-core-types.h libnm: avoid deprecation warning about NMUtilsPredicateStr 2020-06-22 13:27:19 +02:00
nm-crypto-gnutls.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-crypto-impl.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-crypto-nss.c libnm/crypto: suppress "-Wstrict-prototypes" warning in NSS library 2020-06-03 23:08:33 +02:00
nm-crypto.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-crypto.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-dbus-interface.h lldp: expose "mud-url" LLDP attribute for the MUD usage description 2020-06-15 15:05:22 +02:00
nm-dbus-utils.c libnm: drop unused _nm_dbus_proxy_call_sync() helper 2019-12-03 16:32:08 +01:00
nm-errors.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-errors.h license: relicense "libnm-core/nm-errors.h" under LGPL-2.1+ 2020-02-16 15:55:55 +01:00
nm-json.c libnm/license: relicense "libnm-core/nm-json.[hc]" under LGPL-2.1+ 2019-11-06 17:30:25 +01:00
nm-json.h libnm/license: relicense "libnm-core/nm-json.[hc]" under LGPL-2.1+ 2019-11-06 17:30:25 +01:00
nm-property-compare.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-property-compare.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-6lowpan.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-6lowpan.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-8021x.c ifcfg-rh: support persisting 802-1x.pin and pin-flags property 2020-05-28 18:05:15 +02:00
nm-setting-8021x.h Add domain_match mode for wifi certificate domain comparison 2020-03-23 20:31:09 +01:00
nm-setting-adsl.c libnm-core: minor cleanup checks in "nm-setting-adsl.c"'s verify() 2020-03-17 08:02:54 +01:00
nm-setting-adsl.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-bluetooth.c libnm-core: fix wording for 'nm_sett_info_propert_type_mac_addrees' 2020-03-19 16:59:07 +01:00
nm-setting-bluetooth.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-bond.c libnm,core: fix handling miimon and arp_interval as conflicting kernel options 2020-07-11 15:07:46 +02:00
nm-setting-bond.h nm-setting-bond: add API to libnm to get the normalized bond option value 2020-03-06 10:39:00 +01:00
nm-setting-bridge-port.c libnm: adjust bridge defines NM_BRIDGE_PORT_PATH_COST_* 2020-05-08 08:02:49 +02:00
nm-setting-bridge-port.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-bridge.c libnm: don't require birdge multicast_snooping with multicast_router auto,enabled 2020-06-11 18:35:36 +02:00
nm-setting-bridge.h nm-setting-bridge: add 'multicast-startup-query-interval' bridge option 2020-05-04 17:33:01 +02:00
nm-setting-cdma.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-cdma.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-connection.c dhcp: make connection.mud-url configurable as global connection default 2020-04-28 13:01:18 +02:00
nm-setting-connection.h libnm: fix API version annotation for nm_setting_connection_get_mud_url() 2020-04-24 10:09:50 +02:00
nm-setting-dcb.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-dcb.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-dummy.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-dummy.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ethtool.c libnm: check options in NMSettingEthtool.verify() in defined order 2020-05-22 15:58:09 +02:00
nm-setting-ethtool.h libnm: remove redundant nm_setting_ethtool_*_coalesce() API 2020-05-22 15:58:09 +02:00
nm-setting-generic.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-generic.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-gsm.c libnm/doc: fix gtk-doc for deprecated markers in libnm 2020-03-23 09:32:04 +01:00
nm-setting-gsm.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-infiniband.c all: use nm_clear_g_free() instead of g_clear_pointer() 2020-03-23 11:05:34 +01:00
nm-setting-infiniband.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ip-config.c setting-ip-config: validate route attributes in verify() 2020-06-28 17:47:35 +02:00
nm-setting-ip-config.h platform: add support for local routes 2020-06-28 17:47:27 +02:00
nm-setting-ip-tunnel.c libnm-core: add _nm_ip_tunnel_mode_is_layer2() 2020-05-15 09:48:25 +02:00
nm-setting-ip-tunnel.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ip4-config.c ifcfg-rh: add support for DHCP hostname flags 2019-11-28 17:56:35 +01:00
nm-setting-ip4-config.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ip6-config.c libnm,cli,ifcfg-rh: add ipv6.ra-timeout configuration option 2020-02-17 14:43:13 +01:00
nm-setting-ip6-config.h libnm,cli,ifcfg-rh: add ipv6.ra-timeout configuration option 2020-02-17 14:43:13 +01:00
nm-setting-macsec.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-macsec.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-macvlan.c all: use nm_utils_ifname_valid_kernel() instead of nm_utils_is_valid_iface_name() 2020-02-17 15:27:35 +01:00
nm-setting-macvlan.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-match.c libnm/match: extend syntax for match patterns with '|', '&', '!' and '\\' 2020-06-26 13:33:41 +02:00
nm-setting-match.h all: add "path" property to the match setting 2020-06-12 16:04:06 +02:00
nm-setting-olpc-mesh.c libnm-core: fix wording for 'nm_sett_info_propert_type_mac_addrees' 2020-03-19 16:59:07 +01:00
nm-setting-olpc-mesh.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ovs-bridge.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-ovs-bridge.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ovs-dpdk.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-ovs-dpdk.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ovs-interface.c libnm: validate "connection.interface-name" at one place only 2020-02-26 17:51:14 +01:00
nm-setting-ovs-interface.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ovs-patch.c libnm-core: interpret ovs-patch.peer as an interface name 2020-06-10 09:28:39 +02:00
nm-setting-ovs-patch.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ovs-port.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-ovs-port.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-ppp.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-ppp.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-pppoe.c all: use nm_utils_ifname_valid_kernel() instead of nm_utils_is_valid_iface_name() 2020-02-17 15:27:35 +01:00
nm-setting-pppoe.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-private.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-proxy.c libnm/proxy: use int type for proxy.method property 2019-12-24 07:48:35 +01:00
nm-setting-proxy.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-serial.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-serial.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-sriov.c all: use "int/char" instead of "gint/gchar" typedefs 2020-05-08 12:56:29 +02:00
nm-setting-sriov.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-tc-config.c libnm-core: remove trailing dot from setting description 2020-03-23 11:42:57 +01:00
nm-setting-tc-config.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-team-port.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-team-port.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-team.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-team.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-tun.c libnm: don't have G_PARAM_CONSTRUCT properties in NMSetting instances 2019-12-24 07:47:50 +01:00
nm-setting-tun.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-user.c all: use nm_clear_pointer() instead of g_clear_pointer() 2020-03-23 11:22:38 +01:00
nm-setting-user.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-vlan.c all: use nm_utils_ifname_valid_kernel() instead of nm_utils_is_valid_iface_name() 2020-02-17 15:27:35 +01:00
nm-setting-vlan.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-vpn.c libnm: convert vpn-secrets to D-Bus in stable order 2020-04-04 19:51:34 +02:00
nm-setting-vpn.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-vrf.c libnm-core: remove trailing dot from setting description 2020-03-23 11:42:57 +01:00
nm-setting-vrf.h libnm-core,cli: add VRF setting 2020-01-14 09:49:01 +01:00
nm-setting-vxlan.c all: use nm_utils_ifname_valid_kernel() instead of nm_utils_is_valid_iface_name() 2020-02-17 15:27:35 +01:00
nm-setting-vxlan.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wifi-p2p.c all: use nm_clear_pointer() instead of g_clear_pointer() 2020-03-23 11:22:38 +01:00
nm-setting-wifi-p2p.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wimax.c libnm-core: fix wording for 'nm_sett_info_propert_type_mac_addrees' 2020-03-19 16:59:07 +01:00
nm-setting-wimax.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wired.c libnm-core: fix wording for 'nm_sett_info_propert_type_mac_addrees' 2020-03-19 16:59:07 +01:00
nm-setting-wired.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wireguard.c wireguard: don't let explicit gateway override WireGuard's peer route 2020-04-22 11:36:51 +02:00
nm-setting-wireguard.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wireless-security.c all: use g_ascii_strcasecmp() instead of the locale dependent strcasecmp() 2020-02-11 15:23:06 +01:00
nm-setting-wireless-security.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wireless.c nm-supplicant-interface: fix removal of OWE flag from non-transition mode BSSIDs 2020-06-09 16:07:04 +02:00
nm-setting-wireless.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wpan.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting-wpan.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-setting.c libnm: add nm_setting_option_clear_by_name() 2020-05-22 15:58:09 +02:00
nm-setting.h libnm: add nm_setting_option_clear_by_name() 2020-05-22 15:58:09 +02:00
nm-simple-connection.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-simple-connection.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-team-utils.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-team-utils.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-utils-private.h shared: move _nm_utils_format_variant_attributes*() API to "shared/nm-glib-aux" 2020-05-14 17:21:12 +02:00
nm-utils.c libnm: fix leak in nm_utils_is_json_object() 2020-07-01 15:48:10 +02:00
nm-utils.h libnm/utils: add OWE security type 2019-12-05 14:00:10 +01:00
nm-version.h release: bump version to 1.25.0 (development) 2020-04-10 18:08:10 +02:00
nm-vpn-dbus-interface.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-vpn-editor-plugin.c all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-vpn-editor-plugin.h all: unify format of our Copyright source code comments 2019-10-02 17:03:52 +02:00
nm-vpn-plugin-info.c all: use nm_clear_pointer() instead of g_clear_pointer() 2020-03-23 11:22:38 +01:00
nm-vpn-plugin-info.h libnm: hide NMVpnPluginInfo structs from public API 2020-03-14 18:04:05 +01:00