summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* libnm: don't use g_strsplit_set() to search string for invalid charactersThomas Haller2017-12-081-9/+3
|
* build: don't link libnm against libjansson when building ↵Thomas Haller2017-12-082-5/+6
| | | | | | | | | --without-json-validation Also, don't add the CFLAGS for libjansson to dflt_cppflags_libnm_core. dflt_cppflags_libnm_core is used also by core and libnm. But those components do not (directly) link against libjansson. The cannot use these flags.
* Revert "Makefile: rework team compilation flags"Thomas Haller2017-12-087-18/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't think we should do this. - renamining/dropping configure options is still an annoyance, because it requires to different ./configure options depending on the version. The rename from --enable-teamctl to --enable-team might be theoretically nice, but more annoying then helpful. - There is no strict dependency between --enable-team and --enable-json-validation. At most, one could argue that when enabling the team plugin (--enable-teamctl), then libnm must also be build with --enable-json-validation. But in fact, the team plugin will happily work with a libnm that doesn't link against libjansson. That is --enable-teamctl --disable-json-validation will work in practice just fine. On the other hand, libnm is a client library to create connection profiles, fully supporting team profiles also makes sense if the actual plugin is not installed (or build). Thus, --disable-teamctl --enable-json-validation certainly makes sense. At this point, one might ask whether libnm is even still complete without libjansson. Maybe libnm should *require* --enable-json-validation. But that is not what the patch was doing, and it would also need some careful consideration before doing so. This reverts commit 9d5cd7eae8edc8c558d26f04ffd163effafe57f9.
* libnm/tests: fix memleak in testThomas Haller2017-12-081-1/+1
|
* gitignore: readd removed libnm-core/tests/test-setting* programsThomas Haller2017-12-081-0/+3
| | | | | Although removed, they show up whenever switching to an old branch. Keep ignoring them.
* keyfile: reject team properties in parserThomas Haller2017-12-081-6/+9
| | | | | We don't properly coordinate reading the team properties from keyfile. They must be ignored, at least for now.
* merge: branch 'fg/team_abstraction_tests_and_fixes_rh1398925'Francesco Giudici2017-12-0829-1249/+3701
|\ | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1398925
| * Makefile: rework team compilation flagsfg/team_abstraction_tests_and_fixes_rh1398925Francesco Giudici2017-12-087-34/+18
| | | | | | | | | | | | | | | | | | | | | | | | Rename the team functionality enablement from 'teamdctl' to 'team'. Force jansson lib requirement for team functionality: NetworkManager requires the teamd daemon to manage team. As teamd depends upon jansson lib, adding jansson requirement for teaming support in NetworkManager seems reasonable. Remove the jansson_validation flag, as the only generic json function in nmcli (not related to team) was the one to check if a string was in json format. Anyway, that function is used for team checks only. So, move also json validation functions under the WITH_TEAM flag.
| * libnm-core: add test cases for NMSettingTeamPortFrancesco Giudici2017-12-081-0/+131
| |
| * libnm-core: add test cases for NMSettingTeamFrancesco Giudici2017-12-081-0/+281
| |
| * gitignore: ignore libnm-core/tests/test-settingFrancesco Giudici2017-12-081-3/+1
| | | | | | | | | | | | We now have merged in libnm-core/tests/test-setting test file the test files for 8021x, bond and dcb... add the new test file to .gitignore and remove the old ones.
| * libnm-core: merge the settings tests into a single oneLubomir Rintel2017-12-085-984/+903
| | | | | | | | Thomas likes this more and who am I to argue.
| * libnm-core: team: skip writing in the keyfile all the exposed propertiesFrancesco Giudici2017-12-081-6/+63
| | | | | | | | | | Their values are already saved in the team.config and team-port.config properties, from which they are synced.
| * libnm-core: team: change tx-hash APIs idx type from int to guintFrancesco Giudici2017-12-082-6/+6
| |
| * libnm-core: team: rework defaults management on runner propertiesFrancesco Giudici2017-12-082-72/+218
| | | | | | | | | | | | | | | | | | | | | | | | till now when no explicit value was set on a property, the default value for that property was returned, also if the property was not applicable to the selected runner. Fix this, showing default values for properties only when relevant and showing instead -1 or null when the property is not relevant for the selected runner. Moreover, reset all the properties but the link-watchers when the team.runner is changed: this is required to clean up the properties unrelated to the new runner and start with the runner-specific defaults.
| * libnm-core: team: use the correct name for teamd property 'balancing_interval'Francesco Giudici2017-12-081-1/+1
| | | | | | | | | | | | | | the teamd 'runner.tx_balancer.balancing_interval' property was wrongly set and searched as 'runner.tx_balancer.interval'. Fixed. Fixes: fc3b7d61e29a56106a0ecb55deb7fcdcf7d9b691
| * libnm-core: json: share code to load defaults in team(-port).configFrancesco Giudici2017-12-081-58/+50
| | | | | | | | | | | | | | | | | | | | Move code from _nm_utils_team_config_get to the brand new _json_team_add_defaults function without any change. Then remove the duplicated code from _nm_utils_team_config_equal and leverage the new function. Here the only functional change is that the defaults for "notify_peers" and "mcast_rejoin" for the "activebackup" runner are added (the only case in which their default values are different than 0).
| * libnm-core: trivial: just move static json functionsFrancesco Giudici2017-12-081-211/+212
| |
| * libnm-core: trivial: move json key deletion code to a separate functionFrancesco Giudici2017-12-081-32/+44
| |
| * libnm-core: use proper writer for team-port link-watchersFrancesco Giudici2017-12-081-0/+3
| |
| * cli: add support to TeamPort link watchersFrancesco Giudici2017-12-081-0/+80
| |
| * libnm-core: team-port: expose the new link-watchers propertyFrancesco Giudici2017-12-084-15/+262
| | | | | | | | | | It will allow explicit configuration of link-watchers in the team port configuration.
| * libnm-core: add keyfile writer for team link watcherFrancesco Giudici2017-12-081-0/+12
| | | | | | | | Allow tests to dump the content of the property when getting a failure.
| * libnm-core: synchronize team.link_watchers when team.config is set.Francesco Giudici2017-12-083-3/+105
| |
| * libnm-core: synchronize team.config when team.link_watchers is set.Francesco Giudici2017-12-082-5/+115
| |
| * cli: add support to Team link watchersFrancesco Giudici2017-12-081-0/+242
| |
| * libnm-core: team: expose the new link-watchers propertyFrancesco Giudici2017-12-084-0/+280
| | | | | | | | | | It will allow explicit configuration of link-watchers in the team configuration.
| * libnm-core: add backend for GVariant de/serialization of link_watchers.Francesco Giudici2017-12-084-0/+233
| |
| * libnm-core: team: add NMTeamLinkWatcher boxed typeFrancesco Giudici2017-12-083-0/+620
| | | | | | | | | | | | Team allows to specify multiple link watchers for each link. Define a link watcher object in order to allow to specify multiple ones for each Team configuration.
| * ifcfg-rh: tests: align json team configuration format to jansson oneFrancesco Giudici2017-12-087-12/+14
| |
| * libnm-core: preserve keys order in team.config with old jansson libsFrancesco Giudici2017-12-081-1/+1
|/ | | | | | | | | When jansson lib version is < 2.8 the order of the keys of json objects is not preserved automatically. In particular, when loading the json string, parsing it and dumping it back to a string the key order will be lost if the now deprecated JSON_PRESERVE_ORDER flag is not set. Add the flag: will do nothing on recent jansson versions but will fix behavior for legacy ones.
* ifcfg-rh: use separate variables for DNS searchesBeniamino Galvani2017-12-075-33/+30
| | | | | | | | | | | | DNS searches from the ipv4 and ipv6 settings were joined and written to the same ifcfg-rh "DOMAIN" variable and so the connection read back from disk was different from the one written. Instead, introduce a separate variable for ipv6 searches; to preserve backwards compatibility, still read the "DOMAIN" variable for ipv6 when ipv4 is disabled so that we don't lose DNS searches on upgrade. https://bugzilla.redhat.com/show_bug.cgi?id=1517794
* ifcfg-rh: initialize watch descriptors to -1Francesco Giudici2017-12-071-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is now required as we instance inotify-helper only on need: we have to init them to the unset value, otherwise... Thread 1 "NetworkManager" received signal SIGSEGV, Segmentation fault. nm_inotify_helper_remove_watch (self=0x0, wd=0) at src/settings/plugins/ifcfg-rh/nm-inotify-helper.c:100 100 if (priv->ifd < 0) (gdb) backtrace #0 0x00007fffe35da6c0 in nm_inotify_helper_remove_watch (self=0x0, wd=0) at src/settings/plugins/ifcfg-rh/nm-inotify-helper.c:100 #1 0x00007fffe35d45b1 in nm_inotify_helper_clear_watch (wd=0x7fffdc008628, helper=<optimized out>) at src/settings/plugins/ifcfg-rh/nm-inotify-helper.h:53 #2 0x00007fffe35d45b1 in path_watch_stop (self=0x7fffdc0085f0) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-connection.c:223 #3 0x00007fffe35d467c in filename_changed (object=0x7fffdc0085f0, pspec=<optimized out>, user_data=<optimized out>) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-connection.c:242 #4 0x00007ffff61b230d in g_closure_invoke () at /lib64/libgobject-2.0.so.0 #5 0x00007ffff61c498e in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0 #6 0x00007ffff61cd1a5 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #7 0x00007ffff61cdb0f in g_signal_emit () at /lib64/libgobject-2.0.so.0 #8 0x00007ffff61b6594 in g_object_dispatch_properties_changed () at /lib64/libgobject-2.0.so.0 #9 0x00007ffff61b5f3e in g_object_notify_queue_thaw () at /lib64/libgobject-2.0.so.0 #10 0x00007ffff61b7776 in g_object_new_internal () at /lib64/libgobject-2.0.so.0 #11 0x00007ffff61b924d in g_object_new_valist () at /lib64/libgobject-2.0.so.0 #12 0x00007ffff61b9691 in g_object_new () at /lib64/libgobject-2.0.so.0 #13 0x00007fffe35d5018 in nm_ifcfg_connection_new (source=source@entry=0x0, full_path=full_path@entry=0x555555a9a590 "/etc/sysconfig/network-scripts/ifcfg-team3", error=error@entry=0x7fffffffdc30, out_ignore_error=out_ignore_error@entry=0x7fffffffdc2c) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-connection.c:429 #14 0x00007fffe35d5e96 in update_connection (self=self@entry=0x555555a59ea0, source=source@entry=0x0, full_path=0x555555a9a590 "/etc/sysconfig/network-scripts/ifcfg-team3", connection=connection@entry=0x0, protect_existing_connection=protect_existing_connection@entry=0, protected_connections=protected_connections@entry=Python Exception <class 'gdb.error'> There is no member named keys.: 0x555555a9fc00, error=0x0) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c:218 #15 0x00007fffe35d7073 in read_connections (plugin=plugin@entry=0x555555a59ea0) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c:545 #16 0x00007fffe35d72f1 in get_connections (config=0x555555a59ea0) at src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c:581 #17 0x00005555556bb513 in load_connections (self=0x555555a1a920) at src/settings/nm-settings.c:239 #18 0x00005555556bb513 in nm_settings_start (self=0x555555a1a920, error=<optimized out>) at src/settings/nm-settings.c:1800 #19 0x00005555555ada1f in nm_manager_start (self=0x555555a490c0, error=<optimized out>) at src/nm-manager.c:5262 #20 0x00005555555851ae in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:417 Fixes: 31f2a466390024be6710b259d5ad228ebf5d1557
* all: merge fixing pointers casts for g_object_ref()Thomas Haller2017-12-067-11/+18
|\ | | | | | | | | | | See related bug https://bugzilla.gnome.org/show_bug.cgi?id=790697 https://mail.gnome.org/archives/desktop-devel-list/2012-July/msg00100.html
| * shared: propagate type for g_object_ref()Thomas Haller2017-12-062-0/+6
| | | | | | | | See related bug https://bugzilla.gnome.org/show_bug.cgi?id=790697
| * all: use cast macros instead of C castThomas Haller2017-12-065-13/+14
| | | | | | | | | | | | | | | | | | | | When building with assertions, they nm_assert() for the type. Otherwise, they are identical to a C cast. Also, where possible, don't cast at all, but adjust the type instead. Also, there were a few missing casts.
| * tree-wide: cast after g_object_ref() for proposed GLib patchColin Walters2017-12-063-5/+5
|/ | | | | | This fixes the build with related bug https://bugzilla.gnome.org/show_bug.cgi?id=790697 https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00005.html
* core: merge branch 'bg/device-reapply-no-restart-bgo790061'Beniamino Galvani2017-12-0610-214/+591
|\ | | | | | | | | | | Allow reconfiguring interfaces without downtime. https://bugzilla.gnome.org/show_bug.cgi?id=790061
| * device: restore original dynamic IPv6 configuration on reapplyBeniamino Galvani2017-12-063-82/+222
| |
| * device: restore original dynamic IPv4 configuration on reapplyBeniamino Galvani2017-12-061-43/+88
| | | | | | | | | | | | | | | | | | | | | | The dynamic IPv4 configuration from DHCP/PPP/... and WWAN is stored in priv->{dev,wwan}_ip4_config; when the user removes externally an address or a route, we prune it from those configurations. Therefore such addresses and routes can't be restored on a device reapply. Introduce an AppliedConfig structure that stores both the original and the current (after external changes) configuration so that we can restore the original one on reapply.
| * device: remove 'force_restart' argument from reactivate functionsBeniamino Galvani2017-12-063-31/+21
| | | | | | | | | | | | It is now unused. https://bugzilla.gnome.org/show_bug.cgi?id=790061
| * device: don't force a restart of IP configuration on reapplyBeniamino Galvani2017-12-061-2/+2
| | | | | | | | | | | | | | | | Restarting the IP configuration removes addresses and routes for a short time breaking connectivity. The reapply process should have the minimal impact possible. https://bugzilla.gnome.org/show_bug.cgi?id=790061
| * core: add non-destructive ip config intersect functionBeniamino Galvani2017-12-064-22/+172
| | | | | | | | | | Add a new function to compute the intersection between 2 IP configurations without modifying them.
| * core: add generic functions for set operationsBeniamino Galvani2017-12-061-0/+50
| |
| * core: add nm_ipX_config_clone()Beniamino Galvani2017-12-066-26/+28
| |
| * core: drop unused macro argumentBeniamino Galvani2017-12-061-10/+10
|/
* build: adjust libnm symbol versioning after backporting update2 API for 1.10.2Thomas Haller2017-12-061-3/+6
| | | | | | | | | | | | | | | | | | The update2 API was backported to nm-1-10 branch, with commit ad7f1d18a0eafb1352d305035cd138f43a47b955. It will be released both as 1.12.0 and 1.10.2. To ensure the upgrade path from 1.10.2+ to 1.12+ works, the symbols in libnm must be present on both versions. Usually, we would duplicate the symbols on master via NM_BACKPORT_SYMBOL() macro. However, as we are sure that we will release 1.10.2 before 1.12.0, we can just update the linker version of these symbols. So, although they are first released on major release 1.12.0, their linker version tag is libnm_1_10_2, to ease upgrade and to avoid duplicating the symbol.
* build: fix path in MakefileBeniamino Galvani2017-12-061-1/+1
| | | | Fixes: 8e172eb984a532e28c10c3d9f453396249c92d3b
* core: merge branch 'th/user-block-autoconnect-rh1401515'Thomas Haller2017-12-0530-586/+1082
|\ | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=1401515
| * settings: support setting a connection as volatile via Update2()th/user-block-autoconnect-rh1401515Thomas Haller2017-12-054-43/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend the Update2 flags to allow marking a connection as volatile. Making a connection as volatile means that the connection stays alive as long as an active connection references it. It is correct that Update2() returns before the connection is actually deleted. It might take an arbitrary long time until the volatile mechanism cleans up the connection. Also add two more IN_MEMORY flags: "detached" and "only". The existing NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY would not detach nor delete the possible file on disk. That is, the mode only changes what NM thinks is the current content of the connection profile. It would not delete the file on disk nor would it detach the profile in-memory from the file. As such, later persisting the connection again to disk would overwrite the file, and deleting the profile, would delete the file. Now add two new IN_MEMORY modes. NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_DETACH is like making the connection in-memory only, but forgetting that there might be any profile on disk. That means, a later Delete() would not delete the file. Similarly, a later Update2() that persists the connection again, would not overwrite the existing file on disk, instead it would choose a new file name. On the other hand, NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_ONLY would delete a potential file from disk right away. It's clear that "volatile" only makes sense with either "in-memory-detached" or "in-memory-only". That is, the file on disk should be deleted right away (before the in-memory part is garbage collected) or the file on disk should be forgotten.