summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* core: add nm_utils_carray_remove_at_indexes() functionth/wip/run-state-1th/run-stateThomas Haller2015-11-182-14/+26
|
* config: allow storing and retrieving device run-stateThomas Haller2015-11-182-8/+347
|
* config: let NetworkManager.state be handled by NMConfigThomas Haller2015-11-185-180/+243
| | | | | | | Later we want to persist more state information, particularly about which devices are managed. Move reading and writing of the state file to NMConfig.
* utils: add nm_utils_get_boot_id()Thomas Haller2015-11-182-0/+47
|
* core: add NMRefStringThomas Haller2015-11-183-0/+202
| | | | | | | | NMRefString is a simple, refcounted, immutable string. Increasing/decreasing the refcount does not affect const-ness. It can be used just like a regular 'const char *' pointer. The only difference is that you need special alloc/free functions.
* macros: add nm_assert_not_reached() macroThomas Haller2015-11-181-0/+2
|
* platform/tests: fix fake-platform test running in debug-modeThomas Haller2015-11-181-1/+1
| | | | | | | | In debug-mode, test_ip4_address_peer_zero() used to print the result of `ip address show`. That fails for fake-platform because the device does not exists. Just don't do that.
* all: add C99's "bool" defineThomas Haller2015-11-182-0/+55
| | | | https://mail.gnome.org/archives/networkmanager-list/2015-November/msg00036.html
* cli: add 'nmcli connection clone' for cloning connections (bgo #757627)Jiří Klimeš2015-11-183-1/+203
| | | | | | | | | | | | | | | | Synopsis: nmcli connection clone [--temporary] [id|uuid|path] <ID> <new name> It copies the <ID> connection as <new name>. The command is very useful if there is a connection, but another one is needed for a related configuration. One can copy the existing profile and modify it for the new situation. For example: $ nmcli con clone main-eth second-eth $ nmcli con modify second-eth connection.interface-name em4 https://bugzilla.gnome.org/show_bug.cgi?id=757627
* ifcfg: fix a possible double-free error on invalid WEP key (rh #1281324)Jiří Klimeš2015-11-181-9/+13
| | | | https://bugzilla.redhat.com/show_bug.cgi?id=1281324
* wifi: fix handling APs list using string-hashingThomas Haller2015-11-161-1/+1
| | | | | | | | | | Commit d51827801128564c31dc5f9cc31db18f1bf7ae79 changed the hashing for the APs to use direct-hashing. That was wrong because get_ap_by_path() needs a full string-comparison. Fixes: d51827801128564c31dc5f9cc31db18f1bf7ae79
* gitignore: ignore test-utils test binaryThomas Haller2015-11-161-0/+1
| | | | Fixes: e603c86926ce48a7dd53b892fe85d506e6322378
* gitignore: ignore test-lldp fileThomas Haller2015-11-161-0/+1
| | | | Fixes: ff31171a1c3fcaa0590e3582139778061182ffe3
* valgrind: add suppression for glib's g_thread_return()Thomas Haller2015-11-161-1/+27
|
* valgrind: update suppression file for glib's thread poolThomas Haller2015-11-161-1/+2
|
* nm-online: do not put \r to a translatable string (bgo #758102)Jiří Klimeš2015-11-1634-66/+66
| | | | | | | | | msgmerge complains with "warning: internationalized messages should not contain the '\r' escape sequence" Found by Anders Jonsson <anders.jonsson@norsjovallen.se> https://bugzilla.gnome.org/show_bug.cgi?id=758102
* all: fix typos in the code and update translations for that (bgo #758102)Jiří Klimeš2015-11-1633-128/+12
| | | | | | Found by Anders Jonsson <anders.jonsson@norsjovallen.se> https://bugzilla.gnome.org/show_bug.cgi?id=758102
* pi: update Ukrainian (uk) translation (bgo #758136)Yuri Chornoivan2015-11-161-1833/+2414
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758136
* po: update Polish (pl) translation (bgo #758067)Piotr Drąg2015-11-161-564/+623
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758067
* libnm-core/tests: fix bit shiftBeniamino Galvani2015-11-151-1/+1
| | | | | | Use a maximum shift amount of 63 for guint64. Fixes: 0a3c1f57741677e21ec9efb9c67bfac81c31d208
* macros: avoid signed overflow in nm_utils_is_power_of_two()Beniamino Galvani2015-11-151-6/+6
| | | | | | | | | | | | | | | If __x is signed and its value is the minimum allowed for the type, (__x - 1) causes a signed overflow, which has an undefined behavior. Compiling with -fsanitize=undefined produces the warnings: test-general.c:4499:619: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'int' test-general.c:4506:681: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'TEST_IS_POWER_OF_TWP_ENUM_SIGNED' test-general.c:4501:619: runtime error: signed integer overflow: -9223372036854775808 - 1 cannot be represented in type 'long int' test-general.c:4509:691: runtime error: signed integer overflow: -9223372036854775808 - 1 cannot be represented in type 'TEST_IS_POWER_OF_TWP_ENUM_UNSIGNED_64' Change the order of expressions to avoid this. Fixes: 0a3c1f57741677e21ec9efb9c67bfac81c31d208
* core: fix failed assertion when D-Bus service is already takenBeniamino Galvani2015-11-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | When exiting after an error we must set the quitting flag in nm-exported-object.c because during program destruction there can be still exported objects which get disposed. Fixes the following assertion: NetworkManager[14241]: (nm-exported-object.c:826):nm_exported_object_dispose: code should not be reached Process terminating with default action of signal 5 (SIGTRAP) at 0x7ACFD3B: _g_log_abort (gmessages.c:315) by 0x7ACFD3B: g_logv (gmessages.c:1041) by 0x7ACFEAE: g_log (gmessages.c:1079) by 0x7AD0196: g_warn_message (gmessages.c:1112) by 0x20F5B0: nm_exported_object_dispose (nm-exported-object.c:826) by 0x316FC4: dispose (nm-settings.c:2222) by 0x7841A5B: g_object_unref (gobject.c:3137) by 0x2330F3: dispose (nm-manager.c:5249) by 0x7841A5B: g_object_unref (gobject.c:3137) by 0x23C511: _nm_singleton_instance_destroy (NetworkManagerUtils.c:174) by 0x400FBE6: _dl_fini (in /usr/lib64/ld-2.21.so) by 0x8009647: __run_exit_handlers (in /usr/lib64/libc-2.21.so) by 0x8009694: exit (in /usr/lib64/libc-2.21.so)
* build: add backward compatibility define for missing CLOCK_BOOTTIMEGlenn Washburn2015-11-132-0/+10
| | | | | | [thaller@redhat.com: modified original patch] https://bugzilla.gnome.org/show_bug.cgi?id=757911
* build: disable Pragmas for pre 4.6 gccGlenn Washburn2015-11-132-2/+11
| | | | | | | | | Gcc 4.6 introduced Pragma "GCC diagnostic" (https://gcc.gnu.org/gcc-4.6/changes.html) Don't use them for older gcc. [thaller@redhat.com: modified original patch] https://bugzilla.gnome.org/show_bug.cgi?id=757910
* dispatcher: don't abort when VPN connections have no IPv4Lubomir Rintel2015-11-131-4/+0
| | | | | They don't need it. Also, we shouldn't assert on something that can be done via a D-Bus API.
* vpn-service-plugin: correctly emit ip6-config signal on dbus skeletonLubomir Rintel2015-11-131-1/+1
|
* wifi: clean up removal of current AP if it fails during association (bgo ↵Dan Williams2015-11-121-19/+9
| | | | | | | | | | | | | | | | #733105) Now that NM follows the supplicant's scan list and CurrentBSS, any AP that isn't known to the supplicant will be 'fake', and priv->current_ap always tracks CurrentBSS. We can then simplify link_timeout_cb() because any AP that would have been force-removed before will now be marked "fake" if it's unknown to the supplicant, and will always be removed by set_current_ap(), so we can remove the force argument. To better fix #733105 we never want to remove an AP known to the supplicant, even if it we failed to connect to it. https://bugzilla.gnome.org/show_bug.cgi?id=733105
* agent-manager: add a missing break in caseLubomir Rintel2015-11-121-0/+1
|
* nmcli/bash-completion: fix --show-password parsingLubomir Rintel2015-11-121-1/+1
| | | | Fixes: 2f52a10be12a9b04d802bd6d5040ead71aa7434d
* device: don't try to re-add addresses that vanish on device disconnectionLubomir Rintel2015-11-121-23/+27
| | | | | They are not DAD failures. Also, we must not try adding link-local address when disconnecting.
* nm-device: only progress with ip-config if the device is still in IP_WAITLubomir Rintel2015-11-111-2/+4
| | | | | | | | | | | | | | | | | | | | | | | The device might be a slave and not need any L3 configuration in which case it will move to IP_DONE: Running test bridge_manipulation_with_1000_slaves ... <debug> [1446834482.545396] [nm-dispatcher.c:304] dispatcher_results_process(): (121) 12-dhcpd succeeded <debug> [1446834482.545404] [nm-dispatcher.c:304] dispatcher_results_process(): (121) 20-chrony succeeded <debug> [1446834482.545481] [devices/nm-device.c:5374] nm_device_activate_stage3_ip_config_start(): [0x7fc77e1c0fc0] (port120): Activation: Stage 3 of 5 (IP Configure Start) started... <info> (port120): device state change: config -> ip-config (reason 'none') [50 70 0] <debug> [1446834482.545578] [devices/nm-device.c:1683] slave_state_changed(): [0x7fc77df77020] (bridge0): slave port120 state change 50 (config) -> 70 (ip-config) <debug> [1446834482.545629] [devices/nm-device.c:7955] nm_device_add_pending_action(): [0x7fc77e1c0fc0] (port120): add_pending_action (2): 'queued state change to secondaries' <debug> [1446834482.545642] [devices/nm-device.c:8806] nm_device_queue_state(): [0x7fc77e1c0fc0] (port120): queued state change to secondaries due to none (id 11380) ** NetworkManager:ERROR:devices/nm-device.c:5250:nm_device_activate_stage3_ip4_start: assertion failed: (priv->ip4_state == IP_WAIT) 5250 g_assert (priv->ip4_state == IP_WAIT); (gdb) print priv->ip4_state $1 = IP_DONE (gdb) print priv->master $3 = { ... master = 0x7fc77df77020, enslaved = 1, master_ready_handled = 1, master_ready_id = 0, is_master = 0, slaves = 0x0, ...}
* wifi: minor refactoring logging BSSID in supplicant_iface_new_bss_cb()Thomas Haller2015-11-111-4/+2
|
* Revert "wifi: do no crash when getting BSSID fails"Thomas Haller2015-11-111-5/+1
| | | | | | | | | Since commit 7cb323d92303df8c87d0c40c1c67b4d3a065275c, nm_ap_new_from_properties() will always return an AP with BSSID set. Restore the assertion during try_fill_ssid_for_hidden_ap(). This reverts commit e9bc18d2a7befb032052555ffba22bc72c9b8c2f.
* wifi: don't accept any BSSes with missing BSSIDs (rh #1276426)Dan Williams2015-11-112-3/+4
| | | | | | The supplicant should never be sending us BSSes without BSSIDs. https://bugzilla.redhat.com/show_bug.cgi?id=1276426
* systemd/adapt: return G_SOURCE_REMOVE in time event callbackBeniamino Galvani2015-11-111-10/+3
| | | | | | | | | | | | | | | Differently from GLib timeout sources, systemd ones are always one-shot and therefore we must return G_SOURCE_REMOVE in the callback, otherwise the timer will be scheduled again. In most cases things were working correctly because usually the callback also unreferences the source event, but when this doesn't happen the timer will trigger multiple times as reported in the bug below. https://bugzilla.redhat.com/show_bug.cgi?id=1278506 Fixes: 1b1222ffdf4d022e482c70af6d745cb8fb6c5fdf
* valgrind: drop unused suppressions for libnl-route-3 (rtnl)Thomas Haller2015-11-111-44/+1
| | | | | Since we no longer link against libnl-route-3.so, these suppressions are obsolete. Drop them.
* libnm/keyfile: fix leak in ip6-addr-gen-mode writerThomas Haller2015-11-111-1/+1
| | | | Fixes: f70c8f3d29afccb526ba890ab9778636166f4b63
* python: use gi.require_version() in generate-setting-docs.py and examplesThomas Haller2015-11-1111-0/+22
| | | | | | | | | | | | | | gi now emits a warning when not loading a specific library version [1]: ./generate-setting-docs.py:21: PyGIWarning: NM was imported without specifying a version first. Use gi.require_version(NM, 1.0) before import to ensure that the right version gets loaded. from gi.repository import NM, GObject Seems require_version() is reasonably old to just always use it without breaking on older versions [2]. [1] Related: https://bugzilla.gnome.org/show_bug.cgi?id=727379 [2] https://git.gnome.org/browse/pygobject/commit/?id=76758efb6579752237a0dc4d56cf9518de6c6e55
* cli: print a warning if BSSID is given instead of SSID for hidden APJiří Klimeš2015-11-111-0/+5
| | | | | | $ nmcli dev wifi connect 00:22:6B:EB:1D:CA hidden yes Warning: '00:22:6B:EB:1D:CA' should be SSID for hidden APs; but it looks like a BSSID. Error: Failed to add/activate new connection: 802-11-wireless.ssid: connection does not match access point
* wifi: fix a crash while attempting to connect hidden AP (bgo #757814)Jiří Klimeš2015-11-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Triggered with $ nmcli dev wifi connect 00:22:6B:EB:1D:CA hidden yes where 00:22:6B:EB:1D:CA was BSSID of the AP with hidden SSID. Program received signal SIGSEGV, Segmentation fault. nm_ap_utils_complete_connection (ap_ssid=0x0, bssid=0xc9e6b0 "00:22:6B:EB:1D:CA", ap_mode=NM_802_11_MODE_INFRA, ap_flags=1, ap_wpa_flags=0, ap_rsn_flags=0, connection=0x994ae0, lock_bssid=0, error=0x7fffffffdba0) at nm-wifi-ap-utils.c:551 551 ap_ssid_bytes = g_bytes_new (ap_ssid->data, ap_ssid->len); (gdb) bt #0 0x00007fffe2ea18ef in nm_ap_utils_complete_connection (ap_ssid=0x0, bssid=0xc9e6b0 "00:22:6B:EB:1D:CA", ap_mode=NM_802_11_MODE_INFRA, ap_flags=1, ap_wpa_flags=0, ap_rsn_flags=0, connection=0x994ae0, lock_bssid=0, error=0x7fffffffdba0) at nm-wifi-ap-utils.c:551 #1 0x00007fffe2ea178f in nm_ap_complete_connection (self=self@entry=0x8add20 [NMAccessPoint], connection=connection@entry=0x994ae0, lock_bssid=0, error=error@entry=0x7fffffffdba0) at nm-wifi-ap.c:854 #2 0x00007fffe2e9e22c in complete_connection (device=0x8c39f0 [NMDeviceWifi], connection=0x994ae0, specific_object=<optimized out>, existing_connections=0xb2ef10 = {...}, error=0x7fffffffdba0) at nm-device-wifi.c:839 #3 0x000000000045f7a1 in nm_device_complete_connection (self=<optimized out>, connection=connection@entry=0x994ae0, specific_object=specific_object@entry=0xc31850 "/org/freedesktop/NetworkManager/AccessPoint/11", existing_connections=existing_connections@entry=0xb2ef10 = {...}, error=error@entry=0x7fffffffdba0) at devices/nm-device.c:2603 #4 0x00000000004e0a66 in impl_manager_add_and_activate_connection (self=0x8b81f0 [NMManager], context=0x7fffe804bde0 [GDBusMethodInvocation], settings=<optimized out>, device_path=<optimized out>, specific_object_path=0xc31850 "/org/freedesktop/NetworkManager/AccessPoint/11") at nm-manager.c:3426 #5 0x0000003bf6c05db0 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #6 0x0000003bf6c05818 in ffi_call (cif=cif@entry=0x7fffffffde10, fn=<optimized out>, rvalue=0x7fffffffdd70, avalue=avalue@entry=0x7fffffffdcf0) at ../src/x86/ffi64.c:525 #7 0x0000003bf7010464 in g_cclosure_marshal_generic (closure=closure@entry=0x8d4ae0, return_gvalue=return_gvalue@entry=0x0, n_param_values=n_param_values@entry=5, param_values=param_values@entry=0xb508f0, invocation_hint=invocation_hint@entry=0x7fffffffe020, marshal_data=0x4e0890 <impl_manager_add_and_activate_connection>) at gclosure.c:1448 #8 0x00000000004c6038 in nm_exported_object_meta_marshal (closure=0x8d4ae0, return_value=0x7fffffffdfd0, n_param_values=5, param_values=0xc2a240, invocation_hint=0x7fffffffe020, marshal_data=<optimized out>) at nm-exported-object.c:346 https://bugzilla.gnome.org/show_bug.cgi?id=757814
* core/dbus: merge branch 'dcbw/gdbus-object-manager' (early part)Thomas Haller2015-11-1016-215/+517
|\ | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=753566
| * ifcfg-rh: use distinct D-Bus connection for ifcfg-rh serviceThomas Haller2015-11-102-52/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prevsiouly, the ifcfg-rh service and the regular NetworkManager were both exported on the same D-Bus connection. That had the effect, that on both services ("com.redhat.ifcfgrh1" and "org.freedesktop.NetworkManager") all objects were visible. This is also problematic later when we use GDBusObjectManager for the org.freedesktop.NetworkManager service. Export the ifcfg service on a separate bus connection. One downside is, that we don't bother exporting the service on the private socket and thus the service is not available without D-Bus daemon. Also, if the bus disconnects, we don't retry or recover. Instead the D-Bus service is dead until restart.
| * exported-object: split out the creation of interface skeletonsThomas Haller2015-11-102-76/+124
| | | | | | | | | | Will be reused for ifcfg-rh plugin, which also has a skeleton, but will not implement NMExportedObject.
| * core: explicitly unexport objects when we're done with themDan Williams2015-11-1011-47/+75
| | | | | | | | | | | | | | | | | | | | | | | | Previously most objects were implicitly unexported when they were destroyed, but since refcounts may make the object live longer than intended, we should explicitly unexport them when they should no longer be present on the bus. This means we can assume that objects will always be un-exported already when they are destroyed, *except* when quitting where most objects will live until exit because NM leaves interfaces up and running on quit.
| * wifi/ap: use direct-hashing for aps hashThomas Haller2015-11-101-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The @aps hash has the D-Bus path of the exported object as key. It already rightly saved to additionally copy the string and relied on the path being stable. When doing that, we can just go one step further and use direct-hashing instead of string-hashing. Note that NMExportedObject already promises that the path will not change as long as the object is exported. See code comments in the export/unexport functions.
| * wifi/ap: explicitly unexport AP and refactor add/remove APThomas Haller2015-11-102-33/+45
| | | | | | | | | | | | | | | | | | For future use of ObjectManager, we must explicitly unexport the AP and no longer depend on having it unexported during deconstruction (because object manager keeps the instance alive). Also refactor adding/removal of APs and move the export/unexport calls to the place where we emit the signal.
| * wifi/ap: set the current-ap after adding the new APThomas Haller2015-11-101-1/+1
| | | | | | | | | | | | | | | | | | | | First add the new AP, before setting it as current. Also set the AP *after* thawing the notifications. Otherwise it is not clear which notification gets raised first as their order is undefined. But we want that the client first sees the new AP and later gets a notification about having a new current.
| * core: fix wrongly exporting object before instance is fully constructedThomas Haller2015-11-104-4/+33
| | | | | | | | | | | | | | | | | | | | | | Exporting the object already in the *_init() function will later break because the object is not yet fully initialized at that point. Add a convenient flag so that the NMExportedObject parent implementation automatically can export itself. This saves the derived class from overwriting the constructed() method. Also add an assertion to catch such bugs.
| * ifcfg-rh: fix chaining constructed() method for SettingsPluingIfcfgThomas Haller2015-11-101-0/+2
|/
* build: hack around compiler warning in g-ir-scannerThomas Haller2015-11-101-1/+1
| | | | | | | | | | | | | | | | | | | | The autoconf macro for GIR passes $CFLAGS to g-ir-scanner. g-ir-scanner extends those flags with the system-default which includes -D_FORTIFY_SOURCE=2. Probably it should not do that, but if you disable optimization, this results in a compler warning in "/usr/include/features.h" [1] export CFLAGS='-O0' # Happens both with clang or gcc. #export CC=clang git clean -fdx ./autogen.sh make Work around that by injecting -Wno-error to $CFLAGS when invoking g-ir-scanner. [1] Related: https://sourceware.org/bugzilla/show_bug.cgi?id=13979