Commit graph

21921 commits

Author SHA1 Message Date
Andrew Zaborowski
ab8fc07640 iwd: Remove a stray return and a newline 2017-12-21 11:07:55 +01:00
Thomas Haller
2e58982697 ifnet: merge branch 'th/setting-plugin-ifnet'
Drop the "ifnet" settings plugin that was used on Gentoo.
It's unmaintained and unused for a long time.

https://github.com/NetworkManager/NetworkManager/pull/43
2017-12-21 10:50:33 +01:00
Thomas Haller
0474441e22 settings: drop unmaintained ifnet settings plugin of Gentoo
Even Gentoo disables this plugin since before 0.9.8 release
of NetworkManager. Time to say goodbye.

If somebody happens to show up to maintain it, we may resurrect it
later.

If "$distro_plugins=ifnet" was set, configure.ac would use that
to autodetect --with-hostname-persist=gentoo. Replace that autodetect
part by checking for /etc/gentoo-release file.
2017-12-21 10:50:33 +01:00
Thomas Haller
298d156e36 build: drop --enable-ifcfg-suse configure option
The option is deprecated together with the ifcfg-suse settings plugin.
Selecting the plugin has no effect at runtime, beside logging a warning.

Drop the configure option.

Note, that if $distro_plugins was set to "ifcfg-suse", it was also used to
autodetect --with-hostname-persist=suse. Now, autodetect the hostname
persist mode based on presence of /etc/SuSE-release file.
2017-12-21 10:50:33 +01:00
Thomas Haller
7bc2195721 build/meson: drop option for deprecated ifcfg-suse setting plugins 2017-12-21 10:50:33 +01:00
Thomas Haller
68fa0ea8eb man: document all setting plugins in NetworkManager.conf manual
although they are deprecated and unused, document them.
2017-12-21 10:50:33 +01:00
Beniamino Galvani
aa820e9386 all: add more meaningful error code for unsupported IP method
Add a new device state reason code for unsupported IP method. It is
returned, for example, when users select manual IP configuration for
WWAN connections:

 # nmcli connection mod Gsm ipv4.method manual ipv4.address 1.2.3.4/32
 # nmcli connection up Gsm
 Error: Connection activation failed: The selected IP method is not
 supported

compared to the old:

 Error: Connection activation failed: IP configuration could not be
 reserved (no available address, timeout, etc.)

Note that we could instead fail the connection validation if the
method is not supported by the connection type, but adding such
limitation now could make existing connections invalid.

https://bugzilla.redhat.com/show_bug.cgi?id=1459529
2017-12-21 10:02:07 +01:00
Thomas Haller
c72df50b6d libnm: reuse nm_utils_strdict_get_keys() to implement NMSettingVpn's get_keys() 2017-12-21 09:52:14 +01:00
Jan Alexander Steffens (heftig)
8ac8c01162 shared/compat: fix memory handling of nm_setting_vpn_get_*_keys
The compat implementations return a (transfer none) strv instead of a
(transfer container) one. This has caused double frees in nm-applet:
https://bugs.archlinux.org/task/56772

Don't copy the keys and don't free the container later.

[thaller@redhat.com: patch adjusted to avoid compiler warning]

Fixes: 272439cb20
2017-12-21 09:51:10 +01:00
Beniamino Galvani
e7968b0048 wwan: merge branch 'bg/modem-default-route-rh1527934'
https://bugzilla.redhat.com/show_bug.cgi?id=1527934
2017-12-21 09:39:37 +01:00
Beniamino Galvani
5d372fd30e wwan: clear idle source id when the callback runs
Fixes: f0996d0eb8
2017-12-21 09:35:40 +01:00
Beniamino Galvani
ec32edb21f wwan: add default route even if modem didn't return a gateway
If the modem didn't return a gateway, add a device route.

Fixes: 5c299454b4
2017-12-21 09:35:40 +01:00
Beniamino Galvani
8ddc6caf98 wwan: fix checks on IP configuration
Don't call nm_utils_parse_inaddr_bin() if the string returned by
mm_bearer_ip_config_get_address() and mm_bearer_ip_config_get_gateway()
is NULL, as the function requires a valid pointer. Throw an error if the
address is NULL, but allow an empty gateway.

Fixes: 7837afe87f
2017-12-21 09:35:40 +01:00
Beniamino Galvani
5fff928a6b settings: clear unsaved flag on new settings-connection
When a new settings-connection is populated with the actual settings
read from disk by the plugin, calling nm_settings_connection_update()
with KEEP mode also marks it as unsaved, which should not happen on a
new connection just written to (or read from) disk.

Introduce a new KEEP_SAVED persist mode that is similar to KEEP but
clears the UNSAVED flag.

Fixes: 023ce50d21

https://bugzilla.redhat.com/show_bug.cgi?id=1525078
2017-12-20 15:38:57 +01:00
Thomas Haller
4277bc0ee0 core: persist aspired default route-metric in device's state file
NMManager tries to assign unique route-metrics in an increasing manner
so that the device which activates first keeps to have the best routes.

This information is also persisted in the device's state file, however
we not only need to persist the effective route-metric which was
eventually chosen by NMManager, but also the aspired metric.

The reason is that when a metric is chosen for a device, the entire
range between aspired and effective route-metric is reserved for that
device. We must remember the entire range so that after restart the
entire range is still considered to be in use.

Fixes: 6a32c64d8f
2017-12-20 13:48:13 +01:00
Thomas Haller
7deb3b4fb5 settings: drop unused define for HOSTNAME_FILE
Fixes: 5bfb7c3c89
2017-12-20 12:10:59 +01:00
Beniamino Galvani
98ac0f404e settings: avoid assertion when deleting connections
If a volatile connection is deleted by user when it was already being
deleted internally because the device vanished, we may hit the
following failed assertion:

 file src/settings/nm-settings-connection.c: line 2196
 (nm_settings_connection_signal_remove): should not be reached

The @removed flag keeps track of whether we already signaled the
connection removal. Instead of throwing an assertion if we try to emit
the signal again, just return without action because this can happen
in the situation described above.

While at it, remove the @allow_reuse argument from
nm_settings_connection_signal_remove(): we should never emit the
signal twice. Instead, we should reset the @removed flag when the
connection is added.

Fixes: a9384452ed

https://bugzilla.redhat.com/show_bug.cgi?id=1506552
2017-12-20 10:39:23 +01:00
Thomas Haller
2499d3bdc6 core: ensure that the default route-metric bumps at most 50 points
First check that the limit of 50 metric points is not surpassed.
Otherwise, if you have an ethernet device (aspired 100, effective
130) and a MACSec devic (aspired 125, effective 155), activating a
new ethernet device would bump it's metric to 155 -- more then
the 50 points limit.

It doesn't matter too much, because the cases where the limit of
50 could have been surpassed were very specific. Still, change
it to ensure that the limit is always honored as one would expect.

Fixes: 6a32c64d8f
2017-12-19 10:31:53 +01:00
Lubomir Rintel
6713ab4d6c man/openvswitch: fix type in examples
"conn.type" doesn't allow type aliases. Use "type" instead.

https://bugzilla.redhat.com/show_bug.cgi?id=1519173
2017-12-19 10:02:12 +01:00
Iñigo Martínez
ffec7f0105 build: Enable unused-but-set warning in meson
The unused-but-set warning has recently been enabled in autotools
(e912b36d95), so this also modifies
meson to enable it.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00063.html
2017-12-18 20:50:01 +01:00
Iñigo Martínez
123aa38ffe build: Move default path values to options file
Since meson 0.44 there is a new option type called `array`, which
allows to use an array with different values in those options.

These fits the needs of different options that are used to pass
binary paths, which have multiple paths as an alternate locations.

meson's version has been bumped to 0.44 and different options have
been changed to `array` type options.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00062.html
2017-12-18 20:48:16 +01:00
Iñigo Martínez
cc692a6976 build: Remove documentation generation workarounds
Documentation was not working in meson due to problems with files
generated in `libnm`. To avoid these problems, workarounds were
used. This problems have been recently fixed so these workarounds
are not necessary anymore.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00061.html
2017-12-18 20:46:03 +01:00
Iñigo Martínez
25d5384c30 build: Drop HAVE_VLAN_FLAG_LOOSE_BINDING
Both meson and autotools define HAVE_VLAN_FLAG_LOOSE_BINDING to 1 or
0 depending if a small code snippet is compiled. However, this define
is not used anymore.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00060.html
2017-12-18 20:43:52 +01:00
Thomas Haller
41f608dd91 dns: rework write_to_netconfig()
The compiler warns when we ignore the return value from write().
And assigning it to an unused variable, causes another warning.
Make some use of it, at least to handle EINTR. All other errors
are still ignored.

While at it, rework the write code to first write to a buffer
in memory.
2017-12-18 15:46:41 +01:00
Thomas Haller
ad3bbda8e3 core: avoid compiler warnings in write_to_netconfig() and ifnet_update_parsers_by_connection()
src/dns/nm-dns-manager.c: In function ‘write_to_netconfig’:
    src/dns/nm-dns-manager.c:387:8: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
      write (fd, str, strlen (str));
            ^

    src/settings/plugins/ifnet/nms-ifnet-connection-parser.c: In function ‘ifnet_update_parsers_by_connection’:
    src/settings/plugins/ifnet/nms-ifnet-connection-parser.c:2600:26: error: variable ‘pppoe’ set but not used [-Werror=unused-but-set-variable]
      gboolean wired = FALSE, pppoe = TRUE;
                              ^~~~~

While at it, don't log line breaks in ifnet_update_parsers_by_connection().

Fixes: e912b36d95
2017-12-18 15:03:43 +01:00
Lubomir Rintel
9d95e1f175 clients/cli: use a nicer password prompt
Makes sense in order for the user to know that they're actually typing
the password (edited just to illustrate the point, the actual output was
shamefully messy and perhaps needs fixing too):

  $ nmcli c up Wrathmosphere
  Passwords or encryption keys are required to access the wireless network 'Wrathmosphere'.
  Password (802-1x.password): *********
2017-12-18 14:47:37 +01:00
Lubomir Rintel
9e4de97967 libnm-core: move detection of UTF-8 capable terminals to clients/
Having it in libnm doesn't make any sense and prevents using it for more
internal functionality.

Too bad nm_utils_wifi_strength_bars() is already a public API.
No problem -- replace it with a compatible yet dumber equivalent.
2017-12-18 14:47:37 +01:00
Lubomir Rintel
7c3e1d926a clients/cli: don't store a password in history
History is probably even not useful at all outside the interactive edit
mode, but that is another story. This just avoids awkward surprises,
such as:

https://bugzilla.gnome.org/show_bug.cgi?id=791200
2017-12-18 14:47:31 +01:00
Lubomir Rintel
e912b36d95 build: enable unused-but-set warning
It was disabled for shady reasons (not checking write() return value)
that are long gone. Worse even, it hid some real bugs.
2017-12-18 13:29:32 +01:00
Lubomir Rintel
6672c5e92e all: get rid of a handful of unused-but-set variables 2017-12-18 13:29:32 +01:00
Lubomir Rintel
0ae44fe7e2 ifcfg-rh: remove the watch on finalize 2017-12-18 13:29:32 +01:00
Lubomir Rintel
16f8651908 libnm/vpn: fix secret comparison
One setting may contain a superset or subset of the another. Be sure not
to ignore the presence of extra secret properties.
2017-12-18 13:29:32 +01:00
Lubomir Rintel
99fea5f380 manager: fix connectivity-check-enabled property 2017-12-18 13:29:32 +01:00
Lubomir Rintel
685cb5c88b libnm-core/tc-config: remove deprecation guards from typedefs
They're triggered by the prototypes in header file inclusion, even
though no routines or variables that use the type are actually used.
2017-12-18 13:29:32 +01:00
Thomas Haller
9273091e98 build: fix out-of-tree build for generate-plugin-docs.pl
Fixes: 28914f6a68

https://bugzilla.gnome.org/show_bug.cgi?id=791731
2017-12-18 12:36:15 +01:00
Thomas Haller
3cc6aa6865 libnm: merge branch 'th/libnm-attribute-handling'
https://github.com/NetworkManager/NetworkManager/pull/39
2017-12-18 12:16:11 +01:00
Thomas Haller
ec8468e47d libnm: add NM_IP_ADDRESS_ATTRIBUTE_LABEL define
There is only one supported attribute for addresses. The "lable".
Give it a #define.
2017-12-18 12:14:50 +01:00
Thomas Haller
d4aae4c255 keyfile: avoid heap allocating temporay name for numbered key in ip_address_or_route_parser()
Odd, we iterate over a thousand names, without aborting when
the first key isn't present.

On the other hand, it means we cannot parse more then 1000
routes either :(

Anyway, don't heap allocate the temporay string for the key
name.
2017-12-18 12:14:50 +01:00
Thomas Haller
cb06a36a18 libnm: avoid deep cloning list of address attribute names for nm_utils_ip_addresses_to_variant()
It's only a temporary list. No need for cloning the names
as well.
2017-12-18 12:14:50 +01:00
Thomas Haller
f299a79d5b libnm: sort attribute names in nm_tc_action_get_attribute_names()
The order in which the attribute names are returns should
be defined and stable. Sort them and re-use the helper functions.
2017-12-18 12:14:49 +01:00
Thomas Haller
17ff856bf4 libnm: sort attribute names in nm_ip_address_get_attribute_names()
The order in which the attribute names are returns should
be defined and stable. Sort them and re-use the helper functions.

Sorting is good, because it gives a consistent order. Maybe we don't
want to commit to this in the API, officially the order is still
arbitrary. In practice, we rely on the order of attribute names
when converting the attributes to a string. The same configuration
should produce the same string representation.

That doesn't mean we commit to a fixed order in the string
representation. It does not mean, that the order must always be this
way, we can still change it. But between multiple runs of the same
binary, the order should be stable.

Note that our hash tables are seeded with a random number. Hence,
their order is not only abitrary, it is also unstable and changes
for each run of the application.
2017-12-18 12:13:19 +01:00
Thomas Haller
bfcbc0063c libnm: use nm_utils_strdict_get_keys() for getting attribute-names of ip-routes
Use the new helper methods to avoid duplicate code.
2017-12-18 12:11:07 +01:00
Thomas Haller
d5c212b145 shared: add nm_utils_strv_make_deep_copied() helper
At several places we create strv arrays where the
strings themself are not deep-copied.

This helper function iterates over such an "const char **"
array, clones the strings, and updates the strv array
inplace to be a "char **" strv array.

This helper function is to reduce code duplication.
2017-12-18 12:10:11 +01:00
Thomas Haller
fe7b4641d6 shared: add nm_utils_strdict_get_keys() helper
At various places we get the (string) keys of a GHashTable.
Add a helper function that does that, including an argument
for optional sorting.

The helper function is there to get reduce code duplication.
2017-12-18 11:56:54 +01:00
Iñigo Martínez
0735b35dd0 build: use template files for enum types' sources generation
Source files for enum types are generated by passing segments of the
source code of the files to the `glib-mkenums` command.

This patch removes those parameters where source code is used from
meson build files by moving those segmeents to template files.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00057.html
2017-12-18 11:25:06 +01:00
Thomas Haller
a58cde8d2c build: merge branch 'meson-generate-build-docs'
https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00053.html
https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00054.html
2017-12-18 10:51:29 +01:00
Iñigo Martínez
e2562d2bfa build: Merge no introspection headers with public headers
There are three headers `nm-secret-agent-old.h`,
`nm-vpn-plugin-old.h`, and `nm-vpn-service-plugin.h`, which are
named as no introspection headers. However, these files also
join to the rest headers to generate introspection data.

This patch merges those no introspection headers with the public
headers.
2017-12-16 15:12:39 +01:00
Iñigo Martínez
28914f6a68 build: Make generate-plugin-docs.pl independent of autotools
`generate-plugin-docs.pl` script which is used to parse
`nm-setting-c*.c` files depends on autotools. This is because it
parses the `Makefile.am` in order to figure out the setting files
it needs to parse.

This patch makes the script independent of autotools by passing
the necessary setting files by command line instead of parsing the
`Makefile.am` file. It also changes the autotools' and meson's
accordingly.
2017-12-16 15:12:33 +01:00
Thomas Haller
22ffd53369 all: merge branch 'th/static-asserts'
https://github.com/NetworkManager/NetworkManager/pull/40
2017-12-15 11:57:04 +01:00
Thomas Haller
974501fdcf shared: add static assert for nm_g_slice_free_fcn() argument 2017-12-15 11:48:38 +01:00