git: c1f6b799a764 - main - powerd: use snl_get_genl_mcast_group() API

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Thu, 16 Jan 2025 07:30:19 UTC
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=c1f6b799a7647a738f2e0dfa688c54ada83abc59

commit c1f6b799a7647a738f2e0dfa688c54ada83abc59
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2025-01-16 03:33:16 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2025-01-16 07:20:57 +0000

    powerd: use snl_get_genl_mcast_group() API
---
 usr.sbin/powerd/powerd.c | 24 ++++++++----------------
 1 file changed, 8 insertions(+), 16 deletions(-)

diff --git a/usr.sbin/powerd/powerd.c b/usr.sbin/powerd/powerd.c
index 7be24e0c01ad..7eab9a630411 100644
--- a/usr.sbin/powerd/powerd.c
+++ b/usr.sbin/powerd/powerd.c
@@ -464,31 +464,23 @@ acline_read(int rfds)
 bool
 netlink_init(void)
 {
-	struct _getfamily_attrs attrs;
+	uint32_t group;
 
 	if (modfind("nlsysevent") < 0)
 		kldload("nlsysevent");
 	if (modfind("nlsysevent") < 0)
 		return (false);
 
-	if (!snl_init(&ss, NETLINK_GENERIC))
+	if (!snl_init(&ss, NETLINK_GENERIC) || (group =
+	    snl_get_genl_mcast_group(&ss, "nlsysevent", "ACPI", NULL)) == 0) {
+		warnx("Cannot find \"nlsysevent\" family \"ACPI\" group");
 		return (false);
+	}
 
-	if (!snl_get_genl_family_info(&ss, "nlsysevent", &attrs))
+	if (setsockopt(ss.fd, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP, &group,
+	    sizeof(group)) == -1) {
+		warnx("Cannot subscribe to \"ACPI\"");
 		return (false);
-
-	for (unsigned int i = 0; i < attrs.mcast_groups.num_groups; i++) {
-		if (strcmp(attrs.mcast_groups.groups[i]->mcast_grp_name,
-		    "ACPI") == 0) {
-			if (setsockopt(ss.fd, SOL_NETLINK,
-			    NETLINK_ADD_MEMBERSHIP,
-			    &attrs.mcast_groups.groups[i]->mcast_grp_id,
-			    sizeof(attrs.mcast_groups.groups[i]->mcast_grp_id))
-			    == -1) {
-				warnx("Cannot subscribe to \"ACPI\"");
-				return (false);
-			}
-		}
 	}
 	return (true);
 }