1 | // SPDX-License-Identifier: LGPL-2.1 |
2 | /* |
3 | * trace/beauty/socket.c |
4 | * |
5 | * Copyright (C) 2018, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com> |
6 | */ |
7 | |
8 | #include "trace/beauty/beauty.h" |
9 | #include <sys/types.h> |
10 | #include <sys/socket.h> |
11 | |
12 | #include "trace/beauty/generated/socket.c" |
13 | |
14 | static size_t socket__scnprintf_ipproto(int protocol, char *bf, size_t size, bool show_prefix) |
15 | { |
16 | static DEFINE_STRARRAY(socket_ipproto, "IPPROTO_" ); |
17 | |
18 | return strarray__scnprintf(&strarray__socket_ipproto, bf, size, "%d" , show_prefix, protocol); |
19 | } |
20 | |
21 | size_t syscall_arg__scnprintf_socket_protocol(char *bf, size_t size, struct syscall_arg *arg) |
22 | { |
23 | int domain = syscall_arg__val(arg, 0); |
24 | |
25 | if (domain == AF_INET || domain == AF_INET6) |
26 | return socket__scnprintf_ipproto(arg->val, bf, size, arg->show_string_prefix); |
27 | |
28 | return syscall_arg__scnprintf_int(bf, size, arg); |
29 | } |
30 | |
31 | static size_t socket__scnprintf_level(int level, char *bf, size_t size, bool show_prefix) |
32 | { |
33 | #if defined(__alpha__) || defined(__hppa__) || defined(__mips__) || defined(__sparc__) |
34 | const int sol_socket = 0xffff; |
35 | #else |
36 | const int sol_socket = 1; |
37 | #endif |
38 | if (level == sol_socket) |
39 | return scnprintf(bf, size, "%sSOCKET" , show_prefix ? "SOL_" : "" ); |
40 | |
41 | return strarray__scnprintf(&strarray__socket_level, bf, size, "%d" , show_prefix, level); |
42 | } |
43 | |
44 | size_t syscall_arg__scnprintf_socket_level(char *bf, size_t size, struct syscall_arg *arg) |
45 | { |
46 | return socket__scnprintf_level(arg->val, bf, size, arg->show_string_prefix); |
47 | } |
48 | |