A modification to TCP sockopt handling and the mod_cc(9) KPI which allows an application to get/set algorithm specific parameters on a per connection basis.
Proposed commit log message:
Add a new TCP socket option "TCP_CCALGOOPT" and associated infrastructure to allow applications to query or set congestion control algorithm specific parameters on a per socket basis using {get|set}sockopt():
- Extend the mod_cc(9) KPI with a new ctl_output() hook which provides the means for modules to expose parameters to applications if they so choose.
- Install algorithm specific header files in <netinet/cc/> in the system include directory so that applications can refer to #defines of socket option names available for a given algorithm.
- Implement support for the TCP_CCALGOOPT socket option by introducing a new struct "cc_sockopt" which acts as an opaque payload for the TCP level sockopt handling code in tcp_usrreq.c to then pass through to the module for handling via the module's ctl_output() hook.
- Update relevant documentation.
Reviewed by: XXX
Sponsored by: Netflix, Inc.
MFC after: 1 week (needs tweaking to not break ABI)