NetworkManager/libnm-core
Thomas Haller f05ebc4261 libnm: don't skip routes in nm_setting_ip_config_add_route() that only differ by attributes
For kernel and NetworkManager's core, route identity is a complicated topic
(see NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID). For example, a route
without explity table is treated identical to "table 254" or "table 0".

It would be complicated to have nm_setting_ip_config_add_route()
implement that logic, especially since libnm offers not public API
to expose kernel's logic.

However, previously nm_setting_ip_config_add_route() would only consider
dest/prefix,next_hop,metric when comparing for equality. Hence, with

  nmcli connection modify "$CON" +ipv4.routes '192.168.5.0/24'
  nmcli connection modify "$CON" +ipv4.routes '192.168.5.0/24 table=42'

the second route was not actually added, although it is a very different
route. Fix that, and consider attributes too. Note that this allows the user
to add two routes that look different to libnm, but are actually idential:

  nmcli connection modify "$CON" +ipv4.routes '192.168.5.0/24'
  nmcli connection modify "$CON" +ipv4.routes '192.168.5.0/24 table=254'

In the above example, the route instances look different, but
sementically they are both the same route in the main table (254).

This also allows the user to add routes that are semantically different, but
are treated as the same route by kernel:

  nmcli connection modify "$CON" +ipv6.routes 'a🅱️c::/120'
  nmcli connection modify "$CON" +ipv6.routes 'a🅱️c::/120 mtu=600'

I think libnm should allow to add routes as long as they look different
to libnm. Regardless how kernel and NetworkManager-core thinks about
route identity.

This changes API of nm_setting_ip_config_add_route(). However, I think
the previous behavior was just broken.

Same for nm_setting_ip_config_remove_route_by_value().
2017-09-27 18:58:53 +02:00
..
tests libnm: make index variable i unsigned for iterating array 2017-09-27 18:58:53 +02:00
crypto.c libnm: refactor loop in crypto_md5_hash() 2016-11-09 12:07:33 +01:00
crypto.h all: cleanup includes in header files 2016-08-17 19:09:50 +02:00
crypto_gnutls.c crypto: don't try to decrypt PKCS#8 key if no password is supplied 2016-09-23 18:05:54 +02:00
crypto_nss.c all: use "unsigned" instead of "unsigned int" 2017-03-14 11:26:29 +01:00
nm-connection-private.h core: infer the bluetooth type from the presence of the supplemental settings 2017-08-23 16:18:44 +02:00
nm-connection.c core: infer the bluetooth type from the presence of the supplemental settings 2017-08-23 16:18:44 +02:00
nm-connection.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-core-internal.h libnm: make index variable i unsigned for iterating array 2017-09-27 18:58:53 +02:00
nm-core-types-internal.h libnm: internally expose NMVlanQosMapping struct in "nm-core-internal.h" 2015-11-02 13:57:02 +01:00
nm-core-types.h libnm: add NMSettingUser 2017-03-28 14:58:21 +02:00
nm-dbus-interface.h libnm,cli: add IP setting "route-table-sync" 2017-09-26 19:39:36 +02:00
nm-dbus-utils.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-errors.c all: use NM_CACHED_QUARK_FCN() instead of G_DEFINE_QUARK() 2017-02-10 14:33:52 +01:00
nm-errors.h manager: downgrade error message for missing dependencies 2017-09-20 08:01:02 +02:00
nm-keyfile-internal.h cli: split nm-meta-setting-desc out of settings 2017-03-30 13:09:58 +02:00
nm-keyfile-reader.c libnm/keyfile: properly read user data from keyfile 2017-05-06 14:12:19 +02:00
nm-keyfile-utils.c keyfile: fix handling unsupported characters in keys 2017-05-06 14:12:18 +02:00
nm-keyfile-utils.h keyfile: fix handling unsupported characters in keys 2017-05-06 14:12:18 +02:00
nm-keyfile-writer.c all: fix typos in documentation, translated strings and comments 2017-05-28 17:33:37 +02:00
nm-property-compare.c build: don't link against libm.so 2017-03-23 19:06:02 +01:00
nm-property-compare.h all: cleanup includes in header files 2016-08-17 19:09:50 +02:00
nm-setting-8021x.c libnm-core: 8021x: fix check on private key password 2017-06-27 10:11:44 +02:00
nm-setting-8021x.h libnm-core: fix typo in 802.1x doc comment 2017-06-06 09:28:59 +02:00
nm-setting-adsl.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-adsl.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-bluetooth.c core: infer the bluetooth type from the presence of the supplemental settings 2017-08-23 16:18:44 +02:00
nm-setting-bluetooth.h core/bluetooth: add NAP type 2017-05-31 20:15:52 +02:00
nm-setting-bond.c docs: fix spelling errors in tranlated strings and documentation 2017-08-11 11:05:12 +02:00
nm-setting-bond.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-bridge-port.c all: fix minor typos in settings docs 2017-07-03 21:23:27 +02:00
nm-setting-bridge-port.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-bridge.c bridge: introduce a bridge.group-forward-mask connection property 2017-07-27 09:35:11 +02:00
nm-setting-bridge.h bridge: introduce a bridge.group-forward-mask connection property 2017-07-27 09:35:11 +02:00
nm-setting-cdma.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-cdma.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-connection.c man: fix docu of AUTOCONNECT_SLAVES variable in nm-settings-ifcfg-rh 2017-09-19 08:35:16 +02:00
nm-setting-connection.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-dcb.c all: fix minor typos in settings docs 2017-07-03 21:23:27 +02:00
nm-setting-dcb.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-dummy.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-dummy.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-generic.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-generic.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-gsm.c all: fix minor typos in settings docs 2017-07-03 21:23:27 +02:00
nm-setting-gsm.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-infiniband.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-infiniband.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-ip-config.c libnm: don't skip routes in nm_setting_ip_config_add_route() that only differ by attributes 2017-09-27 18:58:53 +02:00
nm-setting-ip-config.h libnm,core: add TABLE attribute for routes settings 2017-09-26 19:39:36 +02:00
nm-setting-ip-tunnel.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-ip-tunnel.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-ip4-config.c libnm,cli: add IP setting "route-table-sync" 2017-09-26 19:39:36 +02:00
nm-setting-ip4-config.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-ip6-config.c libnm,cli: add IP setting "route-table-sync" 2017-09-26 19:39:36 +02:00
nm-setting-ip6-config.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-macsec.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-macsec.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-macvlan.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-macvlan.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-olpc-mesh.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-olpc-mesh.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-ppp.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-ppp.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-pppoe.c libnm-core: fix memory leak in NMSettingPppoe 2017-08-30 22:03:59 +02:00
nm-setting-pppoe.h libnm,clients: add 'parent' property to PPPoE setting 2017-08-05 08:03:15 +02:00
nm-setting-private.h libnm: add enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-proxy.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-proxy.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-serial.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-serial.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-team-port.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-team-port.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-team.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-team.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-tun.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-tun.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-user.c libnm-core: add ifcfg-rh documentation for user setting 2017-09-05 10:33:42 +02:00
nm-setting-user.h libnm: add NMSettingUser 2017-03-28 14:58:21 +02:00
nm-setting-vlan.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-vlan.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-vpn.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-vpn.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-vxlan.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-vxlan.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-wimax.c libnm: use enum for setting priorities 2017-06-07 09:07:17 +02:00
nm-setting-wimax.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-wired.c docs: fix spelling errors in tranlated strings and documentation 2017-08-11 11:05:12 +02:00
nm-setting-wired.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting-wireless-security.c all: fix minor typos in settings docs 2017-07-03 21:23:27 +02:00
nm-setting-wireless-security.h libnm: skip meta enum value NM_WEP_KEY_TYPE_LAST from glib-mkenums 2017-05-23 13:37:10 +02:00
nm-setting-wireless.c docs: fix spelling errors in tranlated strings and documentation 2017-08-11 11:05:12 +02:00
nm-setting-wireless.h libnm-core: sensible docstrings for NMSettings* 2017-03-17 10:15:11 +01:00
nm-setting.c libnm: streamline functions in nm-connection.c 2017-06-07 09:07:18 +02:00
nm-setting.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-simple-connection.c libnm-core: add _nm_simple_connection_new_from_dbus() function 2016-03-26 12:10:54 +01:00
nm-simple-connection.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-utils-private.h libnm-core: define known route attribute names and validation function 2017-03-06 15:20:25 +01:00
nm-utils.c libnm: make index variable i unsigned for iterating array 2017-09-27 18:58:53 +02:00
nm-utils.h libnm-core: add attribute parsing/format helpers 2017-03-06 15:20:25 +01:00
nm-version.h release: bump version to 1.9.0 (development) 2017-03-28 16:34:22 +02:00
nm-vpn-dbus-interface.h libnm: revert coercing NMVpnConnectionStateReason to NMActiveConnectionStateReason 2017-03-17 13:00:32 +01:00
nm-vpn-editor-plugin.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-vpn-editor-plugin.h libnm-core/vpn-editor-plugin: add missing documentation 2016-11-21 13:53:03 +01:00
nm-vpn-plugin-info.c all: use nm_utils_strv_find_first() from shared/nm-utils 2017-02-04 17:55:30 +01:00
nm-vpn-plugin-info.h libnm/vpn: pass NMVpnPluginInfo to the NMVpnEditorPlugin instance 2016-06-15 10:32:32 +02:00