Skip to content

Commit d878579

Browse files
mmhalMartin KaFai Lau
authored andcommitted
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 <[email protected]> Signed-off-by: Michal Luczaj <[email protected]> Signed-off-by: Martin KaFai Lau <[email protected]> Reviewed-by: Jakub Sitnicki <[email protected]> Acked-by: John Fastabend <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent fb1131d commit d878579

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

tools/testing/selftests/bpf/prog_tests/socket_helpers.h

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,4 +410,59 @@ static inline int create_socket_pairs(int family, int sotype, int *c0, int *c1,
410410
return err;
411411
}
412412

413+
static inline const char *socket_kind_to_str(int sock_fd)
414+
{
415+
socklen_t opt_len;
416+
int domain, type;
417+
418+
opt_len = sizeof(domain);
419+
if (getsockopt(sock_fd, SOL_SOCKET, SO_DOMAIN, &domain, &opt_len))
420+
FAIL_ERRNO("getsockopt(SO_DOMAIN)");
421+
422+
opt_len = sizeof(type);
423+
if (getsockopt(sock_fd, SOL_SOCKET, SO_TYPE, &type, &opt_len))
424+
FAIL_ERRNO("getsockopt(SO_TYPE)");
425+
426+
switch (domain) {
427+
case AF_INET:
428+
switch (type) {
429+
case SOCK_STREAM:
430+
return "tcp4";
431+
case SOCK_DGRAM:
432+
return "udp4";
433+
}
434+
break;
435+
case AF_INET6:
436+
switch (type) {
437+
case SOCK_STREAM:
438+
return "tcp6";
439+
case SOCK_DGRAM:
440+
return "udp6";
441+
}
442+
break;
443+
case AF_UNIX:
444+
switch (type) {
445+
case SOCK_STREAM:
446+
return "u_str";
447+
case SOCK_DGRAM:
448+
return "u_dgr";
449+
case SOCK_SEQPACKET:
450+
return "u_seq";
451+
}
452+
break;
453+
case AF_VSOCK:
454+
switch (type) {
455+
case SOCK_STREAM:
456+
return "v_str";
457+
case SOCK_DGRAM:
458+
return "v_dgr";
459+
case SOCK_SEQPACKET:
460+
return "v_seq";
461+
}
462+
break;
463+
}
464+
465+
return "???";
466+
}
467+
413468
#endif // __SOCKET_HELPERS__

0 commit comments

Comments
 (0)