It would subtract the configuration from device confguration that's not yet
applied. This a the race where the loose the address while activating a
connection that has both IPv6 and IPv4 configuration.
Fixes: 557667df12https://bugzilla.gnome.org/show_bug.cgi?id=746066
These functions will sometimes get called on updates to the device's IP
config due to external changes, or when addresses get flushed from the
device when activating it. If the device is a slave device, then at
this point its NMConnection won't have an IP settings. Suppress the
warning that gets printed when s_ip == NULL, because it's expected.
keyfile should become our main import/export format. It is desirable,
that a keyfile can contain every aspect of a connection.
For blob certificates, the writer in core daemon would always write
them to a file and convert the scheme to path.
This behavior is not great for a (hyptetical) `nmcli connection export`
command because it would have to export them somehow outside of keyfile,
e.g. by writing them to temporary files.
Instead, if the write handler does not handle a certificate, use a
default implementation in nm_keyfile_write() which adds the blob inside
the keyfile.
Interestingly, keyfile reader already supported reading certificate
blobs. But this legacy format accepts the blob as arbitrary
binary without marking the format and without scheme prefix.
Instead of writing the binary data directly, write it with a new
uri scheme "data:;base64," and encode it in base64.
Also go through some lengths to make sure that whatever path
keyfile plugin writes, can be read back again. That is, because
keyfile writer preferably writes relative paths without prefix.
Add nm_keyfile_detect_unqualified_path_scheme() to encapsulate
the detection of pathnames without file:// prefix and use it to
check whether the path name must be fully qualified.
nm_keyfile_plugin_kf_get_integer_list() should always set
@length to zero when returning no integer list. So, this
is probably correct. Still, just to be explicit, anticipate
and handle a missing @tmp_list.
The supplicant interface's proxy may outlive the interface object
itself, so we must ensure that all signal handlers are disconnected.
Fixes a crash on suspend/resume.
Fixes: 59c8192b22
Just a refactoring, doesn't make any actual difference. It is consistent with
IPv4 and will make it easier to implement a policy to recover from incorrect
MTUs settings.
reimport systemd dhcp code to bring patch cc22955cfefb4bd6e7a135f1ec95fb5a07ba9ce3.
sd-dhcp6-client: delay setting the DUID and don't fail constructor
sd_dhcp6_client_new() tried to set the DUID based on the machine id.
If the host has no /etc/machine-id, the constructor would fail
making it impossible to create an sd_dhcp6_client instance.
Relax this and create a DUID only later as needed. This way a caller
caller can workaround a missing machine-id file and set a DUID of his
choosing via sd_dhcp6_client_set_duid().
Conflicts:
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/sd-dhcp6-client.c
Of special note is the new D-Bus rule to allow root to talk to
org.freedesktop.NetworkManager.VPN.Plugin, without which NetworkManager
would not hear signals from the VPN plugins. Oddly, this worked
fine with dbus-glib...
https://bugzilla.gnome.org/show_bug.cgi?id=745307
The Interface held a reference to the manager to listen for the 'available'
signal. Instead of that, let's make the child unaware of the master to
keep the inheritance cleaner.
rpmbuild buils NM with -fexceptions, which causes -Wmaybe-uninitialized
warnings for auto variables that have a cleanup function.
Maybe we should not build RPM packages with -fexceptions,
but anyway, for now just fix the build.
This reverts partly commit 4a58425dbf
and adds more fixes of uninitialized variables.
systemd compiles with -std=gnu99, while we compile our sources with
-std=gnu89. Hence __STDC_VERSION__ is not defined.
As we define -std=gnu98 as CFLAGS with --enable-more-warnings, we cannot
overwrite it via libsystemd_dhcp_la_CFLAGS because the (user provided)
CFLAGS takes precedence.
sd-dhcp6-client.c uses ARPHRD_ETHER and more from net/if_arp.h.
In upstream systemd code, that header is included indirectly via
udev.h. As we don't include udev.h, include net/if_arp.h
directly in the adapter.
This function was added to inject the ifname to the dhcp6 client.
As dhcp_identifier_set_iaid() now looks up the name itself by calling
if_indextoname(), this is no longer needed.
Also patch dhcp_identifier_set_iaid() to get the ifname via
if_indextoname(), instead of udev.
This also makes our local modification sd_dhcp6_client_set_ifname()
obsolete, which will be removed next.
The 'log.h' header from systemd implements most logging commands based on a
few fundamental logging commands. Reuse 'log.h' for most parts and let the
adapter only redefine the necessary commands.
I cannot reproduce any compiler warnings with these changes.
I think it is desirable, that our version of the code is
as similar as possible to the upstream systemd code.
Undo these local modifications.
Make our copy more similar to what systemd has by removing
local changes that are unnecessary.
These changes don't affect the build, because the code is excluded
with #if 0.
dcbw added a comment line and submitted the patch to systemd.
The patch was merged without the comment. Remove it also from our
version, to make the file more similar to what systemd has.
Only basic merging. The result does not yet compile.
https://bugzilla.gnome.org/show_bug.cgi?id=742719
Conflicts:
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/dhcp-packet.c
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.c
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.h
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/sd-dhcp-lease.c
src/dhcp-manager/systemd-dhcp/src/libsystemd-network/sd-dhcp6-client.c
src/dhcp-manager/systemd-dhcp/src/shared/macro.h
src/dhcp-manager/systemd-dhcp/src/shared/strv.c
src/dhcp-manager/systemd-dhcp/src/shared/util.c
src/dhcp-manager/systemd-dhcp/src/shared/util.h
src/dhcp-manager/systemd-dhcp/src/systemd/sd-dhcp6-client.h