opnsense-src/sys/netinet
Andrew Gallatin 2c6ff1d632 LRO: fix BPF filters for lagg in the hpts path
When in the hpts path, we need to handle BPF filters since aggregated
packets do not pass up the stack in the normal way. This is already
done for most interfaces, but lagg needs special handling. This is
because packets received via a lagg are passed up the stack with
the leaf interface's ifp stored in m_pkthdr.rcvif.

To handle lagg packets, we must identify that the passed rcvif is
currently a lagg port by checking for IFT_IEEE8023ADLAG or
IFT_INFINIBANDLAG (since lagg changes the lagg port's type to that
when an interface becomes a lagg member). Then we need to find the
lagg's ifp, and handle any BPF listeners on the lagg.

Note: It is possible to have multiple BPF filters, one on a member
port and one on the lagg itself. That is why we have to have 2
checks and 2 ETHER_BPF_MTAPs.

Reviewed by: jhb, rrs
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D36136
2022-08-13 17:33:36 -04:00
..
cc tcp cc: don't recurse on non recursive mutex 2022-04-05 13:52:36 +02:00
khelp khelp(9): Fix a typo in a source code comment 2022-04-02 14:10:59 +02:00
libalias libalias(3): Fix two typos in source code comments 2022-04-09 09:14:00 +02:00
netdump ddb: use _FLAGS command macros where appropriate 2022-07-05 11:56:55 -03:00
tcp_stacks tcp rack: simplify computation of rsm start and end 2022-08-02 12:45:56 +02:00
accf_data.c
accf_dns.c
accf_http.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
dccp.h
icmp6.h netinet6: Fix mbuf leak in NDP 2022-05-31 21:06:14 +00:00
icmp_var.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
if_ether.c netinet6: Fix mbuf leak in NDP 2022-05-31 21:06:14 +00:00
if_ether.h
igmp.c mbuf: remove PH_vt alias for mbuf packet header persistent shared data 2022-05-13 13:32:43 -07:00
igmp.h
igmp_var.h igmp: convert igmpstat to use PCPU counters 2020-11-08 18:49:23 +00:00
in.c protosw: change prototype for pr_control 2022-08-12 12:08:18 -07:00
in.h IPv4: experimental changes to allow net 0/8, 240/4, part of 127/8 2022-07-13 09:46:05 -05:00
in_cksum.c netinet: Implement in_cksum_skip() using m_apply() 2021-11-24 13:31:16 -05:00
in_debug.c Use network epoch to protect local IPv4 addresses hash. 2021-10-22 14:40:53 -07:00
in_fib.c routing: refactor private KPI 2022-08-01 10:02:12 +00:00
in_fib.h Refactor fib4/fib6 functions. 2020-11-29 13:41:49 +00:00
in_fib_algo.c Fix IPv4 fib bsearch4() lookup array construction. 2021-01-17 20:32:26 +00:00
in_fib_dxr.c fib_algo: shift / mask by constants in dxr_lookup() 2022-01-17 00:13:47 +01:00
in_gif.c Use network epoch to protect local IPv4 addresses hash. 2021-10-22 14:40:53 -07:00
in_jail.c sysent: Get rid of bogus sys/sysent.h include. 2022-05-28 20:52:17 +03:00
in_kdtrace.c Fix dtrace SDT probe tcp:::debug-input 2021-12-20 17:15:43 -09:00
in_kdtrace.h
in_mcast.c ifnet_byindex() actually requires network epoch 2021-12-06 09:32:31 -08:00
in_pcb.c inpcb: gather v4/v6 handling code into in_pcballoc() from protocols 2022-08-10 11:09:34 -07:00
in_pcb.h tcp: add sysctl interface for setting socket options 2022-02-09 12:24:41 +01:00
in_pcb_var.h in_pcb: use jenkins hash over the entire IPv6 (or IPv4) address 2021-12-26 10:47:28 -08:00
in_prot.c
in_proto.c domains: make domain_init() initialize only global state 2022-01-03 10:15:22 -08:00
in_rmx.c routing: add nhop(9) kpi. 2022-08-01 08:52:26 +00:00
in_rss.c in_rss: fix set but not used warning 2022-05-07 18:17:33 +02:00
in_rss.h Implement flowid calculation for outbound connections to balance 2020-10-18 17:15:47 +00:00
in_systm.h
in_var.h protosw: change prototype for pr_control 2022-08-12 12:08:18 -07:00
ip.h tcp: Prevent setting of ECN bits with setsockopt() 2022-02-03 20:06:42 +01:00
ip6.h net: Introduce IPV6_DSCP(), IPV6_ECN() and IPV6_TRAFFIC_CLASS() macros 2021-03-04 20:56:48 +01:00
ip_carp.c protosw: retire pr_output method 2022-08-11 09:19:37 -07:00
ip_carp.h
ip_divert.c inpcb: gather v4/v6 handling code into in_pcballoc() from protocols 2022-08-10 11:09:34 -07:00
ip_divert.h
ip_dummynet.h ipfw: use unsigned int for dummynet bandwidth 2021-08-19 10:48:53 +02:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c IPv4: fix redirect sending conditions 2021-12-26 15:33:48 +00:00
ip_fw.h ipfw: add support radix tables and table lookup for MAC addresses 2022-06-04 19:12:29 +03:00
ip_gre.c udp: allow udp_tun_func_t() to indicate it did not eat the packet 2022-04-12 10:04:59 +02:00
ip_icmp.c netinet: do not broadcast PRC_REDIRECT_HOST on ICMP redirect 2022-08-12 08:31:29 -07:00
ip_icmp.h
ip_id.c
ip_input.c sockbuf: merge two versions of sbcreatecontrol() into one 2022-05-17 10:10:42 -07:00
ip_mroute.c IPv4 multicast: fix LOR in shutdown path 2022-04-11 14:51:16 -05:00
ip_mroute.h IPv4 multicast: fix netstat -g 2022-03-22 07:38:01 -05:00
ip_options.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ip_options.h
ip_output.c Fix ipfw fwd that doesn't work in some cases 2022-04-11 14:16:43 +03:00
ip_reass.c ip_reass: do less work in ipreass_slowtimo if possible 2021-08-14 18:50:12 +02:00
ip_var.h raw ip: merge rip_output() into rip_send() 2022-08-11 09:19:37 -07:00
pim.h
pim_var.h
raw_ip.c raw ip: merge rip_output() into rip_send() 2022-08-11 09:19:37 -07:00
sctp.h Improve the handling of cookie life times. 2020-10-16 10:44:48 +00:00
sctp_asconf.c sctp: improve consistency 2022-05-14 06:28:19 +02:00
sctp_asconf.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_auth.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_auth.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_bsd_addr.c sctp: Remove unused variable. 2022-04-12 14:58:59 -07:00
sctp_bsd_addr.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_cc_functions.c sctp: plug set-but-not-used vars 2022-04-19 12:45:57 +00:00
sctp_constants.h sctp: improve handling of sctp inpcb flags 2022-06-04 07:38:19 +02:00
sctp_crc32.c sctp: fix a signed/unsigned mismatch. 2022-02-17 22:45:57 +01:00
sctp_crc32.h sctp: fix a signed/unsigned mismatch. 2022-02-17 22:45:57 +01:00
sctp_header.h Whitespace changes. 2020-09-24 12:26:06 +00:00
sctp_indata.c sctp: tweak panic message 2022-08-03 17:28:15 +02:00
sctp_indata.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_input.c sctp: improve handling of sctp inpcb flags 2022-06-04 07:38:19 +02:00
sctp_input.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_kdtrace.c
sctp_kdtrace.h
sctp_lock_bsd.h sctp: get rid of stcb send lock 2022-03-29 01:50:17 +02:00
sctp_module.c protocols: init with standard SYSINIT(9) or VNET_SYSINIT 2022-01-03 10:15:21 -08:00
sctp_os.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_os_bsd.h sctp: use sb_avail() when accessing sb_acc for reading 2022-05-14 12:38:43 +02:00
sctp_output.c sctp: improve handling of send() calls with no user data` 2022-08-08 12:53:42 +02:00
sctp_output.h sctp: cleanup the SCTP_MAXSEG socket option. 2021-12-27 23:40:31 +01:00
sctp_pcb.c Adjust sctp_drain() definition to avoid clang 15 warning 2022-07-26 19:59:55 +02:00
sctp_pcb.h sctp: improve handling of sctp inpcb flags 2022-06-04 07:38:19 +02:00
sctp_peeloff.c sctp: Remove an unused sctp_inpcb field 2021-09-07 11:19:29 -04:00
sctp_peeloff.h
sctp_ss_functions.c sctp: fix typos 2022-03-29 21:09:51 +02:00
sctp_structs.h sctp: cleanup, no functional change 2022-06-08 22:35:14 +02:00
sctp_syscalls.c Convert remaining cap_rights_init users to cap_rights_init_one 2021-01-12 13:16:10 +00:00
sctp_sysctl.c Adjust sctp_init_sysctls() definition to avoid clang 15 warning 2022-07-25 22:08:35 +02:00
sctp_sysctl.h sctp: fix typos 2022-03-29 21:09:51 +02:00
sctp_timer.c Fix unused variable warning in sctp_timer.c 2022-07-25 22:08:28 +02:00
sctp_timer.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
sctp_uio.h sctp: get rid of stcb send lock 2022-03-29 01:50:17 +02:00
sctp_usrreq.c sctp: add KASSERTs to ensure correct handling of listeners 2022-06-27 19:04:45 +02:00
sctp_var.h sctp: more sb_cc related cleanups 2022-05-23 16:09:23 +02:00
sctputil.c sctp: improve handling of sctp inpcb flags 2022-06-04 07:38:19 +02:00
sctputil.h sctp: more sb_cc related cleanups 2022-05-23 16:09:23 +02:00
siftr.c siftr: expose t_flags2 in siftr output 2022-04-07 10:17:09 +01:00
tcp.h tcp: LRO code to deal with all 12 TCP header flags 2022-02-01 18:41:36 +01:00
tcp_accounting.h This brings into sync FreeBSD with the netflix versions of rack and bbr. 2021-05-06 11:22:26 -04:00
tcp_debug.c tcp: Access all 12 TCP header flags via inline function 2022-02-03 16:21:58 +01:00
tcp_debug.h inet: remove tcp_debug from netinet/tcp_debug.h 2021-11-01 23:10:30 +00:00
tcp_ecn.c tcp: Restore correct ECT marking behavior on SACK retransmissions 2022-02-25 20:05:32 +01:00
tcp_ecn.h tcp: Restore correct ECT marking behavior on SACK retransmissions 2022-02-25 20:05:32 +01:00
tcp_fastopen.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
tcp_fastopen.h Use stub inline functions for no-op versions of tcp_fastopen*(). 2022-04-08 17:25:13 -07:00
tcp_fsm.h tcp: Remove unused v6 state definitions 2021-08-27 08:31:32 -04:00
tcp_hostcache.c tcp(4): Fix a typo in a sysctl description 2021-11-30 07:17:30 +01:00
tcp_hpts.c tcp - hpts timing is off when we are above 1200 connections. 2022-04-14 16:04:08 -04:00
tcp_hpts.h tcp - hpts timing is off when we are above 1200 connections. 2022-04-14 16:04:08 -04:00
tcp_input.c tcp: address a wire level race with 2 ACKs at the end of TCP handshake 2022-08-10 07:32:37 -07:00
tcp_log_buf.c prometheus_sysctl_exporter: fix metric aliasing 2022-04-19 06:56:39 -06:00
tcp_log_buf.h tcp: remove delayed drop KPI 2021-12-26 08:48:24 -08:00
tcp_lro.c LRO: fix BPF filters for lagg in the hpts path 2022-08-13 17:33:36 -04:00
tcp_lro.h tcp: Avoid conditionally defined fields in union lro_address 2022-02-10 15:39:58 -05:00
tcp_offload.c Path MTU discovery hooks for offloaded TCP connections. 2021-04-21 13:00:16 -07:00
tcp_offload.h Path MTU discovery hooks for offloaded TCP connections. 2021-04-21 13:00:16 -07:00
tcp_output.c tcp: improve BBLog for output events when using the FreeBSD stack 2022-08-08 13:07:10 +02:00
tcp_pcap.c tcp: fix TCPPCAP for kernels enabling VNET 2022-06-15 23:28:54 +02:00
tcp_pcap.h
tcp_ratelimit.c tcp_ratelimit: Handle some edge cases with TLS + RL send tags. 2022-01-31 16:40:04 -08:00
tcp_ratelimit.h This takes Warners suggested approach to making it so that 2021-05-07 17:32:32 -04:00
tcp_reass.c tcp: Access all 12 TCP header flags via inline function 2022-02-03 16:21:58 +01:00
tcp_sack.c tcp: exclude KASSERTS when rescue retransmissions are in play. 2022-06-08 14:51:31 +02:00
tcp_seq.h tcp: Correctly compute the retransmit length for all 64-bit platforms. 2022-06-03 10:49:17 +02:00
tcp_stats.c
tcp_subr.c sockets: use only soref()/sorele() as socket reference count 2022-07-04 12:40:51 -07:00
tcp_syncache.c tcp: utilize new solisten_clone() and solisten_enqueue() 2022-08-10 11:09:34 -07:00
tcp_syncache.h tcp: Add/update AccECN related statistics and numbers 2022-02-10 00:21:31 +01:00
tcp_timer.c netinet: simplify RSS ifdef statements 2022-02-07 19:22:03 -07:00
tcp_timer.h tcp: virtualise net.inet.tcp.msl sysctl. 2021-12-26 14:56:04 +00:00
tcp_timewait.c sockets: use only soref()/sorele() as socket reference count 2022-07-04 12:40:51 -07:00
tcp_usrreq.c tcp: utilize new solisten_clone() and solisten_enqueue() 2022-08-10 11:09:34 -07:00
tcp_var.h tcp: use a TCP flag to check if connection has been close(2)d 2022-07-04 12:40:51 -07:00
tcpip.h
toecore.c tcp: TCP output method can request tcp_drop 2021-12-26 08:48:19 -08:00
toecore.h Path MTU discovery hooks for offloaded TCP connections. 2021-04-21 13:00:16 -07:00
udp.h headers: make a few more headers self-contained 2022-01-03 10:12:30 +01:00
udp_usrreq.c inpcb: gather v4/v6 handling code into in_pcballoc() from protocols 2022-08-10 11:09:34 -07:00
udp_var.h udp: allow udp_tun_func_t() to indicate it did not eat the packet 2022-04-12 10:04:59 +02:00
udplite.h