]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-resolve: introduce sd_resolve_query_{get,set}_floating()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 3 Nov 2018 16:05:16 +0000 (01:05 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 5 Nov 2018 04:19:02 +0000 (13:19 +0900)
src/libsystemd/sd-resolve/sd-resolve.c
src/systemd/sd-resolve.h

index dd33314f536f8850ef93b200f9ef88afe1b8dfd9..1fbab9dbf97f833c529dd4a37a4dc233607b209b 100644 (file)
@@ -1157,6 +1157,34 @@ _public_ int sd_resolve_query_set_destroy_callback(sd_resolve_query *q, sd_resol
         return 0;
 }
 
+_public_ int sd_resolve_query_get_floating(sd_resolve_query *q) {
+        assert_return(q, -EINVAL);
+
+        return q->floating;
+}
+
+_public_ int sd_resolve_query_set_floating(sd_resolve_query *q, int b) {
+        assert_return(q, -EINVAL);
+
+        if (q->floating == !!b)
+                return 0;
+
+        if (!q->resolve) /* Already disconnected */
+                return -ESTALE;
+
+        q->floating = b;
+
+        if (b) {
+                sd_resolve_query_ref(q);
+                sd_resolve_unref(q->resolve);
+        } else {
+                sd_resolve_ref(q->resolve);
+                sd_resolve_query_unref(q);
+        }
+
+        return 1;
+}
+
 static int io_callback(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
         sd_resolve *resolve = userdata;
         int r;
index 2696562d7722b8771ac7fb05da3d22f05a0fcca4..089fcdee37634b33f683f9001cef06b69fc031ed 100644 (file)
@@ -111,6 +111,8 @@ void *sd_resolve_query_get_userdata(sd_resolve_query *q);
 void *sd_resolve_query_set_userdata(sd_resolve_query *q, void *userdata);
 int sd_resolve_query_get_destroy_callback(sd_resolve_query *q, sd_resolve_destroy_t *destroy_callback);
 int sd_resolve_query_set_destroy_callback(sd_resolve_query *q, sd_resolve_destroy_t destroy_callback);
+int sd_resolve_query_get_floating(sd_resolve_query *q);
+int sd_resolve_query_set_floating(sd_resolve_query *q, int b);
 
 sd_resolve *sd_resolve_query_get_resolve(sd_resolve_query *q);