xref: /linux/tools/bpf/bpftool/netlink_dumper.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2 // Copyright (C) 2018 Facebook
3 
4 #ifndef _NETLINK_DUMPER_H_
5 #define _NETLINK_DUMPER_H_
6 
7 #define NET_START_OBJECT				\
8 {							\
9 	if (json_output)				\
10 		jsonw_start_object(json_wtr);		\
11 }
12 
13 #define NET_START_OBJECT_NESTED(name)			\
14 {							\
15 	if (json_output) {				\
16 		jsonw_name(json_wtr, name);		\
17 		jsonw_start_object(json_wtr);		\
18 	} else {					\
19 		fprintf(stdout, "%s {", name);		\
20 	}						\
21 }
22 
23 #define NET_START_OBJECT_NESTED2			\
24 {							\
25 	if (json_output)				\
26 		jsonw_start_object(json_wtr);		\
27 	else						\
28 		fprintf(stdout, "{");			\
29 }
30 
31 #define NET_END_OBJECT_NESTED				\
32 {							\
33 	if (json_output)				\
34 		jsonw_end_object(json_wtr);		\
35 	else						\
36 		fprintf(stdout, "}");			\
37 }
38 
39 #define NET_END_OBJECT					\
40 {							\
41 	if (json_output)				\
42 		jsonw_end_object(json_wtr);		\
43 }
44 
45 #define NET_END_OBJECT_FINAL				\
46 {							\
47 	if (json_output)				\
48 		jsonw_end_object(json_wtr);		\
49 	else						\
50 		fprintf(stdout, "\n");			\
51 }
52 
53 #define NET_START_ARRAY(name, fmt_str)			\
54 {							\
55 	if (json_output) {				\
56 		jsonw_name(json_wtr, name);		\
57 		jsonw_start_array(json_wtr);		\
58 	} else {					\
59 		fprintf(stdout, fmt_str, name);		\
60 	}						\
61 }
62 
63 #define NET_END_ARRAY(endstr)				\
64 {							\
65 	if (json_output)				\
66 		jsonw_end_array(json_wtr);		\
67 	else						\
68 		fprintf(stdout, "%s", endstr);		\
69 }
70 
71 #define NET_DUMP_UINT(name, fmt_str, val)		\
72 {							\
73 	if (json_output)				\
74 		jsonw_uint_field(json_wtr, name, val);	\
75 	else						\
76 		fprintf(stdout, fmt_str, val);		\
77 }
78 
79 #define NET_DUMP_UINT_ONLY(str)				\
80 {							\
81 	if (json_output)				\
82 		jsonw_uint(json_wtr, str);		\
83 	else						\
84 		fprintf(stdout, "%u ", str);		\
85 }
86 
87 #define NET_DUMP_STR(name, fmt_str, str)		\
88 {							\
89 	if (json_output)				\
90 		jsonw_string_field(json_wtr, name, str);\
91 	else						\
92 		fprintf(stdout, fmt_str, str);		\
93 }
94 
95 #define NET_DUMP_STR_ONLY(str)				\
96 {							\
97 	if (json_output)				\
98 		jsonw_string(json_wtr, str);		\
99 	else						\
100 		fprintf(stdout, "%s ", str);		\
101 }
102 
103 #endif
104