summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorVictor Nogueira <victor@mojatatu.com>2023-12-08 22:28:42 +0300
committerJakub Kicinski <kuba@kernel.org>2023-12-12 05:52:56 +0300
commit8439109b76a3c405808383bf9dd532fc4b9c2dbd (patch)
treeaa386d0d776956bfbb5515c958b25980cb3544ec /include/linux
parentc5e2a973448d958feb7881e4d875eac59fdeff3d (diff)
downloadlinux-8439109b76a3c405808383bf9dd532fc4b9c2dbd.tar.xz
rtnl: add helper to check if a notification is needed
Building on the rtnl_has_listeners helper, add the rtnl_notify_needed helper to check if we can bail out early in the notification routines. Reviewed-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: Victor Nogueira <victor@mojatatu.com> Signed-off-by: Pedro Tammela <pctammela@mojatatu.com> Link: https://lore.kernel.org/r/20231208192847.714940-3-pctammela@mojatatu.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rtnetlink.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index a7d757e96c55..0cbbbded0331 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -137,4 +137,19 @@ static inline int rtnl_has_listeners(const struct net *net, u32 group)
return netlink_has_listeners(rtnl, group);
}
+/**
+ * rtnl_notify_needed - check if notification is needed
+ * @net: Pointer to the net namespace
+ * @nlflags: netlink ingress message flags
+ * @group: rtnl group
+ *
+ * Based on the ingress message flags and rtnl group, returns true
+ * if a notification is needed, false otherwise.
+ */
+static inline bool
+rtnl_notify_needed(const struct net *net, u16 nlflags, u32 group)
+{
+ return (nlflags & NLM_F_ECHO) || rtnl_has_listeners(net, group);
+}
+
#endif /* __LINUX_RTNETLINK_H */