X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-rtnl%2Fsd-rtnl.c;h=7d388c975860bc4c42a0be633fe7fb3ed3415c89;hb=b551ddd380c3b8ddacf86efe815654f7eb6b4952;hp=f883f2842cddb26fe3e4c190cba650c722d92016;hpb=9021bb9f935c93b516b10c88db2a212a9e3a8140;p=elogind.git diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c index f883f2842..7d388c975 100644 --- a/src/libsystemd/sd-rtnl/sd-rtnl.c +++ b/src/libsystemd/sd-rtnl/sd-rtnl.c @@ -140,6 +140,10 @@ int sd_rtnl_open(sd_rtnl **ret, unsigned n_groups, ...) { return 0; } +int sd_rtnl_inc_rcvbuf(const sd_rtnl *const rtnl, const int size) { + return fd_inc_rcvbuf(rtnl->fd, size); +} + sd_rtnl *sd_rtnl_ref(sd_rtnl *rtnl) { assert_return(rtnl, NULL); assert_return(!rtnl_pid_changed(rtnl), NULL); @@ -485,7 +489,7 @@ static int rtnl_poll(sd_rtnl *rtnl, bool need_more, uint64_t timeout_usec) { if (need_more) /* Caller wants more data, and doesn't care about * what's been read or any other timeouts. */ - return e |= POLLIN; + e |= POLLIN; else { usec_t until; /* Caller wants to process if there is something to @@ -557,7 +561,7 @@ int sd_rtnl_call_async(sd_rtnl *nl, assert_return(callback, -EINVAL); assert_return(!rtnl_pid_changed(nl), -ECHILD); - r = hashmap_ensure_allocated(&nl->reply_callbacks, uint64_hash_func, uint64_compare_func); + r = hashmap_ensure_allocated(&nl->reply_callbacks, &uint64_hash_ops); if (r < 0) return r; @@ -680,7 +684,7 @@ int sd_rtnl_call(sd_rtnl *rtnl, if (r < 0) return r; if (r > 0) - /* receieved message, so try to process straight away */ + /* received message, so try to process straight away */ continue; if (timeout > 0) { @@ -697,6 +701,8 @@ int sd_rtnl_call(sd_rtnl *rtnl, r = rtnl_poll(rtnl, true, left); if (r < 0) return r; + else if (r == 0) + return -ETIMEDOUT; r = dispatch_wqueue(rtnl); if (r < 0) @@ -859,7 +865,7 @@ int sd_rtnl_attach_event(sd_rtnl *rtnl, sd_event *event, int priority) { if (r < 0) goto fail; - r = sd_event_source_set_name(rtnl->io_event_source, "rtnl-receive-message"); + r = sd_event_source_set_description(rtnl->io_event_source, "rtnl-receive-message"); if (r < 0) goto fail; @@ -875,7 +881,7 @@ int sd_rtnl_attach_event(sd_rtnl *rtnl, sd_event *event, int priority) { if (r < 0) goto fail; - r = sd_event_source_set_name(rtnl->time_event_source, "rtnl-timer"); + r = sd_event_source_set_description(rtnl->time_event_source, "rtnl-timer"); if (r < 0) goto fail; @@ -883,7 +889,7 @@ int sd_rtnl_attach_event(sd_rtnl *rtnl, sd_event *event, int priority) { if (r < 0) goto fail; - r = sd_event_source_set_name(rtnl->exit_event_source, "rtnl-exit"); + r = sd_event_source_set_description(rtnl->exit_event_source, "rtnl-exit"); if (r < 0) goto fail;