]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-netlink: add type safe macro for sd_genl_add_match()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 20 Sep 2021 19:42:37 +0000 (04:42 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 29 Sep 2021 06:33:50 +0000 (15:33 +0900)
src/libsystemd/sd-netlink/netlink-util.h

index 5208dd94e4088a80d29510d4ab9738e8eb407ad3..13b284ee649c70efd575021f7f3549b0ccd145b1 100644 (file)
@@ -116,6 +116,16 @@ int rtnl_log_create_error(int r);
                                      userdata, description);            \
         })
 
+#define genl_add_match(nl, ret_slot, family, group, cmd, callback, destroy_callback, userdata, description) \
+        ({                                                              \
+                int (*_callback_)(sd_netlink *, sd_netlink_message *, typeof(userdata)) = callback; \
+                void (*_destroy_)(typeof(userdata)) = destroy_callback; \
+                sd_genl_add_match(nl, ret_slot, family, group, cmd,     \
+                                  (sd_netlink_message_handler_t) _callback_, \
+                                  (sd_netlink_destroy_t) _destroy_,     \
+                                  userdata, description);               \
+        })
+
 int netlink_message_append_hw_addr(sd_netlink_message *m, unsigned short type, const struct hw_addr_data *data);
 int netlink_message_append_in_addr_union(sd_netlink_message *m, unsigned short type, int family, const union in_addr_union *data);
 int netlink_message_append_sockaddr_union(sd_netlink_message *m, unsigned short type, const union sockaddr_union *data);