Commit Graph

57 Commits

Author SHA1 Message Date
Thomas Haller
32a828080c
core/trivial: rename NM_SHUTDOWN_TIMEOUT_MS to NM_SHUTDOWN_TIMEOUT_MAX_MSEC
The abbreviations "ms", "us", "ns" don't look good.
Spell out to "msec", "usec", "nsec" as done at other places.

Also, rename NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG to
NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC.

Also, rename NM_SHUTDOWN_TIMEOUT_MS to NM_SHUTDOWN_TIMEOUT_MAX_MSEC.
There are different timeouts, and this is the maximum gracetime we
will give during shutdown to complete async operations.

Naming is hard, but I think these are better names.
2022-02-24 09:38:52 +01:00
Thomas Haller
037dfe5ac1
TODO: add "Improve Shutdown of NetworkManager" item 2022-02-18 13:00:35 +01:00
Thomas Haller
dac12a8d61
platform: support IPv6 mulitpath routes and fix cache inconsistency
Add support for IPv6 multipath routes, by treating them as single-hop
routes. Otherwise, we can easily end up with an inconsistent platform
cache.

Background:
-----------

Routes are hard. We have NMPlatform which is a cache of netlink objects.
That means, we have a hash table and we cache objects based on some
identity (nmp_object_id_equal()). So those objects must have some immutable,
indistinguishable properties that determine whether an object is the
same or a different one.

For routes and routing rules, this identifying property is basically a subset
of the attributes (but not all!). That makes it very hard, because tomorrow
kernel could add an attribute that becomes part of the identity, and NetworkManager
wouldn't recognize it, resulting in cache inconsistency by wrongly
thinking two different routes are one and the same. Anyway.

The other point is that we rely on netlink events to maintain the cache.
So when we receive a RTM_NEWROUTE we add the object to the cache, and
delete it upon RTM_DELROUTE. When you do `ip route replace`, kernel
might replace a (different!) route, but only send one RTM_NEWROUTE message.
We handle that by somehow finding the route that was replaced/deleted. It's
ugly. Did I say, that routes are hard?

Also, for IPv4 routes, multipath attributes are just a part of the
routes identity. That is, you add two different routes that only differ
by their multipath list, and then kernel does as you would expect.
NetworkManager does not support IPv4 multihop routes and just ignores
them.
Also, a multipath route can have next hops on different interfaces,
which goes against our current assumption, that an NMPlatformIP4Route
has an interface (or no interface, in case of blackhole routes). That
makes it hard to meaningfully support IPv4 routes. But we probably don't
have to, because we can just pretend that such routes don't exist and
our cache stays consistent (at least, until somebody calls `ip route
replace` *sigh*).

Not so for IPv6. When you add (`ip route append`) an IPv6 route that is
identical to an existing route -- except their multipath attribute -- then it
behaves as if the existing route was modified and the result is the
merged route with more next-hops. Note that in this case kernel will
only send a RTM_NEWROUTE message with the full multipath list. If we
would treat the multipath list as part of the route's identity, this
would be as if kernel deleted one routes and created a different one (the
merged one), but only sending one notification. That's a bit similar to
what happens during `ip route replace`, but it would be nightmare to
find out which route was thereby replaced.
Likewise, when you delete a route, then kernel will "subtract" the
next-hop and sent a RTM_DELROUTE notification only about the next-hop that
was deleted. To handle that, you would have to find the full multihop
route, and replace it with the remainder after the subtraction.

NetworkManager so far ignored IPv6 routes with more than one next-hop, this
means you can start with one single-hop route (that NetworkManger sees
and has in the platform cache). Then you create a similar route (only
differing by the next-hop). Kernel will merge the routes, but not notify
NetworkManager that the single-hop route is not longer a single-hop
route. This can easily cause a cache inconsistency and subtle bugs. For
IPv6 we MUST handle multihop routes.

Kernels behavior makes little sense, if you expect that routes have an
immutable identity and want to get notifications about addition/removal.
We can however make sense by it by pretending that all IPv6 routes are
single-hop! With only the twist that a single RTM_NEWROUTE notification
might notify about multiple routes at the same time. This is what the
patch does.

The Patch
---------

Now one RTM_NEWROUTE message can contain multiple IPv6 routes
(NMPObject). That would mean that nmp_object_new_from_nl() needs to
return a list of objects. But it's not implemented that way. Instead,
we still call nmp_object_new_from_nl(), and the parsing code can
indicate that there is something more, indicating the caller to call
nmp_object_new_from_nl() again in a loop to fetch more objects.

In practice, I think all RTM_DELROUTE messages for IPv6 routes are
single-hop. Still, we implement it to handle also multi-hop messages the
same way.

Note that we just parse the netlink message again from scratch. The alternative
would be to parse the first object once, and then clone the object and
only update the next-hop. That would be more efficient, but probably
harder to understand/implement.

https://bugzilla.redhat.com/show_bug.cgi?id=1837254#c20
2022-02-16 09:59:49 +01:00
Thomas Haller
b8392757ec
platform/readme: detail problem about IPv6 multihop routes 2022-01-18 12:00:02 +01:00
Thomas Haller
a3c36f6d0f
TODO: remove completed todo tasks 2022-01-18 11:27:51 +01:00
Sayed Shah
7337ab8959
all: fix typo in man pages
There should be a comma after 'Otherwise' and 'Currently'.

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

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/560
2020-07-03 10:48:04 +02:00
Thomas Haller
b698c92861
TODO: add new items 2020-06-03 20:03:34 +02:00
Thomas Haller
b5c440f54a
TODO: drop completed item "Implement NM_DEVICE_STATE_DISCONNECTING"
This seems to be done.
2020-06-03 20:03:34 +02:00
Thomas Haller
e171ae5f7a
TODO: drop completed item "Internet Connectivity Detection Enhancements"
This is mostly done. What is not done is to delay the ACTIVATED state
until the connectivty check passed. Delaying that might be problematic
and should only be done as opt-in. Unclear whether that would ever be useful
though.
2020-06-03 20:03:34 +02:00
Lubomir Rintel
b385ad0159 all: say Wi-Fi instead of "wifi" or "WiFi"
Correct the spelling across the *entire* tree, including translations,
comments, etc. It's easier that way.

Even the places where it's not exposed to the user, such as tests, so
that we learn how is it spelled correctly.
2018-11-29 17:53:35 +01:00
luz.paz
58510ed566 docs: misc. typos pt2
Remainder of typos found using `codespell -q 3 --skip="./shared,./src/systemd,*.po" -I ../NetworkManager-word-whitelist.txt` whereby whitelist consists of:
 ```
ans
busses
cace
cna
conexant
crasher
iff
liftime
creat
nd
sav
technik
uint
```

https://github.com/NetworkManager/NetworkManager/pull/205
2018-09-17 11:26:13 +02:00
Lubomir Rintel
d70185ddf1 all: point git references to the GitLab instance
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/2
2018-08-27 11:36:56 +02:00
Beniamino Galvani
aca671fff0 all: replace "it's" with "its" where needed 2018-04-18 14:14:07 +02:00
Thomas Haller
28da0154fc all: drop trailing spaces 2018-02-07 13:32:04 +01:00
Atul Anand
3ef7d316f6 TODO: Remove Proxies from the list of TODO
Remove Proxies from the list once proxy patches are successfully merged.
2016-10-04 11:44:44 +02:00
Dan Winship
721e917cb6 wimax: drop WiMAX support (bgo #747846)
Even Fedora is no longer shipping the WiMAX SDK, so it's likely we'll
eventually accidentally break some of the code in src/devices/wimax/
(if we haven't already). Discussion on the list showed a consensus for
dropping support for WiMAX.

So, remove the SDK checks from configure.ac, remove the WiMAX device
plugin and associated manager support, and deprecate all the APIs.

For compatibility reasons, it is still possible to create and save
WiMAX connections, to toggle the software WiMAX rfkill state, and to
change the "WIMAX" log level, although none of these have any effect,
since no NMDeviceWimax will ever be created.

nmcli was only compiling in support for most WiMAX operations when NM
as a whole was built with WiMAX support, so that code has been removed
now as well. (It is still possible to use nmcli to create and edit
WiMAX connections, but those connections will never be activatable.)
2015-04-17 12:42:23 -04:00
Dan Williams
b405677a7e todo: remove item about finished VPN IPv6 support 2013-04-10 10:06:38 -05:00
Dan Williams
a752a07875 todo: update item about proxy handling 2013-04-08 15:27:41 -05:00
Dan Williams
efe52765cc todo: secondary VPN connection support finished 2013-02-07 17:59:22 -06:00
Dan Williams
b59785751d todo: real AP mode support has been added 2013-02-07 17:58:20 -06:00
Dan Williams
ccfe5fec8d wifi: don't autoconnect to networks that have never been successful
If you accidentally click on an wifi network in the menu, and you
don't know the password, and cancel, the connection always stuck
around and was available for autoconnection.  That's annoying, and
it's a few clicks to go delete them.  But better yet, we can
slightly repurpose the 'timestamp' property of connections to
determine whether or not they've been successfully connected in the
past; NM stores timestamps for all connections as of version 0.9.

So if a wifi connection hasn't ever been successful (which means it
has a timestamp in the timestamp cache, but that timestamp is zero),
don't try to autoconnect it.

Preloaded connections without a timestamp will still be autoconnected
at least once (as they always have) because they won't yet have a
timestamp in the timestamp cache.
2012-09-20 10:11:36 -05:00
Pavel Šimerda
d769a0e188 Add bug numbers to TODO 2012-08-06 15:07:42 -05:00
Gary Ching-Pang Lin
5e3e19d02b wifi: add on-demand WiFi scan support
A new D-Bus method was added to invoke the on-demand WiFi scan.
2012-06-07 15:06:48 -05:00
Dan Williams
60d2bb824e todo: remove ADSL item 2012-05-18 15:42:56 -05:00
Dan Winship
a44effc1c7 TODO: remove bridging/bonding and InfiniBand
Bonding and InfiniBand are done. Bridging isn't, but after removing
the bonding and generic infrstructure parts of that section, there
wasn't really enough left to be worth keeping.
2012-03-22 15:50:43 -04:00
Dan Williams
51e0cf5f0f release: update TODO with enhanced connectivity check ideas 2012-02-27 11:07:53 -06:00
Dan Williams
2243980018 todo: nl80211 work is finished 2011-11-09 21:28:02 -06:00
Dan Williams
b4892510b5 todo: Infiniband update 2011-09-09 12:37:11 -05:00
Dan Williams
80a8b6fabf todo: update TODO for IP over Infiniband 2011-09-07 18:54:16 -05:00
Dan Williams
b02d132f7e todo: add notes about pushing network selection to wpa_supplicant 2011-08-24 10:51:39 -05:00
Dan Williams
fb6cf1fe68 todo: add some notes about tablet/mobile optimizations we should do 2011-08-24 10:17:36 -05:00
Dan Williams
5075ffe324 todo: add notes about vpn async secrets requests 2011-06-14 17:22:49 -05:00
Dan Williams
31450324e4 todo: add notes about ethernet connection autodetection 2011-06-06 13:58:17 -05:00
Dan Williams
9012263600 todo: add notes about only connecting WiFi it was previously successful 2011-06-06 12:29:18 -05:00
Dan Williams
b25c24fe94 todo: update with latest ADSL status 2011-06-06 11:42:54 -05:00
Dan Williams
6d175478ef todo: update VPN IP Method item with more details 2011-05-25 07:48:21 -05:00
Dan Williams
bb954bd5f3 todo: add initial notes about bridging and bonding 2011-05-24 17:21:15 -05:00
Dan Williams
cb883b2977 todo: update with proxy handling thoughts 2011-05-23 19:44:32 -05:00
Dan Williams
1c3400b8f2 todo: add note about drivers that don't support AP mode 2011-05-23 19:13:55 -05:00
Dan Williams
0eb215d9f4 todo: add some notes about WPS 2011-03-13 23:49:02 -05:00
Dan Williams
4963825d0c todo: update with some stuff people could work on 2011-03-08 15:24:27 -06:00
Dan Williams
50b866c22a Clear outdated todo items
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4308 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-11-19 23:34:29 +00:00
Robert Love
a1346d9780 TODO: update
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1675 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-04-06 17:49:21 +00:00
Robert Love
e13d57f5ec * TODO: Update. WPA Enterprise and DBUS failure recovery are both
in the bag!


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1495 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-02-26 02:26:11 +00:00
Robert Love
70f591d7d6 TODO: format
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1410 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-01-30 22:41:20 +00:00
Robert Love
a386cc6bc9 2006-01-26 Robert Love <rml@novell.com>
* TODO: Update.  WPA support is in the bag and HAL restarts (should)
	  work.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1392 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-01-26 21:16:36 +00:00
Robert Love
3e3a38bb0f Add "WPA support" to TODO.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1113 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-12-01 18:37:38 +00:00
Robert Love
4d194a2b39 Update TODO: One down, ...
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@753 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-06-26 02:52:31 +00:00
Dan Williams
b36a377527 Remove Non-broadcasting ESSID entry since I've fixed that
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@225 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-14 02:23:30 +00:00
Dan Williams
b6df634a51 2004-10-12 Dan Williams <dcbw@redhat.com>
* TODO
		- Remove bit about static IP address support

	* src/NetworkManagerUtils.c
		- (nm_spawn_process): Add some error reporting

	* src/NetworkManagerDevice.c
		- (nm_device_activation_configure_ip): hook up to the static config
			routines in the backends

	* src/backends/NetworkManagerRedHat.c
		- (nm_system_device_update_config_info): use shvar.c routines to
			parse the config file iformation, not our own
		- (nm_system_device_setup_static_ip4_config): new function, based
			heavily on 'ifup' script and 'ipcalc' tool code.  Set up a device
			with a static IP address and gateway

	* src/backends/shvar.[ch]
		- Parser (filched from initscripts package) for ifcfg-* files

	* src/backends/NetworkManagerSystem.h
	  src/backends/NetworkManagerGentoo.c
	  src/backends/NetworkManagerDebian.c
	  src/backends/NetworkManagerSlackware.c
		- Stub nm_system_device_update_config_info() and nm_system_device_setup_static_ip4_config()


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@212 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-12 11:15:47 +00:00