mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
Merge pull request #14303 from yuwata/tc-use-typesafe-functions
network: tc: use typesafe functions
This commit is contained in:
commit
2e3fa22ef3
@ -439,7 +439,7 @@ static const NLTypeSystemUnion rtnl_link_info_data_type_system_union = {
|
|||||||
|
|
||||||
static const NLType rtnl_link_info_types[] = {
|
static const NLType rtnl_link_info_types[] = {
|
||||||
[IFLA_INFO_KIND] = { .type = NETLINK_TYPE_STRING },
|
[IFLA_INFO_KIND] = { .type = NETLINK_TYPE_STRING },
|
||||||
[IFLA_INFO_DATA] = { .type = NETLINK_TYPE_UNION, .type_system_union = &rtnl_link_info_data_type_system_union},
|
[IFLA_INFO_DATA] = { .type = NETLINK_TYPE_UNION, .type_system_union = &rtnl_link_info_data_type_system_union },
|
||||||
/*
|
/*
|
||||||
[IFLA_INFO_XSTATS],
|
[IFLA_INFO_XSTATS],
|
||||||
[IFLA_INFO_SLAVE_KIND] = { .type = NETLINK_TYPE_STRING },
|
[IFLA_INFO_SLAVE_KIND] = { .type = NETLINK_TYPE_STRING },
|
||||||
@ -734,9 +734,53 @@ static const NLTypeSystem rtnl_nexthop_type_system = {
|
|||||||
.types = rtnl_nexthop_types,
|
.types = rtnl_nexthop_types,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const NLType rtnl_tca_option_data_tbf_types[] = {
|
||||||
|
[TCA_TBF_PARMS] = { .size = sizeof(struct tc_tbf_qopt) },
|
||||||
|
[TCA_TBF_RTAB] = { .size = TC_RTAB_SIZE },
|
||||||
|
[TCA_TBF_PTAB] = { .size = TC_RTAB_SIZE },
|
||||||
|
[TCA_TBF_RATE64] = { .type = NETLINK_TYPE_U64 },
|
||||||
|
[TCA_TBF_PRATE64] = { .type = NETLINK_TYPE_U64 },
|
||||||
|
[TCA_TBF_BURST] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_TBF_PBURST] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const NLType rtnl_tca_option_data_fq_codel_types[] = {
|
||||||
|
[TCA_FQ_CODEL_TARGET] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_LIMIT] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_INTERVAL] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_ECN] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_FLOWS] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_QUANTUM] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_CE_THRESHOLD] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_DROP_BATCH_SIZE] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
[TCA_FQ_CODEL_MEMORY_LIMIT] = { .type = NETLINK_TYPE_U32 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char* const nl_union_tca_option_data_table[] = {
|
||||||
|
[NL_UNION_TCA_OPTION_DATA_TBF] = "tbf",
|
||||||
|
[NL_UNION_TCA_OPTION_DATA_FQ_CODEL] = "fq_codel",
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STRING_TABLE_LOOKUP(nl_union_tca_option_data, NLUnionTCAOptionData);
|
||||||
|
|
||||||
|
static const NLTypeSystem rtnl_tca_option_data_type_systems[] = {
|
||||||
|
[NL_UNION_TCA_OPTION_DATA_TBF] = { .count = ELEMENTSOF(rtnl_tca_option_data_tbf_types),
|
||||||
|
.types = rtnl_tca_option_data_tbf_types },
|
||||||
|
[NL_UNION_TCA_OPTION_DATA_FQ_CODEL] = { .count = ELEMENTSOF(rtnl_tca_option_data_fq_codel_types),
|
||||||
|
.types = rtnl_tca_option_data_fq_codel_types },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const NLTypeSystemUnion rtnl_tca_option_data_type_system_union = {
|
||||||
|
.num = _NL_UNION_TCA_OPTION_DATA_MAX,
|
||||||
|
.lookup = nl_union_tca_option_data_from_string,
|
||||||
|
.type_systems = rtnl_tca_option_data_type_systems,
|
||||||
|
.match_type = NL_MATCH_SIBLING,
|
||||||
|
.match = TCA_KIND,
|
||||||
|
};
|
||||||
|
|
||||||
static const NLType rtnl_qdisc_types[] = {
|
static const NLType rtnl_qdisc_types[] = {
|
||||||
[TCA_KIND] = { .type = NETLINK_TYPE_STRING },
|
[TCA_KIND] = { .type = NETLINK_TYPE_STRING },
|
||||||
[TCA_OPTIONS] = { .size = sizeof(struct tc_netem_qopt) },
|
[TCA_OPTIONS] = { .type = NETLINK_TYPE_UNION, .type_system_union = &rtnl_tca_option_data_type_system_union },
|
||||||
[TCA_INGRESS_BLOCK] = { .type = NETLINK_TYPE_U32 },
|
[TCA_INGRESS_BLOCK] = { .type = NETLINK_TYPE_U32 },
|
||||||
[TCA_EGRESS_BLOCK] = { .type = NETLINK_TYPE_U32 },
|
[TCA_EGRESS_BLOCK] = { .type = NETLINK_TYPE_U32 },
|
||||||
};
|
};
|
||||||
|
@ -90,3 +90,13 @@ typedef enum NLUnionLinkInfoData {
|
|||||||
|
|
||||||
const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
|
const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
|
||||||
NLUnionLinkInfoData nl_union_link_info_data_from_string(const char *p) _pure_;
|
NLUnionLinkInfoData nl_union_link_info_data_from_string(const char *p) _pure_;
|
||||||
|
|
||||||
|
typedef enum NLUnionTCAOptionData {
|
||||||
|
NL_UNION_TCA_OPTION_DATA_TBF,
|
||||||
|
NL_UNION_TCA_OPTION_DATA_FQ_CODEL,
|
||||||
|
_NL_UNION_TCA_OPTION_DATA_MAX,
|
||||||
|
_NL_UNION_TCA_OPTION_DATA_INVALID = -1,
|
||||||
|
} NLUnionTCAOptionData;
|
||||||
|
|
||||||
|
const char *nl_union_tca_option_data_to_string(NLUnionTCAOptionData p) _const_;
|
||||||
|
NLUnionTCAOptionData nl_union_tca_option_data_from_string(const char *p) _pure_;
|
||||||
|
@ -29,11 +29,11 @@ int fair_queuing_controlled_delay_fill_message(Link *link, const FairQueuingCont
|
|||||||
assert(fqcd);
|
assert(fqcd);
|
||||||
assert(req);
|
assert(req);
|
||||||
|
|
||||||
r = sd_netlink_message_open_array(req, TCA_OPTIONS);
|
r = sd_netlink_message_open_container_union(req, TCA_OPTIONS, "fq_codel");
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not open container TCA_OPTIONS: %m");
|
return log_link_error_errno(link, r, "Could not open container TCA_OPTIONS: %m");
|
||||||
|
|
||||||
r = sd_netlink_message_append_data(req, TCA_FQ_CODEL_LIMIT, &fqcd->limit, sizeof(fqcd->limit));
|
r = sd_netlink_message_append_u32(req, TCA_FQ_CODEL_LIMIT, fqcd->limit);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not append TCA_FQ_CODEL_LIMIT attribute: %m");
|
return log_link_error_errno(link, r, "Could not append TCA_FQ_CODEL_LIMIT attribute: %m");
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ int token_buffer_filter_fill_message(Link *link, const TokenBufferFilter *tbf, s
|
|||||||
return log_link_error_errno(link, r, "Failed to calculate mtu size: %m");
|
return log_link_error_errno(link, r, "Failed to calculate mtu size: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_netlink_message_open_array(req, TCA_OPTIONS);
|
r = sd_netlink_message_open_container_union(req, TCA_OPTIONS, "tbf");
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not open container TCA_OPTIONS: %m");
|
return log_link_error_errno(link, r, "Could not open container TCA_OPTIONS: %m");
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ int token_buffer_filter_fill_message(Link *link, const TokenBufferFilter *tbf, s
|
|||||||
return log_link_error_errno(link, r, "Could not append TCA_TBF_BURST attribute: %m");
|
return log_link_error_errno(link, r, "Could not append TCA_TBF_BURST attribute: %m");
|
||||||
|
|
||||||
if (tbf->rate >= (1ULL << 32)) {
|
if (tbf->rate >= (1ULL << 32)) {
|
||||||
r = sd_netlink_message_append_data(req, TCA_TBF_RATE64, &tbf->rate, sizeof(tbf->rate));
|
r = sd_netlink_message_append_u64(req, TCA_TBF_RATE64, tbf->rate);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not append TCA_TBF_RATE64 attribute: %m");
|
return log_link_error_errno(link, r, "Could not append TCA_TBF_RATE64 attribute: %m");
|
||||||
}
|
}
|
||||||
@ -98,12 +98,12 @@ int token_buffer_filter_fill_message(Link *link, const TokenBufferFilter *tbf, s
|
|||||||
|
|
||||||
if (opt.peakrate.rate > 0) {
|
if (opt.peakrate.rate > 0) {
|
||||||
if (tbf->peak_rate >= (1ULL << 32)) {
|
if (tbf->peak_rate >= (1ULL << 32)) {
|
||||||
r = sd_netlink_message_append_data(req, TCA_TBF_PRATE64, &tbf->peak_rate, sizeof(tbf->peak_rate));
|
r = sd_netlink_message_append_u64(req, TCA_TBF_PRATE64, tbf->peak_rate);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not append TCA_TBF_PRATE64 attribute: %m");
|
return log_link_error_errno(link, r, "Could not append TCA_TBF_PRATE64 attribute: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_netlink_message_append_data(req, TCA_TBF_PBURST, &tbf->mtu, sizeof(tbf->mtu));
|
r = sd_netlink_message_append_u32(req, TCA_TBF_PBURST, tbf->mtu);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not append TCA_TBF_PBURST attribute: %m");
|
return log_link_error_errno(link, r, "Could not append TCA_TBF_PBURST attribute: %m");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user