git: 0bcb3ebd1fb7 - main - nlsysevent: deduplicate the code and split into smaller functions
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 02 Jun 2023 08:20:04 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=0bcb3ebd1fb71f397f020d30e6c087d2831fd72e
commit 0bcb3ebd1fb71f397f020d30e6c087d2831fd72e
Author: Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2023-06-02 08:19:27 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2023-06-02 08:19:27 +0000
nlsysevent: deduplicate the code and split into smaller functions
No functional changes intended
Suggested by: melifaro
---
sys/netlink/netlink_sysevent.c | 43 +++++++++++++++++++++++++++---------------
1 file changed, 28 insertions(+), 15 deletions(-)
diff --git a/sys/netlink/netlink_sysevent.c b/sys/netlink/netlink_sysevent.c
index 7bb783f7019c..aeb819e6e85d 100644
--- a/sys/netlink/netlink_sysevent.c
+++ b/sys/netlink/netlink_sysevent.c
@@ -86,27 +86,41 @@ sysevent_write(struct sysevent_group *se, const char *subsystem, const char *typ
}
static void
-sysevent_send(const char *system, const char *subsystem, const char *type,
- const char *data)
+sysevent_new_group(size_t index, const char *name)
{
- struct sysevent_group *se = NULL;
+ if (index >= MAX_SYSEVENT_GROUPS) {
+ NL_LOG(LOG_WARNING, "impossible to add the event %s, "
+ "too many event groups\n", name);
+ return;
+ }
+ sysevent_groups[index].name = strdup(name, M_NLSE);
+ sysevent_groups[index].id = genl_register_group(NLSE_FAMILY_NAME, sysevent_groups[index].name);
+}
+static struct sysevent_group *
+sysevent_get_group(const char *system)
+{
for (size_t i = 0; i < MAX_SYSEVENT_GROUPS; i++) {
if (sysevent_groups[i].name == NULL) {
- sysevent_groups[i].name = strdup(system, M_NLSE);
- sysevent_groups[i].id = genl_register_group(NLSE_FAMILY_NAME,
- system);
- se = &sysevent_groups[i];
- break;
- }
- if (strcmp(sysevent_groups[i].name, system) == 0) {
- se = &sysevent_groups[i];
- break;
+ sysevent_new_group(i, system);
+ return (&sysevent_groups[i]);
}
+ if (strcmp(sysevent_groups[i].name, system) == 0)
+ return (&sysevent_groups[i]);
}
+
+ return (NULL);
+}
+
+static void
+sysevent_send(const char *system, const char *subsystem, const char *type,
+ const char *data)
+{
+ struct sysevent_group *se = sysevent_get_group(system);
+
if (se == NULL) {
NL_LOG(LOG_WARNING, "impossible to add the event %s, "
- "too many events\n", system);
+ "too many event groups\n", system);
return;
}
@@ -125,8 +139,7 @@ nlsysevent_load(void)
NL_LOG(LOG_WARNING, "impossible to add the event %s, too many events\n", devctl_systems[i]);
continue;
}
- sysevent_groups[i].name = strdup(devctl_systems[i], M_NLSE);
- sysevent_groups[i].id = genl_register_group(NLSE_FAMILY_NAME, devctl_systems[i]);
+ sysevent_new_group(i, devctl_systems[i]);
}
}