mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 23:48:56 -04:00
selftests/bpf: Add socket_kind_to_str() to socket_helpers
Add function that returns string representation of socket's domain/type. Suggested-by: Jakub Sitnicki <jakub@cloudflare.com> Signed-off-by: Michal Luczaj <mhal@rbox.co> Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com> Acked-by: John Fastabend <john.fastabend@gmail.com> Link: https://lore.kernel.org/r/20250515-selftests-sockmap-redir-v3-2-a1ea723f7e7e@rbox.co
This commit is contained in:
committed by
Martin KaFai Lau
parent
fb1131d5e1
commit
d87857946d
@@ -410,4 +410,59 @@ static inline int create_socket_pairs(int family, int sotype, int *c0, int *c1,
|
||||
return err;
|
||||
}
|
||||
|
||||
static inline const char *socket_kind_to_str(int sock_fd)
|
||||
{
|
||||
socklen_t opt_len;
|
||||
int domain, type;
|
||||
|
||||
opt_len = sizeof(domain);
|
||||
if (getsockopt(sock_fd, SOL_SOCKET, SO_DOMAIN, &domain, &opt_len))
|
||||
FAIL_ERRNO("getsockopt(SO_DOMAIN)");
|
||||
|
||||
opt_len = sizeof(type);
|
||||
if (getsockopt(sock_fd, SOL_SOCKET, SO_TYPE, &type, &opt_len))
|
||||
FAIL_ERRNO("getsockopt(SO_TYPE)");
|
||||
|
||||
switch (domain) {
|
||||
case AF_INET:
|
||||
switch (type) {
|
||||
case SOCK_STREAM:
|
||||
return "tcp4";
|
||||
case SOCK_DGRAM:
|
||||
return "udp4";
|
||||
}
|
||||
break;
|
||||
case AF_INET6:
|
||||
switch (type) {
|
||||
case SOCK_STREAM:
|
||||
return "tcp6";
|
||||
case SOCK_DGRAM:
|
||||
return "udp6";
|
||||
}
|
||||
break;
|
||||
case AF_UNIX:
|
||||
switch (type) {
|
||||
case SOCK_STREAM:
|
||||
return "u_str";
|
||||
case SOCK_DGRAM:
|
||||
return "u_dgr";
|
||||
case SOCK_SEQPACKET:
|
||||
return "u_seq";
|
||||
}
|
||||
break;
|
||||
case AF_VSOCK:
|
||||
switch (type) {
|
||||
case SOCK_STREAM:
|
||||
return "v_str";
|
||||
case SOCK_DGRAM:
|
||||
return "v_dgr";
|
||||
case SOCK_SEQPACKET:
|
||||
return "v_seq";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return "???";
|
||||
}
|
||||
|
||||
#endif // __SOCKET_HELPERS__
|
||||
|
||||
Reference in New Issue
Block a user