After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 637075 - ipv6 rdnss handling not RFC compliant
ipv6 rdnss handling not RFC compliant
Status: RESOLVED FIXED
Product: NetworkManager
Classification: Platform
Component: general
0.8.x
Other Linux
: Normal normal
: ---
Assigned To: Dan Williams
Dan Williams
Depends on:
Blocks:
 
 
Reported: 2010-12-12 14:15 UTC by Pierre Ossman
Modified: 2010-12-15 23:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
0001-ip6-rdnss-structure-needs-to-be-packed.patch (867 bytes, patch)
2010-12-12 16:03 UTC, Pierre Ossman
none Details | Review
0002-ip6-restructure-RDNSS-code-to-be-RFC-compliant.patch (6.89 KB, patch)
2010-12-12 16:05 UTC, Pierre Ossman
none Details | Review

Description Pierre Ossman 2010-12-12 14:15:14 UTC
RFC5006/RFC6106 specifies fairly detailed how RDNSS entries need to be handled with regard to ordering and updates. Unfortunately NM doesn't follow that description and will therefore misbehave on non-trivial IPv6 networks.

Working on patches, stay tuned. ;)
Comment 1 Pierre Ossman 2010-12-12 16:03:52 UTC
Created attachment 176292 [details] [review]
0001-ip6-rdnss-structure-needs-to-be-packed.patch

First a quick minor fix to the data structure.
Comment 2 Pierre Ossman 2010-12-12 16:05:27 UTC
Created attachment 176293 [details] [review]
0002-ip6-restructure-RDNSS-code-to-be-RFC-compliant.patch

Main patch. I've tried to test all code paths here, but if you have time for a more complex setup then please torture it further. :)
Comment 3 Pierre Ossman 2010-12-12 22:49:03 UTC
Bah... already realised the patch is buggy. changed is not properly initialised in process_nduseropt_rdnss ().
Comment 4 Dan Williams 2010-12-15 23:40:36 UTC
patch1:
4e8cb2f193f90bdcde2e1eb1ddd875c57b5808ea (master)
45e35018c3fa99b1110cb84f0fad1f6bc2071e89 (0.8.x)

patch2:
4e8cb2f193f90bdcde2e1eb1ddd875c57b5808ea (master)
3610c0a3cf9b4b2bad1f21196db71a68ce427af9 (0.8.x)

I touched up the second patch to be:

+		switch (opt->nd_opt_type) {
+		case ND_OPT_RDNSS:
+			changed = process_nduseropt_rdnss (device, opt);
+			break;

which seems a bit clearer.

Thanks again!