So I actually found the cause for the missing routes in the libnl cache: in nm_netlink_foreach_route(), when rtnl_route_alloc_cache() is called, it is done with the NL_AUTO_PROVIDE flag. I don't know why this was added; but replacing it with 0 (no flags), fixes the issue with no apparent drawbacks.
A patch is attached. Mathieu Trudel-Lapierre <[email protected]> Freenode: cyphermox, Jabber: [email protected] 4096R/EE018C93 1967 8F7D 03A1 8F38 732E FF82 C126 33E1 EE01 8C93
From: Mathieu Trudel-Lapierre <[email protected]> Subject: Unbreak setting priorities for routes Bug: http://bugs.gnome.org/659983 Bug-Ubuntu: https://bugs.launchpad.net/bugs/856333 Passing NL_AUTO_PROVIDE to rtnl_route_alloc_cache() caused it to omit listing a number of routes, including the ones we're actually interested in when nm_netlink_foreach_route() is called. (e.g. for setting priority/metric). Index: network-manager-0.9.1.90/src/nm-netlink-utils.c =================================================================== --- network-manager-0.9.1.90.orig/src/nm-netlink-utils.c 2011-09-28 11:29:13.463639084 -0400 +++ network-manager-0.9.1.90/src/nm-netlink-utils.c 2011-09-28 11:29:25.779638535 -0400 @@ -413,7 +413,7 @@ info.user_data = user_data; info.iface = nm_netlink_index_to_iface (ifindex); - rtnl_route_alloc_cache (nm_netlink_get_default_handle (), family, NL_AUTO_PROVIDE, &cache); + rtnl_route_alloc_cache (nm_netlink_get_default_handle (), family, 0, &cache); g_return_val_if_fail (cache != NULL, NULL); nl_cache_foreach (cache, foreach_route_cb, &info); nl_cache_free (cache);
_______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
