Example #1
0
static inline struct rtnl_fifo *fifo_alloc(struct rtnl_qdisc *qdisc)
{
	if (!qdisc->q_subdata)
		qdisc->q_subdata = calloc(1, sizeof(struct rtnl_fifo));

	return fifo_qdisc(qdisc);
}
Example #2
0
static struct nl_msg *fifo_get_opts(struct rtnl_qdisc *qdisc)
{
	struct rtnl_fifo *fifo;
	struct tc_fifo_qopt opts;
	struct nl_msg *msg;

	fifo = fifo_qdisc(qdisc);
	if (!fifo || !(fifo->qf_mask & SCH_FIFO_ATTR_LIMIT))
		return NULL;

	msg = nlmsg_build_no_hdr();
	if (!msg)
		goto errout;

	memset(&opts, 0, sizeof(opts));
	opts.limit = fifo->qf_limit;

	if (nlmsg_append(msg, &opts, sizeof(opts), 0) < 0)
		goto errout;

	return msg;
errout:
	nlmsg_free(msg);
	return NULL;
}
static void pfifo_dump_line(struct rtnl_qdisc *qdisc, struct nl_dump_params *p)
{
	struct rtnl_fifo *fifo = fifo_qdisc(qdisc);

	if (fifo)
		nl_dump(p, " limit %u packets", fifo->qf_limit);
}
Example #4
0
static int pfifo_dump_brief(struct rtnl_qdisc *qdisc,
			    struct nl_dump_params *p, int line)
{
	struct rtnl_fifo *fifo = fifo_qdisc(qdisc);

	if (fifo)
		dp_dump(p, " limit %u packets", fifo->qf_limit);

	return line;
}
Example #5
0
/**
 * Get limit of a FIFO qdisc.
 * @arg qdisc		FIFO qdisc.
 * @return Numeric limit or a negative error code.
 */
int rtnl_qdisc_fifo_get_limit(struct rtnl_qdisc *qdisc)
{
	struct rtnl_fifo *fifo;
	
	fifo = fifo_qdisc(qdisc);
	if (fifo && fifo->qf_mask & SCH_FIFO_ATTR_LIMIT)
		return fifo->qf_limit;
	else
		return nl_errno(ENOMEM);
}
/**
 * Get limit of a FIFO qdisc.
 * @arg qdisc		FIFO qdisc.
 * @return Numeric limit or a negative error code.
 */
int rtnl_qdisc_fifo_get_limit(struct rtnl_qdisc *qdisc)
{
	struct rtnl_fifo *fifo;
	
	fifo = fifo_qdisc(qdisc);
	if (fifo && fifo->qf_mask & SCH_FIFO_ATTR_LIMIT)
		return fifo->qf_limit;
	else
		return -NLE_NOATTR;
}
static void bfifo_dump_line(struct rtnl_qdisc *qdisc, struct nl_dump_params *p)
{
	struct rtnl_fifo *fifo = fifo_qdisc(qdisc);

	if (fifo) {
		char *unit;
		double r;

		r = nl_cancel_down_bytes(fifo->qf_limit, &unit);
		nl_dump(p, " limit %.1f%s", r, unit);
	}
}
Example #8
0
static int bfifo_dump_brief(struct rtnl_qdisc *qdisc,
			    struct nl_dump_params *p, int line)
{
	struct rtnl_fifo *fifo = fifo_qdisc(qdisc);

	if (fifo) {
		char *unit;
		double r;

		r = nl_cancel_down_bytes(fifo->qf_limit, &unit);
		dp_dump(p, " limit %.1f%s", r, unit);
	}

	return line;
}