162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 262306a36Sopenharmony_ci// Copyright (C) 2018 Facebook 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _NETLINK_DUMPER_H_ 562306a36Sopenharmony_ci#define _NETLINK_DUMPER_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#define NET_START_OBJECT \ 862306a36Sopenharmony_ci{ \ 962306a36Sopenharmony_ci if (json_output) \ 1062306a36Sopenharmony_ci jsonw_start_object(json_wtr); \ 1162306a36Sopenharmony_ci} 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define NET_START_OBJECT_NESTED(name) \ 1462306a36Sopenharmony_ci{ \ 1562306a36Sopenharmony_ci if (json_output) { \ 1662306a36Sopenharmony_ci jsonw_name(json_wtr, name); \ 1762306a36Sopenharmony_ci jsonw_start_object(json_wtr); \ 1862306a36Sopenharmony_ci } else { \ 1962306a36Sopenharmony_ci fprintf(stdout, "%s {", name); \ 2062306a36Sopenharmony_ci } \ 2162306a36Sopenharmony_ci} 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#define NET_START_OBJECT_NESTED2 \ 2462306a36Sopenharmony_ci{ \ 2562306a36Sopenharmony_ci if (json_output) \ 2662306a36Sopenharmony_ci jsonw_start_object(json_wtr); \ 2762306a36Sopenharmony_ci else \ 2862306a36Sopenharmony_ci fprintf(stdout, "{"); \ 2962306a36Sopenharmony_ci} 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define NET_END_OBJECT_NESTED \ 3262306a36Sopenharmony_ci{ \ 3362306a36Sopenharmony_ci if (json_output) \ 3462306a36Sopenharmony_ci jsonw_end_object(json_wtr); \ 3562306a36Sopenharmony_ci else \ 3662306a36Sopenharmony_ci fprintf(stdout, "}"); \ 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#define NET_END_OBJECT \ 4062306a36Sopenharmony_ci{ \ 4162306a36Sopenharmony_ci if (json_output) \ 4262306a36Sopenharmony_ci jsonw_end_object(json_wtr); \ 4362306a36Sopenharmony_ci} 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#define NET_END_OBJECT_FINAL \ 4662306a36Sopenharmony_ci{ \ 4762306a36Sopenharmony_ci if (json_output) \ 4862306a36Sopenharmony_ci jsonw_end_object(json_wtr); \ 4962306a36Sopenharmony_ci else \ 5062306a36Sopenharmony_ci fprintf(stdout, "\n"); \ 5162306a36Sopenharmony_ci} 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define NET_START_ARRAY(name, fmt_str) \ 5462306a36Sopenharmony_ci{ \ 5562306a36Sopenharmony_ci if (json_output) { \ 5662306a36Sopenharmony_ci jsonw_name(json_wtr, name); \ 5762306a36Sopenharmony_ci jsonw_start_array(json_wtr); \ 5862306a36Sopenharmony_ci } else { \ 5962306a36Sopenharmony_ci fprintf(stdout, fmt_str, name); \ 6062306a36Sopenharmony_ci } \ 6162306a36Sopenharmony_ci} 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci#define NET_END_ARRAY(endstr) \ 6462306a36Sopenharmony_ci{ \ 6562306a36Sopenharmony_ci if (json_output) \ 6662306a36Sopenharmony_ci jsonw_end_array(json_wtr); \ 6762306a36Sopenharmony_ci else \ 6862306a36Sopenharmony_ci fprintf(stdout, "%s", endstr); \ 6962306a36Sopenharmony_ci} 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci#define NET_DUMP_UINT(name, fmt_str, val) \ 7262306a36Sopenharmony_ci{ \ 7362306a36Sopenharmony_ci if (json_output) \ 7462306a36Sopenharmony_ci jsonw_uint_field(json_wtr, name, val); \ 7562306a36Sopenharmony_ci else \ 7662306a36Sopenharmony_ci fprintf(stdout, fmt_str, val); \ 7762306a36Sopenharmony_ci} 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci#define NET_DUMP_UINT_ONLY(str) \ 8062306a36Sopenharmony_ci{ \ 8162306a36Sopenharmony_ci if (json_output) \ 8262306a36Sopenharmony_ci jsonw_uint(json_wtr, str); \ 8362306a36Sopenharmony_ci else \ 8462306a36Sopenharmony_ci fprintf(stdout, "%u ", str); \ 8562306a36Sopenharmony_ci} 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci#define NET_DUMP_STR(name, fmt_str, str) \ 8862306a36Sopenharmony_ci{ \ 8962306a36Sopenharmony_ci if (json_output) \ 9062306a36Sopenharmony_ci jsonw_string_field(json_wtr, name, str);\ 9162306a36Sopenharmony_ci else \ 9262306a36Sopenharmony_ci fprintf(stdout, fmt_str, str); \ 9362306a36Sopenharmony_ci} 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#define NET_DUMP_STR_ONLY(str) \ 9662306a36Sopenharmony_ci{ \ 9762306a36Sopenharmony_ci if (json_output) \ 9862306a36Sopenharmony_ci jsonw_string(json_wtr, str); \ 9962306a36Sopenharmony_ci else \ 10062306a36Sopenharmony_ci fprintf(stdout, "%s ", str); \ 10162306a36Sopenharmony_ci} 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci#endif 104