|
@@ -197,27 +197,27 @@ int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk,
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
-#define EXPIRES_IN_MS(tmo) DIV_ROUND_UP((tmo - jiffies) * 1000, HZ)
|
|
|
|
-
|
|
|
|
if (icsk->icsk_pending == ICSK_TIME_RETRANS ||
|
|
if (icsk->icsk_pending == ICSK_TIME_RETRANS ||
|
|
icsk->icsk_pending == ICSK_TIME_EARLY_RETRANS ||
|
|
icsk->icsk_pending == ICSK_TIME_EARLY_RETRANS ||
|
|
icsk->icsk_pending == ICSK_TIME_LOSS_PROBE) {
|
|
icsk->icsk_pending == ICSK_TIME_LOSS_PROBE) {
|
|
r->idiag_timer = 1;
|
|
r->idiag_timer = 1;
|
|
r->idiag_retrans = icsk->icsk_retransmits;
|
|
r->idiag_retrans = icsk->icsk_retransmits;
|
|
- r->idiag_expires = EXPIRES_IN_MS(icsk->icsk_timeout);
|
|
|
|
|
|
+ r->idiag_expires =
|
|
|
|
+ jiffies_to_msecs(icsk->icsk_timeout - jiffies);
|
|
} else if (icsk->icsk_pending == ICSK_TIME_PROBE0) {
|
|
} else if (icsk->icsk_pending == ICSK_TIME_PROBE0) {
|
|
r->idiag_timer = 4;
|
|
r->idiag_timer = 4;
|
|
r->idiag_retrans = icsk->icsk_probes_out;
|
|
r->idiag_retrans = icsk->icsk_probes_out;
|
|
- r->idiag_expires = EXPIRES_IN_MS(icsk->icsk_timeout);
|
|
|
|
|
|
+ r->idiag_expires =
|
|
|
|
+ jiffies_to_msecs(icsk->icsk_timeout - jiffies);
|
|
} else if (timer_pending(&sk->sk_timer)) {
|
|
} else if (timer_pending(&sk->sk_timer)) {
|
|
r->idiag_timer = 2;
|
|
r->idiag_timer = 2;
|
|
r->idiag_retrans = icsk->icsk_probes_out;
|
|
r->idiag_retrans = icsk->icsk_probes_out;
|
|
- r->idiag_expires = EXPIRES_IN_MS(sk->sk_timer.expires);
|
|
|
|
|
|
+ r->idiag_expires =
|
|
|
|
+ jiffies_to_msecs(sk->sk_timer.expires - jiffies);
|
|
} else {
|
|
} else {
|
|
r->idiag_timer = 0;
|
|
r->idiag_timer = 0;
|
|
r->idiag_expires = 0;
|
|
r->idiag_expires = 0;
|
|
}
|
|
}
|
|
-#undef EXPIRES_IN_MS
|
|
|
|
|
|
|
|
if ((ext & (1 << (INET_DIAG_INFO - 1))) && handler->idiag_info_size) {
|
|
if ((ext & (1 << (INET_DIAG_INFO - 1))) && handler->idiag_info_size) {
|
|
attr = nla_reserve(skb, INET_DIAG_INFO,
|
|
attr = nla_reserve(skb, INET_DIAG_INFO,
|