aboutsummaryrefslogtreecommitdiff
path: root/sbin/route
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2014-11-11 02:52:40 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2014-11-11 02:52:40 +0000
commit670e8b3b8c6b14a31d015af2b6d595ad2bce17bb (patch)
tree03ac2d127be5e5ef838975d007a62d8250819cc3 /sbin/route
parent039dd540f58fca5779965233bfa8e788382a2f54 (diff)
downloadsrc-670e8b3b8c6b14a31d015af2b6d595ad2bce17bb.tar.gz
src-670e8b3b8c6b14a31d015af2b6d595ad2bce17bb.zip
Kill custom in_matroute() radix mathing function removing one rte mutex lock.
Initially in_matrote() in_clsroute() in their current state was introduced by r4105 20 years ago. Instead of deleting inactive routes immediately, we kept them in route table, setting RTPRF_OURS flag and some expire time. After that, either GC came or RTPRF_OURS got removed on first-packet. It was a good solution in that days (and probably another decade after that) to keep TCP metrics. However, after moving metrics to TCP hostcache in r122922, most of in_rmx functionality became unused. It might had been used for flushing icmp-originated routes before rte mutexes/refcounting, but I'm not sure about that. So it looks like this is nearly impossible to make GC do its work nowadays: in_rtkill() ignores non-RTPRF_OURS routes. route can only become RTPRF_OURS after dropping last reference via rtfree() which calls in_clsroute(), which, it turn, ignores UP and non-RTF_DYNAMIC routes. Dynamic routes can still be installed via received redirect, but they have default lifetime (no specific rt_expire) and no one has another trie walker to call RTFREE() on them. So, the changelist: * remove custom rnh_match / rnh_close matching function. * remove all GC functions * partially revert r256695 (proto3 is no more used inside kernel, it is not possible to use rt_expire from user point of view, proto3 support is not complete) * Finish r241884 (similar to this commit) and remove remaining IPv6 parts MFC after: 1 month
Notes
Notes: svn path=/head/; revision=274363
Diffstat (limited to 'sbin/route')
-rw-r--r--sbin/route/keywords1
-rw-r--r--sbin/route/route.83
-rw-r--r--sbin/route/route.c3
3 files changed, 1 insertions, 6 deletions
diff --git a/sbin/route/keywords b/sbin/route/keywords
index 8b64be28d384..82edc46690d1 100644
--- a/sbin/route/keywords
+++ b/sbin/route/keywords
@@ -40,7 +40,6 @@ osi
prefixlen
proto1
proto2
-proto3
proxy
recvpipe
reject
diff --git a/sbin/route/route.8 b/sbin/route/route.8
index 000fbe9c1874..5e6f78b4e017 100644
--- a/sbin/route/route.8
+++ b/sbin/route/route.8
@@ -28,7 +28,7 @@
.\" @(#)route.8 8.3 (Berkeley) 3/19/94
.\" $FreeBSD$
.\"
-.Dd January 11, 2014
+.Dd November 11, 2014
.Dt ROUTE 8
.Os
.Sh NAME
@@ -315,7 +315,6 @@ by indicating the following corresponding modifiers:
-blackhole RTF_BLACKHOLE - silently discard pkts (during updates)
-proto1 RTF_PROTO1 - set protocol specific routing flag #1
-proto2 RTF_PROTO2 - set protocol specific routing flag #2
--proto3 RTF_PROTO3 - set protocol specific routing flag #3
.Ed
.Pp
The optional modifiers
diff --git a/sbin/route/route.c b/sbin/route/route.c
index 604057d147d7..2c328a39c41d 100644
--- a/sbin/route/route.c
+++ b/sbin/route/route.c
@@ -847,9 +847,6 @@ newroute(int argc, char **argv)
case K_PROTO2:
flags |= RTF_PROTO2;
break;
- case K_PROTO3:
- flags |= RTF_PROTO3;
- break;
case K_PROXY:
nrflags |= F_PROXY;
break;