From: Sven Anders <anders@anduras.de>
To: lartc@vger.kernel.org
Subject: [LARTC] [RFC] Controlling the auto-route setting behaviour of the
Date: Thu, 02 Mar 2006 19:52:58 +0000 [thread overview]
Message-ID: <44074D1A.3010001@anduras.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 1261 bytes --]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello!
I implemented a patch to control the behaviour of the kernel when setting routes
automatically when 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 0 to
/proc/sys/net/ipv4/ip_autoroute.
I would like to see this in the kernel, but nobody on the netdev mailing list
seems to care. Any comments or ideas about this? Stephen?
Regards
Sven
- --
Sven Anders <anders@anduras.de> () 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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFEB00Z5lKZ7Feg4EcRAobZAJ9mOQlJYDB1uky3+rmtW+CDzbIh8QCghzb0
ZoudrAS+zKag4mMxaaWlwjU=
=xHTP
-----END PGP SIGNATURE-----
[-- Attachment #2: ip_autoroute.patch --]
[-- Type: text/x-diff, Size: 2926 bytes --]
--- 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
[-- Attachment #3: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]
[-- Attachment #4: anders.vcf --]
[-- Type: text/x-vcard, Size: 339 bytes --]
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:anders@anduras.de
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
[-- Attachment #5: Type: text/plain, Size: 143 bytes --]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
reply other threads:[~2006-03-02 19:52 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44074D1A.3010001@anduras.de \
--to=anders@anduras.de \
--cc=lartc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.