inet_diag: support for wider protocol numbers
authorPaolo Abeni <pabeni@redhat.com>
Thu, 9 Jul 2020 13:12:39 +0000 (15:12 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Jul 2020 19:38:41 +0000 (12:38 -0700)
commit3f935c75eb52dd968351dba824adf466fb9c9429
treefc09c79634a6d1d63dd0ad6ae77482638a5c7d4d
parent5ca670e58dc4452b8f47158f0e1238d7d756e8b0
inet_diag: support for wider protocol numbers

After commit bf9765145b85 ("sock: Make sk_protocol a 16-bit value")
the current size of 'sdiag_protocol' is not sufficient to represent
the possible protocol values.

This change introduces a new inet diag request attribute to let
user space specify the relevant protocol number using u32 values.

The attribute is parsed by inet diag core on get/dump command
and the extended protocol value, if available, is preferred to
'sdiag_protocol' to lookup the diag handler.

The parse attributed are exposed to all the diag handlers via
the cb->data.

Note that inet_diag_dump_one_icsk() is left unmodified, as it
will not be used by protocol using the extended attribute.

Suggested-by: David S. Miller <davem@davemloft.net>
Co-developed-by: Christoph Paasch <cpaasch@apple.com>
Signed-off-by: Christoph Paasch <cpaasch@apple.com>
Acked-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/inet_diag.h
net/core/sock.c
net/ipv4/inet_diag.c