On Sat, 2020-06-20 at 17:44 -0700, David Miller wrote:
From: Paolo Abeni <pabeni(a)redhat.com>
Date: Fri, 19 Jun 2020 12:54:40 +0200
> IPPROTO_MPTCP value (0x106) can't be represented using the current sock
> diag uAPI, as the 'sdiag_protocol' field is 8 bits wide.
> To implement diag support for MPTCP socket, we will likely need a
> 'inet_diag_req_v3' with a wider 'sdiag_protocol'
> field. inet_diag_handler_cmd() could detect the version of
> the inet_diag_req_v* provided by user-space checking nlmsg_len() and
> convert _v2 reqs to _v3.
> This change will be a bit invasive, as all in kernel diag users will
> then operate only on 'inet_diag_req_v3' (many functions' signature
> change required), but the code-related changes will be encapsulated
> by inet_diag_handler_cmd().
Another way to extend the size of a field is to add an attribute which
supercedes the header structure field when present.
We did this when we needed to make the fib rule table ID number larger,
You'd only need to specify this when using protocol values larger than
8 bits in size.
Thank you very much for the directions! This looks like a better, more
encapsulated solution. I'll try to give it a shot.