Do You know someone or some mail-list where I should send feature request for adding route realms support in IPv6 for linux ? Thank You for patch but I can not to test it right now. I use kernel and all software from arch distribution on my desktop and openwrt on my test routers at the moment. I have no true test linux machine just now to compile custom kernel and iproute2 with this patch. On Tue, 26 Jan 2010 18:42:55 +0600 Atis Elsts <atis@xxxxxxxxxxxx> wrote: > On Tuesday 26 January 2010 13:14:17 Anton wrote: > > Hello. > > > > > > Two questions: > > > > 1. Does linux kernel support realms only for IPv4 ? I tried to add an IPv6 > > route with realm. It was added but "ip -6 r sh" did not show realm, it > > showed added route without realm. May be this is only tc bug ? I hope ... > > We widely use realms for classifying traffic and if we will use IPv6 I > > don't know how to replace realms by something else. > > No, there is no route realm support for IPv6 at the moment AFAIK. > > > > > > > 2. realm has an unsigned 32 int size. 16-bit src realm and 16-bit dst > > realm. When I'm trying to add route with realm more then 255 it returns > > error. For example "ip r add 192.168.0.0/16 dev ppp0 realm 65000" should > > work but it does not. Is this a bug or am I mistaking ? > > > According to e.g. this book, source and destination realms "are 8-bit values": > http://www.karlstadunix.nu/~ullgren/books/book.chinaunix.net/special/ebook/oreilly/Understanding_Linux_Network_Internals/0596002556/understandlni- > CHP-35-SECT-12.html > > On the other hand, it seems that Linux kernel can handle 16 bit values just > fine, so this could be an unnecessary limitation in iproute. > > (There is one exception in Linux kernel, one place where the upper 8 bits are > ignored - for statistics in /proc/net/rt_acct. If, on the other hand, realms > are used for matching in firewall, they should work.) > > Can you try this patch? > > Atis > > --- > Allow to have realm values up to 65535 when adding IPv4 routes or rules; Linux > kernel already supports this. > > diff --git a/lib/rt_names.c b/lib/rt_names.c > index 52edfe3..a7fdea6 100644 > --- a/lib/rt_names.c > +++ b/lib/rt_names.c > @@ -304,7 +304,7 @@ int rtnl_rtrealm_a2n(__u32 *id, char *arg) > } > > res = strtoul(arg, &end, 0); > - if (!end || end == arg || *end || res > 255) > + if (!end || end == arg || *end || res > 0xffff) > return -1; > *id = res; > return 0; -- Anton [WARM-RIPE] Stack ltd division head tel. 8 (3822) 555-797 -- To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html