summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* settings: fix clearing nm-generated/volatile flags of connectionThomas Haller2017-12-115-8/+18
| | | | | | | | | | | There are a few cases where we don't want to clear a potential nm-generated/volatile flag, but only mark the connection as unsaved. Otherwise, we wrongly end up clearing these flags and the connection is wrongly not NM_DEVICE_SYS_IFACE_STATE_EXTERNAL. Fixes: 35dc6421de78cffd1761cfb6edf9e94233f99966
* ifcfg-rh: add tc supportlr/tcLubomir Rintel2017-12-114-2/+113
| | | | | | | | | Format: QDISC1=ingress QDISC2="root handle 1234: fq_codel" FILTER1="parent ffff: matchall action simple sdata Input" FILTER2="parent 1234: matchall action simple sdata Output"
* device: set traffic filters when device comes upLubomir Rintel2017-12-111-1/+35
|
* platform: fix TC to-string/hash/cmp functions to include the actionThomas Haller2017-12-113-3/+40
| | | | | Also add a define NM_PLATFORM_ACTION_KIND_SIMPLE. It makes the uses of "simple" grepable.
* platform: add support for traffic filtersLubomir Rintel2017-12-116-13/+408
|
* keyfile/tests: test tc traffic filter reading and writingLubomir Rintel2017-12-112-0/+53
|
* device: set qdiscs when device comes upLubomir Rintel2017-12-111-0/+51
|
* keyfile/tests: test tc qdisc reading and writingLubomir Rintel2017-12-112-1/+82
|
* platform/tests: tests qdisc caching behaviorLubomir Rintel2017-12-111-1/+90
| | | | Just the most rudimentary tests.
* platform: add support for queueing disciplinesLubomir Rintel2017-12-116-23/+363
|
* platform: add <linux/tc_act/tc_defact.h> headerThomas Haller2017-12-111-0/+23
| | | | | | | | | | We're going to need that one for TC filter & action support. <linux/tc_act/tc_defact.h> was moved to user-space API only in 2013 by commit 5bc3db5c9ca8407f52918b6504d3b27230defedc. Our travis CI currently fails to build due to that. Re-implement the header.
* platform: merge nm_platform_*_delete() delete functionsThomas Haller2017-12-116-25/+30
| | | | | | | | | | | | | It only makes sense to call delete() with NMPObjects that we obtained from the platform cache. Otherwise, if we didn't get it from the cache in the first place, we wouldn't know what to delete. Hence, the input argument is (almost) always an NMPObject in the first place. That is different from add(), where we might create a new specific NMPlatform* instance on the stack. For add() it makes slightly more sense to have different functions depending on the type. For delete(), it doesn't.
* platform/nmp-object: (trivial) keep enum ordered by a numeric valueLubomir Rintel2017-12-111-1/+1
|
* platform/linux: stringify also NLMSG_* in logsLubomir Rintel2017-12-111-8/+12
|
* platform/trivial: s/ADDRROUTE/OBJECT/ for the cache lookupLubomir Rintel2017-12-1111-98/+98
| | | | | It's going to be useful for other objects that have a type (of course) and an ifindex.
* ifcfg-rh: drop unused functionsLubomir Rintel2017-12-112-9/+2
| | | | Perhaps a cargo cult leftover.
* ifcfg-rh: drop unused and confusing error argumentsLubomir Rintel2017-12-111-5/+5
|
* platform/tests: add a missing copyright noticeLubomir Rintel2017-12-111-0/+18
|
* platform/tests: drop bad commentLubomir Rintel2017-12-116-12/+6
|
* core: fix typo for logging of NMSettingsConnectionFlags "nm-generated"Thomas Haller2017-12-111-1/+1
| | | | Fixes: c3dd5d8df2388813c22d2662985725b188450b85
* ifcfg-rh: tests: align json team configuration format to jansson oneFrancesco Giudici2017-12-087-12/+14
|
* ifcfg-rh: use separate variables for DNS searchesBeniamino Galvani2017-12-074-32/+29
| | | | | | | | | | | | 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: use cast macros instead of C castThomas Haller2017-12-064-4/+4
| | | | | | | | | | 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-062-2/+2
| | | | | | 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
* 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
|
* settings: support setting a connection as volatile via Update2()th/user-block-autoconnect-rh1401515Thomas Haller2017-12-052-43/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* settings: delete volatile connection and support setting the volatile flagThomas Haller2017-12-051-15/+110
| | | | | | | | | | Previously, we would only set a connection as volatile before adding it to manager. As we never would set it volatile last on, there was no need to handle deletion. Now support that. Watch the volatile flag, and if the connection has currently not active connection that keeps it alive, delete it in an idle handler.
* manager/trivial: reorder declarations at beginning of fileThomas Haller2017-12-051-80/+88
| | | | | | First, define structs. Then forward declare functions. Reorder code to have a certain order that is also used by other files (or should be).
* settings: let invisible connection not autoconnect according to is_blocked() ↵Thomas Haller2017-12-052-10/+23
| | | | | | | | | | | | | function Previously, NMPolicy would explicitly check whether the connection is not visible, to skip autoconnect. We have nm_settings_connection_autoconnect_is_blocked() function, that can do that. The advantage is, that at various places we call nm_settings_connection_autoconnect_is_blocked() to determine whether autoconnect is blocked. By declaring invisible connections as blocked from autoconnect as well, we short-cut various autoconnection attempts, that previoulsy only failed later during auto_activate_device().
* settings: remove accessor functions to connection flagsThomas Haller2017-12-057-53/+18
| | | | | | | | | | | | | | | | The accessor functions just look whether a certain flag is set. As these functions have a different name then the flags, this is more confusing then helpful. For example, if you want to know where the NM_GENERATED flag matters, you had to know to grep for nm_settings_connection_get_nm_generated() in addition to NM_SETTINGS_CONNECTION_FLAGS_NM_GENERATED. The accessor function hid that the property was implemented as a connection flag. For example, it was not immediately obvious that nm_settings_connection_get_nm_generated() is the same as having the NM_SETTINGS_CONNECTION_FLAGS_NM_GENERATED flag set. Drop them.
* settings: refactor setting connection flagsThomas Haller2017-12-052-28/+26
| | | | | | It seems more idiomatic to have a mask+value argument, instead of setting all flags at once. At least, other setters work this way, so change it for consistency.
* settings: track visible state as regular connection flagsThomas Haller2017-12-055-62/+24
| | | | | | We already need to re-emit the notify::flags signal. It's cumbersome to do this for boolean properties, so re-use the flags to also track the visibility state.
* settings: add "connection-flags-changed" signal to connectionThomas Haller2017-12-052-0/+25
| | | | We will need to subscribe to changes to "flags" from NMManager.
* settings: block autoconnect of volatile connectionsThomas Haller2017-12-051-1/+2
|
* settings: move delete call to separate functionThomas Haller2017-12-051-14/+24
|
* settings: clear filename after deleting file from diskThomas Haller2017-12-051-0/+2
| | | | | | | | It doesn't really matter, because in the next step we are about to remove the connection. However, once the connection is deleted from file, it's clear that it has no more file-name.
* ifcfg-rh: add and use nm_inotify_helper_clear_watch() helperThomas Haller2017-12-052-18/+17
|
* ifcfg-rh: move nm-inotify-helper to ifcfg-rh pluginThomas Haller2017-12-054-7/+1
| | | | The helper is only used by ifcfg-rh. Move it to the plugin.
* ifcfg-rh: fix path_watch_stop() not to create inotify-helperThomas Haller2017-12-051-23/+11
| | | | | | | | | | Commonly, we don't monitor files and hence don't need the inotify-helper instance. We already access and construct the instance lazy, by accessing the singleton getter only when needed. However, path_watch_stop() would always access the singleton, hence always create such an instance. In most cases there is nothing to clean, and no such instance shall be created.
* settings: pass new_connection to commit_changes() and fix ifnetThomas Haller2017-12-054-5/+5
| | | | | | ifnet shall use the new_connection argument, not NM_CONNECTION(self). Also, let the caller of the virtual function provide the right new_connection, not having the virtual function figure that out.
* settings: unify settings-update API (drop internal _update())Thomas Haller2017-12-051-29/+13
|
* settings: unify settings-update API (rename and merge)Thomas Haller2017-12-0513-123/+97
|