freebsd-skq/sys/netinet
adrian 627c6869c3 Implement the first stage of multi-bind listen sockets and RSS socket
awareness.

* Introduce IP_BINDMULTI - indicating that it's okay to bind multiple
  sockets on the same bind details.

  Although the PCB code has been taught about this (see below) this patch
  doesn't introduce the rest of the PCB changes necessary to distribute
  lookups among multiple PCB entries in the global wildcard table.

* Introduce IP_RSS_LISTEN_BUCKET - placing an listen socket into the
  given RSS bucket (and thus a single PCBGROUP hash.)

* Modify the PCB add path to be aware of IP_BINDMULTI:
  + Only allow further PCB entries to be added if the owner credentials
    and IP_BINDMULTI has been specified.  Ie, only allow further
    IP_BINDMULTI sockets to appear if the first bind() was IP_BINDMULTI.

* Teach the PCBGROUP code about IP_RSS_LISTE_BUCKET marked PCB entries.
  Instead of using the wildcard logic and hashing, these sockets are
  simply placed into the PCBGROUP and _not_ in the wildcard hash.

* When doing a PCBGROUP lookup, also do a wildcard match as well.
  This allows for an RSS bucket PCB entry to appear in a PCBGROUP
  rather than having to exist in the wildcard list.

Tested:

* TCP IPv4 server testing with igb(4)
* TCP IPv4 server testing with ix(4)

TODO:

* The pcbgroup lookup code duplicated the wildcard and wildcard-PCB
  logic.  This could be refactored into a single function.

* This doesn't yet work for IPv6 (The PCBGROUP code in netinet6/ doesn't
  yet know about this); nor does it yet fully work for UDP.
2014-07-10 03:10:56 +00:00
..
cc Fixup for r261590 (vnet sysctl handlers cleanup). 2014-02-09 08:13:17 +00:00
khelp The TCP PAWS fix for kernels with fast tick rates (r231767) changed the TCP 2012-08-17 01:49:51 +00:00
libalias It'll be okay to use LibAliasDetachHandlers() here, relying 2013-12-25 09:43:51 +00:00
accf_data.c
accf_dns.c
accf_http.c
cc.h
icmp6.h Migrate structs in6_ifstat and icmp6_ifstat to PCPU counters. 2013-07-09 09:59:46 +00:00
icmp_var.h Remove more constants related to static sysctl nodes. The MAXID constants 2014-02-25 18:44:33 +00:00
if_atm.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_atm.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_ether.c Correct ARP update handling when the routes for network interfaces are 2014-03-26 22:46:03 +00:00
if_ether.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
igmp_var.h Remove more constants related to static sysctl nodes. The MAXID constants 2014-02-25 18:44:33 +00:00
igmp.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
igmp.h
in_cksum.c nobody uses this file except the userspace ipfw code, but the cast 2012-07-31 08:04:49 +00:00
in_debug.c
in_gif.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
in_gif.h
in_kdtrace.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
in_kdtrace.h dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
in_mcast.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
in_pcb.c Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
in_pcb.h Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
in_pcbgroup.c Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
in_proto.c Add support for UDP-Lite protocol (RFC 3828) to IPv4 and IPv6 stacks. 2014-04-07 01:53:03 +00:00
in_rmx.c Fix panic on IPv4 address removal introduced in r265279. 2014-05-03 20:22:13 +00:00
in_rss.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
in_rss.h Add another RSS method to query the indirection table entries. 2014-06-26 02:49:51 +00:00
in_systm.h
in_var.h in_ifadown() can be void. 2013-11-01 10:29:10 +00:00
in.c Fix a panic when removing an IP address from an interface, if the same address 2014-04-29 14:46:45 +00:00
in.h Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
ip6.h Use IP6STAT_INC/IP6STAT_DEC macros to update ip6 stats. 2013-04-09 07:11:22 +00:00
ip_carp.c Improve logging of send errors, reporting error code and interface. 2014-02-22 19:20:40 +00:00
ip_carp.h Migrate struct carpstats to PCPU counters. 2013-07-09 10:02:51 +00:00
ip_divert.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ip_divert.h
ip_dummynet.h ECN marking implenetation for dummynet. 2014-06-01 07:28:24 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
ip_fw.h Fix wrong formatting of 0.0.0.0/X table records in ipfw(8). 2014-05-17 13:45:03 +00:00
ip_gre.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
ip_gre.h
ip_icmp.c Don't copy the MF flag from original IP header to ICMP error message. 2014-03-31 13:00:49 +00:00
ip_icmp.h
ip_id.c Back out r249318, r249320 and r249327 due to a heisenbug most 2013-05-06 16:42:18 +00:00
ip_input.c Fix checksum computation. Previously it didn't include carry. 2014-05-13 05:07:03 +00:00
ip_ipsec.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
ip_ipsec.h
ip_mroute.c Fix fallout from r241923. Calculate length of payload in 2014-01-22 10:57:42 +00:00
ip_mroute.h Migrate structs arpstat, icmpstat, mrtstat, pimstat and udpstat to PCPU 2013-07-09 09:50:15 +00:00
ip_options.c Fix unintended KBI change from r264905. Add _fib versions of 2014-05-29 21:03:49 +00:00
ip_options.h In ip_stripoptions(): 2012-10-12 09:24:24 +00:00
ip_output.c Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
ip_var.h Since both netinet/ and netinet6/ call into netipsec/ and netpfil/, 2014-03-12 14:29:08 +00:00
ip.h
pim_var.h Remove more constants related to static sysctl nodes. The MAXID constants 2014-02-25 18:44:33 +00:00
pim.h
raw_ip.c Fix jailed raw sockets not setting the correct source address by 2014-04-24 12:52:31 +00:00
sctp_asconf.c Honor jails for unbound SCTP sockets when selecting source addresses, 2014-06-20 13:26:49 +00:00
sctp_asconf.h
sctp_auth.c Initialize SCTP cmsg's and notification's buffer before copying out 2014-07-08 21:54:27 +00:00
sctp_auth.h Get rid of the artification limitation enforced by 2013-11-07 18:50:11 +00:00
sctp_bsd_addr.c In 2013-11-30 12:51:19 +00:00
sctp_bsd_addr.h
sctp_cc_functions.c Get rid of a gcc'ism. 2012-09-06 07:03:56 +00:00
sctp_constants.h Use SCTP_OVER_UDP_TUNNELING_PORT more consistently. 2014-03-29 20:21:36 +00:00
sctp_crc32.c
sctp_crc32.h
sctp_dtrace_declare.h - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
sctp_dtrace_define.h dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
sctp_header.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_indata.c Initialize SCTP cmsg's and notification's buffer before copying out 2014-07-08 21:54:27 +00:00
sctp_indata.h Code cleanups. 2013-07-03 18:48:43 +00:00
sctp_input.c * Provide information in error causes in ASCII instead of 2014-03-16 12:32:16 +00:00
sctp_input.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_lock_bsd.h
sctp_os_bsd.h - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
sctp_os.h
sctp_output.c Honor jails for unbound SCTP sockets when selecting source addresses, 2014-06-20 13:26:49 +00:00
sctp_output.h Cleanup the handling of address scopes. Announce in the INIT/INIT-ACK 2013-02-09 17:26:14 +00:00
sctp_pcb.c Honor jails for unbound SCTP sockets when selecting source addresses, 2014-06-20 13:26:49 +00:00
sctp_pcb.h Make the features a 64-bit value instead of 32-bit. 2013-08-12 13:52:15 +00:00
sctp_peeloff.c Add support for sctp_peeloff() also in the front states of the 2012-11-26 16:44:03 +00:00
sctp_peeloff.h Remove unused function. 2012-11-25 14:25:08 +00:00
sctp_ss_functions.c
sctp_structs.h Remove redundant field pr_sctp_on. 2013-09-03 19:31:59 +00:00
sctp_sysctl.c Honor jails for unbound SCTP sockets when selecting source addresses, 2014-06-20 13:26:49 +00:00
sctp_sysctl.h Use SCTP_OVER_UDP_TUNNELING_PORT more consistently. 2014-03-29 20:21:36 +00:00
sctp_timer.c * Provide information in error causes in ASCII instead of 2014-03-16 12:32:16 +00:00
sctp_timer.h
sctp_uio.h All changes affect only SCTP-AUTH: 2013-09-02 22:48:41 +00:00
sctp_usrreq.c Fix a bug which incorrectly allowed two listening SCTP sockets on 2014-06-20 20:17:39 +00:00
sctp_var.h Whitespace changes due to upstream integration of SCTP changes in the 2012-10-29 20:47:32 +00:00
sctp.h Send the correct error cause, when a DATA chunk with no user data 2014-04-19 19:21:06 +00:00
sctputil.c Initialize SCTP cmsg's and notification's buffer before copying out 2014-07-08 21:54:27 +00:00
sctputil.h Send the correct error cause, when a DATA chunk with no user data 2014-04-19 19:21:06 +00:00
siftr.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
tcp_debug.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
tcp_hostcache.h
tcp_input.c 2014-07-02 22:04:14 +00:00
tcp_lro.c Merge r254336 from user/np/cxl_tuning. 2013-08-28 23:00:34 +00:00
tcp_lro.h Merge r254336 from user/np/cxl_tuning. 2013-08-28 23:00:34 +00:00
tcp_offload.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
tcp_offload.h
tcp_output.c Fix a typo. 2014-07-03 23:12:43 +00:00
tcp_reass.c - Remove net.inet.tcp.reass.overflows sysctl. It counts exactly 2014-05-06 00:00:07 +00:00
tcp_sack.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
tcp_seq.h
tcp_subr.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
tcp_syncache.c syncache_lookup() is a file local function. Make it static and 2014-05-24 15:03:36 +00:00
tcp_syncache.h Introduce spares in the TCP syncache and timewait structures 2013-09-21 10:01:51 +00:00
tcp_timer.c If we're doing RSS then ensure the TCP timer selection uses the multi-CPU 2014-06-30 04:26:29 +00:00
tcp_timer.h Currently, the TCP slow timer can starve TCP input processing while it 2014-04-10 18:15:35 +00:00
tcp_timewait.c While PAWS is disabled, there are no consumers for the tcp options 2014-05-30 22:34:06 +00:00
tcp_usrreq.c The FreeBSD-SA-14:08.tcp was a lesson on not doing acrobatics with 2014-05-04 23:25:32 +00:00
tcp_var.h Make tcp_twrespond() file local private; this removes it from the 2014-05-24 14:01:18 +00:00
tcp.h Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +00:00
tcpip.h
toecore.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
toecore.h Correctly handle the case where an inp has already been dropped by the time 2012-08-21 18:09:33 +00:00
toeplitz.c Several years after initial development, merge prototype support for 2014-03-15 00:57:50 +00:00
toeplitz.h Several years after initial development, merge prototype support for 2014-03-15 00:57:50 +00:00
udp_usrreq.c Disable TX checksum offload for UDP-Lite completely. It wasn't used for 2014-05-12 09:46:48 +00:00
udp_var.h Fix build UDP-Lite with VIMAGE enabled when building with gcc. 2014-06-03 01:30:32 +00:00
udp.h Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +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