1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include "netlink-util.h"
5 #include "parse-util.h"
6 #include "stdio-util.h"
7 #include "string-util.h"
10 static int trivial_link_equalizer_fill_tca_kind(Link
*link
, QDisc
*qdisc
, sd_netlink_message
*req
) {
11 char kind
[STRLEN("teql") + DECIMAL_STR_MAX(unsigned)];
12 TrivialLinkEqualizer
*teql
;
21 xsprintf(kind
, "teql%u", teql
->id
);
22 r
= sd_netlink_message_append_string(req
, TCA_KIND
, kind
);
24 return log_link_error_errno(link
, r
, "Could not append TCA_KIND attribute: %m");
29 const QDiscVTable teql_vtable
= {
30 .object_size
= sizeof(TrivialLinkEqualizer
),
31 .fill_tca_kind
= trivial_link_equalizer_fill_tca_kind
,
34 int config_parse_trivial_link_equalizer_id(
39 unsigned section_line
,
46 _cleanup_(qdisc_free_or_set_invalidp
) QDisc
*qdisc
= NULL
;
47 TrivialLinkEqualizer
*teql
;
48 Network
*network
= data
;
57 r
= qdisc_new_static(QDISC_KIND_TEQL
, network
, filename
, section_line
, &qdisc
);
61 log_syntax(unit
, LOG_WARNING
, filename
, line
, r
,
62 "More than one kind of queueing discipline, ignoring assignment: %m");
68 if (isempty(rvalue
)) {
75 r
= safe_atou(rvalue
, &id
);
77 log_syntax(unit
, LOG_WARNING
, filename
, line
, r
,
78 "Failed to parse '%s=', ignoring assignment: %s",
83 log_syntax(unit
, LOG_WARNING
, filename
, line
, 0,
84 "'%s=' is too large, ignoring assignment: %s",