summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* policy: delegate IPv6 prefixes to ipv6.method=shared connectionslr/ipv6-ndLubomir Rintel2016-11-011-1/+244
|
* device: add prefix delegation machineryLubomir Rintel2016-11-012-3/+117
| | | | | | Two parts: contributing the prefixes delegated to the requesting (uplink) interface to the policy's pool and applying the negotiated subjects on the shared (downlink) devices.
* dhcp-manager: add ability to specify the number of IPv6 prefixes to requestLubomir Rintel2016-11-019-27/+115
| | | | | | Utilizes RFC 3633 prefix option in role of requesting router to ask the delegating router for prefixes. In future we'll be able to use the addresses from those prefixes on ipv6.method=shared connections.
* dhcp-manager: move the options logging one level upLubomir Rintel2016-11-012-8/+9
| | | | | | | | | It will make sense to log the options even if we're not creating an ip6_config (e.g. we got a prefix option, not an address). Also, guard it with a logging enable conditional. That way we save precious microseconds so that we'll feel less guilty about the demise of mankind and universe.
* device: announce the managed prefixes with ipv6.method=sharedLubomir Rintel2016-11-011-7/+83
|
* settings: allow method=shared with manual ipv6 addressesLubomir Rintel2016-11-013-28/+22
| | | | The manual addresses still make sense and consistent with IPv4.
* ifcfg: add ability to save/restore ipv6.method=sharedLubomir Rintel2016-11-012-4/+6
| | | | We use IPV6_AUTOCONF=shared for this.
* ndisc/lndp: add ability to announce the managed prefixesLubomir Rintel2016-11-015-4/+131
|
* ndisc: add logic for acting as a routerLubomir Rintel2016-11-015-21/+175
|
* ndisc: move the logging deduplication into a macroLubomir Rintel2016-11-011-13/+16
| | | | We'll want to use it elsewhere.
* ndisc: avoid calling start() multiple timesLubomir Rintel2016-11-013-6/+7
| | | | | It hooks on ndp event callbacks and we'll end up in them being done redundantly, leaking them on dispose and potentially even calling them.
* ndisc/trivial: move nm_ndisc_set_iid upwardsLubomir Rintel2016-11-011-47/+49
|
* ndisc/lndp: drop an unused variableLubomir Rintel2016-11-011-1/+0
|
* rdisc: rename to ndiscLubomir Rintel2016-11-0120-876/+876
| | | | | | We'll soon not only do the router discovery, but announce ourselves as a reouter. "Neighbor discovery" sounds to be a more appropriate name for the class than "Router discovery".
* device: avoid a crash when L3 configuration failsLubomir Rintel2016-11-011-1/+5
| | | | | Don't call the IP check until at either IPv4 or IPv6 is actually configured.
* ifcfg-rh/trivial: get rid of an extra unused variableLubomir Rintel2016-11-011-15/+14
|
* linux: don't assume short write when the kernel ignores the trailing whitespaceLubomir Rintel2016-11-011-1/+1
| | | | | | | | Certain sysctls don't appreciate the final newline. That's completely fine. 17941 open("/proc/sys/net/ipv6/conf/eth2/forwarding", O_WRONLY|O_TRUNC) = 21 17941 write(21, "1\n", 2) = 1
* client: don't do g_criticalsLubomir Rintel2016-11-011-1/+1
| | | | | | | | Also, be a bit more careful about the layers of errors. Just don't do this: (process:236): nmcli-CRITICAL **: Error: Could not create NMClient object: Permissions request failed: Authorization check failed: The name org.freedesktop.PolicyKit1 was not provided by any .service files.
* team: fix wrong g_object_set() when updating connectionsBeniamino Galvani2016-10-311-1/+1
| | | | | | Fixes: 16a6991b90de149555dad1bb187282e6bcbdeb9f https://bugzilla.redhat.com/show_bug.cgi?id=1390106
* device: merge branch 'th/preserve-fake-perm-hwaddr-bgo772880'Thomas Haller2016-10-2815-287/+517
|\ | | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=772880 https://bugzilla.redhat.com/show_bug.cgi?id=1388286
| * device: suppress log message in nm_device_update_hw_address() when no MAC ↵Thomas Haller2016-10-281-44/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | address For example for tun devices we get a lot of (tun7): hw-addr: failed reading current MAC address warnings. Just be silent about it. We log when something changes, we don't need to log when we fail to obtain a MAC address. Thereby, refactor nm_device_update_hw_address() to return early.
| * device: don't evaluate IP config changes until device is initializedThomas Haller2016-10-281-6/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The unmanaged flags PLATFORM_INIT indicates whether UDEV is done initializing the device. We should not handle IP config changes before that pointer. This avoids codepaths that require the permanent MAC address of the device. We should not freeze the permanent MAC address before UDEV initialized the device, for two reasons: - getting the permanent MAC address using ethtool is racy as UDEV might still rename the interface. - freezing a fake permanent MAC address should only happen after UDEV is done configuring the MAC address of software devices. #0 0x000055555568bc7a in nm_device_update_permanent_hw_address (self=self@entry=0x555555f0fb70 [NMDeviceVeth], force_freeze=force_freeze@entry=1) at src/devices/nm-device.c:11817 #1 0x000055555568c443 in nm_device_get_permanent_hw_address_full (self=self@entry=0x555555f0fb70 [NMDeviceVeth], force_freeze=force_freeze@entry=1, out_is_fake=out_is_fake@entry=0x0) at src/devices/nm-device.c:12227 #2 0x000055555568cb06 in nm_device_get_permanent_hw_address (self=self@entry=0x555555f0fb70 [NMDeviceVeth]) at src/devices/nm-device.c:12237 #3 0x000055555568cb50 in spec_match_list (self=0x555555f0fb70 [NMDeviceVeth], specs=0x555555a5c000 = {...}) at src/devices/nm-device.c:12294 #4 0x00005555556a4ee6 in spec_match_list (device=0x555555f0fb70 [NMDeviceVeth], specs=0x555555a5c000 = {...}) at src/devices/nm-device-ethernet.c:1461 #5 0x00005555556978db in nm_device_spec_match_list (self=self@entry=0x555555f0fb70 [NMDeviceVeth], specs=0x555555a5c000 = {...}) at src/devices/nm-device.c:12277 #6 0x000055555558e187 in _match_section_infos_lookup (match_section_infos=0x555555a5d500, keyfile=0x555555a46f80, property=property@entry=0x555555793123 "ipv4.route-metric", device=device@entry=0x555555f0fb70 [NMDeviceVeth], out_value=out_value@entry=0x7fffffffe018) at src/nm-config-data.c:1169 #7 0x00005555555922ca in nm_config_data_get_connection_default (self=0x555555a548c0 [NMConfigData], property=property@entry=0x555555793123 "ipv4.route-metric", device=device@entry=0x555555f0fb70 [NMDeviceVeth]) at src/nm-config-data.c:1234 #8 0x00005555556790cd in _get_ipx_route_metric (self=self@entry=0x555555f0fb70 [NMDeviceVeth], is_v4=is_v4@entry=1) at src/devices/nm-device.c:1142 #9 0x000055555567912e in nm_device_get_ip4_route_metric (self=self@entry=0x555555f0fb70 [NMDeviceVeth]) at src/devices/nm-device.c:1161 #10 0x000055555567da6c in ip4_config_merge_and_apply (self=self@entry=0x555555f0fb70 [NMDeviceVeth], config=config@entry=0x0, commit=commit@entry=0, out_reason=out_reason@entry=0x0) at src/devices/nm-device.c:4787 #11 0x000055555567e0fb in update_ip4_config (self=self@entry=0x555555f0fb70 [NMDeviceVeth], initial=initial@entry=0) at src/devices/nm-device.c:9532 #12 0x0000555555693acd in queued_ip4_config_change (user_data=0x555555f0fb70) at src/devices/nm-device.c:9651 #13 0x00007ffff4c966ba in g_main_context_dispatch (context=0x555555a46af0) at gmain.c:3154 #14 0x00007ffff4c966ba in g_main_context_dispatch (context=context@entry=0x555555a46af0) at gmain.c:3769 #15 0x00007ffff4c96a70 in g_main_context_iterate (context=0x555555a46af0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840 #16 0x00007ffff4c96d92 in g_main_loop_run (loop=0x555555a47400) at gmain.c:4034 #17 0x000055555558372a in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:411
| * device: delay evaluating unmanaged-by-user-settings flags until link initializedThomas Haller2016-10-283-16/+40
| | | | | | | | | | | | | | | | | | | | | | Before the link is initialized, that is before UDEV completed initializing the device, we should not evaluate the user-settings unmanaged flags. The reason is, that evaluating it likely involves looking at the permanent MAC address, which might use the wrong fake MAC address (before UDEV set the right one). Also, it might use the wrong ifname to lookup the permanent MAC address via ethtool.
| * device: delay capturing permanent MAC address until UDEV is settledThomas Haller2016-10-284-44/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The permanent MAC address of an NMDevice shall not change as long as the device is realized. That is, we read it only once and don't change it afterwards. There are two issues that this commit tries to mitigate: (1) users are advised to use UDEV to rename interfaces. As we lookup the permenent MAC address using ethtool (which uses the interface name), there is a race where we could read the permanent MAC address using the wrong interface name. We should wait until UDEV finished initializing the device and until the interface name is stable (see rh#1388286). This commit still cannot avoid the race of ethtool entirely. It only tries to avoid ethtool until UDEV has done its work. That is, until we expect the interface name no longer to change. (2) some device types, don't have a permanent MAC address so we fall back to use the currently set address (fake). Again, users are advised to use UDEV to configure the MAC addresses on such software devices. Thus, we should not get the fake MAC address until UDEV initialized the device. This patch actually doesn't solve the problem at all yet. The reason is that a regular caller of nm_device_get_permanent_hw_address() can not afford to wait until UDEV settled. Thus, any user who requests the permanent MAC address before the link is initialized, runs into the problems above. In a next step, we shall revisit such calls to nm_device_get_permanent_hw_address() and delay them until the link is initialized.
| * device: don't allow mutating the device's hardware address lengthThomas Haller2016-10-281-16/+37
| | | | | | | | | | | | | | | | | | | | | | | | We repeatedly call nm_device_update_hw_address() to reset the cached MAC address of the device. However, we don't allow changing the address length once it is set. Multiple entities (initial, current and permanent MAC address) are all checked to have the same address length. Changing the length would be a very strange thing (and probably indicate a bug somewhere else). Just don't allow that.
| * device: treat fake permanent MAC address mostly like a real oneThomas Haller2016-10-2810-32/+31
| | | | | | | | | | | | Now that we persist the fake permanent address across restart of NetworkManager, we want to consider fake addresses as good enough in most cases.
| * core: persist the fake permanent hardware address to the device's statefileThomas Haller2016-10-285-22/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On devices that have no real permanent hardware address (as returned by ethtool), we take the current MAC address of the device. Currently, NM is a bit flaky about whether to accept such fake permanent addresses for settings like keyfile.unmanaged-devices or the per- connection property ethernet.mac-address. Probably, we should allow using fake addresses there in general. However, that leads to problems because NetworkManager itself changes the current MAC address of such devices. For example when configuing keyfile.unmanaged-device=22:33:44:55:66:77 and later activating a connection with ethernet.cloned-mac-address=22:33:44:55:66:77 we have a strange situation after restart and the device becomes unmanaged. We are going to avoid that, by remembering the fake permanent address in the device state file. This only matters: - for devices that don't have a real permanent address (veth) - if the user or NetworkManager itself changed the MAC address of the device - after a restart of NetworkManager, without reboot. A reboot clears the device state for /var/run/NetworkManager.
| * libnm-core/utils: update hwaddr utilitiesThomas Haller2016-10-284-160/+205
| | | | | | | | | | | | | | | | | | | | | | _nm_utils_hwaddr_length() did a validation of the string and returned the length of the address. In all cases where we were interested in that, we also either want to validate the address, get the address in binary form, or canonicalize the address. We can avoid these duplicate checks, by using _nm_utils_hwaddr_aton() which both does the parsing and returning the length.
| * config: remove unused error variable from nm_config_device_state_load()Thomas Haller2016-10-281-2/+1
| |
| * shared: add nm_assert_se() macroThomas Haller2016-10-281-0/+2
|/ | | | | | | | We usually don't build NM with g_assert() disabled (G_DISABLE_ASSERT). But even if we would, there is no assertion macro that always evaluates the condition for possible side effects. I think that is a useful thing to have.
* manager: allow slave connection to auto-connect its slavesBeniamino Galvani2016-10-281-5/+34
| | | | | | | | | | Since connection.autoconnect-slaves was introduced, we only allowed it to autoactivate slaves for connections that were not slave themselves. It seems useful to remove such limitation, but we must prevent an infinite loop if there is a circular dependency between connections. https://bugzilla.redhat.com/show_bug.cgi?id=1360386
* contrib/rpm: merge branch 'th/no-dhclient-default-rh1204226'Thomas Haller2016-10-278-11/+67
|\ | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1204226
| * contrib/rpm: update comments in NetworkManager.conf explaining ↵Thomas Haller2016-10-271-5/+7
| | | | | | | | /var/lib/NetworkManager/conf.d
| * contrib/rpm: add NetworkManager-config-dhcp-dhclient packageThomas Haller2016-10-273-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | This allows to get rid of the dhclient requirement of NetworkManager package and moves the package dependency to the new sub package NetworkManager-config-dhcp-dhclient. For the moment, I think dhclient should still be the default choice for regular users due to dhclient providing better better previledge separation of network facing code. A user who knows that he's doing, can now however remove dhclient while keeping NetworkManager. https://bugzilla.redhat.com/show_bug.cgi?id=1204226
| * dhcp: make default dhcp plugin configurable at compile-timeThomas Haller2016-10-274-5/+26
|/
* core: don't unmanage devices on shutdownThomas Haller2016-10-271-80/+20
| | | | | | | ... except Wi-Fi and devices that cannot assume connections at all. https://bugzilla.redhat.com/show_bug.cgi?id=1371126 https://bugzilla.redhat.com/show_bug.cgi?id=1378418
* build: fix search path for building vapiThomas Haller2016-10-261-1/+1
| | | | | | | | | | `make V=1` fails with: G_DEBUG='' /usr/bin/vapigen-0.26 --library vapi/libnm-glib --metadatadir ./vapi --vapidir . --girdir ./libnm-util --pkg gio-2.0 ./libnm-glib/NMClient-1.0.gir && touch vapi/libnm-glib.vapi error: Package `libnm-util' not found in specified Vala API directories or GObject-Introspection GIR directories Generation failed: 1 error(s), 0 warning(s) Fixes: 14b5309af3fc4be3fcaf66703b879da090eb4ac4
* cli: completion: escape shell special characters "()&!"Beniamino Galvani2016-10-261-1/+6
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=772629
* wwan: fix wrong connection cast on device state changeBeniamino Galvani2016-10-261-2/+2
| | | | | | | | | nm_settings_connection_set_autoconnect_blocked_reason() must be called on the settings-connection. Fixes the following: GLib-GObject-WARNING **: invalid cast from 'NMSimpleConnection' to 'NMSettingsConnection' Fixes: 06da3532428e3498c1e808ff8be1af48b540a6ff
* build: add glob-util.h to systemd source listFrancesco Giudici2016-10-261-0/+1
| | | | Fixes d00d907c0616b5f8dffefd28bbaf2fd2b8b66bae
* build: fix "settings-docs.c" include pathFrancesco Giudici2016-10-251-2/+2
| | | | Fixes: c8a25001f462d0184121afa8b96c3a9801109e86
* systemd: merge branch systemd into masterThomas Haller2016-10-2427-51/+374
|\
| * systemd: update code from upstreamThomas Haller2016-10-2426-51/+371
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a direct dump from systemd git on 2016-10-24, git commit 9b3313d678a4f666e9ddc086a8e92652c9294411. ====== SYSTEMD_DIR=../systemd COMMIT=9b3313d678a4f666e9ddc086a8e92652c9294411 ( cd "$SYSTEMD_DIR" git checkout "$COMMIT" git reset --hard git clean -fdx ) git ls-files :/src/systemd/src/ | xargs -d '\n' rm -f nm_copy_sd() { mkdir -p "./src/systemd/$(dirname "$1")" cp "$SYSTEMD_DIR/$1" "./src/systemd/$1" } nm_copy_sd "src/basic/alloc-util.c" nm_copy_sd "src/basic/alloc-util.h" nm_copy_sd "src/basic/async.h" nm_copy_sd "src/basic/escape.c" nm_copy_sd "src/basic/escape.h" nm_copy_sd "src/basic/ether-addr-util.c" nm_copy_sd "src/basic/ether-addr-util.h" nm_copy_sd "src/basic/extract-word.c" nm_copy_sd "src/basic/extract-word.h" nm_copy_sd "src/basic/fileio.c" nm_copy_sd "src/basic/fileio.h" nm_copy_sd "src/basic/fd-util.c" nm_copy_sd "src/basic/fd-util.h" nm_copy_sd "src/basic/fs-util.c" nm_copy_sd "src/basic/fs-util.h" nm_copy_sd "src/basic/hash-funcs.c" nm_copy_sd "src/basic/hash-funcs.h" nm_copy_sd "src/basic/hashmap.c" nm_copy_sd "src/basic/hashmap.h" nm_copy_sd "src/basic/hexdecoct.c" nm_copy_sd "src/basic/hexdecoct.h" nm_copy_sd "src/basic/hostname-util.c" nm_copy_sd "src/basic/hostname-util.h" nm_copy_sd "src/basic/in-addr-util.c" nm_copy_sd "src/basic/in-addr-util.h" nm_copy_sd "src/basic/io-util.c" nm_copy_sd "src/basic/io-util.h" nm_copy_sd "src/basic/list.h" nm_copy_sd "src/basic/log.h" nm_copy_sd "src/basic/macro.h" nm_copy_sd "src/basic/mempool.h" nm_copy_sd "src/basic/mempool.c" nm_copy_sd "src/basic/parse-util.c" nm_copy_sd "src/basic/parse-util.h" nm_copy_sd "src/basic/path-util.c" nm_copy_sd "src/basic/path-util.h" nm_copy_sd "src/basic/prioq.h" nm_copy_sd "src/basic/prioq.c" nm_copy_sd "src/basic/random-util.c" nm_copy_sd "src/basic/random-util.h" nm_copy_sd "src/basic/refcnt.h" nm_copy_sd "src/basic/set.h" nm_copy_sd "src/basic/signal-util.h" nm_copy_sd "src/basic/siphash24.c" nm_copy_sd "src/basic/siphash24.h" nm_copy_sd "src/basic/socket-util.c" nm_copy_sd "src/basic/socket-util.h" nm_copy_sd "src/basic/sparse-endian.h" nm_copy_sd "src/basic/stdio-util.h" nm_copy_sd "src/basic/string-table.c" nm_copy_sd "src/basic/string-table.h" nm_copy_sd "src/basic/string-util.c" nm_copy_sd "src/basic/string-util.h" nm_copy_sd "src/basic/strv.c" nm_copy_sd "src/basic/strv.h" nm_copy_sd "src/basic/time-util.c" nm_copy_sd "src/basic/time-util.h" nm_copy_sd "src/basic/umask-util.h" nm_copy_sd "src/basic/unaligned.h" nm_copy_sd "src/basic/utf8.c" nm_copy_sd "src/basic/utf8.h" nm_copy_sd "src/basic/util.c" nm_copy_sd "src/basic/util.h" nm_copy_sd "src/libsystemd-network/arp-util.c" nm_copy_sd "src/libsystemd-network/arp-util.h" nm_copy_sd "src/libsystemd-network/dhcp6-internal.h" nm_copy_sd "src/libsystemd-network/dhcp6-lease-internal.h" nm_copy_sd "src/libsystemd-network/dhcp6-network.c" nm_copy_sd "src/libsystemd-network/dhcp6-option.c" nm_copy_sd "src/libsystemd-network/dhcp6-protocol.h" nm_copy_sd "src/libsystemd-network/dhcp-identifier.c" nm_copy_sd "src/libsystemd-network/dhcp-identifier.h" nm_copy_sd "src/libsystemd-network/dhcp-internal.h" nm_copy_sd "src/libsystemd-network/dhcp-lease-internal.h" nm_copy_sd "src/libsystemd-network/dhcp-network.c" nm_copy_sd "src/libsystemd-network/dhcp-option.c" nm_copy_sd "src/libsystemd-network/dhcp-packet.c" nm_copy_sd "src/libsystemd-network/dhcp-protocol.h" nm_copy_sd "src/libsystemd-network/lldp-internal.h" nm_copy_sd "src/libsystemd-network/lldp-neighbor.c" nm_copy_sd "src/libsystemd-network/lldp-neighbor.h" nm_copy_sd "src/libsystemd-network/lldp-network.c" nm_copy_sd "src/libsystemd-network/lldp-network.h" nm_copy_sd "src/libsystemd-network/network-internal.c" nm_copy_sd "src/libsystemd-network/network-internal.h" nm_copy_sd "src/libsystemd-network/sd-dhcp6-client.c" nm_copy_sd "src/libsystemd-network/sd-dhcp6-lease.c" nm_copy_sd "src/libsystemd-network/sd-dhcp-client.c" nm_copy_sd "src/libsystemd-network/sd-dhcp-lease.c" nm_copy_sd "src/libsystemd-network/sd-ipv4ll.c" nm_copy_sd "src/libsystemd-network/sd-ipv4acd.c" nm_copy_sd "src/libsystemd-network/sd-lldp.c" nm_copy_sd "src/libsystemd/sd-event/sd-event.c" nm_copy_sd "src/libsystemd/sd-id128/id128-util.c" nm_copy_sd "src/libsystemd/sd-id128/id128-util.h" nm_copy_sd "src/libsystemd/sd-id128/sd-id128.c" nm_copy_sd "src/shared/dns-domain.c" nm_copy_sd "src/shared/dns-domain.h" nm_copy_sd "src/systemd/_sd-common.h" nm_copy_sd "src/systemd/sd-dhcp6-client.h" nm_copy_sd "src/systemd/sd-dhcp6-lease.h" nm_copy_sd "src/systemd/sd-dhcp-client.h" nm_copy_sd "src/systemd/sd-dhcp-lease.h" nm_copy_sd "src/systemd/sd-event.h" nm_copy_sd "src/systemd/sd-ndisc.h" nm_copy_sd "src/systemd/sd-id128.h" nm_copy_sd "src/systemd/sd-ipv4acd.h" nm_copy_sd "src/systemd/sd-ipv4ll.h" nm_copy_sd "src/systemd/sd-lldp.h"
* | src/tests: relax assertion for test_nm_utils_monotonic_timestamp_as_boottime()Thomas Haller2016-10-241-1/+1
| | | | | | | | | | | | | | | | When running under load (e.g. with parallel make and valgrind enabled), the checked time interval might be too short. Relax the assertion NetworkManager:ERROR:src/tests/test-general-with-expect.c:65:test_nm_utils_monotonic_timestamp_as_boottime: assertion failed (now_boottime_2 - now_boottime <= NM_UTILS_NS_PER_SECOND / 1000): (15156494 <= 1000000)
* | platform/tests: relax assertion for expected link-changed signalThomas Haller2016-10-241-1/+1
| |
* | build: remove long gone libndp submodule from configure.acThomas Haller2016-10-241-1/+0
| |
* | libnm: merge branch 'th/libnm-no-empty-string-properties-rh1380424'Thomas Haller2016-10-2423-77/+79
|\ \ | | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1380424
| * | libnm: coerce empty strings to NULL for D-Bus propertiesThomas Haller2016-10-2421-45/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On D-Bus level, string (s) or object paths (o) cannot be NULL. Thus, whenver server exposes such an object, it gets automatically coerced to "" or "/", respectively. On client side, libnm should coerce certain properties back, for which "" is just not a sensible value. For example, an empty NM_DEVICE_ETHERNET_HW_ADDRESS should be instead exposed as NULL. Technically, this is an API change. However, all users were well advised to expect both NULL and "" as possible return values and handle them accordingly.
| * | libnm: minor refactoring by using g_clear_object() and nm_str_not_empty()Thomas Haller2016-10-242-18/+4
| | |
| * | libnm: avoid possibly NULL address for NMDeviceVlan calling ↵Thomas Haller2016-10-241-2/+5
| | | | | | | | | | | | nm_utils_hwaddr_matches()