Wired + Wireless cohexistence issues, using libnl3



Hi,

I'm specifying context here as dependent on libnl3, but I think it's
probably just related to the rework for libnl in general.

So, currently in git, if you connect both wired and wireless, it seems
like the priority for devices is not being set. Routes appear in 'ip
route list' without the "metric X" label that used to be there before,
and I can distinctly see traffic coming out of eth0 here, and back in
through wlan0 (which clearly fails. This was for a simple 'ping
8.8.8.8', which ends up with a high percentage of packet loss, since
traffic comes back on the wrong interface from what's expected, with
some small exceptions apparently based on how ARP requests pass by).

I've spent all day hacking at it, but must admit I'm stumped.

Here's how far I got:
nm_system_device_set_priority() gets called, but as it calls
nm_netlink_foreach_route(); the cache doesn't appear to contain all
the routes it should: specifically, the link route through each
device. The first line below is something I added to
nm_system_device_set_priority(); just before the call to
nm_netlink_foreach_route. If this (and then going through the
find_route callback) was to complete, you'd see another entry "setting
iface 2 priority to 1".

NetworkManager[32490]: <debug> [1316808008.684440] [nm-system.c:1177]
nm_system_device_set_priority(): trying to set iface 2 route priority
to 1
NetworkManager[32490]: <debug> [1316808008.685462]
[nm-netlink-utils.c:317] dump_route():   route idx 2 family INET (2)
addr 224.0.0.22/32
NetworkManager[32490]: <debug> [1316808008.685697]
[nm-netlink-utils.c:317] dump_route():   route idx 2 family INET (2)
addr 224.0.0.251/32
NetworkManager[32490]: <debug> [1316808008.685889]
[nm-netlink-utils.c:317] dump_route():   route idx 3 family INET (2)
addr 10.153.108.1/32
NetworkManager[32490]: <debug> [1316808008.686048]
[nm-netlink-utils.c:317] dump_route():   route idx 1 family INET (2)
addr 10.153.108.129/32
NetworkManager[32490]: <debug> [1316808008.686199]
[nm-netlink-utils.c:317] dump_route():   route idx 3 family INET (2)
addr 8.8.8.8/32
NetworkManager[32490]: <debug> [1316808008.686345]
[nm-netlink-utils.c:317] dump_route():   route idx 1 family INET (2)
addr 10.153.108.129/32
NetworkManager[32490]: <info> (eth0): device state change: ip-config
-> activated (reason 'none') [70 100 0]

I'm expecting here to see an entry from dump_route() listing, for idx
2, 10.153.108.115/24 I think. I've opened a bug report for this issue.
[1]

Note that adding the routes manually allows traffic to flow correctly,
with eth0 using metric 1 and wlan0 using metric 2, as per their device
type.

Additionally and as an unrelated issue, I've noticed errors adding
IPv6 routes in general from libnl: "Missing attribute". Unfortunately,
I don't know what additional attribute might be required for IPv6. My
google fu is failing me. The bug report for this one is [2].

Any help or suggestions on how to fix this will be much appreciated :)

[1] https://bugzilla.gnome.org/show_bug.cgi?id=659983
[2] https://bugzilla.gnome.org/show_bug.cgi?id=659984

Regards,

Mathieu Trudel-Lapierre <mathieu tl gmail com>
Freenode: cyphermox, Jabber: mathieu tl gmail com
4096R/EE018C93 1967 8F7D 03A1 8F38 732E  FF82 C126 33E1 EE01 8C93


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]