aboutsummaryrefslogtreecommitdiff
path: root/sys/netlink/route/rt.c
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2024-12-03 20:04:18 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2024-12-03 20:04:18 +0000
commita034c0aeccd899a5872333625771df278e0a8ba7 (patch)
tree2aebd441a771430f95e127f1f2fc2586927f7e42 /sys/netlink/route/rt.c
parentedf5608bfef3840718bf31b453efb714ef290f31 (diff)
netlink: refactor writer initialization KPI
o Allow callers to initialize a writer that will malloc(9) with M_WAITOK. o Use size_t for expected malloc size. o Use correct types to initialize a group writer. o Rename functions into nl_writer_ namespace instead of nlmsg_, cause they are working on nl_writer, not on nlmsg. o Make the KPI responsible to sparsely initialize the writer structure. o Garbage collect chain writer. Fixes 17083b94a915. All current consumers are left as is, however some may benefit from M_WAITOK allocation as well as supplying a correct expected size. Reviewed by: melifaro Differential Revision: https://reviews.freebsd.org/D47549
Diffstat (limited to 'sys/netlink/route/rt.c')
-rw-r--r--sys/netlink/route/rt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/netlink/route/rt.c b/sys/netlink/route/rt.c
index 00315afbcb02..c9b0f56498ec 100644
--- a/sys/netlink/route/rt.c
+++ b/sys/netlink/route/rt.c
@@ -350,10 +350,10 @@ static void
report_operation(uint32_t fibnum, struct rib_cmd_info *rc,
struct nlpcb *nlp, struct nlmsghdr *hdr)
{
- struct nl_writer nw = {};
+ struct nl_writer nw;
uint32_t group_id = family_to_group(rt_get_family(rc->rc_rt));
- if (nlmsg_get_group_writer(&nw, NLMSG_SMALL, NETLINK_ROUTE, group_id)) {
+ if (nl_writer_group(&nw, NLMSG_SMALL, NETLINK_ROUTE, group_id, false)) {
struct route_nhop_data rnd = {
.rnd_nhop = rc_get_nhop(rc),
.rnd_weight = rc->rc_nh_weight,
@@ -1043,7 +1043,7 @@ rtnl_handle_getroute(struct nlmsghdr *hdr, struct nlpcb *nlp, struct nl_pstate *
void
rtnl_handle_route_event(uint32_t fibnum, const struct rib_cmd_info *rc)
{
- struct nl_writer nw = {};
+ struct nl_writer nw;
int family, nlm_flags = 0;
family = rt_get_family(rc->rc_rt);
@@ -1082,7 +1082,8 @@ rtnl_handle_route_event(uint32_t fibnum, const struct rib_cmd_info *rc)
};
uint32_t group_id = family_to_group(family);
- if (!nlmsg_get_group_writer(&nw, NLMSG_SMALL, NETLINK_ROUTE, group_id)) {
+ if (!nl_writer_group(&nw, NLMSG_SMALL, NETLINK_ROUTE, group_id,
+ false)) {
NL_LOG(LOG_DEBUG, "error allocating event buffer");
return;
}