Commit graph

12348 commits

Author SHA1 Message Date
Thomas Haller
f202a16026 settings: use _LOG() macros in "nm-settings-connection.c"
(cherry picked from commit a6e7b96963)
2015-08-20 18:05:43 +02:00
Thomas Haller
6a2c021559 settings: refactor logging statement in nm_settings_connection_get_secrets()
(cherry picked from commit 0dcd7b2208)
2015-08-20 18:05:43 +02:00
Thomas Haller
e125603450 libnm-core: don't assert in nm_connection_get_uuid() for valid connection
We want to call nm_connection_get_uuid() also on connections that don't verify.
Otherwise it is chumbersome to check first for verified connection.

(cherry picked from commit 61eed191a9)
2015-08-20 18:05:43 +02:00
Thomas Haller
494b52a832 settings: add _LOG() macros to "nm-settings-connection.h"
(cherry picked from commit 5fb56a1df9)
2015-08-20 18:05:43 +02:00
Thomas Haller
1b3bb295c5 settings/trivial: consistently name @self argument in NMSettingsConnection
(cherry picked from commit 0a160116d7)
2015-08-20 18:05:43 +02:00
Thomas Haller
462b955516 active-connection: make use of logging macro _LOGD()
(cherry picked from commit 97c971b4e4)
2015-08-20 18:05:24 +02:00
Thomas Haller
0621b8b839 active-connection: add logging macros _LOG*()
(cherry picked from commit c6cbd652ba)
2015-08-20 17:54:17 +02:00
Beniamino Galvani
8482f06090 device: don't clear @master on cleanup when the link is still enslaved
Don't clear NMDevice @master in nm_device_cleanup() if the device link
is still enslaved because this causes an inconsistent state in which
the slave in included in the @slaves field of master device but
@master of slave device is NULL.

In such state, if the master link gets deleted, NM receives a change
event for each slave and a deletion event for the master; the change
events should also remove slaves from @slaves of master device, but
since their @master field is NULL the removal can't be performed.

Later, when the master deletion event is received, @slaves is not empty
in dispose() of NMDevice and the following assertion is triggered:

  dispose: runtime check failed: (priv->slaves == NULL)

https://bugzilla.redhat.com/show_bug.cgi?id=1243371
(cherry picked from commit b557f91a1b)
2015-08-20 08:58:29 +02:00
Lubomir Rintel
ad0ab5e827 udev-rules: avoid ifname shell expansion
(cherry picked from commit 9a65f63cb9)
2015-08-19 15:18:14 +02:00
Lubomir Rintel
3fe9825a4b udev-rules: one less useless use of cat
(cherry picked from commit bafc26d008)
2015-08-19 14:30:34 +02:00
Beniamino Galvani
2853fa9a42 udev-rules: only invoke ethtool for existing interfaces
ethtool may cause the auto-loading of a kernel module for non-existing
interface-names. Avoid that by checking whether such an interface exists.

(cherry picked from commit 9366bd7f90)
2015-08-19 14:30:28 +02:00
Lubomir Rintel
5a422d385e Revert "udev-rules: only invoke ethtool for existing interfaces"
This reverts commit 44fee0f6ff.

Bad quoting here. Also, this is not quite the best fix for the issue,
filtering on ACTION=="add" is probably a bit more elegant.

(cherry picked from commit b0f3250dfb)
2015-08-19 14:30:24 +02:00
Jiří Klimeš
9377c08d10 merge: merge contrib/scripts directory with VPN import scripts 2015-08-19 13:16:44 +02:00
Jiří Klimeš
239bb736bc nm-import-openvpn: import 'keepalive' option
https://bugzilla.gnome.org/show_bug.cgi?id=651657
https://git.gnome.org/browse/network-manager-openvpn/commit/?id=6afd16bcacd87a019e12f4df0d63a9e0e8c94e9e
(cherry picked from commit 02cfeac668)
2015-08-19 13:15:17 +02:00
Jiří Klimeš
22902cc31d nm-import-openvpn: import 'ping', 'ping-exit' and 'ping-restart' options
https://bugzilla.gnome.org/show_bug.cgi?id=651657
https://git.gnome.org/browse/network-manager-openvpn/commit/?id=054cc997ca38e5d786859fa6d032c4404af3d28a
(cherry picked from commit e655358d44)
2015-08-19 13:15:17 +02:00
Jiří Klimeš
75934cb13c nm-import-openvpn: improve error checking
(cherry picked from commit bde1cd342e)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
753e668c48 nm-import-openvpn: fix importing OpenVPN configuration with 'tls-client'
(cherry picked from commit a646870684)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
1cac4ed5b8 nm-import-openvpn: import 'float' OpenVPN option
https://bugzilla.gnome.org/show_bug.cgi?id=737108

Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
(cherry picked from commit a5e43ab510)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
9543f2ef73 contrib/scripts: fix importing 'remote' and 'remote-random' options for openvpn
see https://bugzilla.redhat.com/show_bug.cgi?id=1194643

(cherry picked from commit 466515e953)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
6b8dee613f contrib/scripts: nm-import-openconnect - script for importing OpenConnect VPN configs to NM
(cherry picked from commit 29473f1bc4)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
946e157d85 contrib/scripts: nm-import-vpnc - script for importing Cisco VPN configs to NM
(cherry picked from commit db0cf1e7f6)
2015-08-19 13:15:16 +02:00
Jiří Klimeš
701bb6d846 contrib/scripts: nm-import-openvpn - script for importing OpenVPN configs to NM
Synopsis:
 $ nm-import-openvpn -i <infile1> <infile2> ...

 $ nm-import-openvpn <infile> <outfile>

Put the file to NetworkManager:
 # cp <outfile> /etc/NetworkManager/system-connections/
 # chmod 600 /etc/NetworkManager/system-connections/<outfile>
 # nmcli con load /etc/NetworkManager/system-connections/<outfile>

(cherry picked from commit 1a2798d1a4)
2015-08-19 13:15:15 +02:00
Thomas Haller
0cbe203d7c supplicant: don't log a warning when scan request fails
This downgrades the following warning down to debug-level.

  <warn>  Could not get scan request result: GDBus.Error:fi.w1.wpa_supplicant1.Interface.ScanError: Scan request rejected

It seems this ~error~ happens regularly, so warning about it is overly
alarming.

(cherry picked from commit ebc387638a)
2015-08-19 12:59:40 +02:00
Dan Winship
2b78a1d53b libnm-core: add _nm_dbus_error_has_name()
Add a method for checking the D-Bus error name of an error.

(cherry picked from commit ec6f350f44)
2015-08-19 12:59:39 +02:00
Thomas Haller
e04c3139ef manager: fix memleak in system_hostname_changed_cb()
Also, no need to clone the hostname again.

Fixes: c9067d8fed
(cherry picked from commit 58a2e99294)
2015-08-18 15:16:33 +02:00
Lubomir Rintel
502b45f0d4 tests: raise the mock service startup timeout
Python is just too slow on some machines. Needed around twice the previous
limit on BCM2835 with Pidora 20, let's add some safety margin too.

(cherry picked from commit 81cc4d27b1)
2015-08-17 10:54:05 +02:00
Jiří Klimeš
7f3115e0ec merge: 'ssids' RequestScan() option, nmcli connecting hidden SSID (rh #752173)
Add 'ssids' option to RequestScan() DBus call allowing scanning multiple SSIDs,
support that in libnm and nmcli. And fix nmcli for connecting to hidden SSIDs.

https://bugzilla.gnome.org/show_bug.cgi?id=752173
2015-08-14 13:49:09 +02:00
Jiří Klimeš
e0762f4f22 cli: fix connecting to a hidden SSID with 'nmcli dev wifi connect' (bgo #752173)
We have to set 802-11-wireless.hidden=true to be able to connect to hidden SSIDs.
nmcli user indicates hidden SSID with 'hidden yes' parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=752173

(cherry picked from commit 5955a66e09)
2015-08-14 13:32:10 +02:00
Jiří Klimeš
b1f62ce2cd cli: add 'ssid' parameter for 'nmcli device wifi rescan'
'ssid' can repeat when more SSIDs should be scanned, e.g.
$ nmcli dev wifi rescan ssid "hidden cafe" ssid AP12 ssid "my home Wi-Fi"

Bash completion fixed by thaller@redhat.com

(cherry picked from commit e247567d87)
2015-08-14 13:30:17 +02:00
Jiří Klimeš
91c0555afa libnm: add new functions allowing passing options to RequestScan() D-Bus call
nm_device_wifi_request_scan_options()
nm_device_wifi_request_scan_options_async()

(cherry picked from commit 7691fe5753)
2015-08-14 13:30:17 +02:00
Jiří Klimeš
7706b99250 core: accept 'ssids':aay option in RequestScan() dictionary parameter
It allows specifying SSIDs that should be probe-scanned, which is useful
for APs with hidden SSID, for example.

(cherry picked from commit 87b2d783b6)
2015-08-14 13:30:11 +02:00
Lubomir Rintel
4956ac6475 device: avoid a crash during destruction
The ipv4_config might be gone already, _cleanup_generic_post() sets it to NULL.

  NetworkManager[30564]: <info>  caught SIGINT, shutting down normally.

  (NetworkManager:30564): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion 'instance != NULL && instance->g_class != NULL' failed

  Program received signal SIGTRAP, Trace/breakpoint trap.
  g_logv (log_domain=0x7ffff4d92f64 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffd5e0) at gmessages.c:1046
  1046              g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  (gdb) bt
  #0  0x00007ffff4a738c3 in g_logv (log_domain=0x7ffff4d92f64 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffd5e0) at gmessages.c:1046
  #1  0x00007ffff4a73a3f in g_log (log_domain=log_domain@entry=0x7ffff4d92f64 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff4ae173d "%s: assertion '%s' failed")
      at gmessages.c:1079
  #2  0x00007ffff4a73a79 in g_return_if_fail_warning (log_domain=log_domain@entry=0x7ffff4d92f64 "GLib-GObject", pretty_function=pretty_function@entry=0x7ffff4d9aad0 <__FUNCTION__.13620> "g_type_instance_get_private", expression=expression@entry=0x7ffff4d99db8 "instance != NULL && instance->g_class != NULL") at gmessages.c:1088
  #3  0x00007ffff4d8d2ba in g_type_instance_get_private (instance=instance@entry=0x0, private_type=<optimized out>) at gtype.c:4632
  #4  0x00000000004bf774 in nm_ip4_config_get_num_addresses (config=0x0) at nm-ip4-config.c:1418
  #5  0x0000000000458834 in _update_ip4_address (self=self@entry=0xa8a490 [NMDeviceBridge]) at devices/nm-device.c:6069
  #6  0x000000000045e740 in nm_device_set_ip4_config (self=self@entry=0xa8a490 [NMDeviceBridge], new_config=new_config@entry=0x0, default_route_metric=default_route_metric@entry=0, commit=commit@entry=1, routes_full_sync=routes_full_sync@entry=1, reason=reason@entry=0x7fffffffd7cc) at devices/nm-device.c:6558
  #7  0x0000000000466c56 in _cleanup_generic_post (self=self@entry=0xa8a490 [NMDeviceBridge], cleanup_type=cleanup_type@entry=CLEANUP_TYPE_KEEP) at devices/nm-device.c:8108
  #8  0x00000000004671af in dispose (object=0xa8a490 [NMDeviceBridge]) at devices/nm-device.c:9128
  #9  0x00007ffff4d6ea82 in g_object_unref (_object=0xa8a490) at gobject.c:3133
  #10 0x00000000004d1a53 in remove_device (manager=manager@entry=0x8822b0 [NMManager], device=0xa8a490 [NMDeviceBridge], quitting=quitting@entry=1, allow_unmanage=allow_unmanage@entry=1) at nm-manager.c:780
  #11 0x00000000004d7db1 in nm_manager_stop (self=self@entry=0x8822b0 [NMManager]) at nm-manager.c:4199
  #12 0x0000000000445aa9 in main (argc=1, argv=0x7fffffffda88) at main.c:465
  (gdb)

(cherry picked from commit 688e93fb2a)
2015-08-14 10:46:20 +02:00
Thomas Haller
7e2caa2146 ifcfg-rh: take reference to nm_inotifiy_helper_get() singleton in NMIfcfgConnection
https://bugzilla.redhat.com/show_bug.cgi?id=1253330
(cherry picked from commit 088e606fcc)
2015-08-13 16:23:26 +02:00
Jiří Klimeš
677ba11a0f cli: fix an bug when reporting an error
$ nmcli dev wifi rescan ifname eteee

(process:21211): libnm-CRITICAL **: nm_device_get_device_type: assertion 'NM_IS_DEVICE (self)' failed
Error: Device 'eteee' is not a Wi-Fi device.

Fixes: 823df334ed
(cherry picked from commit bccc1af51b)
2015-08-13 09:56:19 +02:00
Dan Winship
431bbb01b4 core: fix NMManager in private-bus-only case
NMManager was failing to initialize if there was only a private bus,
despite the fact that this is exactly the use case that the private
bus was added for.

The only other potentially-failing code in nm_manager_new() was adding
prop_filter to the D-Bus connection, but this can't really fail, so
just assert that it doesn't. And now, nm_manager_new() always
succeeds, so update the caller for that.

(cherry picked from commit 1c11c5cff1)
2015-08-12 16:27:14 +02:00
Thomas Haller
5d6b1bce8e config/tests: fix tests after introducing NMExportedObject class
The config-tests contain a NMTestDevice which derives from NMDevice.
However, for testing, it just skips the constructor and destructor of
NMDevice. This caused also the destructors of NMExportedObject to be skipped
and thus valgrind complained about leaked memory.

Fixes: 6fcc1deee0

[thaller@redhat.com: although this branch doesn't have NMExportedObject,
the patch is still more correct, and thus backport it too]

(cherry picked from commit 3ae6f9d793)
2015-08-12 16:15:05 +02:00
Thomas Haller
fc22db0b85 dhcp/tests: fix memleaks in tests (test_vendor_option_metered)
Fixes: 1e39b2320d
(cherry picked from commit 641ca3d5d2)
2015-08-12 16:14:32 +02:00
Thomas Haller
8a40d75f32 dhcp/tests: fix memleaks in dhcp-tests
These are old leaks, reported by valgrind runs. Strange that they didn't
show up earlier...

(cherry picked from commit 286455bfda)
2015-08-12 16:14:31 +02:00
Thomas Haller
6d2a1edc38 macros: use short-circuit evaluation in NM_IN_SET()
All current users of NM_IN_SET() would rather use short-circuit evalation
(or don't care). It seems that doing it by default seems favorable.

The only downside is, that this might have somewhat unexpected behavior
to a user who expects a regular function (which would evaluate always
all arguments).

Fixes: 7860ef959a
(cherry picked from commit 96cacc07e8)
2015-08-12 16:07:22 +02:00
Thomas Haller
69b276d6d1 macros: rework NM_IN_SET() macro to expand to a plain logical expression
Let the preprocessor do more work, but generate a simple expression that
the compiler can optimize (presumably) better.

(cherry picked from commit 7860ef959a)
2015-08-12 16:07:02 +02:00
Thomas Haller
daacb01fdd core: merge branch 'bg/ethtool-load-module-rh1247156'
Calling ethtool on a non-existing interface name, might cause
the loading of a kernel module. Avoid that, by checking first
whether such an interface exists.

https://bugzilla.redhat.com/show_bug.cgi?id=1247156

(cherry picked from commit f0ada4b534)
2015-08-11 18:38:56 +02:00
Beniamino Galvani
fd387d1017 udev-rules: only invoke ethtool for existing interfaces
ethtool may cause the auto-loading of a kernel module for non-existing
interface-names. Avoid that by checking whether such an interface exists.

This is inherently racy.

(cherry picked from commit 44fee0f6ff)
2015-08-11 18:38:56 +02:00
Beniamino Galvani
37877687bb core: avoid ioctls on non existent devices
Performing an ioctl on a non existent device may cause the automatic
load of a kernel module if the device name matches a module
alias. Check if the device actually exists before calling the ioctl.

(cherry picked from commit ab41c13b06)
2015-08-11 18:38:56 +02:00
Beniamino Galvani
97076260ae device: don't call ioctl to update priv->ip4_address
Just take the first address in priv->ip4_config.

(cherry picked from commit bfb459f8ed)
2015-08-11 18:38:56 +02:00
Thomas Haller
796f78a04c platform: assert for valid ifname in ethtool_get()
Add an assert (g_return_val_if_reached()) that the interface name is
valid and shorter then 16 bytes. If it happened to be longer, strncpy()
would not have zero terminated the interface name.

(cherry picked from commit 5b123f2539)
2015-08-11 18:38:55 +02:00
Thomas Haller
c5569a4e11 utils: add nm_utils_is_valid_path_component()
(cherry picked from commit 633deb0a98)
2015-08-11 18:38:55 +02:00
Thomas Haller
30768c7240 platform: optimize event_notification() not to create full nmp-objects for delete-events
For delete-events, we only need a shallow object with the key fields
set. That sufficies to lookup in the cache and find the object to
delete.

One other issue is that _nmp_vt_cmd_plobj_init_from_nl_link() and
link_extract_type() might call to ethtool for the already deleted
instance. Just avoid that.

https://bugzilla.redhat.com/show_bug.cgi?id=1247156
(cherry picked from commit a4c7176fe9)
2015-08-11 18:38:55 +02:00
Jiří Klimeš
5b71ec822a all: fix a compiler warning about function declarations
warning: function declaration isn’t a prototype [-Wstrict-prototypes]

In C function() and function(void) are two different prototypes (as opposed to
C++).
function()     accepts an arbitrary number of arguments
function(void) accepts zero arguments

(cherry picked from commit 94a393e9ed)
2015-08-11 18:36:53 +02:00
Jiří Klimeš
05d144dfb9 merge: respect DEVTIMEOUT when device is not udev initialized (rh #1192633)
https://bugzilla.redhat.com/show_bug.cgi?id=1192633
2015-08-11 18:28:09 +02:00
Thomas Haller
95443644c1 ifcfg-rh: reorder checks in nm_ifcfg_connection_check_devtimeout()
Move the check for a platform link before devtimeout_from_file(). The
check in the platform cache should be more performant and yield success
in most cases.

This can save reading and parsing the ifcfg-rh file.

(cherry picked from commit 6608331aec)
2015-08-11 18:27:44 +02:00