rtnl: add helper to check if a notification is needed
authorVictor Nogueira <victor@mojatatu.com>
Fri, 8 Dec 2023 19:28:42 +0000 (16:28 -0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Dec 2023 02:52:56 +0000 (18:52 -0800)
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>
include/linux/rtnetlink.h

index a7d757e96c55f7fe4605750ea0cd3947ec2c307d..0cbbbded0331942e921e3338669ce3cffe43e8b2 100644 (file)
@@ -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 */