summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* example: print WireGuard parameters in nm-wg-set example scriptth/wireguard-fixesThomas Haller2019-07-311-0/+12
|
* wireguard: use fixed fwmark/rule-priority for auto-default-routeThomas Haller2019-07-311-139/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With "wireguard.ip4-auto-default-route" and "wireguard.ip6-auto-default-route", NetworkManager automatically adds policy routing rules for the default route. For that, it needs to pick (up to) two numbers: - the fwmark. This is used both for WireGuard's fwmark setting and is also the number of the routing table where the default-route is added. - the rule priority. NetworkManager adds two policy routing rules, and we need to place them somewhere before the default rules (at 32766). Previously, we looked at exiting platform configuration and picked numbers that were not yet used. However, during restart of NetworkManager, we leave the interface up and after restart we will take over the previous configuration. At that point, we need to choose the same fwmark/priority, otherwise the configuration changes. But since we picked numbers that were not yet used, we would always choose different numbers. For routing rules that meant that after restart a second pair of rules was added. We possibly could store this data in the device's state-file. But that is complex. Instead, just pick numbers deterministically based on the connection's UUID. If the picked numbers are not suitable, then the user can still work around that: - for fwmark, the user can explicitly configure wireguard.fwmark setting. - for the policy routes, the user can explicitly add the rules with the desired priorirites (arguably, currently the default-route cannot be added like a regular route, so the table cannot be set. Possibly the user would have to add two /1 routes instead with suppress_prefixlength=1).
* wireguard: clear cached auto-default-route setting in act_stage1_prepare()Thomas Haller2019-07-311-0/+12
| | | | | | | | | We call _auto_default_route_init() at various places, for example during coerce_route_table(). We cannot be sure that we don't call it before activation starts (before stage1) or after device-cleanup. That means, upon activation, we need to clear the state first. Do that in act_stage1_prepare().
* wireguard: fix crash in _auto_default_route_init()Thomas Haller2019-07-311-26/+33
| | | | | | | | | | | | | | | | | | | | | | | #3 0x00007fb0aa9e7d3d in g_return_if_fail_warning (log_domain=log_domain@entry=0x562295fd5ee3 "libnm", pretty_function=pretty_function@entry=0x562295fd71d0 <__func__.35180> "_connection_get_setting_check", expression=expression@entry=0x562295f8edf7 "NM_IS_CONNECTION (connection)") at ../glib/gmessages.c:2767 #4 0x0000562295df151a in _connection_get_setting_check (connection=0x0, setting_type=0x562297b17050 [NMSettingWireGuard/NMSetting]) at libnm-core/nm-connection.c:207 #5 0x0000562295df151a in _connection_get_setting_check (connection=0x0, setting_type=0x562297b17050 [NMSettingWireGuard/NMSetting]) at libnm-core/nm-connection.c:205 #6 0x0000562295ef132a in _nm_connection_get_setting (type=<optimized out>, connection=0x0) at ./libnm-core/nm-core-internal.h:483 #7 0x0000562295ef132a in _auto_default_route_init (self=self@entry=0x562297bf82b0 [NMDeviceWireGuard]) at src/devices/nm-device-wireguard.c:443 #8 0x0000562295ef1b98 in coerce_route_table (device=0x562297bf82b0 [NMDeviceWireGuard], addr_family=2, route_table=0, is_user_config=<optimized out>) at src/devices/nm-device-wireguard.c:565 #9 0x0000562295ea42ae in _get_route_table (self=self@entry=0x562297bf82b0 [NMDeviceWireGuard], addr_family=addr_family@entry=2) at src/devices/nm-device.c:2311 #10 0x0000562295ea4593 in nm_device_get_route_table (self=0x562297bf82b0 [NMDeviceWireGuard], addr_family=2) at src/devices/nm-device.c:2338 #11 0x0000562295eabde0 in ip_config_merge_and_apply (self=0x562297bf82b0 [NMDeviceWireGuard], addr_family=2, commit=1) at src/devices/nm-device.c:7590 #12 0x0000562295ed2f0b in device_link_changed (self=self@entry=0x562297bf82b0 [NMDeviceWireGuard]) at src/devices/nm-device.c:3939 #13 0x00007fb0aa9dc7db in g_idle_dispatch (source=source@entry=0x562297bf0b30, callback=0x562295ed2880 <device_link_changed>, user_data=0x562297bf82b0) at ../glib/gmain.c:5627 #14 0x00007fb0aa9dfedd in g_main_dispatch (context=0x562297a28090) at ../glib/gmain.c:3189 #15 0x00007fb0aa9dfedd in g_main_context_dispatch (context=context@entry=0x562297a28090) at ../glib/gmain.c:3854 #16 0x00007fb0aa9e0270 in g_main_context_iterate (context=0x562297a28090, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3927 #17 0x00007fb0aa9e05a3 in g_main_loop_run (loop=0x562297a0b380) at ../glib/gmain.c:4123 #18 0x0000562295d0b147 in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:465 https://bugzilla.redhat.com/show_bug.cgi?id=1734383
* shared: add NM_HASH_SEED_16() macroThomas Haller2019-07-311-0/+3
|
* cli: abort on extra argumentsLubomir Rintel2019-07-304-40/+28
| | | | | | | | | | | | | | Instead of straight-out rejecting extra parameters for various nmcli sub-commands (such as "nmcli dev status", "nmcli dev wifi rescan" or "nmcli dev wifi connect", etc.), we just print a warning and go ahead. This is unhelpful. In case the user makes a typo, we'll do the wrong thing and possibly even drown the warning in the output. While at that, let's make the error message consistent. One less string to translate. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/217
* cli: drop NMC_RETURNLubomir Rintel2019-07-302-26/+21
| | | | | | | | | It's criminally ugly. Also -- totally useless. These functions return NMCResultCode, call_cmd() expects them to do so, and assigns the return_value itself. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/218
* contrib/rpm: fix libnm License tagLubomir Rintel2019-07-301-1/+3
| | | | https://bugzilla.redhat.com/show_bug.cgi?id=1723395
* libnm/doc: fix gtk-doc annotations for documenting enum values in ↵Thomas Haller2019-07-301-4/+4
| | | | "nm-dbus-interface.h"
* contrib/rpm: use --with-runstatedir=%{_rundir} instead of hard-coding /runThomas Haller2019-07-291-1/+1
|
* contrib/rpm: fix parsing of %real_version_major for ".0" versionsThomas Haller2019-07-291-1/+1
|
* release: bump version to 1.21.0 (development)1.21.0-devThomas Haller2019-07-294-3/+18
|
* release: bump version to 1.19.90 (1.20-rc1)1.20-rc1Thomas Haller2019-07-292-2/+2
|
* wireguard: merge branch 'th/wireguard-routing'Thomas Haller2019-07-2913-124/+670
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/214
| * NEWS: updateThomas Haller2019-07-291-0/+7
| |
| * wireguard: support configuring policy routing to avoid routing loopsThomas Haller2019-07-298-7/+559
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For WireGuard (like for all IP-tunnels and IP-based VPNs), the IP addresses of the peers must be reached outside the tunnel/VPN itself. For VPN connections, NetworkManager usually adds a direct /32 route to the external VPN gateway to the underlying device. For WireGuard that is not done, because injecting a route to another device is ugly and error prone. Worse: WireGuard with automatic roaming and multiple peers makes this more complicated. This is commonly a problem when setting the default-route via the VPN, but there are also other subtle setups where special care must be taken to prevent such routing loops. WireGuard's wg-quick provides a simple, automatic solution by adding two policy routing rules and relying on the WireGuard packets having a fwmark set (see [1]). Let's also do that. Add new properties "wireguard.ip4-auto-default-route" and "wireguard.ip6-auto-default-route" to enable/disable this. Note that the default value lets NetworkManager automatically choose whether to enable it (depending on whether there are any peers that have a default route). This means, common scenarios should now work well without additional configuration. Note that this is also a change in behavior and upon package upgrade NetworkManager may start adding policy routes (if there are peers that have a default-route). This is a change in behavior, as the user already clearly had this setup working and configured some working solution already. The new automatism picks the rule priority automatically and adds the default-route to the routing table that has the same number as the fwmark. If any of this is unsuitable, then the user is free to disable this automatism. Note that since 1.18.0 NetworkManager supports policy routing (*). That means, what this automatism does can be also achieved via explicit configuration of the profile, which gives the user more flexibility to adjust all parameters explicitly). (*) but only since 1.20.0 NetworkManager supports the "suppress_prefixlength" rule attribute, which makes it impossible to configure exactly this rule-based solution with 1.18.0 NetworkManager. [1] https://www.wireguard.com/netns/#improved-rule-based-routing
| * wireguard: refactor cleanup of NMDeviceWireGuard on disconnect/disposeThomas Haller2019-07-291-10/+11
| |
| * device: allow device classes to overwrite the route-tableThomas Haller2019-07-292-8/+27
| |
| * device: allow NMDevice implementations to inject policy routing rulesThomas Haller2019-07-292-5/+34
| |
| * device: fix reapply for policy routing rulesThomas Haller2019-07-291-0/+2
| | | | | | | | We need to re-sync the rules.
| * platform: add NMP_OBJECT_CAST_LNK_WIREGUARD() macroThomas Haller2019-07-291-0/+1
| |
| * platform: cleanup NMPObject cast macrosThomas Haller2019-07-291-90/+15
| |
| * platform: make plobj argument of nmp_object_new() void pointerThomas Haller2019-07-292-2/+2
| | | | | | | | | | | | | | | | NMPlatformObject is a base-type of all actual platform structs. We very seldomly use this type directly. Most callers that pass the plobj to nmp_object_new() will need to cast it. Make the varible a void pointer to not require the cast.
| * platform: allow AF_UNSPEC for nmp_lookup_init_object_by_addr_family()Thomas Haller2019-07-291-1/+4
| |
| * libnm: add internal _nm_connection_get_setting() accessorThomas Haller2019-07-291-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nm_connection_get_setting() returns a pointer of type NMSetting. That is very inconvenient, because most callers will need the the result pointer as a setting subtype (like NMSettingConnection). That would be like g_object_new() returning a "GObject *" pointer, which is technically correct but annoying. In the past that problem was avoided by having countless accessors like nm_connection_get_setting_ip4_config(), etc. But that just blows up the API and also is not generic. Meaning: the type is not a function argument but the function itself. That makes composing the code harder as the setting type cannot be treated generically (as a function argument). Anyway. Add an internal wrapper that returns a void pointer.
| * libnm/docs: fix section description for WireGuard settingsThomas Haller2019-07-291-1/+1
|/
* ovs: don't release slaves on quitBeniamino Galvani2019-07-291-7/+12
| | | | | | | | | | | An OVS bridge and its slaves can continue to work even after NM has quit. Keep the interface enslaved when the @configure argument of device->release_slave() is FALSE, which happens on quit and in other circumstances when we don't really want to release the slave from its master. https://bugzilla.redhat.com/show_bug.cgi?id=1733709 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/215
* man: setting-wireless: add "mesh" to the available modesFrancesco Giudici2019-07-292-2/+2
|
* merge: branch 'lr/wifi-mesh'Lubomir Rintel2019-07-2924-666/+1220
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/67
| * clients: Wi-Fi Mesh supportlr/wifi-meshLubomir Rintel2019-07-295-626/+826
| | | | | | | | | | Allow setting mesh mode in wireless connections and recognize the Mesh support as indicated by the device flags.
| * wifi: auto connect mesh networksAndy Kling2019-07-291-7/+16
| | | | | | | | | | | | mesh connections can be started at any time but prevent a connection using ip auto configuration to start, if no mesh point providing the network is in range.
| * wifi/utils: complete band and channel for meshAndy Kling2019-07-294-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To allow completion for mesh connections channel and band need to be set. This is only done if both values are absent. It does not check existing values against a given ap_freq. This maybe changed to throw an error and detect a possible conflict. Any other check is left to verify step of connection. This change allows to use ap freq during complete. For tests 0 is passed as frequency for now. This needs to be changed if completion of freq should be tested. [lkundrak@v3.sk, thaller@redhat.com: formatting fixes]
| * libnm-core: add nm_utils_wifi_freq_to_bandAndy Kling2019-07-292-0/+21
| | | | | | | | | | | | | | allow to retrieve wifi band from frequency. [lkundrak@v3.sk: formatting fixes, move the prototype to a private header]
| * libnm-core: 802-11-wireless.mode mesh requires band and channelAndy Kling2019-07-291-0/+10
| | | | | | | | | | | | | | | | an essential feature of 802.11s is to allow moving/mobile mesh points and adapt the topology dynamically. This includes starting a mesh point not in range of others and establish the connection once it comes into range. At the moment for this reason a mesh connection requires the frequency to be fixed as supplicant does too.
| * wifi/ap: detect mesh modeAndy Kling2019-07-291-1/+7
| | | | | | | | | | | | | | mark ap if supplicant reports bss property "Mode = 'mesh'". bss mode mesh is available since hostap_2_6-729-g213eb1885 check mesh connections are compatible with detected mode.
| * wireless-security: ensure Mesh networks can't use anything but SAELubomir Rintel2019-07-291-8/+26
| | | | | | | | They must be either open or use SAE key management.
| * devices/wifi: support Mesh modeLubomir Rintel2019-07-293-13/+37
| | | | | | | | | | This puts together the bits from previous commits and actually allows for activating a mode=mesh connection.
| * setting-wireless: allow Mesh modeLubomir Rintel2019-07-294-6/+27
| |
| * supplicant-config: add support for joining a MeshLubomir Rintel2019-07-292-5/+16
| |
| * supplicant-interface: detect mesh supportLubomir Rintel2019-07-293-0/+48
| | | | | | | | | | | | | | | | This ensures that we know whether wpa_supplicant was built with CONFIG_MESH enabled. [andreas.kling@peiker-cee.de: add add PROP_MESH_SUPPORT to set_property()]
| * dbus-interface: add Mesh supportLubomir Rintel2019-07-291-0/+4
| | | | | | | | Add flags that indicate Mesh support and Mesh mode on a device.
| * wifi: use deactivate_async to diconnect interfaceAndy Kling2019-07-291-0/+55
| | | | | | | | | | | | | | | | | | deactivate switches the device back to infrastructure mode for compatibility reasons. This will prevent supplicant from de-assosiating non-infrastructure connections as the interface goes down. Disconnect asynchronously and wait for the result. This is required for e.g. 802.11s mesh.
| * supplicant-interface: add async disconnectAndy Kling2019-07-292-0/+70
|/ | | | | | allow to call dbus method "Disconnect" and handle a callback given by the caller. This allows graceful disconnects that require to wait for the operation to complete.
* platform: add nm_platform_lookup_object_by_addr_family() utilThomas Haller2019-07-271-0/+11
|
* device/wireguard: fix separating lines by semicolon in link_config()Thomas Haller2019-07-271-2/+2
|
* systemd: merge branch systemd into masterThomas Haller2019-07-2658-197/+491
|\
| * systemd: update code from upstream (2019-07-26)Thomas Haller2019-07-2643-186/+453
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a direct dump from systemd git. ====== SYSTEMD_DIR=../systemd COMMIT=608807c163921b0dfbaf646b3ec19fc9b71e6451 ( cd "$SYSTEMD_DIR" git checkout "$COMMIT" git reset --hard git clean -fdx ) git ls-files -z :/src/systemd/src/ \ :/shared/systemd/src/ \ :/shared/nm-utils/unaligned.h | \ xargs -0 rm -f nm_copy_sd_shared() { mkdir -p "./shared/systemd/$(dirname "$1")" cp "$SYSTEMD_DIR/$1" "./shared/systemd/$1" } nm_copy_sd_core() { mkdir -p "./src/systemd/$(dirname "$1")" cp "$SYSTEMD_DIR/$1" "./src/systemd/$1" } nm_copy_sd_nmutils() { mkdir -p "./shared/nm-utils/" cp "$SYSTEMD_DIR/$1" "./shared/nm-utils/${1##*/}" } nm_copy_sd_core "src/libsystemd-network/arp-util.c" nm_copy_sd_core "src/libsystemd-network/arp-util.h" nm_copy_sd_core "src/libsystemd-network/dhcp-identifier.c" nm_copy_sd_core "src/libsystemd-network/dhcp-identifier.h" nm_copy_sd_core "src/libsystemd-network/dhcp-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp-lease-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp-network.c" nm_copy_sd_core "src/libsystemd-network/dhcp-option.c" nm_copy_sd_core "src/libsystemd-network/dhcp-packet.c" nm_copy_sd_core "src/libsystemd-network/dhcp-protocol.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-lease-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-network.c" nm_copy_sd_core "src/libsystemd-network/dhcp6-option.c" nm_copy_sd_core "src/libsystemd-network/dhcp6-protocol.h" nm_copy_sd_core "src/libsystemd-network/lldp-internal.h" nm_copy_sd_core "src/libsystemd-network/lldp-neighbor.c" nm_copy_sd_core "src/libsystemd-network/lldp-neighbor.h" nm_copy_sd_core "src/libsystemd-network/lldp-network.c" nm_copy_sd_core "src/libsystemd-network/lldp-network.h" nm_copy_sd_core "src/libsystemd-network/network-internal.c" nm_copy_sd_core "src/libsystemd-network/network-internal.h" nm_copy_sd_core "src/libsystemd-network/sd-dhcp-client.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp-lease.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp6-client.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp6-lease.c" nm_copy_sd_core "src/libsystemd-network/sd-ipv4acd.c" nm_copy_sd_core "src/libsystemd-network/sd-ipv4ll.c" nm_copy_sd_core "src/libsystemd-network/sd-lldp.c" nm_copy_sd_core "src/libsystemd/sd-event/event-source.h" nm_copy_sd_core "src/libsystemd/sd-event/event-util.c" nm_copy_sd_core "src/libsystemd/sd-event/event-util.h" nm_copy_sd_core "src/libsystemd/sd-event/sd-event.c" nm_copy_sd_core "src/libsystemd/sd-id128/id128-util.c" nm_copy_sd_core "src/libsystemd/sd-id128/id128-util.h" nm_copy_sd_core "src/libsystemd/sd-id128/sd-id128.c" nm_copy_sd_core "src/systemd/_sd-common.h" nm_copy_sd_core "src/systemd/sd-dhcp-client.h" nm_copy_sd_core "src/systemd/sd-dhcp-lease.h" nm_copy_sd_core "src/systemd/sd-dhcp6-client.h" nm_copy_sd_core "src/systemd/sd-dhcp6-lease.h" nm_copy_sd_core "src/systemd/sd-event.h" nm_copy_sd_core "src/systemd/sd-id128.h" nm_copy_sd_core "src/systemd/sd-ipv4acd.h" nm_copy_sd_core "src/systemd/sd-ipv4ll.h" nm_copy_sd_core "src/systemd/sd-lldp.h" nm_copy_sd_core "src/systemd/sd-ndisc.h" nm_copy_sd_nmutils "src/basic/unaligned.h" nm_copy_sd_shared "src/basic/alloc-util.c" nm_copy_sd_shared "src/basic/alloc-util.h" nm_copy_sd_shared "src/basic/async.h" nm_copy_sd_shared "src/basic/env-file.c" nm_copy_sd_shared "src/basic/env-file.h" nm_copy_sd_shared "src/basic/env-util.c" nm_copy_sd_shared "src/basic/env-util.h" nm_copy_sd_shared "src/basic/errno-util.h" nm_copy_sd_shared "src/basic/escape.c" nm_copy_sd_shared "src/basic/escape.h" nm_copy_sd_shared "src/basic/ether-addr-util.c" nm_copy_sd_shared "src/basic/ether-addr-util.h" nm_copy_sd_shared "src/basic/extract-word.c" nm_copy_sd_shared "src/basic/extract-word.h" nm_copy_sd_shared "src/basic/fd-util.c" nm_copy_sd_shared "src/basic/fd-util.h" nm_copy_sd_shared "src/basic/fileio.c" nm_copy_sd_shared "src/basic/fileio.h" nm_copy_sd_shared "src/basic/format-util.c" nm_copy_sd_shared "src/basic/format-util.h" nm_copy_sd_shared "src/basic/fs-util.c" nm_copy_sd_shared "src/basic/fs-util.h" nm_copy_sd_shared "src/basic/hash-funcs.c" nm_copy_sd_shared "src/basic/hash-funcs.h" nm_copy_sd_shared "src/basic/hashmap.c" nm_copy_sd_shared "src/basic/hashmap.h" nm_copy_sd_shared "src/basic/hexdecoct.c" nm_copy_sd_shared "src/basic/hexdecoct.h" nm_copy_sd_shared "src/basic/hostname-util.c" nm_copy_sd_shared "src/basic/hostname-util.h" nm_copy_sd_shared "src/basic/in-addr-util.c" nm_copy_sd_shared "src/basic/in-addr-util.h" nm_copy_sd_shared "src/basic/io-util.c" nm_copy_sd_shared "src/basic/io-util.h" nm_copy_sd_shared "src/basic/list.h" nm_copy_sd_shared "src/basic/log.h" nm_copy_sd_shared "src/basic/macro.h" nm_copy_sd_shared "src/basic/memory-util.c" nm_copy_sd_shared "src/basic/memory-util.h" nm_copy_sd_shared "src/basic/mempool.c" nm_copy_sd_shared "src/basic/mempool.h" nm_copy_sd_shared "src/basic/missing_fcntl.h" nm_copy_sd_shared "src/basic/missing_socket.h" nm_copy_sd_shared "src/basic/missing_stat.h" nm_copy_sd_shared "src/basic/missing_type.h" nm_copy_sd_shared "src/basic/parse-util.c" nm_copy_sd_shared "src/basic/parse-util.h" nm_copy_sd_shared "src/basic/path-util.c" nm_copy_sd_shared "src/basic/path-util.h" nm_copy_sd_shared "src/basic/prioq.c" nm_copy_sd_shared "src/basic/prioq.h" nm_copy_sd_shared "src/basic/process-util.c" nm_copy_sd_shared "src/basic/process-util.h" nm_copy_sd_shared "src/basic/random-util.c" nm_copy_sd_shared "src/basic/random-util.h" nm_copy_sd_shared "src/basic/set.h" nm_copy_sd_shared "src/basic/signal-util.h" nm_copy_sd_shared "src/basic/siphash24.h" nm_copy_sd_shared "src/basic/socket-util.c" nm_copy_sd_shared "src/basic/socket-util.h" nm_copy_sd_shared "src/basic/sort-util.h" nm_copy_sd_shared "src/basic/sparse-endian.h" nm_copy_sd_shared "src/basic/stat-util.c" nm_copy_sd_shared "src/basic/stat-util.h" nm_copy_sd_shared "src/basic/stdio-util.h" nm_copy_sd_shared "src/basic/string-table.c" nm_copy_sd_shared "src/basic/string-table.h" nm_copy_sd_shared "src/basic/string-util.c" nm_copy_sd_shared "src/basic/string-util.h" nm_copy_sd_shared "src/basic/strv.c" nm_copy_sd_shared "src/basic/strv.h" nm_copy_sd_shared "src/basic/strxcpyx.c" nm_copy_sd_shared "src/basic/strxcpyx.h" nm_copy_sd_shared "src/basic/time-util.c" nm_copy_sd_shared "src/basic/time-util.h" nm_copy_sd_shared "src/basic/tmpfile-util.c" nm_copy_sd_shared "src/basic/tmpfile-util.h" nm_copy_sd_shared "src/basic/umask-util.h" nm_copy_sd_shared "src/basic/utf8.c" nm_copy_sd_shared "src/basic/utf8.h" nm_copy_sd_shared "src/basic/util.c" nm_copy_sd_shared "src/basic/util.h" nm_copy_sd_shared "src/shared/dns-domain.c" nm_copy_sd_shared "src/shared/dns-domain.h"
* | NEWS: updateThomas Haller2019-07-261-1/+23
| |
* | NEWS: add news entries with changes from 1.18.2Thomas Haller2019-07-261-0/+19
| |
* | settings: merge branch 'th/settings-shadowed-storage'Thomas Haller2019-07-2623-459/+1384
|\ \ | | | | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/211