Generate the table of all socket options in FreeBSD. This only works against the latest FreeBSD, so we have to commit this table for now. Once the supporting machinery is merged to the stable branches, we can move to generating it as a build artifact.
This uses BSD-2-Clause because it's derived from BSD-2-Clause material. It's likely in the public domain, though, since it's a generated file. Signed-off-by: Warner Losh <[email protected]> --- bsd-user/freebsd/os-sockopt.h | 316 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) diff --git a/bsd-user/freebsd/os-sockopt.h b/bsd-user/freebsd/os-sockopt.h new file mode 100644 index 0000000000..2f984cf8e3 --- /dev/null +++ b/bsd-user/freebsd/os-sockopt.h @@ -0,0 +1,316 @@ +/* Auto-generated by gen_sockopt.sh -- do not edit */ +/* SPDX-License-Identifier: BSD-2-Clause */ +#pragma once + +#define SOCK_LEVEL_NONE -1234 + +#include <sys/socket.h> +#include <sys/un.h> +#include <netinet/in.h> +#include <netinet/tcp.h> +#include <netinet/udp.h> + +enum sockopt_type { + SOCKOPT_TYPE_NONE = 0, + SOCKOPT_TYPE___MSFILTERREQ, + SOCKOPT_TYPE_ACCEPT_FILTER_ARG, + SOCKOPT_TYPE_BOOL, + SOCKOPT_TYPE_DUMP, + SOCKOPT_TYPE_ICMP6_FILTER, + SOCKOPT_TYPE_IN6_PKTINFO, + SOCKOPT_TYPE_INT, + SOCKOPT_TYPE_IP_MREQ_SOURCE, + SOCKOPT_TYPE_IP_MREQ, + SOCKOPT_TYPE_IP_OPTS, + SOCKOPT_TYPE_IP6_DEST, + SOCKOPT_TYPE_IP6_HBH, + SOCKOPT_TYPE_IP6_RTHDR, + SOCKOPT_TYPE_IPV6_MREQ, + SOCKOPT_TYPE_LINGER, + SOCKOPT_TYPE_SADB_X_POLICY, + SOCKOPT_TYPE_SOCKADDR, + SOCKOPT_TYPE_SPLICE, + SOCKOPT_TYPE_TCP_FASTOPEN, + SOCKOPT_TYPE_TCP_FUNCTION_SET, + SOCKOPT_TYPE_TCP_INFO, + SOCKOPT_TYPE_TCP_PERF_INFO, + SOCKOPT_TYPE_TIMEVAL, + SOCKOPT_TYPE_U_CHAR, + SOCKOPT_TYPE_U_INT, + SOCKOPT_TYPE_UINT32_T, + SOCKOPT_TYPE_UINT64_T, +}; + +struct sockopt_entry { + int level; + int optname; + enum sockopt_type type[5]; +}; +static struct sockopt_entry sol_socket[] = { + { SOL_SOCKET , SO_DEBUG , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_ACCEPTCONN , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_REUSEADDR , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_KEEPALIVE , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_DONTROUTE , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_BROADCAST , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_USELOOPBACK , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_LINGER , { SOCKOPT_TYPE_LINGER, } }, + { SOL_SOCKET , SO_OOBINLINE , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_REUSEPORT , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_TIMESTAMP , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_NOSIGPIPE , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_ACCEPTFILTER , { SOCKOPT_TYPE_ACCEPT_FILTER_ARG, } }, + { SOL_SOCKET , SO_BINTIME , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_NO_OFFLOAD , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_NO_DDP , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_REUSEPORT_LB , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_RERROR , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_SNDBUF , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_RCVBUF , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_SNDLOWAT , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_RCVLOWAT , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_SNDTIMEO , { SOCKOPT_TYPE_TIMEVAL, } }, + { SOL_SOCKET , SO_RCVTIMEO , { SOCKOPT_TYPE_TIMEVAL, } }, + { SOL_SOCKET , SO_ERROR , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_TYPE , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_LISTENQLIMIT , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_LISTENQLEN , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_LISTENINCQLEN , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_FIB , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_USER_COOKIE , { SOCKOPT_TYPE_UINT32_T, } }, + { SOL_SOCKET , SO_PROTOCOL , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_TS_CLOCK , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_MAX_PACING_RATE , { SOCKOPT_TYPE_UINT32_T, } }, + { SOL_SOCKET , SO_DOMAIN , { SOCKOPT_TYPE_INT, } }, + { SOL_SOCKET , SO_SPLICE , { SOCKOPT_TYPE_SPLICE, } }, + { SOL_SOCKET , NET_RT_DUMP , { SOCKOPT_TYPE_DUMP, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_entry ipproto_ip[] = { + { IPPROTO_IP , IP_HDRINCL , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_TOS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_TTL , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RECVOPTS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_RECVRETOPTS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_RECVDSTADDR , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_RETOPTS , { SOCKOPT_TYPE_IP_OPTS, } }, + { IPPROTO_IP , IP_MULTICAST_TTL , { SOCKOPT_TYPE_U_INT, SOCKOPT_TYPE_U_CHAR, } }, + { IPPROTO_IP , IP_MULTICAST_LOOP , { SOCKOPT_TYPE_U_INT, SOCKOPT_TYPE_U_CHAR, } }, + { IPPROTO_IP , IP_ADD_MEMBERSHIP , { SOCKOPT_TYPE_IP_MREQ, } }, + { IPPROTO_IP , IP_DROP_MEMBERSHIP , { SOCKOPT_TYPE_IP_MREQ, } }, + { IPPROTO_IP , IP_MULTICAST_VIF , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RSVP_ON , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RSVP_OFF , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RSVP_VIF_ON , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RSVP_VIF_OFF , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_PORTRANGE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RECVIF , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_IPSEC_POLICY , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_ONESBCAST , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_BINDANY , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_ORIGDSTADDR , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_RECVTTL , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_MINTTL , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_DONTFRAG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RECVTOS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_ADD_SOURCE_MEMBERSHIP, { SOCKOPT_TYPE_IP_MREQ_SOURCE, } }, + { IPPROTO_IP , IP_DROP_SOURCE_MEMBERSHIP, { SOCKOPT_TYPE_IP_MREQ_SOURCE, } }, + { IPPROTO_IP , IP_BLOCK_SOURCE , { SOCKOPT_TYPE_IP_MREQ_SOURCE, } }, + { IPPROTO_IP , IP_UNBLOCK_SOURCE , { SOCKOPT_TYPE_IP_MREQ_SOURCE, } }, + { IPPROTO_IP , IP_MSFILTER , { SOCKOPT_TYPE___MSFILTERREQ, } }, + { IPPROTO_IP , IP_VLAN_PCP , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_FLOWID , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_FLOWTYPE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RSSBUCKETID , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IP , IP_RECVFLOWID , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IP , IP_RECVRSSBUCKETID , { SOCKOPT_TYPE_BOOL, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_entry ipproto_ipv6[] = { + { IPPROTO_IPV6, IPV6_UNICAST_HOPS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_MULTICAST_IF , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_IPV6, IPV6_MULTICAST_HOPS , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_IPV6, IPV6_MULTICAST_LOOP , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_IPV6, IPV6_JOIN_GROUP , { SOCKOPT_TYPE_IPV6_MREQ, } }, + { IPPROTO_IPV6, IPV6_LEAVE_GROUP , { SOCKOPT_TYPE_IPV6_MREQ, } }, + { IPPROTO_IPV6, IPV6_PORTRANGE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, ICMP6_FILTER , { SOCKOPT_TYPE_ICMP6_FILTER, } }, + { IPPROTO_IPV6, IPV6_CHECKSUM , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_V6ONLY , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_IPSEC_POLICY , { SOCKOPT_TYPE_SADB_X_POLICY, } }, + { IPPROTO_IPV6, IPV6_RTHDRDSTOPTS , { SOCKOPT_TYPE_IP6_DEST, } }, + { IPPROTO_IPV6, IPV6_RECVPKTINFO , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVHOPLIMIT , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVRTHDR , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVHOPOPTS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVDSTOPTS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_USE_MIN_MTU , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVPATHMTU , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_PKTINFO , { SOCKOPT_TYPE_IN6_PKTINFO, } }, + { IPPROTO_IPV6, IPV6_HOPLIMIT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_NEXTHOP , { SOCKOPT_TYPE_SOCKADDR, } }, + { IPPROTO_IPV6, IPV6_HOPOPTS , { SOCKOPT_TYPE_IP6_HBH, } }, + { IPPROTO_IPV6, IPV6_DSTOPTS , { SOCKOPT_TYPE_IP6_DEST, } }, + { IPPROTO_IPV6, IPV6_RTHDR , { SOCKOPT_TYPE_IP6_RTHDR, } }, + { IPPROTO_IPV6, IPV6_RECVTCLASS , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_AUTOFLOWLABEL , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_TCLASS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_DONTFRAG , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_BINDANY , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_FLOWID , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_FLOWTYPE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_RSSBUCKETID , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_IPV6, IPV6_RECVFLOWID , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_RECVRSSBUCKETID, { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_ORIGDSTADDR , { SOCKOPT_TYPE_BOOL, } }, + { IPPROTO_IPV6, IPV6_VLAN_PCP , { SOCKOPT_TYPE_INT, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_entry ipproto_tcp[] = { + { IPPROTO_TCP , TCP_NODELAY , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_MAXSEG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_NOPUSH , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_NOOPT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_MD5SIG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_INFO , { SOCKOPT_TYPE_TCP_INFO, } }, + { IPPROTO_TCP , TCP_LOG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_TXTLS_MODE , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_RXTLS_MODE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_IWND_NB , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_IWND_NSEG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_LOGID_CNT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_USER_LOG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_MAXUNACKTIME , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_IDLE_REDUCE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_REMOTE_UDP_ENCAPS_PORT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_DELACK , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_FIN_IS_RST , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_LOG_LIMIT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_SHARED_CWND_ALLOWED, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_PROC_ACCOUNTING , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_USE_CMP_ACKS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_PERF_INFO , { SOCKOPT_TYPE_TCP_PERF_INFO, } }, + { IPPROTO_TCP , TCP_KEEPINIT , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_KEEPIDLE , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_KEEPINTVL , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_KEEPCNT , { SOCKOPT_TYPE_U_INT, } }, + { IPPROTO_TCP , TCP_FASTOPEN , { SOCKOPT_TYPE_TCP_FASTOPEN, } }, + { IPPROTO_TCP , TCP_FUNCTION_BLK , { SOCKOPT_TYPE_TCP_FUNCTION_SET, } }, + { IPPROTO_TCP , TCP_FUNCTION_ALIAS , { SOCKOPT_TYPE_TCP_FUNCTION_SET, } }, + { IPPROTO_TCP , TCP_REUSPORT_LB_NUMA, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_MBUF_QUEUE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_TLP_REDUCE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_MAX_SEG, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_ALWAYS, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PRR_SENDALOT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_MIN_TO , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_EARLY_SEG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_REORD_THRESH, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_REORD_FADE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_TLP_THRESH , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PKT_DELAY , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_IWINTSO , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_STARTUP_PG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_DRAIN_PG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PROBE_RTT_INT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_STARTUP_LOSS_EXIT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_TSLIMITS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_OH , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_USEDEL_RATE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_MIN_RTO , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_MAX_RTO , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_ALGORITHM , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_PER_SEC, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_DEL_TAR, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_SEG_MAX, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_SEG_MIN, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PACE_CROSS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_TLP_USE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_TMR_PACE_OH , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_DO_DETECTION, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_RACK_RTT_USE, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_RETRAN_WTSO , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_DATA_AFTER_CLOSE, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PROBE_RTT_GAIN, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_PROBE_RTT_LEN, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_SEND_IWND_IN_TSO, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_USE_RACK_RR , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_HDWR_PACE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_UTTER_MAX_TSO, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_EXTRA_STATE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_FLOOR_MIN_TSO, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_MIN_TOPACEOUT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_TSTMP_RAISES, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_POLICER_DETECT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_BBR_RACK_INIT_RATE, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_RR_CONF , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_GP_INCREASE_CA, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_GP_INCREASE_SS, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_GP_INCREASE_REC, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_FORCE_MSEG , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_RATE_CA, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_RATE_SS, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_RATE_REC, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_NO_PRR , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_NONRXT_CFG_RATE, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_SHARED_CWND_ENABLE, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_TIMELY_DYN_ADJ , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_NO_PUSH_AT_MAX, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_TO_FILL, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_SHARED_CWND_TIME_LIMIT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PROFILE , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_HDWR_RATE_CAP , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_PACING_RATE_CAP , { SOCKOPT_TYPE_UINT64_T, } }, + { IPPROTO_TCP , TCP_HDWR_UP_ONLY , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_ABC_VAL , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_REC_ABC_VAL , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_MEASURE_CNT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_DEFER_OPTIONS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACING_BETA, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACING_BETA_ECN, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_TIMER_SLOP , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_DSACK_OPT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_ENABLE_HYSTART, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_SET_RXT_OPTIONS, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_HI_BETA , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_SPLIT_LIMIT, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACING_DIVISOR, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_PACE_MIN_SEG, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_RACK_DGP_IN_REC , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_PACING_DND , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_SS_EEXIT , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_DGP_UPPER_BOUNDS, { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_NO_TIMELY , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_HONOR_HPTS_MIN , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_REC_IS_DYN , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_SIDECHAN_DIS , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_FILLCW_RATE_CAP , { SOCKOPT_TYPE_INT, } }, + { IPPROTO_TCP , TCP_GP_USE_LTBW , { SOCKOPT_TYPE_INT, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_entry ipproto_udp[] = { + { IPPROTO_UDP , UDP_ENCAP , { SOCKOPT_TYPE_INT, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_entry sol_local[] = { + { SOL_LOCAL , LOCAL_CREDS , { SOCKOPT_TYPE_INT, } }, + { SOL_LOCAL , LOCAL_CREDS_PERSISTENT, { SOCKOPT_TYPE_INT, } }, + { SOCK_LEVEL_NONE } +}; + +static struct sockopt_cache { + int level; + struct sockopt_entry *entry; +} so_cache[] = { + { SOL_SOCKET, sol_socket }, + { IPPROTO_IP, ipproto_ip }, + { IPPROTO_IPV6, ipproto_ipv6 }, + { IPPROTO_TCP, ipproto_tcp }, + { IPPROTO_UDP, ipproto_udp }, + { SOL_LOCAL, sol_local }, +}; -- 2.52.0
