On Thu, Mar 22, 2012 at 12:26:00PM +0100, Benjamin Cama wrote:
Hi,
I'm the one who suggested coding the ???filtering on kernel proto??? on another mailing-list (after getting the idea from here) and Jérémie offered to code it.
Le lundi 19 mars 2012 ?? 13:26 +0100, Ondrej Zajicek a écrit :
On Wed, Mar 14, 2012 at 08:50:24PM +0100, Jérémie Dimino wrote:
The patch adds two attributes: krt_source and krt_proto. krt_source is an enum which export the u.krt.src field of routes and krt_proto is an integer which export the u.krt.proto field. The patch also adds constants from /etc/iproute2/rt_protos.
Thanks, i will merge but there are some minor issues with this.
First, i will remove krt_source, that seems useless - you will never get KRT_SRC_BIRD and KRT_SRC_REDIRECT, so you get only KRT_SRC_ALIEN or KRT_SRC_KERNEL, which is the same as whether krt_proto is ipp_kernel.
We debated offline whether we should include both or not, but I didn't realize that KRT_SRC_BIRD and KRT_SRC_REDIRECT where filtered out before reaching bird tables. Anyway, we tried to find a good compromise between having only one source of authority (thus unifying both attributes) but still being able to use this attribute for system not aware of krt_proto (i.e. non-Linux). I didn't find a satisfying answer to that. Now that we reduced the possibilities, could the possibility to filter on krt_proto = ipp_kernel (or !=) be left for BSD users? E.g. by setting krt_proto to the same netlink value as Linux when krt_src == KRT_SRC_KERNEL?
I guess a good solution would be to fill some relevant krt_proto on BSD (probably the value of RTF_PROTO* flags). One minor downside is that kernel route value would be system-dependend (0 on BSD, ipp_kernel (i.e. 2) on Linux). But that is probably OK, ipp_kernel constant is not even defined on BSD. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."