sctp: implement prsctp TTL policy
prsctp TTL policy is a policy to abandon chunks when they expire at the specific time in local stack. It's similar with expires_at in struct sctp_datamsg. This patch uses sinfo->sinfo_timetolive to set the specific time for TTL policy. sinfo->sinfo_timetolive is also used for msg->expires_at. So if prsctp_enable or TTL policy is not enabled, msg->expires_at still works as before. Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
826d253d57
commit
a6c2f79287
@@ -711,6 +711,17 @@ nodata:
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void sctp_set_prsctp_policy(struct sctp_chunk *chunk,
|
||||
const struct sctp_sndrcvinfo *sinfo)
|
||||
{
|
||||
if (!chunk->asoc->prsctp_enable)
|
||||
return;
|
||||
|
||||
if (SCTP_PR_TTL_ENABLED(sinfo->sinfo_flags))
|
||||
chunk->prsctp_param =
|
||||
jiffies + msecs_to_jiffies(sinfo->sinfo_timetolive);
|
||||
}
|
||||
|
||||
/* Make a DATA chunk for the given association from the provided
|
||||
* parameters. However, do not populate the data payload.
|
||||
*/
|
||||
@@ -744,6 +755,7 @@ struct sctp_chunk *sctp_make_datafrag_empty(struct sctp_association *asoc,
|
||||
|
||||
retval->subh.data_hdr = sctp_addto_chunk(retval, sizeof(dp), &dp);
|
||||
memcpy(&retval->sinfo, sinfo, sizeof(struct sctp_sndrcvinfo));
|
||||
sctp_set_prsctp_policy(retval, sinfo);
|
||||
|
||||
nodata:
|
||||
return retval;
|
||||
|
||||
Reference in New Issue
Block a user