diff options
author | Paolo Abeni <pabeni@redhat.com> | 2020-07-09 15:12:39 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-09 12:38:41 -0700 |
commit | 3f935c75eb52dd968351dba824adf466fb9c9429 (patch) | |
tree | fc09c79634a6d1d63dd0ad6ae77482638a5c7d4d /net/core | |
parent | 5ca670e58dc4452b8f47158f0e1238d7d756e8b0 (diff) | |
download | linux-3f935c75eb52dd968351dba824adf466fb9c9429.tar.gz linux-3f935c75eb52dd968351dba824adf466fb9c9429.tar.bz2 linux-3f935c75eb52dd968351dba824adf466fb9c9429.zip |
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>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/sock.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index f5b5fdd61c88..de26fe4ea19f 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -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 |