Hello! --------------------------------------------------------------------------------- Please, even if nobody is interested in this patch or if it has no chance to get into the kernel, tell me why! ---------------------------------------------------------------------------------
I implemented a patch to control the behaviour of the kernel when setting routes automatically while adding a new network address. You can select the types of routes you want to be set automatically. This enables the user - as an example - to set all routes in the local table automatically, but leave the main table untouched. (This is the special case I needed.) If you want you can disable it completly by writing. I would like to see this in the kernel. Any comments or ideas about this? This patch itself is very small and only adds the controlling over the IPv4 autoroutes. Regards Sven -- Sven Anders <[EMAIL PROTECTED]> () Ascii Ribbon Campaign /\ Support plain text e-mail ANDURAS service solutions AG Innstraße 71 - 94036 Passau - Germany Web: www.anduras.de - Tel: +49 (0)851-4 90 50-0 - Fax: +49 (0)851-4 90 50-55 Rechtsform: Aktiengesellschaft - Sitz: Passau - Amtsgericht Passau HRB 6032 Mitglieder des Vorstands: Sven Anders, Marcus Junker, Michael Schön Vorsitzender des Aufsichtsrats: Dipl. Kfm. Thomas Träger
--- linux-2.6.15.1/include/linux/sysctl.h Sun Jan 15 07:16:02 2006 +++ linux-2.6.15.1/include/linux/sysctl.h.patched Tue Jan 31 21:43:58 2006 @@ -390,6 +390,7 @@ NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, NET_TCP_CONG_CONTROL=110, NET_TCP_ABC=111, + NET_IPV4_AUTO_ROUTE_CREATE=112, }; enum { --- linux-2.6.15.1/net/ipv4/sysctl_net_ipv4.c Sun Jan 15 07:16:02 2006 +++ linux-2.6.15.1/net/ipv4/sysctl_net_ipv4.c.patched Tue Jan 31 21:53:14 2006 @@ -18,12 +18,15 @@ #include <net/route.h> #include <net/tcp.h> /* From af_inet.c */ extern int sysctl_ip_nonlocal_bind; +/* From fib_frontend.c */ +extern int sysctl_auto_route_create; + #ifdef CONFIG_SYSCTL static int tcp_retr1_max = 255; static int ip_local_port_range_min[] = { 1, 1 }; static int ip_local_port_range_max[] = { 65535, 65535 }; #endif @@ -646,12 +649,20 @@ .strategy = &sysctl_tcp_congestion_control, }, { .ctl_name = NET_TCP_ABC, .procname = "tcp_abc", .data = &sysctl_tcp_abc, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, + { + .ctl_name = NET_IPV4_AUTO_ROUTE_CREATE, + .procname = "ip_autoroute", + .data = &sysctl_auto_route_create, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_dointvec, }, { .ctl_name = 0 } --- linux-2.6.15.1/net/ipv4/fib_frontend.c Tue Jan 31 21:46:19 2006 +++ linux-2.6.15.1/net/ipv4/fib_frontend.c.patched Wed Feb 1 23:13:51 2006 @@ -47,6 +47,13 @@ #define FFprint(a...) printk(KERN_DEBUG a) +/* automatically create routes? */ +#define SYSCTL_AUTO_ROUTE_LOCAL 1 +#define SYSCTL_AUTO_ROUTE_BROADCAST 2 +#define SYSCTL_AUTO_ROUTE_UNICAST 4 +#define SYSCTL_AUTO_ROUTE_ALL 7 +int sysctl_auto_route_create = SYSCTL_AUTO_ROUTE_ALL; + #ifndef CONFIG_IP_MULTIPLE_TABLES #define RT_TABLE_MIN RT_TABLE_MAIN @@ -373,6 +380,14 @@ struct rtmsg rtm; } req; struct kern_rta rta; + + if (((type == RTN_LOCAL) && + !(sysctl_auto_route_create & SYSCTL_AUTO_ROUTE_LOCAL)) || + ((type == RTN_BROADCAST) && + !(sysctl_auto_route_create & SYSCTL_AUTO_ROUTE_BROADCAST)) || + ((type == RTN_UNICAST) && + !(sysctl_auto_route_create & SYSCTL_AUTO_ROUTE_UNICAST))) + return; memset(&req.rtm, 0, sizeof(req.rtm)); memset(&rta, 0, sizeof(rta)); --- linux-2.6.15.1/Documentation/networking/ip-sysctl.txt.orig Fri Feb 3 22:03:37 2006 +++ linux-2.6.15.1/Documentation/networking/ip-sysctl.txt Fri Feb 3 22:06:25 2006 @@ -27,6 +27,16 @@ The advertised MSS depends on the first hop route MTU, but will never be lower than this setting. +ip_autoroute - INTEGER + Control the behaviour of setting automatic routes (when adding an + ip address). Implemented as a bitmask. + + 1 = Add local routes (in local table) + 2 = Add broadcast routes (in local table) + 4 = Add unicast route (in main table) + + default 7 - Set all routes + IP Fragmentation: ipfrag_high_thresh - INTEGER
begin:vcard fn:Sven Anders n:Anders;Sven org:ANDURAS AG;Research and Development adr;quoted-printable:;;Innstra=C3=9Fe 71;Passau;Bavaria;94036;Germany email;internet:[EMAIL PROTECTED] title:Dipl. Inf. tel;work:++49 (0)851 / 490 50 - 0 tel;fax:+49 (0)851 / 4 90 50 - 55 x-mozilla-html:FALSE url:http://www.anduras.de version:2.1 end:vcard
signature.asc
Description: OpenPGP digital signature