prevent CNAME/PTR parsing from reading data past the response end
[musl] / include / netinet / tcp.h
index 584af2f..fad1d84 100644 (file)
@@ -38,6 +38,7 @@
 #define TCP_FASTOPEN_NO_COOKIE 34
 #define TCP_ZEROCOPY_RECEIVE   35
 #define TCP_INQ          36
+#define TCP_TX_DELAY     37
 
 #define TCP_CM_INQ TCP_INQ
 
@@ -72,6 +73,15 @@ enum {
        TCP_NLA_SND_SSTHRESH,
        TCP_NLA_DELIVERED,
        TCP_NLA_DELIVERED_CE,
+       TCP_NLA_BYTES_SENT,
+       TCP_NLA_BYTES_RETRANS,
+       TCP_NLA_DSACK_DUPS,
+       TCP_NLA_REORD_SEEN,
+       TCP_NLA_SRTT,
+       TCP_NLA_TIMEOUT_REHASH,
+       TCP_NLA_BYTES_NOTSENT,
+       TCP_NLA_EDT,
+       TCP_NLA_TTL,
 };
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
@@ -92,7 +102,6 @@ enum {
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <stdint.h>
-#include <endian.h>
 
 typedef uint32_t tcp_seq;
 
@@ -176,6 +185,13 @@ struct tcphdr {
 #define TCP_CA_Recovery                3
 #define TCP_CA_Loss            4
 
+enum tcp_fastopen_client_fail {
+       TFO_STATUS_UNSPEC,
+       TFO_COOKIE_UNAVAILABLE,
+       TFO_DATA_NOT_ACKED,
+       TFO_SYN_RETRANSMITTED,
+};
+
 struct tcp_info {
        uint8_t tcpi_state;
        uint8_t tcpi_ca_state;
@@ -184,7 +200,7 @@ struct tcp_info {
        uint8_t tcpi_backoff;
        uint8_t tcpi_options;
        uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-       uint8_t tcpi_delivery_rate_app_limited : 1;
+       uint8_t tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;
        uint32_t tcpi_rto;
        uint32_t tcpi_ato;
        uint32_t tcpi_snd_mss;
@@ -225,18 +241,25 @@ struct tcp_info {
        uint64_t tcpi_sndbuf_limited;
        uint32_t tcpi_delivered;
        uint32_t tcpi_delivered_ce;
+       uint64_t tcpi_bytes_sent;
+       uint64_t tcpi_bytes_retrans;
+       uint32_t tcpi_dsack_dups;
+       uint32_t tcpi_reord_seen;
+       uint32_t tcpi_rcv_ooopack;
+       uint32_t tcpi_snd_wnd;
 };
 
 #define TCP_MD5SIG_MAXKEYLEN    80
 
-#define TCP_MD5SIG_FLAG_PREFIX  1
+#define TCP_MD5SIG_FLAG_PREFIX  0x1
+#define TCP_MD5SIG_FLAG_IFINDEX 0x2
 
 struct tcp_md5sig {
        struct sockaddr_storage tcpm_addr;
        uint8_t tcpm_flags;
        uint8_t tcpm_prefixlen;
        uint16_t tcpm_keylen;
-       uint32_t __tcpm_pad;
+       int tcpm_ifindex;
        uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
 
@@ -260,10 +283,21 @@ struct tcp_repair_window {
        uint32_t rcv_wup;
 };
 
+#define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1
+
 struct tcp_zerocopy_receive {
        uint64_t address;
        uint32_t length;
        uint32_t recv_skip_hint;
+       uint32_t inq;
+       int32_t err;
+       uint64_t copybuf_address;
+       int32_t copybuf_len;
+       uint32_t flags;
+       uint64_t msg_control;
+       uint64_t msg_controllen;
+       uint32_t msg_flags;
+       uint32_t reserved;
 };
 
 #endif