mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-11-02 22:36:03 +00:00
lib: introduce print_nl
Common pattern in iproute commands is to print a line seperator in non-json mode. Make that a simple function. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
bd59e5b151
commit
b85076cd74
@ -30,7 +30,6 @@ int json;
|
||||
int timestamp;
|
||||
char *batch_file;
|
||||
int force;
|
||||
const char *_SL_;
|
||||
|
||||
static void usage(void) __attribute__((noreturn));
|
||||
|
||||
|
||||
@ -41,6 +41,8 @@ void close_json_object(void);
|
||||
void open_json_array(enum output_type type, const char *delim);
|
||||
void close_json_array(enum output_type type, const char *delim);
|
||||
|
||||
void print_nl(void);
|
||||
|
||||
#define _PRINT_FUNC(type_name, type) \
|
||||
void print_color_##type_name(enum output_type t, \
|
||||
enum color_attr color, \
|
||||
|
||||
1
ip/ip.c
1
ip/ip.c
@ -33,7 +33,6 @@ int oneline;
|
||||
int brief;
|
||||
int json;
|
||||
int timestamp;
|
||||
const char *_SL_;
|
||||
int force;
|
||||
int max_flush_loops = 10;
|
||||
int batch_mode;
|
||||
|
||||
@ -240,7 +240,7 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
|
||||
const char *kind
|
||||
= rta_getattr_str(linkinfo[IFLA_INFO_KIND]);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_string(PRINT_ANY, "info_kind", " %s ", kind);
|
||||
|
||||
lu = get_link_kind(kind);
|
||||
@ -269,7 +269,7 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
|
||||
const char *slave_kind
|
||||
= rta_getattr_str(linkinfo[IFLA_INFO_SLAVE_KIND]);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_string(PRINT_ANY,
|
||||
"info_slave_kind",
|
||||
" %s_slave ",
|
||||
@ -765,7 +765,7 @@ static void print_link_stats(FILE *fp, struct nlmsghdr *n)
|
||||
parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi),
|
||||
n->nlmsg_len - NLMSG_LENGTH(sizeof(*ifi)));
|
||||
__print_link_stats(fp, tb);
|
||||
fprintf(fp, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
static int print_linkinfo_brief(FILE *fp, const char *name,
|
||||
@ -929,7 +929,7 @@ int print_linkinfo(const struct sockaddr_nl *who,
|
||||
print_link_event(fp, rta_getattr_u32(tb[IFLA_EVENT]));
|
||||
|
||||
if (!filter.family || filter.family == AF_PACKET || show_details) {
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_string(PRINT_ANY,
|
||||
"link_type",
|
||||
" link/%s ",
|
||||
@ -1090,7 +1090,7 @@ int print_linkinfo(const struct sockaddr_nl *who,
|
||||
xdp_dump(fp, tb[IFLA_XDP], true, true);
|
||||
|
||||
if (do_link && show_stats) {
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
__print_link_stats(fp, tb);
|
||||
}
|
||||
|
||||
@ -1418,7 +1418,7 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
|
||||
if (rta_tb[IFA_CACHEINFO]) {
|
||||
struct ifa_cacheinfo *ci = RTA_DATA(rta_tb[IFA_CACHEINFO]);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_string(PRINT_FP, NULL, " valid_lft ", NULL);
|
||||
|
||||
if (ci->ifa_valid == INFINITY_LIFE_TIME) {
|
||||
|
||||
@ -128,7 +128,7 @@ static int print_ila_mapping(const struct sockaddr_nl *who,
|
||||
else
|
||||
print_string(PRINT_FP, NULL, "%s", "-");
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
close_json_object();
|
||||
|
||||
return 0;
|
||||
|
||||
14
ip/ipl2tp.c
14
ip/ipl2tp.c
@ -219,7 +219,7 @@ static void print_tunnel(const struct l2tp_data *data)
|
||||
print_string(PRINT_ANY, "encap", " encap %s",
|
||||
p->encap == L2TP_ENCAPTYPE_UDP ? "UDP" :
|
||||
p->encap == L2TP_ENCAPTYPE_IP ? "IP" : "??");
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
print_string(PRINT_ANY, "local", " From %s ",
|
||||
inet_ntop(p->local_ip.family, p->local_ip.data,
|
||||
@ -227,11 +227,11 @@ static void print_tunnel(const struct l2tp_data *data)
|
||||
print_string(PRINT_ANY, "peer", "to %s",
|
||||
inet_ntop(p->peer_ip.family, p->peer_ip.data,
|
||||
buf, sizeof(buf)));
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
print_uint(PRINT_ANY, "peer_tunnel", " Peer tunnel %u",
|
||||
p->peer_tunnel_id);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
if (p->encap == L2TP_ENCAPTYPE_UDP) {
|
||||
print_string(PRINT_FP, NULL,
|
||||
@ -241,7 +241,7 @@ static void print_tunnel(const struct l2tp_data *data)
|
||||
p->local_udp_port);
|
||||
print_uint(PRINT_ANY, "peer_port", "/%hu",
|
||||
p->peer_udp_port);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
switch (p->local_ip.family) {
|
||||
case AF_INET:
|
||||
@ -283,18 +283,18 @@ static void print_session(struct l2tp_data *data)
|
||||
|
||||
print_uint(PRINT_ANY, "session_id", "Session %u", p->session_id);
|
||||
print_uint(PRINT_ANY, "tunnel_id", " in tunnel %u", p->tunnel_id);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
print_uint(PRINT_ANY, "peer_session_id",
|
||||
" Peer session %u,", p->peer_session_id);
|
||||
print_uint(PRINT_ANY, "peer_tunnel_id",
|
||||
" tunnel %u", p->peer_tunnel_id);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
if (p->ifname != NULL) {
|
||||
print_color_string(PRINT_ANY, COLOR_IFNAME,
|
||||
"interface", " interface name: %s" , p->ifname);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
/* Show offsets only for plain console output (for legacy scripts) */
|
||||
|
||||
@ -627,7 +627,7 @@ static void print_attrs(struct rtattr *attrs[])
|
||||
if (attrs[MACSEC_SECY_ATTR_CIPHER_SUITE]) {
|
||||
__u64 cid = rta_getattr_u64(attrs[MACSEC_SECY_ATTR_CIPHER_SUITE]);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_string(PRINT_ANY, "cipher_suite",
|
||||
" cipher suite: %s,", cs_id_to_name(cid));
|
||||
}
|
||||
|
||||
@ -240,7 +240,7 @@ static void print_mlist(FILE *fp, struct ma_info *list)
|
||||
print_uint(PRINT_ANY, "ifindex", "%d:", list->index);
|
||||
print_color_string(PRINT_ANY, COLOR_IFNAME,
|
||||
"ifname", "\t%s", list->name);
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
cur_index = list->index;
|
||||
|
||||
open_json_array(PRINT_JSON, "maddr");
|
||||
|
||||
@ -181,7 +181,7 @@ int print_mroute(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
|
||||
if (show_stats && tb[RTA_MFC_STATS]) {
|
||||
struct rta_mfc_stats *mfcs = RTA_DATA(tb[RTA_MFC_STATS]);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
print_u64(PRINT_ANY, "packets", " %"PRIu64" packets,",
|
||||
mfcs->mfcs_packets);
|
||||
print_u64(PRINT_ANY, "bytes", " %"PRIu64" bytes", mfcs->mfcs_bytes);
|
||||
|
||||
@ -346,7 +346,7 @@ static void print_ndtconfig(const struct ndt_config *ndtc)
|
||||
"entry_size %u ", ndtc->ndtc_entry_size);
|
||||
print_uint(PRINT_ANY, "entries", "entries %u ", ndtc->ndtc_entries);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
print_string(PRINT_ANY, "last_flush",
|
||||
" last_flush %s ",
|
||||
@ -355,7 +355,7 @@ static void print_ndtconfig(const struct ndt_config *ndtc)
|
||||
"last_rand %s ",
|
||||
ntable_strtime_delta(ndtc->ndtc_last_rand));
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
print_uint(PRINT_ANY, "hash_rnd",
|
||||
" hash_rnd %u ", ndtc->ndtc_hash_rnd);
|
||||
@ -367,7 +367,7 @@ static void print_ndtconfig(const struct ndt_config *ndtc)
|
||||
print_uint(PRINT_ANY, "proxy_qlen",
|
||||
"proxy_qlen %u ", ndtc->ndtc_proxy_qlen);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
static void print_ndtparams(struct rtattr *tpb[])
|
||||
@ -379,7 +379,7 @@ static void print_ndtparams(struct rtattr *tpb[])
|
||||
print_string(PRINT_FP, NULL, " dev ", NULL);
|
||||
print_color_string(PRINT_ANY, COLOR_IFNAME,
|
||||
"dev", "%s ", ll_index_to_name(ifindex));
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
print_string(PRINT_FP, NULL, " ", NULL);
|
||||
@ -482,7 +482,7 @@ static void print_ndtparams(struct rtattr *tpb[])
|
||||
print_u64(PRINT_ANY, "locktime", "locktime %llu ", locktime);
|
||||
}
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
static void print_ndtstats(const struct ndt_stats *ndts)
|
||||
@ -517,7 +517,7 @@ static void print_ndtstats(const struct ndt_stats *ndts)
|
||||
print_u64(PRINT_ANY, "forced_gc_runs", "forced_gc_runs %llu ",
|
||||
ndts->ndts_forced_gc_runs);
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
}
|
||||
|
||||
static int print_ntable(const struct sockaddr_nl *who,
|
||||
@ -579,7 +579,7 @@ static int print_ntable(const struct sockaddr_nl *who,
|
||||
print_string(PRINT_ANY, "name", "%s ", name);
|
||||
}
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
ret = (tb[NDTA_THRESH1] || tb[NDTA_THRESH2] || tb[NDTA_THRESH3] ||
|
||||
tb[NDTA_GC_INTERVAL]);
|
||||
@ -611,7 +611,7 @@ static int print_ntable(const struct sockaddr_nl *who,
|
||||
}
|
||||
|
||||
if (ret)
|
||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||
print_nl();
|
||||
|
||||
if (tb[NDTA_CONFIG] && show_stats)
|
||||
print_ndtconfig(RTA_DATA(tb[NDTA_CONFIG]));
|
||||
|
||||
@ -222,3 +222,10 @@ void print_color_null(enum output_type type,
|
||||
color_fprintf(stdout, color, fmt, value);
|
||||
}
|
||||
}
|
||||
|
||||
/* Print line seperator (if not in JSON mode) */
|
||||
void print_nl(void)
|
||||
{
|
||||
if (!_jw)
|
||||
printf("%s", _SL_);
|
||||
}
|
||||
|
||||
@ -42,6 +42,7 @@
|
||||
int resolve_hosts;
|
||||
int timestamp_short;
|
||||
int pretty;
|
||||
const char *_SL_ = "\n";
|
||||
|
||||
int read_prop(const char *dev, char *prop, long *value)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user