[SCTP]: Do not timestamp every SCTP packet.
We only need the timestamp on COOKIE-ECHO chunks, so instead of always timestamping every SCTP packet, let common code timestamp if the socket option is set. For COOKIE-ECHO, simply get the time of day if we don't have a timestamp. This introduces a small possibility that the cookie may be considered expired, but it will be renegotiated. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
b56bab46f3
Коммит
f236218b72
|
@ -218,12 +218,6 @@ int sctp_rcv(struct sk_buff *skb)
|
|||
}
|
||||
}
|
||||
|
||||
/* SCTP seems to always need a timestamp right now (FIXME) */
|
||||
if (skb->tstamp.off_sec == 0) {
|
||||
__net_timestamp(skb);
|
||||
sock_enable_timestamp(sk);
|
||||
}
|
||||
|
||||
if (!xfrm_policy_check(sk, XFRM_POLICY_IN, skb, family))
|
||||
goto discard_release;
|
||||
nf_reset(skb);
|
||||
|
|
|
@ -1447,8 +1447,16 @@ no_hmac:
|
|||
/* Check to see if the cookie is stale. If there is already
|
||||
* an association, there is no need to check cookie's expiration
|
||||
* for init collision case of lost COOKIE ACK.
|
||||
* If skb has been timestamped, then use the stamp, otherwise
|
||||
* use current time. This introduces a small possibility that
|
||||
* that a cookie may be considered expired, but his would only slow
|
||||
* down the new association establishment instead of every packet.
|
||||
*/
|
||||
if (sock_flag(ep->base.sk, SOCK_TIMESTAMP))
|
||||
skb_get_timestamp(skb, &tv);
|
||||
else
|
||||
do_gettimeofday(&tv);
|
||||
|
||||
if (!asoc && tv_lt(bear_cookie->expiration, tv)) {
|
||||
__u16 len;
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче