chiark / gitweb /
event: rework sd-event exit logic
[elogind.git] / src / libsystemd-rtnl / rtnl-internal.h
index c8a97da398dffbbb22b13bd0b4d382f3d38bd672..a1050a07fa7fb2ca9bb70e76de86e31fc947df5f 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "refcnt.h"
 #include "prioq.h"
+#include "list.h"
 
 #include "sd-rtnl.h"
 
@@ -36,6 +37,14 @@ struct reply_callback {
         unsigned prioq_idx;
 };
 
+struct match_callback {
+        sd_rtnl_message_handler_t callback;
+        uint16_t types;
+        void *userdata;
+
+        LIST_FIELDS(struct match_callback, match_callbacks);
+};
+
 struct sd_rtnl {
         RefCount n_ref;
 
@@ -59,11 +68,13 @@ struct sd_rtnl {
         struct Prioq *reply_callbacks_prioq;
         Hashmap *reply_callbacks;
 
+        LIST_HEAD(struct match_callback, match_callbacks);
+
         pid_t original_pid;
 
         sd_event_source *io_event_source;
         sd_event_source *time_event_source;
-        sd_event_source *quit_event_source;
+        sd_event_source *exit_event_source;
         sd_event *event;
 };
 
@@ -80,4 +91,4 @@ int socket_read_message(sd_rtnl *nl, sd_rtnl_message **ret);
 
 /* Make sure callbacks don't destroy the rtnl connection */
 #define RTNL_DONT_DESTROY(rtnl) \
-        _cleanup_sd_rtnl_unref_ sd_rtnl *_dont_destroy_##rtnl = sd_rtnl_ref(rtnl)
+        _cleanup_sd_rtnl_unref_ _unused_ sd_rtnl *_dont_destroy_##rtnl = sd_rtnl_ref(rtnl)