NetworkManager/libnm-core
Thomas Haller f0d40525df device: support dynamic "connection.stable-id" in form of text-substitution
Usecase: when connecting to a public Wi-Fi with MAC address randomization
("wifi.cloned-mac-address=random") you get on every re-connect a new
IP address due to the changing MAC address.
"wifi.cloned-mac-address=stable" is the solution for that. But that
means, every time when reconnecting to this network, the same ID will
be reused. We want an ID that is stable for a while, but at a later
point a new ID should e generated when revisiting the Wi-Fi network.

Extend the stable-id to become dynamic and support templates/substitutions.
Currently supported is "${CONNECTION}", "${BOOT}" and "${RANDOM}".
Any unrecognized pattern is treated verbaim/untranslated.

"$$" is treated special to allow escaping the '$' character. This allows
the user to still embed verbatim '$' characters with the guarantee that
future versions of NetworkManager will still generate the same ID.
Of course, a user could just avoid '$' in the stable-id unless using
it for dynamic substitutions.

Later we might want to add more recognized substitutions. For example, it
could be useful to generate new IDs based on the current time. The ${} syntax
is extendable to support arguments like "${PERIODIC:weekly}".

Also allow "connection.stable-id" to be set as global default value.
Previously that made no sense because the stable-id was static
and is anyway strongly tied to the identity of the connection profile.
Now, with dynamic stable-ids it gets much more useful to specify
a global default.

Note that pre-existing stable-ids don't change and still generate
the same addresses -- unless they contain one of the new ${} patterns.
2017-01-09 14:50:33 +01:00
..
tests libnm: merge hwaddr_aton() and nm_utils_hexstr2bin() 2016-11-28 10:06:27 +01: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: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-connection-private.h libnm-core: make nm_setting_verify() take an NMConnection 2014-10-28 17:17:17 -04:00
nm-connection.c libnm-core: normalize ethernet_link properties when auto-negotiate is off 2016-11-24 17:51:52 +01:00
nm-connection.h libnm: API for Proxy Feature 2016-10-04 11:44:13 +02:00
nm-core-internal.h libnm: add nm_utils_uuid_generate_buf() util 2016-11-09 12:07:33 +01: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: API for Proxy Feature 2016-10-04 11:44:13 +02:00
nm-dbus-interface.h libnm: explicitly set enum values in public nm-dbus-interface.h headers 2017-01-04 09:33:57 +01: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: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-errors.h ppp: split ppp manager into a plugin 2016-12-06 11:08:11 +01:00
nm-keyfile-internal.h keyfile: add support for pkcs11: URI scheme 2017-01-06 15:56:11 +01:00
nm-keyfile-reader.c keyfile: fix interpreting missing wifi.mac-address-randomization as permanent address 2017-01-09 14:50:33 +01:00
nm-keyfile-utils.c keyfile: add nm_keyfile_plugin_kf_set_integer_list_uint8() helper 2017-01-05 12:00:54 +01:00
nm-keyfile-utils.h keyfile: add nm_keyfile_plugin_kf_set_integer_list_uint8() helper 2017-01-05 12:00:54 +01:00
nm-keyfile-writer.c keyfile: fix interpreting missing wifi.mac-address-randomization as permanent address 2017-01-09 14:50:33 +01:00
nm-property-compare.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +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 up scheme handling in setters 2017-01-06 16:14:13 +01:00
nm-setting-8021x.h libnm-core/8021x: add pkcs11: scheme for certificates and keys 2017-01-06 15:56:11 +01:00
nm-setting-adsl.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-adsl.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-bluetooth.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-bluetooth.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-bond.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-bond.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-bridge-port.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-setting-bridge-port.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-bridge.c man,libnm-core: fix typos 2016-03-30 12:03:36 +02:00
nm-setting-bridge.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-cdma.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-cdma.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-connection.c device: support dynamic "connection.stable-id" in form of text-substitution 2017-01-09 14:50:33 +01:00
nm-setting-connection.h libnm-core: introduce connection.autoconnect-retries property 2016-10-16 10:08:13 +02:00
nm-setting-dcb.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-setting-dcb.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-generic.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-setting-generic.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-gsm.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-gsm.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-infiniband.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-infiniband.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-ip-config.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-ip-config.h libnm-core: add dns-priority to NMSettingIPConfig 2016-05-12 17:13:50 +02:00
nm-setting-ip-tunnel.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-ip-tunnel.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-ip4-config.c libnm-core: drop extra IPs from shared connections during normalization 2016-09-14 23:30:41 +02:00
nm-setting-ip4-config.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-ip6-config.c device: support dynamic "connection.stable-id" in form of text-substitution 2017-01-09 14:50:33 +01:00
nm-setting-ip6-config.h all: fix typos in documentation and translated strings 2016-08-26 19:00:12 +02:00
nm-setting-macvlan.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-macvlan.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-olpc-mesh.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-olpc-mesh.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-ppp.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-ppp.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-pppoe.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-pppoe.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-private.h all: cleanup includes in header files 2016-08-17 19:09:50 +02:00
nm-setting-proxy.c proxy: stricter validate the proxy pac script in NMSettingProxy 2016-12-06 22:01:41 +01:00
nm-setting-proxy.h proxy: cleanup handling of proxy-method 2016-10-05 14:46:18 +02:00
nm-setting-serial.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-serial.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-team-port.c libnm: reject too large team-config JSON 2016-09-27 10:56:57 +02:00
nm-setting-team-port.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-team.c libnm: reject too large team-config JSON 2016-09-27 10:56:57 +02:00
nm-setting-team.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-tun.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-tun.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-vlan.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-vlan.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-vpn.c setting-vpn: whatever is in vpn.secrets always is a secrets 2016-07-19 16:14:51 +02:00
nm-setting-vpn.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-vxlan.c all: use nm_utils_is_valid_iface_name() 2017-01-06 15:11:56 +01:00
nm-setting-vxlan.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-wimax.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-setting-wimax.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-wired.c device: support dynamic "connection.stable-id" in form of text-substitution 2017-01-09 14:50:33 +01:00
nm-setting-wired.h all: make MAC address randomization algorithm configurable 2016-06-30 08:32:50 +02:00
nm-setting-wireless-security.c all: replace _nm_utils_string_in_list() with g_strv_contains() 2016-06-17 12:25:33 +02:00
nm-setting-wireless-security.h docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-setting-wireless.c device: support dynamic "connection.stable-id" in form of text-substitution 2017-01-09 14:50:33 +01:00
nm-setting-wireless.h all: make MAC address randomization algorithm configurable 2016-06-30 08:32:50 +02:00
nm-setting.c all: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-setting.h libnm: add nm_setting_verify_secrets() and nm_connection_verify_secrets() 2015-11-20 10:35:10 +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 docs: libnm: add doc comment to types 2016-05-05 17:01:57 +02:00
nm-utils-private.h team: normalize invalid configuration during load 2016-08-30 18:20:28 +02:00
nm-utils.c libnm-core: deprecate nm_utils_iface_valid_name() 2017-01-06 15:11:56 +01:00
nm-utils.h libnm-core: deprecate nm_utils_iface_valid_name() 2017-01-06 15:11:56 +01:00
nm-version.h release: bump version to 1.5.0 (development) 2016-08-17 16:20:42 +02:00
nm-vpn-dbus-interface.h libnm: API for Proxy Feature 2016-10-04 11:44:13 +02: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: modify line separator comments to be 80 chars wide 2016-10-03 12:01:15 +02:00
nm-vpn-plugin-info.h libnm/vpn: pass NMVpnPluginInfo to the NMVpnEditorPlugin instance 2016-06-15 10:32:32 +02:00