25 #ifndef GRPC_CORE_LIB_IOMGR_INTERNAL_ERRQUEUE_H
26 #define GRPC_CORE_LIB_IOMGR_INTERNAL_ERRQUEUE_H
32 #ifdef GRPC_POSIX_SOCKET_TCP
34 #include <sys/types.h>
37 #ifdef GRPC_LINUX_ERRQUEUE
38 #include <linux/errqueue.h>
39 #include <linux/net_tstamp.h>
40 #include <linux/netlink.h>
41 #include <sys/socket.h>
46 #ifdef GRPC_LINUX_ERRQUEUE
50 struct scm_timestamping {
51 struct timespec ts[3];
55 constexpr
int SCM_TSTAMP_SND = 0;
57 constexpr
int SCM_TSTAMP_SCHED = 1;
59 constexpr
int SCM_TSTAMP_ACK = 2;
62 #ifndef SCM_TIMESTAMPING_OPT_STATS
63 #define SCM_TIMESTAMPING_OPT_STATS 54
67 constexpr
uint32_t SOF_TIMESTAMPING_TX_SOFTWARE = 1
u << 1;
68 constexpr
uint32_t SOF_TIMESTAMPING_SOFTWARE = 1
u << 4;
69 constexpr
uint32_t SOF_TIMESTAMPING_OPT_ID = 1
u << 7;
70 constexpr
uint32_t SOF_TIMESTAMPING_TX_SCHED = 1
u << 8;
71 constexpr
uint32_t SOF_TIMESTAMPING_TX_ACK = 1
u << 9;
72 constexpr
uint32_t SOF_TIMESTAMPING_OPT_TSONLY = 1
u << 11;
73 constexpr
uint32_t SOF_TIMESTAMPING_OPT_STATS = 1
u << 12;
75 constexpr
uint32_t kTimestampingSocketOptions =
76 SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_OPT_ID |
77 SOF_TIMESTAMPING_OPT_TSONLY | SOF_TIMESTAMPING_OPT_STATS;
78 constexpr
uint32_t kTimestampingRecordingOptions =
79 SOF_TIMESTAMPING_TX_SCHED | SOF_TIMESTAMPING_TX_SOFTWARE |
80 SOF_TIMESTAMPING_TX_ACK;
87 TCP_NLA_SNDBUF_LIMITED,
88 TCP_NLA_DATA_SEGS_OUT,
89 TCP_NLA_TOTAL_RETRANS,
91 TCP_NLA_DELIVERY_RATE,
95 TCP_NLA_RECUR_RETRANS,
96 TCP_NLA_DELIVERY_RATE_APP_LMT,
101 TCP_NLA_DELIVERED_CE,
103 TCP_NLA_BYTES_RETRANS,
117 uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
118 uint8_t tcpi_delivery_rate_app_limited : 1;
180 bool KernelSupportsErrqueue();