inet_diag: support for wider protocol numbers
After commit bf9765145b
("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>
This commit is contained in:

committed by
David S. Miller

parent
5ca670e58d
commit
3f935c75eb
@@ -3566,6 +3566,7 @@ int sock_load_diag_module(int family, int protocol)
|
||||
#ifdef CONFIG_INET
|
||||
if (family == AF_INET &&
|
||||
protocol != IPPROTO_RAW &&
|
||||
protocol < MAX_INET_PROTOS &&
|
||||
!rcu_access_pointer(inet_protos[protocol]))
|
||||
return -ENOENT;
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user