return k;
}
-int sd_netlink_call(sd_netlink *rtnl,
- sd_netlink_message *message,
- uint64_t usec,
- sd_netlink_message **ret) {
+int sd_netlink_read(sd_netlink *rtnl,
+ uint32_t serial,
+ uint64_t usec,
+ sd_netlink_message **ret) {
usec_t timeout;
- uint32_t serial;
int r;
assert_return(rtnl, -EINVAL);
assert_return(!rtnl_pid_changed(rtnl), -ECHILD);
- assert_return(message, -EINVAL);
-
- r = sd_netlink_send(rtnl, message, &serial);
- if (r < 0)
- return r;
timeout = calc_elapse(usec);
}
}
+int sd_netlink_call(sd_netlink *rtnl,
+ sd_netlink_message *message,
+ uint64_t usec,
+ sd_netlink_message **ret) {
+ uint32_t serial;
+ int r;
+
+ assert_return(rtnl, -EINVAL);
+ assert_return(!rtnl_pid_changed(rtnl), -ECHILD);
+ assert_return(message, -EINVAL);
+
+ r = sd_netlink_send(rtnl, message, &serial);
+ if (r < 0)
+ return r;
+
+ return sd_netlink_read(rtnl, serial, usec, ret);
+}
+
int sd_netlink_get_events(const sd_netlink *rtnl) {
assert_return(rtnl, -EINVAL);
assert_return(!rtnl_pid_changed(rtnl), -ECHILD);
void *userdata, uint64_t usec, const char *description);
int sd_netlink_call(sd_netlink *nl, sd_netlink_message *message, uint64_t timeout,
sd_netlink_message **reply);
+int sd_netlink_read(sd_netlink *nl, uint32_t serial, uint64_t timeout, sd_netlink_message **reply);
int sd_netlink_get_events(const sd_netlink *nl);
int sd_netlink_get_timeout(const sd_netlink *nl, uint64_t *timeout);