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