rtnl: introduce default timeout
We set it to 10 secs (as we are only communicating with the kernel, it seems we should be able to bail out sooner than sd-bus, which uses 25). When passing timout 0, the default is used, use this in link-config.
This commit is contained in:
parent
f1ac700248
commit
98dd77e86e
|
@ -33,6 +33,9 @@ struct sd_rtnl {
|
|||
|
||||
unsigned serial;
|
||||
};
|
||||
|
||||
#define RTNL_DEFAULT_TIMEOUT ((usec_t) (10 * USEC_PER_SEC))
|
||||
|
||||
int message_get_errno(sd_rtnl_message *m);
|
||||
int message_get_serial(sd_rtnl_message *m);
|
||||
int message_seal(sd_rtnl *nl, sd_rtnl_message *m);
|
||||
|
|
|
@ -109,10 +109,15 @@ int sd_rtnl_send_with_reply_and_block(sd_rtnl *nl,
|
|||
p[0].fd = nl->fd;
|
||||
p[0].events = POLLOUT;
|
||||
|
||||
timeout = now(CLOCK_MONOTONIC) + usec;
|
||||
if (usec == (uint64_t) -1)
|
||||
timeout = 0;
|
||||
else if (usec == 0)
|
||||
timeout = now(CLOCK_MONOTONIC) + RTNL_DEFAULT_TIMEOUT;
|
||||
else
|
||||
timeout = now(CLOCK_MONOTONIC) + usec;
|
||||
|
||||
for (;;) {
|
||||
if (usec != (uint64_t) -1) {
|
||||
if (timeout) {
|
||||
usec_t n;
|
||||
|
||||
n = now(CLOCK_MONOTONIC);
|
||||
|
@ -122,7 +127,7 @@ int sd_rtnl_send_with_reply_and_block(sd_rtnl *nl,
|
|||
timespec_store(&left, timeout - n);
|
||||
}
|
||||
|
||||
r = ppoll(p, 1, usec == (uint64_t) -1 ? NULL : &left, NULL);
|
||||
r = ppoll(p, 1, timeout ? &left : NULL, NULL);
|
||||
if (r < 0)
|
||||
return 0;
|
||||
|
||||
|
@ -140,7 +145,7 @@ int sd_rtnl_send_with_reply_and_block(sd_rtnl *nl,
|
|||
for (;;) {
|
||||
_cleanup_sd_rtnl_message_unref_ sd_rtnl_message *reply = NULL;
|
||||
|
||||
if (usec != (uint64_t) -1) {
|
||||
if (timeout) {
|
||||
usec_t n;
|
||||
|
||||
n = now(CLOCK_MONOTONIC);
|
||||
|
@ -150,7 +155,7 @@ int sd_rtnl_send_with_reply_and_block(sd_rtnl *nl,
|
|||
timespec_store(&left, timeout - n);
|
||||
}
|
||||
|
||||
r = ppoll(p, 1, usec == (uint64_t) -1 ? NULL : &left, NULL);
|
||||
r = ppoll(p, 1, timeout ? &left : NULL, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
|
|
@ -293,7 +293,7 @@ static int rtnl_set_properties(sd_rtnl *rtnl, int ifindex, const char *name, con
|
|||
}
|
||||
|
||||
if (need_update) {
|
||||
r = sd_rtnl_send_with_reply_and_block(rtnl, message, 5 * USEC_PER_SEC, NULL);
|
||||
r = sd_rtnl_send_with_reply_and_block(rtnl, message, 0, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue