-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello!
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.
Any chance to be applied to the kernel?
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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFD48ZN5lKZ7Feg4EcRArFcAJ40Op/3Lkmycjg3mq15QuS1TtUggQCfUN6X
7mu3mTXYBgLqkejLU6imdwg=
=C5Ap
-----END PGP SIGNATURE-----
--- 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