opnsense-src/sys/netinet
Alexander V. Chernikov 1435dcd94f Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration.
Current arp/nd code relies on the feedback from the datapath indicating
 that the entry is still used. This mechanism is incorporated into the
 arpresolve()/nd6_resolve() routines. After the inpcb route cache
 introduction, the packet path for the locally-originated packets changed,
 passing cached lle pointer to the ether_output() directly. This resulted
 in the arp/ndp entry expire each time exactly after the configured max_age
 interval. During the small window between the ARP/NDP request and reply
 from the router, most of the packets got lost.

Fix this behaviour by plugging datapath notification code to the packet
 path used by route cache. Unify the notification code by using single
 inlined function with the per-AF callbacks.

Reported by:	sthaug at nethelp.no
Reviewed by:	ae
MFC after:	2 weeks
2018-03-17 17:05:48 +00:00
..
cc sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
khelp sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
libalias libalias: small memory allocation cleanups. 2018-01-12 23:12:30 +00:00
tcp_stacks Declare more TCP globals in tcp_var.h, so that alternative TCP stacks 2017-10-11 20:36:09 +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 Correct the comment describing badrs which is bad router solicitiation, 2017-12-29 07:23:18 +00:00
icmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
if_ether.c Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration. 2018-03-17 17:05:48 +00:00
if_ether.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
igmp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in.c Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration. 2018-03-17 17:05:48 +00:00
in.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 sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_fib.c Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
in_fib.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
in_gif.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_jail.c Allow explicitly assigned IPv4 loopback address to be used in jails 2017-03-31 00:41:54 +00:00
in_kdtrace.c Use tcpinfoh_t for TCP headers in the tcp:::debug-{drop,input} probes. 2018-01-25 15:35:34 +00:00
in_kdtrace.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_mcast.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_pcb.c Reduce code duplication for inpcb route caching 2018-01-23 03:15:39 +00:00
in_pcb.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_pcbgroup.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
in_prot.c Remove BSD and USL copyright and update license block in in_prot.c, as the 2016-07-28 18:39:30 +00:00
in_proto.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_rmx.c Code duplication but rib_head is special. Not found an easy way to go 2016-02-03 21:56:51 +00:00
in_rss.c Rename rss_soft_m2cpuid() -> rss_soft_m2cpuid_v4() in preparation for 2015-08-29 06:58:30 +00:00
in_rss.h Rename rss_soft_m2cpuid() -> rss_soft_m2cpuid_v4() in preparation for 2015-08-29 06:58:30 +00:00
in_systm.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
in_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip6.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_carp.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_carp.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_divert.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +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 sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_encap.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_fastfwd.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_fw.h Rework ipfw dynamic states implementation to be lockless on fast path. 2018-02-07 18:59:54 +00:00
ip_gre.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_icmp.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_icmp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_id.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_input.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_mroute.c style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
ip_mroute.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_options.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ip_output.c Reduce code duplication for inpcb route caching 2018-01-23 03:15:39 +00:00
ip_reass.c Do not generate illegal mbuf chains during IP fragment reassembly. Only 2018-01-24 05:09:21 +00:00
ip_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pim.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pim_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
raw_ip.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_asconf.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_asconf.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_auth.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_auth.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_bsd_addr.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_bsd_addr.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_cc_functions.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_constants.h Add constant for the PAD chunk as defined in RFC 4820. 2018-01-27 13:46:55 +00:00
sctp_crc32.c When adding support for sending SCTP packets containing an ABORT chunk 2017-12-26 12:35:02 +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_dtrace_declare.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_dtrace_define.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_header.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_indata.c Fix a bug related to fast retransmissions. 2018-01-16 21:58:38 +00:00
sctp_indata.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_input.c Cleaup, no functional change. 2017-12-13 17:11:57 +00:00
sctp_input.h Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_lock_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_os_bsd.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_output.c Cleaup, no functional change. 2017-12-13 17:11:57 +00:00
sctp_output.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_pcb.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_pcb.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_peeloff.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +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 Fix SPDX line as suggested by pfg 2017-11-24 19:38:59 +00:00
sctp_structs.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_syscalls.c Correct sysent flags for dynamically loaded syscalls. 2017-07-14 09:34:44 +00:00
sctp_sysctl.c Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_sysctl.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_timer.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_timer.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_uio.h Retire SCTP_WITH_NO_CSUM option. 2017-12-07 22:19:08 +00:00
sctp_usrreq.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
sctputil.c Don't provide a (meaningless) cmsg when proving a notification 2018-01-15 21:59:20 +00:00
sctputil.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
siftr.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp.h This is an implementation of the client side of TCP Fast Open (TFO) 2018-02-26 02:53:22 +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 When checking the TCP fast cookie length, conststently also check 2018-02-27 22:12:38 +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 sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_hostcache.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_hostcache.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_input.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_lro.c Update tcp_lro with tested bugfixes from Netflix and LLNW: 2018-03-09 00:08:43 +00:00
tcp_lro.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_offload.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_offload.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tcp_output.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_pcap.c The TCPPCAP debugging feature caches recently-used mbufs for use in 2016-07-06 16:17:13 +00:00
tcp_pcap.h The TCPPCAP debugging feature caches recently-used mbufs for use in 2016-07-06 16:17:13 +00:00
tcp_reass.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_sack.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_seq.h Update tcp_lro with tested bugfixes from Netflix and LLNW: 2018-03-09 00:08:43 +00:00
tcp_subr.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_syncache.c Set the inp_vflag consistently for accepted TCP/IPv6 connections when 2018-03-16 15:26:07 +00:00
tcp_syncache.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_timer.c Export tcp_always_keepalive for use by the Chelsio TOM module. 2018-01-30 23:01:37 +00:00
tcp_timer.h Export tcp_always_keepalive for use by the Chelsio TOM module. 2018-01-30 23:01:37 +00:00
tcp_timewait.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
tcp_usrreq.c Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcp_var.h Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option. 2018-02-26 03:03:41 +00:00
tcpip.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
toecore.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
toecore.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
udp.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udp_usrreq.c sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udp_var.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
udplite.h Add support for UDP-Lite protocol (RFC 3828) to IPv4 and IPv6 stacks. 2014-04-07 01:53:03 +00:00