freebsd-dev/sys/netinet
Alexander V. Chernikov 34a5582c47 Bring back redirect route expiration.
Redirect (and temporal) route expiration was broken a while ago.
This change brings route expiration back, with unified IPv4/IPv6 handling code.

It introduces net.inet.icmp.redirtimeout sysctl, allowing to set
 an expiration time for redirected routes. It defaults to 10 minutes,
 analogues with net.inet6.icmp6.redirtimeout.

Implementation uses separate file, route_temporal.c, as route.c is already
 bloated with tons of different functions.
Internally, expiration is implemented as an per-rnh callout scheduled when
 route with non-zero rt_expire time is added or rt_expire is changed.
 It does not add any overhead when no temporal routes are present.

Callout traverses entire routing tree under wlock, scheduling expired routes
 for deletion and calculating the next time it needs to be run. The rationale
 for such implemention is the following: typically workloads requiring large
 amount of routes have redirects turned off already, while the systems with
 small amount of routes will not inhibit large overhead during tree traversal.

This changes also fixes netstat -rn display of route expiration time, which
 has been broken since the conversion from kread() to sysctl.

Reviewed by:	bz
MFC after:	3 weeks
Differential Revision:	https://reviews.freebsd.org/D23075
2020-01-22 13:53:18 +00:00
..
cc Fix delayed ACK generation for DCTCP. 2019-12-31 16:15:47 +00:00
khelp sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
libalias Separate kernel crc32() implementation to its own header (gsb_crc32.h) and 2019-06-17 19:49:08 +00:00
netdump Add KERNEL_PANICKED macro for use in place of direct panicstr tests 2020-01-12 06:07:54 +00:00
tcp_stacks Make tcp_output() require network epoch. 2020-01-22 05:53:16 +00:00
accf_data.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_dns.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
accf_http.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
icmp6.h Remove useless code from in6_rmx.c 2019-12-18 22:10:56 +00:00
icmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
if_ether.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
if_ether.h Retire arpresolve_addr(), which is not used anywhere, from if_ether.c. 2018-11-17 16:08:36 +00:00
igmp_var.h Separate list manipulation locking from state change in multicast 2018-05-02 19:36:29 +00:00
igmp.c Take the ifnet's address lock in igmp_v3_cancel_link_timers(). 2020-01-03 17:03:10 +00:00
igmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_cksum.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_debug.c CK: update consumers to use CK macros across the board 2018-05-24 23:21:23 +00:00
in_fib.c Existense of PCB route caching doesn't allow us to use new fast route 2019-05-08 23:39:24 +00:00
in_fib.h Existense of PCB route caching doesn't allow us to use new fast route 2019-05-08 23:39:24 +00:00
in_gif.c Mechanically substitute assertion of in_epoch(net_epoch_preempt) to 2020-01-15 05:45:27 +00:00
in_jail.c Move most of the contents of opt_compat.h to opt_global.h. 2018-04-06 17:35:35 +00:00
in_kdtrace.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
in_kdtrace.h Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
in_mcast.c Leave multicast group before reaping and committing state for both 2019-12-18 12:06:34 +00:00
in_pcb.c Make in_pcbladdr() require network epoch entered by its callers. Together 2020-01-22 06:10:41 +00:00
in_pcb.h Stop header pollution and don't include if_var.h via in_pcb.h. 2020-01-15 03:41:15 +00:00
in_pcbgroup.c Fix PCBGROUPS build post CK conversion of pcbinfo 2018-06-13 23:19:54 +00:00
in_prot.c Move most of the contents of opt_compat.h to opt_global.h. 2018-04-06 17:35:35 +00:00
in_proto.c Add fibnum, family and vnet pointer to each rib head. 2020-01-09 17:21:00 +00:00
in_rmx.c Bring back redirect route expiration. 2020-01-22 13:53:18 +00:00
in_rss.c
in_rss.h
in_systm.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_var.h Bring back redirect route expiration. 2020-01-22 13:53:18 +00:00
in.c Introduce NET_EPOCH_CALL() macro and use it everywhere where we free 2020-01-15 06:05:20 +00:00
in.h Rename IPPROTO 33 from SEP to DCCP 2019-08-08 11:43:09 +00:00
ip6.h Remove now unused IPv6 macros and update docs. 2019-11-15 21:55:41 +00:00
ip_carp.c Make ip6_output() and ip_output() require network epoch. 2020-01-22 05:51:22 +00:00
ip_carp.h carp: replace caddr_t with char * 2019-12-06 16:35:48 +00:00
ip_divert.c Make ip6_output() and ip_output() require network epoch. 2020-01-22 05:51:22 +00:00
ip_divert.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_dummynet.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_ecn.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_ecn.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_encap.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_encap.h Add KPI that can be used by tunneling interfaces to handle IP addresses 2018-10-21 17:55:26 +00:00
ip_fastfwd.c New pfil(9) KPI together with newborn pfil API and control utility. 2019-01-31 23:01:03 +00:00
ip_fw.h Add "tcpmss" opcode to match the TCP MSS value. 2019-06-21 10:54:51 +00:00
ip_gre.c Introduce NET_EPOCH_CALL() macro and use it everywhere where we free 2020-01-15 06:05:20 +00:00
ip_icmp.c Bring back redirect route expiration. 2020-01-22 13:53:18 +00:00
ip_icmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_id.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
ip_input.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_mroute.c Reduce the vnet_set module size of ip_mroute to allow loading as a module. 2019-11-19 15:38:55 +00:00
ip_mroute.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ip_options.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_output.c Make ip6_output() and ip_output() require network epoch. 2020-01-22 05:51:22 +00:00
ip_reass.c Properly set VNET when nuking recvif from fragment queues. 2019-10-25 18:54:06 +00:00
ip_var.h This commit adds BBR (Bottleneck Bandwidth and RTT) congestion control. This 2019-09-24 18:18:11 +00:00
ip.h carp: Set DSCP value CS7 2018-07-01 08:37:07 +00:00
pim_var.h Rework IP encapsulation handling code. 2018-06-05 20:51:01 +00:00
pim.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
raw_ip.c Make in_pcbladdr() require network epoch entered by its callers. Together 2020-01-22 06:10:41 +00:00
sctp_asconf.c Validate length before use it, not vice versa. 2019-10-08 11:07:16 +00:00
sctp_asconf.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_auth.c Improve input validation for some parameters having a too small 2019-12-20 15:25:08 +00:00
sctp_auth.h Remove unused code. 2018-09-18 10:53:07 +00:00
sctp_bsd_addr.c Use an event handler to notify the SCTP about IP address changes 2019-10-13 18:17:08 +00:00
sctp_bsd_addr.h Use an event handler to notify the SCTP about IP address changes 2019-10-13 18:17:08 +00:00
sctp_cc_functions.c Fix division by zero issue. 2020-01-12 15:45:27 +00:00
sctp_constants.h Limit the user-controllable amount of memory the kernel allocates 2019-01-16 11:33:47 +00:00
sctp_crc32.c When the IP layer calls back into the SCTP layer to perform the SCTP 2019-09-15 18:29:45 +00:00
sctp_crc32.h When adding support for sending SCTP packets containing an ABORT chunk 2017-12-26 12:35:02 +00:00
sctp_header.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_indata.c Plumb an mbuf leak in a code path that should not be taken. Also avoid 2019-10-06 08:47:10 +00:00
sctp_indata.h Fix initialization of top_fsn. 2019-09-01 10:39:16 +00:00
sctp_input.c Plug two mbuf leaks during INIT-ACK handling. 2019-11-27 19:32:29 +00:00
sctp_input.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_kdtrace.c Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_kdtrace.h Separate out SCTP related dtrace code. 2019-10-14 20:32:11 +00:00
sctp_lock_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os_bsd.h Improve consistency. No functional change. 2019-08-05 13:22:15 +00:00
sctp_os.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_output.c Don't make the sendall iterator as being up if it could not be started. 2020-01-05 14:08:01 +00:00
sctp_output.h Improve the handling of state cookie parameters in INIT-ACK chunks. 2019-09-01 10:09:53 +00:00
sctp_pcb.c Return -1 consistently if an error occurs. 2020-01-05 14:06:40 +00:00
sctp_pcb.h Store a handle for the event handler. This will be used when unloading the 2019-10-24 09:22:23 +00:00
sctp_peeloff.c Use the stacb instead of the asoc in state macros. 2018-08-13 13:58:45 +00:00
sctp_peeloff.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_ss_functions.c Initialize scheduler specific data for the FCFS scheduler. 2019-03-25 16:40:54 +00:00
sctp_structs.h Fix build issue for the userland stack. 2019-03-24 12:13:05 +00:00
sctp_syscalls.c netinet silence warnings 2018-05-19 05:56:21 +00:00
sctp_sysctl.c Make the message size limit used for SCTP_SENDALL configurable via 2020-01-04 20:33:12 +00:00
sctp_sysctl.h Make the message size limit used for SCTP_SENDALL configurable via 2020-01-04 20:33:12 +00:00
sctp_timer.c Refactor the SHUTDOWN_PENDING state handling. 2018-08-21 13:25:32 +00:00
sctp_timer.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_uio.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp_usrreq.c Improve input validation of the spp_pathmtu field in the 2020-01-02 13:55:10 +00:00
sctp_var.h Whitespace changes due to changes in ident. 2018-07-19 20:16:33 +00:00
sctp.h Make the message size limit used for SCTP_SENDALL configurable via 2020-01-04 20:33:12 +00:00
sctputil.c Ensure that we don't miss a trigger for kicking off the SCTP iterator. 2020-01-05 13:56:32 +00:00
sctputil.h Cleanup the RTO calculation and perform some consistency checks 2019-09-22 10:40:15 +00:00
siftr.c In r343587 a simple port filter as sysctl tunable was added to siftr. 2019-10-07 20:35:04 +00:00
tcp_debug.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_debug.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_fastopen.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
tcp_fastopen.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_fsm.h Revert r334843, and partially revert r335180. 2018-06-23 06:53:53 +00:00
tcp_hostcache.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
tcp_hostcache.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_hpts.c In TCP HPTS enter the epoch in tcp_hpts_thread() and assert it in 2019-11-07 21:30:27 +00:00
tcp_hpts.h This commit updates rack to what is basically being used at NF as 2019-07-10 20:40:39 +00:00
tcp_input.c vnet: virtualise more network stack sysctls. 2020-01-08 23:30:26 +00:00
tcp_log_buf.c This change adds a small feature to the tcp logging code. Basically 2020-01-06 12:48:06 +00:00
tcp_log_buf.h This change adds a small feature to the tcp logging code. Basically 2020-01-06 12:48:06 +00:00
tcp_lro.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER(). 2019-11-07 00:08:34 +00:00
tcp_lro.h This adds the final tweaks to LRO that will now allow me 2019-09-06 14:25:41 +00:00
tcp_offload.c Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
tcp_offload.h Add a TOE KTLS mode and a TOE hook for allocating TLS sessions. 2019-10-08 21:34:06 +00:00
tcp_output.c Make tcp_output() require network epoch. 2020-01-22 05:53:16 +00:00
tcp_pcap.c Add an external mbuf buffer type that holds multiple unmapped pages. 2019-06-29 00:48:33 +00:00
tcp_pcap.h
tcp_ratelimit.c A miss from r356754. 2020-01-15 06:12:39 +00:00
tcp_ratelimit.h Fix the ifdefs in tcp_ratelimit.h. They were reversed so 2019-09-24 20:04:31 +00:00
tcp_reass.c This patch addresses an issue brought up by bz@ in D18968: 2019-02-21 09:34:47 +00:00
tcp_sack.c Remove debug code not needed anymore. 2020-01-16 17:15:06 +00:00
tcp_seq.h r330675 introduced an extra window check in the LRO code to ensure it 2018-04-03 13:54:38 +00:00
tcp_stats.c Make use of the stats(3) framework in the TCP stack. 2019-12-02 20:58:04 +00:00
tcp_subr.c Add documenting NET_EPOCH_ASSERT() to tcp_drop(). 2020-01-22 02:38:46 +00:00
tcp_syncache.c Make ip6_output() and ip_output() require network epoch. 2020-01-22 05:51:22 +00:00
tcp_syncache.h Add flags for upcoming patches related to improved ECN handling. 2019-12-31 14:32:48 +00:00
tcp_timer.c Make tcp_output() require network epoch. 2020-01-22 05:53:16 +00:00
tcp_timer.h vnet: virtualise more network stack sysctls. 2020-01-08 23:30:26 +00:00
tcp_timewait.c Mechanically convert INP_INFO_RLOCK() to NET_EPOCH_ENTER() in TCP 2019-11-07 21:29:38 +00:00
tcp_usrreq.c Make in_pcbladdr() require network epoch entered by its callers. Together 2020-01-22 06:10:41 +00:00
tcp_var.h vnet: virtualise more network stack sysctls. 2020-01-08 23:30:26 +00:00
tcp.h Add flags for upcoming patches related to improved ECN handling. 2019-12-31 14:32:48 +00:00
tcpip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
toecore.c Make tcp_output() require network epoch. 2020-01-22 05:53:16 +00:00
toecore.h In order for the TCP Handshake to support ECN++, and further ECN-related 2019-12-01 18:05:02 +00:00
udp_usrreq.c Make in_pcbladdr() require network epoch entered by its callers. Together 2020-01-22 06:10:41 +00:00
udp_var.h vnet: virtualise more network stack sysctls. 2020-01-08 23:30:26 +00:00
udp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udplite.h Add a dtrace provider for UDP-Lite. 2018-07-31 22:56:03 +00:00