route/qdisc: added more attributes to netem dump

This commit is contained in:
Steffen Vogel 2015-07-19 16:24:50 +02:00
parent d21790bf96
commit 82e0a27f58

View file

@ -141,8 +141,66 @@ static void netem_dump_line(struct rtnl_tc *tc, void *data,
{
struct rtnl_netem *netem = data;
if (netem)
nl_dump(p, "limit %d", netem->qnm_limit);
if (netem) {
if (netem->qnm_mask & SCH_NETEM_ATTR_LIMIT && netem->qnm_limit > 0)
nl_dump(p, " limit %dpkts", netem->qnm_limit);
else
nl_dump(p, " no limit");
}
}
static void netem_dump_details(struct rtnl_tc *tc, void *data,
struct nl_dump_params *p)
{
struct rtnl_netem *netem = data;
char buf[32];
if (netem) {
if (netem->qnm_mask & SCH_NETEM_ATTR_LATENCY && netem->qnm_latency > 0) {
nl_msec2str(nl_ticks2us(netem->qnm_latency) / 1000, buf, sizeof(buf));
nl_dump(p, " latency %s", buf);
if (netem->qnm_mask & SCH_NETEM_ATTR_JITTER && netem->qnm_jitter > 0) {
nl_msec2str(nl_ticks2us(netem->qnm_jitter) / 1000, buf, sizeof(buf));
nl_dump(p, " jitter %s", buf);
if (netem->qnm_mask & SCH_NETEM_ATTR_DELAY_CORR && netem->qnm_corr.nmc_delay > 0)
nl_dump(p, " %d%", netem->qnm_corr.nmc_delay);
}
}
if (netem->qnm_mask & SCH_NETEM_ATTR_LOSS && netem->qnm_loss > 0) {
nl_dump(p, " loss %d%", netem->qnm_loss);
if (netem->qnm_mask & SCH_NETEM_ATTR_LOSS_CORR && netem->qnm_corr.nmc_loss > 0)
nl_dump(p, " %d%", netem->qnm_corr.nmc_loss);
}
if (netem->qnm_mask & SCH_NETEM_ATTR_DUPLICATE && netem->qnm_duplicate > 0) {
nl_dump(p, " duplicate %d%", netem->qnm_duplicate);
if (netem->qnm_mask & SCH_NETEM_ATTR_DUP_CORR && netem->qnm_corr.nmc_duplicate > 0)
nl_dump(p, " %d%", netem->qnm_corr.nmc_duplicate);
}
if (netem->qnm_mask & SCH_NETEM_ATTR_RO_PROB && netem->qnm_ro.nmro_probability > 0) {
nl_dump(p, " reorder %d%", netem->qnm_ro.nmro_probability);
if (netem->qnm_mask & SCH_NETEM_ATTR_RO_CORR && netem->qnm_ro.nmro_correlation > 0)
nl_dump(p, " %d%", netem->qnm_ro.nmro_correlation);
if (netem->qnm_mask & SCH_NETEM_ATTR_GAP && netem->qnm_gap > 0)
nl_dump(p, " gap %d", netem->qnm_gap);
}
if (netem->qnm_mask & SCH_NETEM_ATTR_CORRUPT_PROB && netem->qnm_crpt.nmcr_probability > 0) {
nl_dump(p, " reorder %d%", netem->qnm_crpt.nmcr_probability);
if (netem->qnm_mask & SCH_NETEM_ATTR_CORRUPT_CORR && netem->qnm_crpt.nmcr_correlation > 0)
nl_dump(p, " %d%", netem->qnm_crpt.nmcr_correlation);
}
}
}
static int netem_msg_fill_raw(struct rtnl_tc *tc, void *data,
@ -892,6 +950,7 @@ static struct rtnl_tc_ops netem_ops = {
.to_msg_parser = netem_msg_parser,
.to_free_data = netem_free_data,
.to_dump[NL_DUMP_LINE] = netem_dump_line,
.to_dump[NL_DUMP_DETAILS] = netem_dump_details,
.to_msg_fill_raw = netem_msg_fill_raw,
};