On Tue, Sep 10, 2019 at 10:11 PM Thomas Higdon <t...@fb.com> wrote: > > ... > Because an additional 32-bit member in struct tcp_info would cause > a hole on 64-bit systems, we reserve a struct member '_reserved'. ... > diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h > index b3564f85a762..990a5bae3ac1 100644 > --- a/include/uapi/linux/tcp.h > +++ b/include/uapi/linux/tcp.h > @@ -270,6 +270,9 @@ struct tcp_info { > __u64 tcpi_bytes_retrans; /* RFC4898 tcpEStatsPerfOctetsRetrans */ > __u32 tcpi_dsack_dups; /* RFC4898 tcpEStatsStackDSACKDups */ > __u32 tcpi_reord_seen; /* reordering events seen */ > + > + __u32 _reserved; /* Reserved for future 32-bit member. */ > + __u32 tcpi_rcv_ooopack; /* Out-of-order packets received */ > }; >
Unfortunately we won't be able to use this hole, because the way the TCP_INFO works, The kernel will report the same size after the reserved field is renamed to something else. User space code is able to detect which fields are there or not based on what the kernel returns for the size of the structure.