On Sat, 2020-06-20 at 17:44 -0700, David Miller wrote:
> From: Paolo Abeni <pab...@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,
> see FRA_TABLE.
> 
> 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.

Thanks!

Paolo

Reply via email to