Commit graph

24858 commits

Author SHA1 Message Date
Thomas Haller
3925ff4833 ifcfg-rh: merge branch 'th/ifcfg-parse-route-file-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/392
2020-01-16 12:41:05 +01:00
Thomas Haller
4fc7c7eec0 ifcfg-rh: avoid creaing route file twice in make_ip4_setting()
Just read the content once. It's wasteful to read the file twice
while parsing.

But what is worse, the file content can change any time we read it.
We make decisions based on what we read, and hence we should only
read the file once in the parsing process to get one consistent result.
2020-01-16 12:40:01 +01:00
Thomas Haller
16ba286e30 ifcfg-rh: expose constructor for shvarFile that doesn't read content from file 2020-01-16 12:40:01 +01:00
Thomas Haller
b1fa27f9bd ifcfg-rh: split reading file and parsing from read_route_file() function
Split the parsing of the file content to a separate function.

Next we will load IPv4 files only once, and thus only need to parse
the content without reading it.

Note that the function temporarily modifies the input buffer, but
restores the original content before returning.
2020-01-16 12:40:01 +01:00
Thomas Haller
9f35d9e49e ifcfg-rh: split reading file and parsing in utils_has_route_file_new_syntax() function
We will need both variants, so that the caller can read the file only
once.

Note that also utils_has_route_file_new_syntax_content() will
restore the original contents and not modify the input (from point
of view of the caller). In practice it will momentarily modify the
content.
2020-01-16 12:40:01 +01:00
Thomas Haller
da4a3dd24c ifcfg-rh: don't use GRegex in utils_has_route_file_new_syntax()
It's simple enough to iterate the file content line by line
and search for a suitable prefix.
2020-01-16 12:40:01 +01:00
Thomas Haller
5aee49aaae ifcfg-rh/tests: add test for utils_has_route_file_new_syntax() 2020-01-16 12:40:01 +01:00
Thomas Haller
d944761f83 shared/tests: add nmtst_file_set_contents_size() helper 2020-01-16 12:40:01 +01:00
Thomas Haller
f69746c9f9 clients: avoid compiler warning about redefining NDEBUG for qrcodegen
[1/5] Compiling C object 'clients/common/913ef36@@nmc-base@sta/nm-client-utils.c.o'.
  ../clients/common/nm-client-utils.c:528: warning: "NDEBUG" redefined
    528 | #define NDEBUG
        |
  <command-line>: note: this is the location of the previous definition
2020-01-15 22:25:21 +01:00
Thomas Haller
a6b6f33f01 build: fix linking of "src/devices/wifi/tests/test-devices-wifi"
On ppc64le, the linking fails due to unresolved symbols.

Fixes: 7d8da6c9c1 ('build: build intermediate library with core wifi for device-plugin and tests')
2020-01-15 17:43:07 +01:00
Carmen Bianca Bakker
85aadf8e15 po: update Esperanto (eo) translation
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/395
2020-01-15 15:28:24 +01:00
Thomas Haller
21d4a26188 core: remove code for unused NM_WIFI_P2P_PEER_GROUPS property 2020-01-15 13:54:45 +01:00
Thomas Haller
e00d36f5dd core: drop "Groups" property from WifiP2PPeer D-Bus API
This property is currently most likely not used. Also, because libnm doesn't
expose it and the only known user of this API (gnome-network-displays) doesn't
use it.

In the future we may want to expand on the Groups API. E.g. exposing groups as
separate D-Bus objects, in which case a better property type would be "ao" and
not "as". For now, that is unclear nor requested.

Remove the property for now.
2020-01-15 13:54:45 +01:00
Thomas Haller
05f66697e4 libnm: ignore "Groups" property of WifiP2PPeer
Groups currently are not exposed on D-Bus as separate objects.
Also, we might want to expose the property as "ao" instead of "as".
This API needs more thought.

There are likely no users that rely on this property. So, we will
drop it from server side, until it will be requested and newly designed.

Regardless, NMClient needs to gracefully ignore the property.
Despite we will remove it from 1.24 API, libnm should ignore the
property on previous versions. Mark it accordingly.
2020-01-15 13:53:57 +01:00
Thomas Haller
e978eca644 libnm: fix exposing nm_wifi_p2p_peer_get_name() from D-Bus property
Fixes: ce0e898fb4 ('libnm: refactor caching of D-Bus objects in NMClient')
2020-01-15 13:37:20 +01:00
Thomas Haller
109a6fd557 introspection: belatedly add Wi-Fi P2P peer "Name" property to D-Bus introspection file
Fixes: 00e64d1332 ('core/devices: Add P2P Wifi device and peer tracking')
2020-01-15 13:32:33 +01:00
Thomas Haller
51b39ceb33 libnm: fix wrong assertion in nm_client_add_and_activate_connection2_finish()
Fixes: ce0e898fb4 ('libnm: refactor caching of D-Bus objects in NMClient')
2020-01-15 12:32:02 +01:00
Benjamin Berg
e8cc69c37e libnm: fix interface and object path for P2P StartFind/StopFind calls
The change to use a GDBusConnection (7871105ff9) introduced a bug by
using the wrong hardcoded path and the wrong interface. Correct this
mistake again.

Fixes: 7871105ff9 ('libnm: implement nm_device_wifi_p2p_start_find()/nm_device_wifi_p2p_stop_find() by using GDBusConnection directly')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/399
2020-01-15 11:55:57 +01:00
Thomas Haller
7766e24cdc license: add Iñigo to RELICENSE.md
https://mail.gnome.org/archives/networkmanager-list/2020-January/msg00014.html
2020-01-14 17:30:44 +01:00
Thomas Haller
d7d66f0963 license: add Dan, Dan, Lubomir and Franceso to RELICENSE.md
Dan Williams:      https://mail.gnome.org/archives/networkmanager-list/2020-January/msg00013.html
Dan Winship:       https://mail.gnome.org/archives/networkmanager-list/2020-January/msg00012.html
Francesco Giudici: https://mail.gnome.org/archives/networkmanager-list/2020-January/msg00015.html
Lubomir Rintel:    https://mail.gnome.org/archives/networkmanager-list/2020-January/msg00018.html
2020-01-14 17:25:11 +01:00
Thomas Haller
694e22f88d license: add list for legal entities to track their relation of contributors
And add "Red Hat, Inc." there. The actual consent is not yet determined.
2020-01-14 17:13:37 +01:00
Thomas Haller
6d9f1725db license: relicense "shared/nm-std-aux/nm-dbus-compat.h" under LGPL-2.1+
"nm-dbus-compat.h" was GPL licensed. That is a problem, because we use it from
libnm (which is LGPL).

The history of this file in NetworkManager source tree:

  $ git shortlog -n -s e055bdbbc3 -- shared/nm-std-aux/nm-dbus-compat.h include/nm-dbus-compat.h shared/nm-dbus-compat.h
       5    Thomas Haller
       1    Dan Winship
       1    Lubomir Rintel

Note that commit dd0e198955 ('include: add nm-dbus-compat.h')
introduced this file from dbus sources ([1]). Hence, originally
the file is (like all of dbus sources) dual-licensed under GPL-2.0+
and Academic Free License 2.1 (AFL-2.1). That makes it problematic to
change the license of this file to LGPL also because of the old history
of the file.

Instead, drop everything from the header except the bits that we
actually use. I claim the remainder is trivial and only contains
defines for documented D-Bus API. I don't think that the remainder
is copyrightable and hence get rid of the copy-right notice and the
GPL license.

[1] 39ea37b587/dbus/dbus-shared.h
2020-01-14 16:54:43 +01:00
Thomas Haller
d60cb4d5de initrd: merge branch 'lr/a-pair-of-ibft-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/393
2020-01-14 16:44:51 +01:00
Thomas Haller
9f95b797f1 initrd/cmdline: minor style cleanups 2020-01-14 16:43:26 +01:00
Lubomir Rintel
39e1e723de initrd/cmdline: obey rd.iscsi.ibft
Do process the connections from the iBFT block if the rd.iscsi.ibft or
rd.iscsi.ibft=1 argument is present.

This is supposed to fix what was originally reported by Kairui Song
<kasong@redhat.com> here: https://github.com/dracutdevs/dracut/pull/697
2020-01-14 16:43:26 +01:00
Lubomir Rintel
59ead70952 initrd/ibft-reader: don't set con.interface-name in iBFT connections
If an argument in form ip=eth0:ibft is specified, we'd first create a
wired connection with con.interface-name and then proceed completing it
from the iBFT block. At that point we also add the MAC address, so the
interface-name is no longer necessary..

Worse even, for VLAN connections, it results in an attempt to create
a VLAN with the same name as the parent wired device. Ooops.

Let's just drop it. MAC address is guarranteed to be there and does the
right thing for both plain wired devices as well as VLANs.
2020-01-14 16:43:26 +01:00
Thomas Haller
de818bf610 n-dhcp4: fix integer context in n_dhcp4_client_probe_transition_nak() on 32 bit
Fixes: 218782a9a3 ('n-dhcp4: restart the transaction after a NAK')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/339
2020-01-14 16:25:49 +01:00
Thomas Haller
c6f9002b13 platform: merge branch 'th/ifa-broadcast'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/391
2020-01-14 16:10:50 +01:00
Thomas Haller
7910333527 platform: generate IFA_BROADCAST address based on the peer IFA_ADDRESS
This is also what iproute2 does ([1]) when creating a default broadcast address
with `ip addr add 192.168.1.5/24 brd + dev eth0`.

Also, kernel does in fib_add_ifaddr() ([2]):
```
        __be32 addr = ifa->ifa_local;
        __be32 prefix = ifa->ifa_address & mask;

        ...

        /* Add broadcast address, if it is explicitly assigned. */
        if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF))
                fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32,
                          prim, 0);

        if (!ipv4_is_zeronet(prefix) && !(ifa->ifa_flags & IFA_F_SECONDARY) &&
            (prefix != addr || ifa->ifa_prefixlen < 32)) {
                if (!(ifa->ifa_flags & IFA_F_NOPREFIXROUTE))
                        fib_magic(RTM_NEWROUTE,
                                  dev->flags & IFF_LOOPBACK ? RTN_LOCAL : RTN_UNICAST,
                                  prefix, ifa->ifa_prefixlen, prim,
                                  ifa->ifa_rt_priority);

                /* Add network specific broadcasts, when it takes a sense */
                if (ifa->ifa_prefixlen < 31) {
                        fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix, 32,
                                  prim, 0);
                        fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix | ~mask,
                                  32, prim, 0);
                }
        }
```

Which means by default kernel already adds those special broadcast routes which
are identical to what we configure with IFA_BROADCAST. However, kernel too bases
them on the peer (IFA_ADDRESS).

[1] https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/ip/ipaddress.c?id=d5391e186f04214315a5a80797c78e50ad9f5271#n2380
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/fib_frontend.c?id=bef1d88263ff769f15aa0e1515cdcede84e61d15#n1109
2020-01-14 16:09:24 +01:00
Thomas Haller
71d5550547 platform: track IFA_BROADCAST address in NMPlatformIP4Address
- track the broadcast address in NMPlatformIP4Address. For addresses
  that we receive from kernel and that we cache in NMPlatform, this
  allows us to show the additional information. For example, we
  can see it in debug logging.

- when setting the address, we still mostly generate our default
  broadcast address. This is done in the only relevant caller
  nm_platform_ip4_address_sync(). Basically, we merely moved setting
  the broadcast address to the caller.
  That is, because no callers explicitly set the "use_ip4_broadcast_address"
  flag (yet). However, in the future some caller might want to set an explicit
  broadcast address.

In practice, we currently don't support configuring special broadcast
addresses in NetworkManager. Instead, we always add the default one with
"address|~netmask" (for plen < 31).

Note that a main point of IFA_BROADCAST is to add a broadcast route to
the local table. Also note that kernel anyway will add such a
"address|~netmask" route, that is regardless whether IFA_BROADCAST is
set or not. Hence, setting it or not makes very little difference for
normal broadcast addresses -- because kernel tends to add this route either
way. It would make a difference if NetworkManager configured an unusual
IFA_BROADCAST address or an address for prefixes >= 31 (in which cases
kernel wouldn't add them automatically). But we don't do that at the
moment.

So, while what NM does has little effect in practice, it still seems
more correct to add the broadcast address, only so that you see it in
`ip addr show`.
2020-01-14 16:09:24 +01:00
Beniamino Galvani
e6a9d5b99c merge: branch 'bg/vrf'
Add support for virtual routing and forwarding (VRF) interfaces.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/375
2020-01-14 10:31:41 +01:00
Beniamino Galvani
667568d1b2 core,libnm: add VRF support
Add VRF support to the daemon. When the device we are activating is a
VRF or a VRF's slave, put routes in the table specified by the VRF
connection.

Also, introduce a VRF device type in libnm.
2020-01-14 09:51:56 +01:00
Beniamino Galvani
7c73c6a038 platform: add VRF support
Add support for creating and parsing VRF links.
2020-01-14 09:49:01 +01:00
Beniamino Galvani
89d387f782 ifcfg-rh: add support for VRF slaves
Even if the ifcfg-rh plugin doesn't support VRF connections, it must
be able to read and write other connection types that have a VRF
master.
2020-01-14 09:49:01 +01:00
Beniamino Galvani
f4ced16791 libnm-core,cli: add VRF setting
Add new VRF setting and connection types to libnm-core and support
them in nmcli.
2020-01-14 09:49:01 +01:00
Thomas Haller
56e91b11a2 all: merge branch 'th/unix-fd-source'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/378
2020-01-13 15:49:27 +01:00
Thomas Haller
5af17d80f3 session-monitor: don't use GIOChannel to watch plain file descriptor 2020-01-13 15:46:04 +01:00
Thomas Haller
cc1822d783 lndp: don't use GIOChannel to watch plain file descriptor for socket 2020-01-13 15:46:04 +01:00
Thomas Haller
7848c165a1 platform: don't use GIOChannel to watch plain file descriptor for netlink socket 2020-01-13 15:46:04 +01:00
Thomas Haller
e832c478b0 acd: don't use GIOChannel to watch plain file descriptor for event fd 2020-01-13 15:46:04 +01:00
Thomas Haller
4b46e3a5fa dhcp/nettools: don't use GIOChannel to watch plain file descriptor for event fd 2020-01-13 15:46:04 +01:00
Thomas Haller
e4ab27722a bluez: don't use GIOChannel to watch plain file descriptor for rfcomm 2020-01-13 15:46:04 +01:00
Thomas Haller
c15411d7c9 bluez: don't use GIOChannel to watch plain file descriptor
Also, don't track the GSource via the guint ID but the full
GSource pointer.
2020-01-13 15:46:04 +01:00
Thomas Haller
cccfeb3891 cli: don't use GIOChannel to watch plain file descriptor for nmc_readline_helper() 2020-01-13 15:46:04 +01:00
Thomas Haller
9cc6d3a26d tui: don't use GIOChannel to watch plain file descriptor for key press 2020-01-13 15:46:04 +01:00
Thomas Haller
a3b29b06dc shared/udev: don't use GIOChannel to watch plain file descriptor 2020-01-13 15:46:04 +01:00
Thomas Haller
e90c1de868 all: use nm_g_unix_fd_source_new() instead of g_unix_fd_source_new()
Its source-func argument has the right signature. Otherwise, this is an
easy to make mistake.
2020-01-13 15:46:04 +01:00
Thomas Haller
421256073b shared: add nm_g_unix_fd_source_new() helper 2020-01-13 15:46:04 +01:00
Thomas Haller
4972ba0957 platform: use NM_MAKE_STRV() in NMLinuxPlatform:constucted() 2020-01-13 15:46:04 +01:00
Thomas Haller
78c4bc58c7 shared: use G_SOURCE_FUNC() macro in "shared/nm-test-utils-impl.c" 2020-01-13 15:46:04 +01:00